public async Task <ActionResult> Post(ReservationOffer model) { Guid reservationId = Guid.NewGuid(); await _reservationManager.Add(reservationId, User.GetGuid(), model); return(CreatedAtRoute(nameof(GetReservationById), new { id = reservationId }, reservationId)); }
public ActionResult Delete(int id, ReservationOfferModel REM) { ReservationOffer RE = resEvSer.GetById(id); resEvSer.Delete(RE); resEvSer.Commit(); return(RedirectToAction("ReservationPerUser")); }
public async Task WhenIMakeAReservation() { ReservationOffer reservationOffer = _generatedOffer; HttpResponseMessage response = await Client.PostAsJsonAsync("/api/reservations/", reservationOffer); string responseContent = await response.Content.ReadAsStringAsync(); _reservationStatusCode = response.StatusCode; }
//GET: ReservationOffer/Edit/5 public ActionResult Edit(int id) { ReservationOffer RE = resEvSer.GetById(id); ReservationOfferModel REM = new ReservationOfferModel { ReservationStatus = RE.ReservationStatus, ticketsNumber = RE.ticketsNumber, unitPrice = RE.unitPrice }; return(View(REM)); }
// GET: ReservationOffer/Delete/5 public ActionResult Delete(int id) { ReservationOffer RE = resEvSer.GetById(id); if (RE == null) { return(HttpNotFound()); } ReservationOfferModel REM = new ReservationOfferModel { ReservationStatus = RE.ReservationStatus, ticketsNumber = RE.ticketsNumber, unitPrice = RE.unitPrice, }; return(View(REM)); }
public ActionResult Edit(int id, ReservationOfferModel REM) { ReservationOffer RE = resEvSer.GetById(id); try { resEvSer.Update(RE); UpdateModel(RE); resEvSer.Commit(); return(RedirectToAction("ReservationPerUser")); } catch { return(View(RE)); } }
public ActionResult Create(ReservationOfferModel REM) { ReservationOffer RE = new ReservationOffer { IdOffer = 1, IdSimpleUser = 1, ticketsNumber = REM.ticketsNumber, unitPrice = REM.unitPrice, ReservationStatus = REM.ReservationStatus }; resEvSer.Add(RE); resEvSer.Commit(); resEvSer.Dispose(); RedirectToAction("Create"); return(View()); }
public async Task GivenSeatInRowIsReservedForInCinemaInOn(int seat, int row, string movie, string cinema, string city, string datetime) { var request = new ReservationOffer() { Price = 25, OfferRequest = new ReservationOfferRequest { Places = new List <Place> { new Place { Ticket = Ticket.Normal, Seat = seat, Row = row } }, ShowId = _selectedShowId } }; HttpResponseMessage response = await Client.PostAsJsonAsync("/api/reservations/", request); }
public async Task Add(Guid reservationId, Guid userId, ReservationOffer request) { var offer = await _reservationsQuerier.GetReservationOffer(request.OfferRequest); if (!offer.Equals(request)) { throw new Exception("Offer has expired."); } if (AnyPlaceIsInvalid(request.OfferRequest.Places)) { throw new Exception("Invalid place configuration."); } Show show = await _ctx.Shows.Include(s => s.Reservations).FirstOrDefaultAsync(s => s.Id == request.OfferRequest.ShowId); if (show is null) { throw new KeyNotFoundException(nameof(request.OfferRequest.ShowId)); } User user = await _ctx.Users.FindAsync(userId); if (user is null) { throw new KeyNotFoundException(nameof(userId)); } Reservation reservation = ReservationFactory.Create(reservationId, user); AddPlacesToReservation(request.OfferRequest.Places, reservation); show.AddReservation(reservation); await _ctx.SaveChangesAsync(); _emailSender.Send(new Email()); //TODO }
public async Task ThenTheCostOfReservationIsPLN(decimal price) { ReservationOfferRequest request = new ReservationOfferRequest { ShowId = _selectedShowId, Places = _selectedPlaces }; var query = $"/api/reservations/offer?Showid={_selectedShowId}"; for (int i = 0; i < _selectedPlaces.Count; i++) { query += $"&Places[{i}].Ticket={_selectedPlaces[i].Ticket}"; query += $"&Places[{i}].Row={_selectedPlaces[i].Row}"; query += $"&Places[{i}].Seat={_selectedPlaces[i].Seat}"; } HttpResponseMessage response = await Client.GetAsync(query); string responseContent = await response.Content.ReadAsStringAsync(); _generatedOffer = JsonConvert.DeserializeObject <ReservationOffer>(responseContent); _generatedOffer.OfferRequest.Should().BeEquivalentTo(request); _generatedOffer.Price.Should().Be(price); }
public static OfferDto FromReservationOffer(ReservationOffer offer) => new OfferDto { Date = offer.Date, Expires = offer.Expires, Price = offer.Price };
//public ActionResult ReservationPerUser() //{ // var x = resEvSer.getReservationsOfferByUser(1); // return View(x); //} //public ActionResult xx() //{ // var x = resEvSer.getOffersInterstUser(1); // ViewBag.z = x; // return View(x); //} // GET: ReservationOffer/Details/5 public ActionResult Details(int id) { ReservationOffer RE = resEvSer.GetById(id); return(View(RE)); }
public async Task <ActionResult <ReservationOffer> > GetOffer([FromQuery] ReservationOfferRequest model) { ReservationOffer offer = await _reservationQuerier.GetReservationOffer(model); return(Ok(offer)); }
public async Task <IActionResult> ReservationNow(int id, int countOfBaby, FlightsController.InputModel inputModel) { var flight = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == inputModel.flightInfo.Id); var seats = _context.Seats .Include(x => x.OfferType) .Where(x => x.FlightId == flight.Id).OrderBy(x => x.Row).ToList(); var selectedOffers = flight.Offers.Select(x => x.Offer).ToList(); List <Seat> selectedSeats = seats.Where(x => x.TypeId == inputModel.ticketClass && x.Availability && !(inputModel.seats[x.Col - 1][x.Row.ToCharArray()[0] - seats[0].Row.ToCharArray()[0]].Availability)).ToList(); ViewData["Err"] = ""; if (seats == null) { ViewData["Err"] = "There isn't any seat left in choosen class"; var @event = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == id); if (@event == null) { return(NotFound()); } return(View(@event)); } else if (inputModel.numOfChild + inputModel.numOfAdult > 4) { ViewData["Err"] = "You can reserve at most 4 seats"; var @event = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == id); if (@event == null) { return(NotFound()); } return(View(@event)); } else if (seats.Count < inputModel.numOfAdult + inputModel.numOfChild) { ViewData["Err"] = "There isn't enough seats for you to buy"; var @event = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == id); if (@event == null) { return(NotFound()); } return(View(@event)); } else if (countOfBaby > inputModel.numOfAdult) { ViewData["Err"] = "Infants cannot be more than adults"; var @event = await _context.Flights .Include(x => x.Organizer) .FirstOrDefaultAsync(m => m.Id == id); if (@event == null) { return(NotFound()); } return(View(@event)); } else { int counter = 0; while (counter < inputModel.numOfAdult + inputModel.numOfChild) { Reservation res = new Reservation(); res.FlightId = flight.Id; res.OwnerId = _userManager.GetUserId(HttpContext.User); res.processTime = DateTime.Now; res.numOfAdult = inputModel.numOfAdult; res.numOfChild = inputModel.numOfChild; _context.Reservations.Add(res); await _context.SaveChangesAsync(); foreach (var item in inputModel.offers) { if (item.quantity > 0) { ReservationOffer tmp = new ReservationOffer() { Offer = selectedOffers.Find(x => x.Id == item.offer.Id), Reservation = res }; _context.ReservationOffers.Add(tmp); if (_context.SaveChanges() > 0) { item.quantity--; } } else if (item.childQuantity > 0) { ReservationOffer tmp = new ReservationOffer() { Offer = selectedOffers.Find(x => x.Id == item.offer.Id), Reservation = res }; _context.ReservationOffers.Add(tmp); if (_context.SaveChanges() > 0) { item.childQuantity--; } } } Seat seat = selectedSeats.ElementAt(counter); seat.ReservationId = res.Id; seat.Availability = false; var tmp2 = _context.Seats.Update(seat); try { await _context.SaveChangesAsync(); AutoCancelManager.AutoCancelManagerStatic.DeleteOverTime(res, _context); } catch (Exception ex) { Debug.WriteLine(ex.Message); throw; } counter++; } return(RedirectToAction(nameof(Successful))); } }