public async Task <ActionResult <List <CheckoutResource> > > GetExpiredCheckoutsAndApplyTicket() { //Get Experid Checkouts var expiredCheckouts = _checkoutService.GetExpiredCheckouts(); // For each checkout insert ticket. If checkout already has a ticket then do nothing var expiredCheckoutsResource = _mapper.Map <List <Checkout>, List <CheckoutResource> >(expiredCheckouts); foreach (var expiredCheckoutResource in expiredCheckoutsResource) { var ticketCheckout = await _ticketService.GetAllWithCheckoutsByCheckoutsId(expiredCheckoutResource.Id); if (ticketCheckout == null) { SaveTicketResource saveTicketResource = new SaveTicketResource(); saveTicketResource.CheckoutId = expiredCheckoutResource.Id; saveTicketResource.Date = DateTime.Now; saveTicketResource.PaymentId = 1; saveTicketResource.Price = 5; saveTicketResource.State = true; var saveTicket = _mapper.Map <SaveTicketResource, Ticket>(saveTicketResource); var newTicket = await _ticketService.CreateTicket(saveTicket); } } return(Ok(expiredCheckoutsResource)); }
// FUNCTION FOR INTERNAL USE ONLY private async Task <Ticket> GetExpiredCheckoutsAndApplyTicketByCheckoutId(int checkoutId, bool isCheckoutJustUpdated) { // THIS FUNCTION IS NEEDED WHEN SOME CHECKOUT SUFFERS AN UPDATE OR A FUNCTION NEEDS TO KNOW IF CHECKOUT IS EXPIRED // BECAUSE IF SO, A NEW TICKET NEEDS TO BE INSERTED IN THE DATABASE Checkout expiredCheckout = new Checkout(); //Check If Checkout Is Expired expiredCheckout = _checkoutService.GetExpiredCheckoutById(checkoutId); // Check if the expired checkout has a ticket applied var ticketCheckout = await _ticketService.GetAllWithCheckoutsByCheckoutsIdAndState(checkoutId, true); // If the expired checkout has no ticket applied, then create ticket if (ticketCheckout == null && expiredCheckout.Id != 0) { SaveTicketResource saveTicketResource = new SaveTicketResource(); saveTicketResource.CheckoutId = expiredCheckout.Id; saveTicketResource.Date = DateTime.Now; saveTicketResource.PaymentId = 1; saveTicketResource.Price = 5; saveTicketResource.State = true; var saveTicket = _mapper.Map <SaveTicketResource, Ticket>(saveTicketResource); ticketCheckout = await _ticketService.CreateTicket(saveTicket); } else { expiredCheckout.Id = checkoutId; } // If this parameter is true, then close the ticket if (isCheckoutJustUpdated && ticketCheckout != null) { ticketCheckout.PaymentDate = DateTime.Now; ticketCheckout.State = false; await _ticketService.UpdateTicket(ticketCheckout); } return(ticketCheckout); }