diff --git a/pms_api_rest/datamodels/pms_dashboard.py b/pms_api_rest/datamodels/pms_dashboard.py index 2a744aed4..6b24b4bc8 100644 --- a/pms_api_rest/datamodels/pms_dashboard.py +++ b/pms_api_rest/datamodels/pms_dashboard.py @@ -5,15 +5,13 @@ from odoo.addons.datamodel.core import Datamodel class PmsDashboardPendingReservationsSearchParam(Datamodel): _name = "pms.dashboard.pending.reservations.search.param" - dateTo = fields.String(required=False, allow_none=True) - dateFrom = fields.String(required=False, allow_none=True) + date = fields.String(required=False, allow_none=True) + pmsPropertyId = fields.Integer(required=False, allow_none=True) class PmsDashboardPendingReservations(Datamodel): _name = "pms.dashboard.pending.reservations" - id = fields.Integer(required=True, allow_none=False) - state = fields.String(required=False, allow_none=True) - reservationType = fields.String(required=False, allow_none=True) - checkin = fields.String(required=False, allow_none=True) + pendingReservations = fields.Integer(required=False, allow_none=True) + completedReservations = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/services/pms_dashboard_service.py b/pms_api_rest/services/pms_dashboard_service.py index aadf442c7..d0b4cead7 100644 --- a/pms_api_rest/services/pms_dashboard_service.py +++ b/pms_api_rest/services/pms_dashboard_service.py @@ -16,37 +16,74 @@ class PmsDashboardServices(Component): [ ( [ - "/reservations", + "/pending-checkins", ], "GET", ) ], input_param=Datamodel("pms.dashboard.pending.reservations.search.param"), - output_param=Datamodel("pms.dashboard.pending.reservations", is_list=True), + output_param=Datamodel("pms.dashboard.pending.reservations"), auth="jwt_api_pms", ) - def get_reservations(self, pms_reservations_search_param): - date_from = fields.Date.from_string(pms_reservations_search_param.dateFrom) - date_to = fields.Date.from_string(pms_reservations_search_param.dateTo) + def get_pending_checkin_reservations(self, pms_reservations_search_param): + date = fields.Date.from_string(pms_reservations_search_param.date) - domain = [ - ("checkin", ">=", date_from), - ("checkin", "<=", date_to), - ("state", "!=", "cancel"), - ("reservation_type", "!=", "out") - ] - reservations = self.env["pms.reservation"].search(domain) + + pendingReservations = self.env["pms.reservation"].search_count( + [ + ("checkin", "=", date), + ("state", "in", ("confirm", "arrival_delayed")), + ("reservation_type", "!=", "out") + ] + ) + completedReservations = self.env["pms.reservation"].search_count( + [ + ("checkin", "=", date), + ("state", "=", "onboard"), + ] + ) PmsDashboardPendingReservations = self.env.datamodels["pms.dashboard.pending.reservations"] - result = [] - for reservation in reservations: - result.append( - PmsDashboardPendingReservations( - id=reservation.id, - state=reservation.state, - checkin=datetime.combine( - reservation.checkin, datetime.min.time() - ).isoformat(), - reservationType=reservation.reservation_type, - ) + + return PmsDashboardPendingReservations( + pendingReservations=pendingReservations, + completedReservations=completedReservations, + ) + + @restapi.method( + [ + ( + [ + "/pending-checkouts", + ], + "GET", ) - return result + ], + input_param=Datamodel("pms.dashboard.pending.reservations.search.param"), + output_param=Datamodel("pms.dashboard.pending.reservations"), + auth="jwt_api_pms", + ) + def get_pending_checkout_reservations(self, pms_reservations_search_param): + date = fields.Date.from_string(pms_reservations_search_param.date) + + + pending_reservations = self.env["pms.reservation"].search_count( + [ + ("checkout", "=", date), + ("state", "in", ("onboard", "departure_delayed")), + ("reservation_type", "!=", "out"), + ] + ) + completed_reservations = self.env["pms.reservation"].search_count( + [ + ("checkout", "=", date), + ("state", "=", "done"), + ] + ) + PmsDashboardPendingReservations = self.env.datamodels["pms.dashboard.pending.reservations"] + + return PmsDashboardPendingReservations( + pendingReservations=pending_reservations, + completedReservations=completed_reservations, + ) + +