Exemplo n.º 1
0
        public async Task <IActionResult> BookRoom(AddReservationDto addReservationDto)
        {
            if (!ModelState.IsValid)
            {
                foreach (var model in ModelState.Values)
                {
                    foreach (var error in model.Errors)
                    {
                        Console.WriteLine(error.ErrorMessage);
                    }
                }
                return(RedirectToAction("BookRoom", "Reservation", new { roomId = addReservationDto.RoomId }));
            }
            var reservationId = await _reservationService.AddReservationAsync(addReservationDto);

            foreach (var bookedService in addReservationDto.MinuteServices)
            {
                await _reservationService.AssignMinuteServiceAsync(new AddMinuteServiceToReservationDto()
                {
                    ReservationId   = reservationId,
                    MinuteServiceId = bookedService.MinuteServiceId,
                    Duration        = bookedService.Duration
                });
            }

            return(RedirectToAction("Manage", "Reservation", new { reservationId = reservationId }));
        }
        public async Task <IActionResult> Add(AddReservationDto newReservation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            return(Ok(await _reservationService.AddReservation(newReservation)));
        }
 public async Task Add(AddReservationDto reservation)
 {
     var newReservation = new Reservations {
         ReservationSeat      = reservation.Seat,
         ReservationShowingId = reservation.ShowingId,
         ReservationUserId    = reservation.UserId
     };
     await _reservationsRepository.Add(newReservation);
 }
 public Reservation AddReservationDtoToReservation(AddReservationDto addReservationDto)
 {
     return(new Reservation
     {
         StartDate = addReservationDto.ReservationStartDate,
         EndDate = addReservationDto.ReservationEndDate,
         RoomId = addReservationDto.RoomId,
         ClientId = addReservationDto.ClientId
     });
 }
