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 }); }
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 }
public async Task <int> AddReservationAsync(AddReservationDto addReservationDto) { return(await _reservationRepository.AddAsync( _reservationConverter.AddReservationDtoToReservation(addReservationDto))); }