"use client" import { LayoutNavbarNew, TEMA } from '@/module/_global'; import { Box, Button, Group, rem, Select, SimpleGrid, Skeleton, Stack, Text, Textarea, TextInput } from '@mantine/core'; import { DateInput, TimeInput } from '@mantine/dates'; import React, { useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import LayoutModal from '@/module/_global/layout/layout_modal'; import toast from 'react-hot-toast'; import { funEditCalenderById, funGetOneCalender, funGetOneCalenderByIdCalendar, } from '../lib/api_calender'; import { useShallowEffect } from '@mantine/hooks'; import { IDetailByIdCalender } from '../lib/type_calender'; import moment from 'moment'; import "moment/locale/id"; import UpdateListUsers from './update_list_users'; import { useHookstate } from '@hookstate/core'; export default function UpdateDivisionCalender() { const [isModal, setModal] = useState(false) const param = useParams<{ id: string, detail: string }>() const [isDataCalender, setDataCalender] = useState() const [openMember, setOpenMember] = useState(false) const [loading, setLoading] = useState(true) const tema = useHookstate(TEMA) const [touched, setTouched] = useState({ title: false, dateStart: false, timeStart: false, timeEnd: false, repeatEventTyper: false, desc: false, repeatValue: false }) const fetchGetOne = async () => { try { setLoading(true) const response = await funGetOneCalenderByIdCalendar(param.detail) if (response.success) { setDataCalender(response.data) } else { toast.error(response.message) } } catch (error) { console.error(error) toast.error("Terjadi kesalahan! Silahkan coba kembali"); } finally { setLoading(false) } } useShallowEffect(() => { fetchGetOne() }, []) const [value, setValue] = useState(null); const router = useRouter() async function onSubmit(val: boolean) { try { if (val) { const response = await funEditCalenderById(param.detail, { title: isDataCalender?.title, dateStart: isDataCalender?.dateStart, timeStart: isDataCalender?.timeStart, timeEnd: isDataCalender?.timeEnd, linkMeet: isDataCalender?.linkMeet, repeatEventTyper: isDataCalender?.repeatEventTyper, desc: isDataCalender?.desc, repeatValue: isDataCalender?.repeatValue }) if (response.success) { setModal(false) router.push(`/division/${param.id}/calender`) toast.success(response.message) } else { toast.error(response.message) } } setModal(false) } catch (error) { console.error(error) toast.error("Terjadi kesalahan! Silahkan coba kembali"); setModal(false) } finally { setModal(false) } } if (openMember) return setOpenMember(false)} /> return ( {loading ? <> : <> { setDataCalender({ ...isDataCalender, title: event.target.value }) setTouched({ ...touched, title: false }) } } onBlur={() => setTouched({ ...touched, title: true })} required error={ touched.title && ( isDataCalender?.title == "" ? "Nama Acara Tidak Boleh Kosong" : null ) } /> { setValue(val); setDataCalender({ ...isDataCalender, dateStart: moment(val).format("YYYY-MM-DD") }) setTouched({ ...touched, dateStart: false }) } } placeholder="Input Tanggal" label="Tanggal" minDate={new Date()} onBlur={() => setTouched({ ...touched, dateStart: true })} error={ touched.dateStart && ( isDataCalender?.dateStart == "" ? "Tanggal Tidak Boleh Kosong" : null ) } required /> { setDataCalender({ ...isDataCalender, timeStart: event.target.value }) } } onBlur={() => setTouched({ ...touched, timeStart: true })} error={touched.timeStart && !isDataCalender?.timeStart ? "Waktu Awal Tidak Boleh Kosong" : null} required /> { setDataCalender({ ...isDataCalender, timeEnd: event.target.value }) } } onBlur={() => setTouched({ ...touched, timeEnd: true })} required error={ touched.timeEnd && ( isDataCalender?.timeEnd == "" ? "Waktu Akhir Tidak Boleh Kosong" : null ) || (String(isDataCalender?.timeStart) > String(isDataCalender?.timeEnd) ? "Waktu Akhir Tidak Tepat" : null) } /> { setDataCalender({ ...isDataCalender, linkMeet: event.target.value }) } } />