diff --git a/src/components/Admin/Dashboard/index.tsx b/src/components/Admin/Dashboard/index.tsx index f7b086b3..410e2e55 100644 --- a/src/components/Admin/Dashboard/index.tsx +++ b/src/components/Admin/Dashboard/index.tsx @@ -9,6 +9,7 @@ import { Collapse, DatePicker, Form, + Input, InputNumber, List, Modal, @@ -17,7 +18,7 @@ import { Typography, message } from 'antd' -import { EditOutlined, SaveOutlined } from '@ant-design/icons' +import { EditOutlined, PlusOutlined, SaveOutlined } from '@ant-design/icons' import { CheckboxChangeEvent } from 'antd/lib/checkbox' import { FESTIVAL_ID } from '../../../constants' @@ -45,16 +46,22 @@ const selectTextType = [ ] const Dashboard: React.FC = () => { + // Data const [isTextLoading, setIsTextLoading] = useState(false) const [texts, setTexts] = useState([]) const [newTexts, setNewTexts] = useState(texts) const [infoText, setInfoText] = useState({} as IText) const [festival, setFestival] = useState({} as IFestival) + // Modal + const [addNewEditionModalVisible, setAddNewEditionModalVisible] = useState(false) const [addRowModalVisible, setAddRowModalVisible] = useState(false) - const [editingId, setEditingId] = useState(0) + + // Form const [formRowAddition] = Form.useForm() const [formRowEdition] = Form.useForm() + const [formNewFestival] = Form.useForm() + const [editingId, setEditingId] = useState(0) useEffect(() => { setIsTextLoading(true) @@ -105,7 +112,8 @@ const Dashboard: React.FC = () => { { editable ? - + : @@ -210,8 +218,31 @@ const Dashboard: React.FC = () => { })) } + const handleNewEditionOkModal = (): void => { + console.log('handleNewEditionOkModal') + formNewFestival.validateFields().then(values => { + const startDate = new Date(values.dates[0]) + const endDate = new Date(values.dates[1]) + const { name, edition, latitude, longitude } = values + const location = { latitude, longitude } + FestivalService.create({ name, edition, startDate, endDate, location }).then(res => { + console.log({ res }) + /* setFestival({ + ...festival, + ...res + })*/ + // message.success('Festival créé', 2.5) + }).catch(err => message.error(`Erreur lors de la création: ${ err }`, 2.5)) + // setAddNewEditionModalVisible(false) + }).catch(err => message.warn(`Validation failed: ${JSON.stringify(err)}`, 2.5)) + } + return ( +
+ +
-
+
{ adminTitleFromPathname(location.pathname) }
diff --git a/src/services/admin/festival/festival.interface.ts b/src/services/admin/festival/festival.interface.ts index f106452c..a0f132cf 100644 --- a/src/services/admin/festival/festival.interface.ts +++ b/src/services/admin/festival/festival.interface.ts @@ -1,6 +1,7 @@ export interface IFestival { id: number name: string + edition: number location: ICoordinates startDate: Date endDate: Date diff --git a/src/services/admin/festival/festival.service.ts b/src/services/admin/festival/festival.service.ts index 3e591a16..ffaa9c8c 100644 --- a/src/services/admin/festival/festival.service.ts +++ b/src/services/admin/festival/festival.service.ts @@ -5,6 +5,12 @@ import { IFestival } from './festival.interface' export class FestivalService { static getAll = async (): Promise => await axios.get('/festival').then(r => r.data) + static create = async (festival: Partial): Promise> => { + console.log('festival: ') + console.log({ festival }) + return await axios.post('/festival', festival).then(r => r.data) + } + static getById = async (id: number): Promise => await axios.get(`/festival/${ id }`).then(r => r.data) static update = async (id: number, updatedFestival: IFestival): Promise => await axios.put(`/festival/${ id }`, updatedFestival).then(r => r.data)