use axum::Router;
use std::sync::Arc;
use super::{
pos_closing_entry_handler::create_pos_closing_entry_routes,
pos_invoice_handler::create_pos_invoice_routes,
pos_invoice_item_handler::create_pos_invoice_item_routes,
pos_payment_handler::create_pos_payment_routes,
pos_profile_handler::create_pos_profile_routes,
pos_opening_entry_handler::create_pos_opening_entry_routes,
pos_cash_movement_handler::create_pos_cash_movement_routes,
pos_discount_handler::create_pos_discount_routes,
pos_manager_pin_handler::create_pos_manager_pin_routes,
pos_floor_plan_handler::create_pos_floor_plan_routes,
pos_table_handler::create_pos_table_routes,
};
use crate::application::service::{
PosClosingEntryService,
PosInvoiceService,
PosInvoiceItemService,
PosPaymentService,
PosProfileService,
PosOpeningEntryService,
PosCashMovementService,
PosDiscountService,
PosManagerPinService,
PosFloorPlanService,
PosTableService,
};
pub struct HttpServices {
pub pos_closing_entry: Arc<PosClosingEntryService>,
pub pos_invoice: Arc<PosInvoiceService>,
pub pos_invoice_item: Arc<PosInvoiceItemService>,
pub pos_payment: Arc<PosPaymentService>,
pub pos_profile: Arc<PosProfileService>,
pub pos_opening_entry: Arc<PosOpeningEntryService>,
pub pos_cash_movement: Arc<PosCashMovementService>,
pub pos_discount: Arc<PosDiscountService>,
pub pos_manager_pin: Arc<PosManagerPinService>,
pub pos_floor_plan: Arc<PosFloorPlanService>,
pub pos_table: Arc<PosTableService>,
}
pub fn configure_routes(services: HttpServices) -> Router {
Router::new()
.merge(create_pos_closing_entry_routes(services.pos_closing_entry))
.merge(create_pos_invoice_routes(services.pos_invoice))
.merge(create_pos_invoice_item_routes(services.pos_invoice_item))
.merge(create_pos_payment_routes(services.pos_payment))
.merge(create_pos_profile_routes(services.pos_profile))
.merge(create_pos_opening_entry_routes(services.pos_opening_entry))
.merge(create_pos_cash_movement_routes(services.pos_cash_movement))
.merge(create_pos_discount_routes(services.pos_discount))
.merge(create_pos_manager_pin_routes(services.pos_manager_pin))
.merge(create_pos_floor_plan_routes(services.pos_floor_plan))
.merge(create_pos_table_routes(services.pos_table))
}
pub mod individual {
use super::*;
pub fn pos_closing_entry_routes(service: Arc<PosClosingEntryService>) -> Router {
create_pos_closing_entry_routes(service)
}
pub fn pos_invoice_routes(service: Arc<PosInvoiceService>) -> Router {
create_pos_invoice_routes(service)
}
pub fn pos_invoice_item_routes(service: Arc<PosInvoiceItemService>) -> Router {
create_pos_invoice_item_routes(service)
}
pub fn pos_payment_routes(service: Arc<PosPaymentService>) -> Router {
create_pos_payment_routes(service)
}
pub fn pos_profile_routes(service: Arc<PosProfileService>) -> Router {
create_pos_profile_routes(service)
}
pub fn pos_opening_entry_routes(service: Arc<PosOpeningEntryService>) -> Router {
create_pos_opening_entry_routes(service)
}
pub fn pos_cash_movement_routes(service: Arc<PosCashMovementService>) -> Router {
create_pos_cash_movement_routes(service)
}
pub fn pos_discount_routes(service: Arc<PosDiscountService>) -> Router {
create_pos_discount_routes(service)
}
pub fn pos_manager_pin_routes(service: Arc<PosManagerPinService>) -> Router {
create_pos_manager_pin_routes(service)
}
pub fn pos_floor_plan_routes(service: Arc<PosFloorPlanService>) -> Router {
create_pos_floor_plan_routes(service)
}
pub fn pos_table_routes(service: Arc<PosTableService>) -> Router {
create_pos_table_routes(service)
}
}