120 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from fastapi import APIRouter, Depends
 | 
						|
 | 
						|
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.auth import authorized_user
 | 
						|
from services.payroll import PayrollService
 | 
						|
 | 
						|
payroll_router = APIRouter(
 | 
						|
    prefix="/payroll",
 | 
						|
    tags=["payroll"],
 | 
						|
    dependencies=[Depends(authorized_user)]
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
# 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
 |