import React, { useEffect, useState } from 'react' import { Link, router } from '@inertiajs/react' import { usePrevious } from 'react-use' import { Head } from '@inertiajs/react' import { Button, Dropdown } from 'flowbite-react' import { HiOutlineFilter, HiPencil, HiTrash } from 'react-icons/hi' import { HiEye } from 'react-icons/hi2' import { useModalState } from '@/hooks' import { formatIDR, hasPermission } from '@/utils' import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout' import Pagination from '@/Components/Pagination' import ModalConfirm from '@/Components/ModalConfirm' import SearchInput from '@/Components/SearchInput' import ThSort from '@/Components/ThSortComponent' import ModalFilter from '../Customer/ModalFilter' export default function Customer(props) { const { query: { links, data }, stats, auth, _search, _sortBy, _sortOrder, } = props const [search, setSearch] = useState({ q: _search, sortBy: _sortBy, sortOrder: _sortOrder, }) const preValue = usePrevious(`${search}`) const confirmModal = useModalState() const filterModal = useModalState() const handleDeleteClick = (customer) => { confirmModal.setData(customer) confirmModal.toggle() } const onDelete = () => { if (confirmModal.data !== null) { router.delete(route('mitra.destroy', confirmModal.data.id)) } } const handleSearchChange = (e) => { setSearch({ ...search, q: e.target.value, }) } const sort = (key, sort = null) => { if (sort !== null) { setSearch({ ...search, sortBy: key, sortRule: sort, }) return } setSearch({ ...search, sortBy: key, sortRule: search.sortRule == 'asc' ? 'desc' : 'asc', }) } const handleFilter = (filter) => { setSearch({ ...search, ...filter }) } const params = { ...search } useEffect(() => { if (preValue) { router.get( route(route().current()), { ...search }, { replace: true, preserveState: true, } ) } }, [search]) const canCreate = hasPermission(auth, 'create-mitra') const canUpdate = hasPermission(auth, 'update-mitra') const canDelete = hasPermission(auth, 'delete-mitra') return (
Total Mitra
{formatIDR(stats.total_mitra)} Orang
Mitra diblock
{formatIDR(stats.blocked_mitra)} Orang
Mitra Aktif
{formatIDR(stats.active_mitra)} Orang
Total Limit Mitra
Rp. {formatIDR(stats.sum_paylater_limit)}
Total Hutang Mitra
Rp. {formatIDR(stats.sum_paylater_usage)}
Total Sisa Limit Mitra
Rp. {formatIDR(stats.sum_paylater_remain)}
{canCreate && ( )}
filterModal.toggle()} >
Deposit Poin {data.map((customer) => ( ))}
Nama Level Sisa Saldo Hutang Limit Hutang Referral Code Lokasi Whatsapp Status
{customer.name} {customer.level.name} {customer.display_deposit} {customer.display_poin} {formatIDR( customer.paylater_remain )} {formatIDR( customer.paylater_limit )} {customer.referral_code} {customer.location_favorites.map( (location) => (
{location.name}
) )}
{customer.phone !== null && ( +62{customer.phone} )} {customer.status_text} {canUpdate && (
Lihat
)} {canDelete && ( handleDeleteClick( customer ) } >
Hapus
)}
) }