Exemple #1
0
        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);
 }
Exemple #9
0
        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);
        }
Exemple #11
0
 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));
        }
Exemple #13
0
        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)));
            }
        }