from fastapi import APIRouter from backend.dependecies import SessionDependency, PaginationDependency, CurrentUserDependency from schemas.finances import CreatePayRateRequest, UpdatePayRateRequest, DeletePayRateRequest, \ GetAllPayrollSchemeResponse, GetAllPayRatesResponse, CreatePayRateResponse, UpdatePayRateResponse, \ DeletePayRateResponse from schemas.payment_record import GetPaymentRecordsResponse, CreatePaymentRecordResponse, CreatePaymentRecordRequest, \ DeletePaymentRecordResponse, DeletePaymentRecordRequest from services.payroll import PayrollService payroll_router = APIRouter( prefix="/payroll", tags=["payroll"] ) # region PayScheme @payroll_router.get( '/scheme/get-all', operation_id='get_all_payroll_schemas', response_model=GetAllPayrollSchemeResponse ) async def get_all_schemas( session: SessionDependency ): return await PayrollService(session).get_all_schemas() @payroll_router.get( '/pay-rate/get-all', operation_id='get_all_pay_rates', response_model=GetAllPayRatesResponse ) async def get_all_pay_rates( session: SessionDependency ): return await PayrollService(session).get_all_pay_rates() # endregion # region PayRate @payroll_router.post( '/pay-rate/create', operation_id='create_pay_rate', response_model=CreatePayRateResponse ) async def create_pay_rate( session: SessionDependency, request: CreatePayRateRequest ): return await PayrollService(session).create_pay_rate(request) @payroll_router.post( '/pay-rate/update', operation_id='update_pay_rate', response_model=UpdatePayRateResponse ) async def update_pay_rate( session: SessionDependency, request: UpdatePayRateRequest ): return await PayrollService(session).update_pay_rate(request) @payroll_router.post( '/pay-rate/delete', operation_id='delete_pay_rate', response_model=DeletePayRateResponse ) async def update_pay_rate( session: SessionDependency, request: DeletePayRateRequest ): return await PayrollService(session).delete_pay_rate(request) # endregion # region PaymentRecord @payroll_router.get( '/payment-record/get', operation_id='get_payment_records', response_model=GetPaymentRecordsResponse ) async def get_payment_records( session: SessionDependency, pagination: PaginationDependency ): return await PayrollService(session).get_payment_records(pagination) @payroll_router.post( '/payment-record/create', operation_id='create_payment_record', response_model=CreatePaymentRecordResponse ) async def create_payment_records( session: SessionDependency, request: CreatePaymentRecordRequest, user: CurrentUserDependency ): return await PayrollService(session).create_payment_record(request, user) @payroll_router.post( '/payment-record/delete', operation_id='delete_payment_record', response_model=DeletePaymentRecordResponse ) async def delete_payment_record( session: SessionDependency, request: DeletePaymentRecordRequest, ): return await PayrollService(session).delete_payment_record(request) # endregion