public ReserveTicketResponse ReserveTicket(ReserveTicketRequest reserveTicketRequest) { ReserveTicketResponse response = new ReserveTicketResponse(); try { Event Event = _eventRepository.FindBy(new Guid(reserveTicketRequest.EventId)); TicketReservation reservation; if (Event.CanReserveTicket(reserveTicketRequest.TicketQuantity)) { reservation = Event.ReserveTicket(reserveTicketRequest.TicketQuantity); _eventRepository.Save(Event); response = reservation.ConvertToReserveTicketResponse(); response.Success = true; } else { response.Success = false; response.Message = String.Format("There are {0} ticket(s) available.", Event.AvailableAllocation()); } } catch (Exception ex) { response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex); response.Success = false; } return response; }
public static ReserveTicketResponse ConvertToReserveTicketResponse(this TicketReservation ticketReservation) { ReserveTicketResponse response = new ReserveTicketResponse(); response.EventId = ticketReservation.Event.Id.ToString(); response.EventName = ticketReservation.Event.Name; response.NoOfTicket = ticketReservation.TicketQuantity; response.ExpirationDate = ticketReservation.ExpiryTime; response.ReservationNumber = ticketReservation.Id.ToString(); return response; }