You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
import React, { useState } from 'react'
|
|
import { Link, useForm } from '@inertiajs/inertia-react';
|
|
import { toast } from 'react-toastify';
|
|
import { Inertia } from '@inertiajs/inertia'
|
|
|
|
export default function ModalClosing() {
|
|
const {data, setData} = useForm({
|
|
is_rolling: 0,
|
|
})
|
|
|
|
const [loading, setLoading] = useState(false)
|
|
|
|
const handleDownload = () => {
|
|
const confirm = window.confirm('hapus transaksi dan buat budget baru ?')
|
|
if(!confirm){
|
|
return
|
|
}
|
|
setLoading(true)
|
|
fetch(`${route('close')}?is_rolling=${data.is_rolling}`, {
|
|
method: 'GET'
|
|
})
|
|
.then((response) => response.blob())
|
|
.then((blob) => {
|
|
const url = window.URL.createObjectURL(
|
|
new Blob([blob]),
|
|
);
|
|
const link = document.createElement('a');
|
|
link.href = url;
|
|
link.setAttribute('download', `summary.xlsx`);
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
link.parentNode.removeChild(link);
|
|
})
|
|
.finally(() => {
|
|
toast.success('berhasil mendownload, silahkan klik close')
|
|
setLoading(false)
|
|
setTimeout(() => {
|
|
Inertia.visit(route('summary'))
|
|
}, 3000)
|
|
});
|
|
}
|
|
|
|
return (
|
|
<div id="my-modal" className="modal">
|
|
<div className="modal-box">
|
|
<h1 className="font-bold text-2xl pb-8">Monthly Closing</h1>
|
|
<div className="form-control py-4 px-6">
|
|
<label className="cursor-pointer label">
|
|
<span className="label-text">Roll forward Budget per Category</span>
|
|
<input type="checkbox" checked={data.is_rolling === 1} className="checkbox" value="" onChange={() => setData('is_rolling', data.is_rolling === 0 ? 1 : 0)}/>
|
|
</label>
|
|
</div>
|
|
<div className="modal-action">
|
|
<div onClick={handleDownload} className={`btn btn-primary ${loading && 'animate-spin'}`} disabled={loading}>Download</div>
|
|
<Link href={route('summary')} className="btn">Close</Link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
} |