コード例 #1
0
        public async Task <NewReservationSummary> NewAsync(IReservationCreation reservation)
        {
            var currProjection = await projectionRepo.GetProjectionByIdAsync(reservation.ProjectionId);

            var reservationExpiration = currProjection.StartDate - TimeSpan.FromMinutes(10);

            IReservation newReservation = await reservationRepo.InsertAsync(
                new Reservation(
                    reservation.ProjectionId,
                    reservation.Row,
                    reservation.Column,
                    reservationExpiration));

            await projectionRepo.DecreaseAvailableSeatsAsync(reservation.ProjectionId);

            //prepearing for reservation ticket
            var currMovie = await movieRepo.GetByIdAsync(currProjection.MovieId);

            var currRoom = await roomRepo.GetByIdAsync(currProjection.RoomId);

            var currCinema = await cinemaRepo.GetByIdAsync(currRoom.CinemaId);

            ReservationTicket reservationTicket = new ReservationTicket(
                newReservation.Id,
                currProjection.StartDate,
                currMovie.Name,
                currCinema.Name,
                currRoom.Number,
                newReservation.Row,
                newReservation.Column);

            return(new NewReservationSummary(true, reservationTicket));
        }
コード例 #2
0
        public async Task <NewTicketSummary> NewAsync(ITicketCreation reservation)
        {
            ITicket newTicket = await ticketRepo.InsertAsync(
                new Ticket(
                    reservation.ProjectionId,
                    reservation.Row,
                    reservation.Column));

            await projectionRepo.DecreaseAvailableSeatsAsync(reservation.ProjectionId);

            //preparing data for ticketOutputReceipt
            var currProjection = await projectionRepo.GetProjectionByIdAsync(newTicket.ProjectionId);

            var currMovie = await movieRepo.GetByIdAsync(currProjection.MovieId);

            var currRoom = await roomRepo.GetByIdAsync(currProjection.RoomId);

            var currCinema = await cinemaRepo.GetByIdAsync(currRoom.CinemaId);

            TicketOutputReceipt ticketOutputReceipt = new TicketOutputReceipt(
                newTicket.Id,
                currProjection.StartDate,
                currMovie.Name, currCinema.Name,
                currRoom.Number,
                newTicket.Row,
                newTicket.Column);

            return(new NewTicketSummary(true, ticketOutputReceipt));
        }