import React, { useEffect, useState } from 'react';
import moment from 'moment';
import axios from 'axios';
import { ToastContainer, toast } from 'react-toastify';
import { useHistory, Link } from 'react-router-dom';
import { CircularProgress } from '@material-ui/core';
import ModalMemo from '../../component/modal_memo';
import ModalConfirm from '../../component/modal_confirm';
import ModalPdf from '../../component/pdf/modal_pdf';
import Notification from '../notification';
import ModalSettingNotify from '../../component/modal_setting_notify';
import Alert from '../../component/alert';
const MeetingDetail = (props) => {
const history = useHistory();
const [loaded, setLoaded] = useState(false);
const [submit_delete, setSubmitDelete] = useState(false);
const [submit_notify, setSubmitNotify] = useState(false);
const [notice, setNotice] = useState(localStorage.getItem('notice'));
const [_success_delete, setSuccessDelete] = useState('');
const [_success_notify, setSuccessNotify] = useState('');
const [_400error, set400Error] = useState('');
const [showDelete, setShowDelete] = useState(false);
const [showSettingNotify, setShowSettingNotify] = useState(false);
const [showMemo, setShowMemo] = useState(false);
const [showNotify, setShowNotify] = useState(false);
const [showPdf, setShowPdf] = useState(false);
const [meeting, setMeeting] = useState(null);
const [thumbnail, setThumbnail] = useState(null);
useEffect(() => {
let father_id = document.getElementById('father_id').value;
setLoaded(false);
axios.get(`/api/fathers/meetings/detail/${props.match.params?.meeting_id}`, {params: { father_id: father_id}})
.then((response) => {
console.log(response.data.params);
setLoaded(true);
setNotice(response.data.notice);
if(response.data.status_code==200){
var list = response.data.params;
var total=0, num=0;
if(list.approvals){
for(var i in list.approvals)
{
if(list.approvals[i].approval_at) num ++;
total ++;
}
}
setMeeting({...list, denominator:total, numerator:num});
setThumbnail(response.data.params.meeting_image[0]?.image);
}
});
}, []);
const handleAcceptDelete = () => {
setSubmitDelete(true);
axios.delete(`/api/fathers/meetings/delete/${props.match.params?.meeting_id}`)
.then(response => {
setSubmitDelete(false);
setShowDelete(false);
switch(response.data.status_code){
case 200: setSuccessDelete('ミーティングの削除に成功しました!'); break;
case 400: set400Error('ミーティングの削除に失敗しました。'); break;
}
});
};
async function handleFavorite(meetingId, currentFavorite) {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/fathers/meetings/registerFavorite', formdata)
.then(response => {
setNotice(response.data.notice);
if(response.data.status_code == 200){
const updatedItem = {
...meeting,
is_favorite: currentFavorite == 1 ? 0 : 1,
};
setMeeting(updatedItem);
}
})
};
const handleNotifyAllChild = () => {
setSubmitNotify(true);
axios.get('/api/fathers/meeting/approvals/listChildrenOfUnapprovel', {params:{meeting_id: props.match.params?.meeting_id}})
.then(response => {
if(response.data.status_code == 200){
var list = response.data.params;
const tel_list = [];
for(var i in list){
tel_list.push(list[i].child.tel);
}
const formdata = new FormData();
formdata.append('tel', JSON.stringify(tel_list));
formdata.append('meeting_id', props.match.params.meeting_id);
axios.post('/api/fathers/approvalNotification', formdata)
.then(response=>{
setSubmitNotify(false);
setShowNotify(false);
switch(response.data.status_code){
case 200: setSuccessNotify('SMSの送信に成功しました!'); break;
case 400: set400Error('SMSの送信に失敗しました。'); break;
}
})
}
});
}
return (
{
!loaded && !meeting &&
}
{
loaded && meeting &&
setShowSettingNotify(true)} data-url="login.html" className="meeting-member-link">
- {meeting?.numerator}
- {meeting?.denominator}
{ meeting.approvals?.map((v, inx) =>
-
)
}
{ meeting?.title }
{ thumbnail &&
}
{
meeting.meeting_image.map((v, inx) =>
setThumbnail(v.image)} key={inx}>
)
}
{
[...Array(10-meeting.meeting_image.length)].map((x, k)=>
)
}
{ meeting.text }
setShowSettingNotify(false)}
/>
setShowMemo(false)}
/>
setShowDelete(false)}
handleAccept={handleAcceptDelete}
loading={submit_delete}
/>
setShowNotify(false)}
handleAccept={handleNotifyAllChild}
loading = {submit_notify}
/>
setShowPdf(false)}
/>
}
{ _400error &&
{_400error} }
{ _success_notify &&
{_success_notify} }
{
_success_delete &&
history.push({
pathname: "/p-account/meeting",
state: {}
})}>{_success_delete}
}
)
}
export default MeetingDetail;