mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 11:01:45 +00:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
"use client";
|
|
|
|
import { updateInvoicePaymentStatusAction } from "@/app/(dashboard)/cartoes/[cartaoId]/fatura/actions";
|
|
import type { DashboardInvoice } from "@/lib/dashboard/invoices";
|
|
import {
|
|
getCurrentDateString,
|
|
type InvoiceDialogState,
|
|
isInvoicePaid,
|
|
markInvoiceAsPaid,
|
|
} from "@/lib/dashboard/invoices-helpers";
|
|
import {
|
|
type PaymentDialogController,
|
|
usePaymentDialogController,
|
|
} from "@/lib/dashboard/use-payment-dialog-controller";
|
|
import { INVOICE_PAYMENT_STATUS } from "@/lib/faturas";
|
|
|
|
export type InvoicesWidgetController = Omit<
|
|
PaymentDialogController<DashboardInvoice>,
|
|
"selectedItem"
|
|
> & {
|
|
selectedInvoice: DashboardInvoice | null;
|
|
modalState: InvoiceDialogState;
|
|
};
|
|
|
|
export function useInvoicesWidgetController(
|
|
invoices: DashboardInvoice[],
|
|
): InvoicesWidgetController {
|
|
const controller = usePaymentDialogController({
|
|
items: invoices,
|
|
getItemId: (invoice) => invoice.id,
|
|
isItemConfirmed: (invoice) => isInvoicePaid(invoice.paymentStatus),
|
|
executeConfirm: (invoice) =>
|
|
updateInvoicePaymentStatusAction({
|
|
cartaoId: invoice.cardId,
|
|
period: invoice.period,
|
|
status: INVOICE_PAYMENT_STATUS.PAID,
|
|
}),
|
|
applyConfirmedState: (invoice) =>
|
|
markInvoiceAsPaid(invoice, getCurrentDateString()),
|
|
});
|
|
|
|
return {
|
|
...controller,
|
|
selectedInvoice: controller.selectedItem,
|
|
};
|
|
}
|