// LIBRARIES import React, { Component } from 'react' import { Formik } from 'formik' import { message, notification } from 'antd' import moment from 'moment' // COMPONENTS import HeaderForm from "components/Forms/HeaderForm" import AddPhotoSliderForm from './components/AddPhotoSliderForm' // HELPER FUNCTIONS import { userDetailsSchema } from './validationSchema' import { API_GET, API_POST, API_UNI_OIL } from "utils/Api" import { apiFormValidation } from "utils/helper" class CreatePhotoSlider extends Component { state = { loading: false, promotionsOptions: null, mounted: false, photoSliderLimit: false, dateStartEnd: null } async componentDidMount() { try { let photoSlider = await API_UNI_OIL('photoSliderCount'); if(photoSlider) this.setState({photoSliderLimit: false}) } catch ({response:error}) { this.setState({photoSliderLimit: true}) } try { let promotionsList = await API_GET('getPromotions'); if (promotionsList) { let promotionsOptions = [] await promotionsList.data.data.map(item => { promotionsOptions.push({ label: item.title, value: item.promotion_uuid, date: { dateStart: item.date_start , dateEnd: item.date_end } }) }) this.setState({ promotionsOptions: promotionsOptions, mounted: true }) } } catch ({ response: error }) { notification.error({ message: "Error", description:
Something went wrong loading data.
- {error && error.data && error.data.message}
, duration: 3, }); this.setState({ mounted: false }) } } handleSubmit = async (values, actions) => { const { fileUpload } = this.state; const { history } = this.props; const { setErrors } = actions; this.setState({ loading: true }) try { const headers = { 'ContentType': 'multipart/form-data', }; const formData = new FormData(); if (fileUpload) { fileUpload.forEach((t, i) => { formData.append(`image`, t.originFileObj); }); } else { if(values.image) { let imageUrlPath = values.image formData.append(`image`, imageUrlPath); } } let date_start = moment(values.date_start).format('YYYY-MM-DD'); let start_time = moment(values.start_time).format('HH:mm:ss'); if(start_time == 'Invalid date') { start_time = values.start_time } else { start_time = moment(values.start_time).format('HH:mm:ss'); } let date_end = moment(values.date_end).format('YYYY-MM-DD'); let end_time = moment(values.end_time).format('HH:mm:ss'); if(end_time == 'Invalid date') { end_time = values.end_time } else { end_time = moment(values.end_time).format('HH:mm:ss'); } let startDateTime = moment(date_start + ' ' + start_time, 'YYYY-MM-DDTHH:mm:ss'); let endDateTime = moment(date_end + ' ' + end_time, 'YYYY-MM-DDTHH:mm:ss'); values.promotion_uuid && (formData.append('promotion_uuid', values.promotion_uuid)); values.title && (formData.append('title', values.title)); values.description && (formData.append('description', values.description)); values.date_start && (formData.append('date_start', startDateTime.format('YYYY-MM-DDTHH:mm:ss'))); values.date_end && (formData.append('date_end', endDateTime.format('YYYY-MM-DDTHH:mm:ss'))); let response = await API_UNI_OIL.post('photoSlider', formData, headers) if (response) { message.success('New record added.'); this.setState({ loading: false }) history.push({ pathname: "/home-page/photo-slider" }) } } catch ({ response: error }) { if (error.status === 422) { apiFormValidation({ data: error.data.data, setErrors }) } notification.error({ message: 'Error', description:
{error && error.data && error.data.data && error.data.data.image && (
{error.data.data.image[0] ? `- ${error.data.data.image[0]}` : "Something went wrong creating new record."}
) }
}); this.setState({ loading: false }) } } handleAddPhotoSlider = () => { this.form.submitForm() } handleFileUpload = (e) => { if (Array.isArray(e)) { return this.setState({ fileUpload: e }); } return e && this.setState({ fileUpload: e.fileList }); } handleGetDate = async (id) => { const {promotionsOptions} = this.state; if(promotionsOptions) { await promotionsOptions.map(item=> { if(item.value == id) { this.setState({ dateStartEnd: { date_start: item.date.dateStart, date_end: item.date.dateEnd } }) } }) } } handleAutoFillDeatils = async (id,setFieldValue) => { if(id) { try { let promotionsList = await API_GET(`promotion/${id}`); let autofillData = { ...promotionsList.data.data } setFieldValue('title', autofillData.title); setFieldValue('description', autofillData.description); setFieldValue('image', `${autofillData.image}`); setFieldValue('date_start', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm')); setFieldValue('date_end', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm')); setFieldValue('start_time', moment(autofillData.date_start, 'YYYY-MM-DDTHH:mm').format('HH:mm') ); setFieldValue('end_time', moment(autofillData.date_end, 'YYYY-MM-DDTHH:mm').format('HH:mm') ); this.setState({ isAutofill: true }) } catch ({response: error}) { notification.error({ message: 'Error', description:
Something went wrong autofill records. - {error && error.data && error.data.message}
}); } } } render() { if (!this.state.mounted) return null; const { loading, promotionsOptions, photoSliderLimit, dateStartEnd } = this.state return (
{/* { this.props.history.push("/home-page/photo-slider") }} cancelBtnName="Cancel" /> */}

Photo Slider Content Details

(this.form = node)} enableReinitialize={true} validationSchema={userDetailsSchema} onSubmit={this.handleSubmit} render={(props) => } />
) } } export default CreatePhotoSlider