Example #1
0
        public BuyTicketSummary BuyWithoutReservation(TicketBuyingModel ticketBuyingModel)
        {
            if (projectionRepository.Get(ticketBuyingModel.ProjectionId) == null)
            {
                return(new BuyTicketSummary(false, System.Net.HttpStatusCode.NotFound, "Projection not found!", null));
            }
            else if (!this.ticketRepository.SeatExists(ticketBuyingModel.RowNumber, ticketBuyingModel.ColumnNumber, ticketBuyingModel.ProjectionId))
            {
                return(new BuyTicketSummary(false, System.Net.HttpStatusCode.BadRequest, "Invalid seat!", null));
            }
            else if (ticketRepository.SeatIsOccupied(ticketBuyingModel.RowNumber, ticketBuyingModel.ColumnNumber, ticketBuyingModel.ProjectionId))
            {
                return(new BuyTicketSummary(false, System.Net.HttpStatusCode.BadRequest, "The seat you have chosen is occupied!", null));
            }
            else if (projectionRepository.ProjectionHasStarted(ticketBuyingModel.ProjectionId))
            {
                return(new BuyTicketSummary(false, System.Net.HttpStatusCode.BadRequest, "You cannot buy a ticket for a started or finished projection!", null));
            }
            Ticket             ticket             = (Ticket)ticketRepository.BuyTicket(ticketBuyingModel);
            TicketReceiptModel ticketReceiptModel = new TicketReceiptModel()
            {
                TicketId            = ticket.Id,
                CinemaName          = ticket.Projection.Room.Cinema.Name,
                MovieName           = ticket.Projection.Movie.Name,
                ColumnNumber        = ticket.ColumnNumber,
                RowNumber           = ticket.RowNumber,
                ProjectionStartDate = ticket.Projection.StartDate,
                RoomNumber          = ticket.Projection.Room.Number
            };

            return(new BuyTicketSummary(true, System.Net.HttpStatusCode.OK, "Ticket bought!", ticketReceiptModel));
        }
Example #2
0
        public IHttpActionResult BuyTicket(TicketBuyingModel ticketBuyingModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var result = buyTicket.BuyWithoutReservation(ticketBuyingModel);

            if (result.BoughtSuccessfully)
            {
                return(Ok(result.TicketReceipt));
            }
            return(ResponseMessage(Request.CreateResponse(result.StatusCode, result.Message)));
        }
Example #3
0
        public ITicket BuyTicket(TicketBuyingModel ticketBuyingModel)
        {
            var ticket = new Ticket();

            ticket.ColumnNumber = ticketBuyingModel.ColumnNumber;
            ticket.RowNumber    = ticketBuyingModel.RowNumber;
            ticket.ProjectionId = ticketBuyingModel.ProjectionId;
            this.dbContext.Tickets.Add(ticket);
            dbContext.SaveChanges();
            dbContext.Entry(ticket).Reference(a => a.Projection).Load();
            dbContext.Entry(ticket.Projection).Reference(a => a.Movie).Load();
            dbContext.Entry(ticket.Projection).Reference(a => a.Room).Load();
            dbContext.Entry(ticket.Projection.Room).Reference(a => a.Cinema).Load();

            return(ticket);
        }