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)); }
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)); }