Exemplo n.º 5
0
        public async Task <ActionResult> Post([FromBody] AddReservationDto reservation)
        {
            var takenSeats = await _showingsService.GetTakenSeats(reservation.ShowingId);

            if (reservation.Seat <= 0)
            {
                return(BadRequest(new ErrorMessage($"Seat number must be greater than 0")));
            }
            if (takenSeats.Select(s => s.Number).Contains(reservation.Seat))
            {
                return(BadRequest(new ErrorMessage($"Seat {reservation.Seat} is already taken!")));
            }
            await _reservationsService.Add(reservation);

            var seats = await _showingsService.GetTakenSeats(reservation.ShowingId);

            await _hubContext.Clients.All.SendAsync("OnSeatsChanged", seats);

            return(Ok());
        }
        public async Task <ServiceResponse <Reservation> > AddReservation(AddReservationDto newReservation)
        {
            ServiceResponse <Reservation> serviceResponse = new ServiceResponse <Reservation>();

            try
            {
                #region nzm
                //prvo provera da li ima mesta na letovima

                /*Flight dbDeparting = await _context.Flights.FirstOrDefaultAsync(f => f.Id == newReservation.DepartingFlight.Id);
                 * if (dbDeparting.SeatsLeft == 0) //nema mesta vise
                 * {
                 *  serviceResponse.Message = "There's no more seats left at this aircraft.";
                 *  serviceResponse.Success = false;
                 *  return serviceResponse;
                 * }
                 * else
                 * {
                 *  dbDeparting.SeatsLeft--;//samo za jedan, jer nije implementirano za vise korisnika odjednom
                 *  _context.Flights.Update(dbDeparting);
                 *  await _context.SaveChangesAsync();
                 * }
                 *
                 * if (newReservation.ReturningFlight != null)
                 * {
                 *  Flight dbReturning = await _context.Flights.FirstOrDefaultAsync(f => f.Id == newReservation.ReturningFlight.Id);
                 *  if (dbReturning.SeatsLeft == 0) //nema mesta vise
                 *  {
                 *      serviceResponse.Message = "There's no more seats left at this aircraft.";
                 *      serviceResponse.Success = false;
                 *      return serviceResponse;
                 *  }
                 *  else
                 *  {
                 *      dbReturning.SeatsLeft--;
                 *      _context.Flights.Update(dbReturning);
                 *      await _context.SaveChangesAsync();
                 *  }
                 * }*/
                #endregion nzm

                User user = await _context.Users.Include(u => u.Reservations).FirstOrDefaultAsync(u => u.Id == GetUserId());

                newReservation.User = user;

                // OVO JE NOVO
                Seat departingSeat = await _context.Seats.AsNoTracking().FirstOrDefaultAsync(s => s.Id == newReservation.DepartingFlightSeat.Id);

                //departingSeat.State = SeatState.TAKEN;
                newReservation.DepartingFlightSeat = departingSeat;

                if (newReservation.ReturningFlightSeat != null)
                {
                    Seat returningSeat = await _context.Seats.AsNoTracking().FirstOrDefaultAsync(s => s.Id == newReservation.ReturningFlightSeat.Id);

                    //returningSeat.State = SeatState.TAKEN;
                    newReservation.ReturningFlightSeat = returningSeat;
                }

                Reservation reservation = _mapper.Map <Reservation>(newReservation);

                user.Reservations.Add(reservation);

                /*_context.Seats.Update(newReservation.DepartingFlightSeat);
                *  if (newReservation.ReturningFlightSeat != null)
                *   _context.Seats.Update(newReservation.ReturningFlightSeat);*/

                _context.Users.Update(user);
                await _context.SaveChangesAsync();

                Reservation forResponse = _mapper.Map <Reservation>(newReservation);
                serviceResponse.Data = forResponse;
                #region email
                //poslati imejl
                string pattern = @"Reservation details..
                                   Flight #1 : Origin: {0} | Destination: {1} | Takeoff time: {2} | Landing time: {3} | Duration: {4}.
                                   ";

                string emailData = string.Format(pattern, newReservation.DepartingFlight.Origin, newReservation.DepartingFlight.Destination,
                                                 newReservation.DepartingFlight.TakeoffTime, newReservation.DepartingFlight.LandingTime, newReservation.DepartingFlight.Duration);

                if (newReservation.ReturningFlight != null)
                {
                    string pattern2   = @"
                                   Flight #2 : Origin: {0} | Destination: {1} | Takeoff time: {2} | Landing time: {3} | Duration: {4}.
                                   ";
                    string emailData2 = string.Format(pattern2, newReservation.ReturningFlight.Origin, newReservation.ReturningFlight.Destination,
                                                      newReservation.ReturningFlight.TakeoffTime, newReservation.ReturningFlight.LandingTime, newReservation.ReturningFlight.Duration);

                    emailData = emailData + emailData2;
                }

                var message = new MimeMessage();
                message.From.Add(new MailboxAddress("Booking details", "*****@*****.**"));
                message.To.Add(new MailboxAddress("Luka", "*****@*****.**"));
                message.Subject = "Booking details";
                message.Body    = new TextPart("plain")
                {
                    Text = emailData
                };

                using (var client = new MailKit.Net.Smtp.SmtpClient())
                {
                    client.Connect("smtp.gmail.com", 587, false);

                    //SMTP server authentication if needed
                    client.Authenticate("rluka996", "kostadin");

                    client.Send(message);

                    client.Disconnect(true);
                }
                #endregion email
            }
            catch (Exception ex)
            {
                serviceResponse.Message = ex.Message;

                serviceResponse.Success = false;
            }
            return(serviceResponse);

            #region druginacin

            /*
             * ServiceResponse<List<Reservation>> serviceResponse = new ServiceResponse<List<Reservation>>();
             * try
             * {
             *  User user = await _context.Users.Include(u => u.Reservations).FirstOrDefaultAsync(u => u.Id == GetUserId());
             *  newReservation.User = user;
             *  Reservation reservation = _mapper.Map<Reservation>(newReservation);
             *  await _context.Reservations.AddAsync(reservation);
             *  //await _context.SaveChangesAsync();
             *
             *  serviceResponse.Data = user.Reservations.ToList();
             * }
             * catch (Exception ex)
             * {
             *  serviceResponse.Message = ex.Message;
             *  serviceResponse.Success = false;
             * }
             * return serviceResponse;
             */
            #endregion druginacin
        }
Exemplo n.º 7
0
 public async Task <int> AddReservationAsync(AddReservationDto addReservationDto)
 {
     return(await _reservationRepository.AddAsync(
                _reservationConverter.AddReservationDtoToReservation(addReservationDto)));
 }