public async Task <IActionResult> ReserveSeats(string Seatstring, long TimeSlotId)//todo remove testdata { var SeatingArrangement = JsonSerializer.Deserialize <DeserializeRoot>(Seatstring); List <ReservedSeat> SeatList = new List <ReservedSeat>(); SeatingArrangement.selected.ForEach(s => { ReservedSeat ReservedSeat = new ReservedSeat { SeatId = s.seatNumber, RowId = s.GridRowId, TimeSlotId = TimeSlotId, SeatState = SeatState.Reserved }; SeatList.Add(ReservedSeat); }); if (COVID) { SeatList = await COVIDSeats(SeatList); } var PlayListList = await playListRepository.FindAllAsync(); var PlayList = PlayListList.FirstOrDefault(p => p.TimeSlotId == TimeSlotId); await seatRepository.ReserveSeats(SeatList); return(RedirectToAction("Pay", "Payment", new { id = PlayList.Id })); }
/// <summary> /// Adds Seats to left and right in case of social distancing /// </summary> /// <param name="SeatList">A List of type Reserved Seat from user selected seats.</param> /// <returns>A List of type Reserved Seat from user selected seats with disables seats on each side</returns> private async Task <List <ReservedSeat> > COVIDSeats(List <ReservedSeat> SeatList) { var ReservedSeats = await seatRepository.FindAllByTimeSlotIdAsync(SeatList[0].TimeSlotId); List <ReservedSeat> tempSeatList = new List <ReservedSeat>(); SeatList.ForEach(s => tempSeatList.Add(s)); List <ReservedSeat> ReservedSeatList = new List <ReservedSeat>(); ReservedSeatList = ReservedSeats.ToList(); SeatList.ForEach(s => { if ((ReservedSeatList.FindIndex(r => r.SeatId == (s.SeatId - 1) && r.RowId == s.RowId) == -1) && SeatList.FindIndex(f => f.SeatId == (s.SeatId - 1) && f.RowId == s.RowId) == -1) { ReservedSeat ReservedSeat = new ReservedSeat { SeatId = (s.SeatId - 1), RowId = s.RowId, TimeSlotId = s.TimeSlotId, SeatState = SeatState.Disabled }; tempSeatList.Add(ReservedSeat); } if ((ReservedSeatList.FindIndex(r => r.SeatId == (s.SeatId + 1) && r.RowId == s.RowId) == -1) && SeatList.FindIndex(f => f.SeatId == (s.SeatId + 1) && f.RowId == s.RowId) == -1) { ReservedSeat ReservedSeat = new ReservedSeat { SeatId = (s.SeatId + 1), RowId = s.RowId, TimeSlotId = s.TimeSlotId, SeatState = SeatState.Disabled }; tempSeatList.Add(ReservedSeat); } }); return(tempSeatList); }
public void SetToBackFlightReservationToNewTravelPackage(TravelPackage travelPackage) { var reservationFlightRequest = new FlightReservationsToTravelPackageRequest { FlightID = travelPackage.ToBackFlight.Id_Flight, SeatCount = travelPackage.ReservationAmount }; FlightCompany FlightCompany = UnitOfWork.FlightCompanyRepository.GetByID(travelPackage.ToBackFlight.Id_Flight); var consumerFlights = new Consumer <List <FlightReservationsToTravelPackageResponse> >(); List <FlightReservationsToTravelPackageResponse> getSeatsResponse = consumerFlights.ReLoadEntities(FlightCompany.APIURLToReserveSeatsToTravelPackage, "POST", reservationFlightRequest).Result; foreach (var item in getSeatsResponse) { var auxSeat = new ReservedSeat() { Id_Flight = item.Id_Flight, Id_ReservedSeat = item.Id_Seat, Flight = UnitOfWork.FlightRepository.GetByID(item.Id_Flight) }; auxSeat.Flight.ReservedSeat.Add(auxSeat); UnitOfWork.ReservedSeatRepository.Insert(auxSeat); UnitOfWork.FlightRepository.Update(auxSeat.Flight); } UnitOfWork.Save(); }
public ActionResult ReserveForScreen32(ReservedSeat obj, Screen32 scr) { if (ModelState.IsValid) { /*obj.Name = data["customerName"].ToString(); * obj.Surname = data["customerSurname"].ToString(); * obj.Time = data["movieTime"].ToString(); */ string numOfSeat = obj.ReservedSeats; string[] arraySeat = numOfSeat.Split(','); for (int i = 0; i < arraySeat.Length; i++) { string sn = arraySeat[i]; db.Screen32.Where( a => a.SeatNumber == sn ).Single().isReserved = true; } db.ReservedSeats.Add(obj); db.SaveChanges(); return(RedirectToAction("Reservation")); } else { ModelState.Clear(); ViewBag.Error = "Something went wrong. Try again or contact with Administrator."; return(RedirectToAction("Reservation", obj)); } }
public async Task <IActionResult> Delete(Guid seatId) { if (seatId == default) { return(NotFound()); } ReservedSeat reservedSeat = await _reservedSeatRepository.GetByIdAsync(seatId); if (reservedSeat == null) { return(NotFound()); } await _reservedSeatRepository.DeleteAsync(reservedSeat); string userId = await _userRepository.GetCurrentUserId(User); if (string.IsNullOrEmpty(userId)) { return(RedirectToAction("Index", "Home")); } return(RedirectToAction("Profile", "User", new { id = userId })); }
public void Delete(ReservedSeatDomainModel entity) { if (entity == null) { throw new ArgumentNullException("entity"); } ReservedSeat reservedSeat = Mapper.Map <ReservedSeatDomainModel, ReservedSeat>(entity); Uow.GetRepository <ReservedSeat>().Delete(reservedSeat); Uow.Save(); }
public ReservedSeatDomainModel ReadById(object id) { if (id == null) { throw new ArgumentNullException("id"); } ReservedSeat reservedSeat = Uow.GetRepository <ReservedSeat>().ReadById(id); ReservedSeatDomainModel reservedSeatDomain = Mapper.Map <ReservedSeat, ReservedSeatDomainModel>(reservedSeat); return(reservedSeatDomain); }
public async Task <Object> SeatReservation(ReservedSeat reservation) { ReservedSeat seat = new ReservedSeat(); seat.SeatName = reservation.SeatName; seat.SurnameOfUser = reservation.SurnameOfUser; seat.NameOfUser = reservation.NameOfUser; seat.passportNumberOfUser = reservation.passportNumberOfUser; string userID = User.Claims.ElementAt(0).Value; // var user = _context.Users.Include(x => x.ReservedSeats).Where(x => x.Id == userID).ToList().First(); var flightID = reservation.FlightId; var flight = _context.Flights.Include(x => x.ReservedSeats).Where(x => x.Id == flightID).ToList().First(); if (userID == reservation.UserId) //rezervise za sebe { flight.ReservedSeats.Add(seat); flight.VacantSeats--; flight.BusySeats++; // user.ReservedSeats.Add(seat); _context.Entry(flight).State = Microsoft.EntityFrameworkCore.EntityState.Modified; // _context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; var result = await _context.SaveChangesAsync(); return(Ok(new { result })); } else //salje zahtev prijatelju { flight.ReservedSeats.Add(seat); flight.VacantSeats--; flight.BusySeats++; // user.ReservedSeats.Add(seat); var friendID = reservation.UserId; // var friend = _context.Users.Include(x => x.SeatReservationRequests).Where(x => x.Id == friendID).ToList().First(); SeatReservationRequest seatReservationRequest = new SeatReservationRequest(); seatReservationRequest.ReservedSeat = seat; seatReservationRequest.Status = StatusFriendRequest.OnWait; //friend.SeatReservationRequests.Add(seatReservationRequest); _context.Entry(flight).State = Microsoft.EntityFrameworkCore.EntityState.Modified; //_context.Entry(user).State = Microsoft.EntityFrameworkCore.EntityState.Modified; //_context.Entry(friend).State = Microsoft.EntityFrameworkCore.EntityState.Modified; var result = await _context.SaveChangesAsync(); return(Ok(new { result })); } }
public async Task <bool> ReservedSeats(ReservedSeatViewModel reservedSeats) { if (!ModelState.IsValid) { return(false); } string userId = await _userRepository.GetCurrentUserId(User); if (string.IsNullOrEmpty(userId)) { return(false); } FilmSeance seance = new FilmSeance { Date = reservedSeats.Date, Time = reservedSeats.Time, Price = reservedSeats.Price, RoomNumber = reservedSeats.RoomNumber, FilmId = reservedSeats.FilmId }; Guid seanceId = await _seanceRepository.GetIdBySeance(seance); if (seanceId == default) { return(false); } for (int i = 0; i < reservedSeats.SeatNumbers.Length; i++) { double row = ((double)reservedSeats.SeatNumbers[i] + 1) / ((double)seatsCountInRow); int rowNumber = Convert.ToInt32(Math.Ceiling(row)); int seatNumber = (reservedSeats.SeatNumbers[i] + 1) - ((rowNumber - 1) * seatsCountInRow); ReservedSeat reservedSeat = new ReservedSeat { RowNumber = rowNumber, SeatsNumber = seatNumber, UserId = userId, SeanceId = seanceId }; await _reservedSeatRepository.CreateAsync(reservedSeat); } return(true); }
private static async Task MakeReservations() { foreach (Flight flight in _flightsData) { List <ReservedSeat> reservedSeats = new List <ReservedSeat>(); Reservation reservation = new Reservation { FlightId = flight.Id, UserId = UserId, }; for (var i = 0; i < _personData.Count(); i++) { Seat freeSeat = _seatData.Where(se => se.AirplaneId == flight.AirplaneId && se.Reserved == false).ToList()[0]; PriceClass price = _priceData.Where(price => price.BeginDate <= DateTime.Now && price.EndDate >= DateTime.Now).FirstOrDefault(); ReservedSeat reservedSeat = new ReservedSeat { SeatId = freeSeat.Id, PriceId = price.Id, PersonId = _personData[i].Id, ReservationId = reservation.Id, TicketPrice = Math.Round((price.Value * flight.DistanceInKm / 1000), 2) }; freeSeat.Reserved = true; reservation.TotalPrice += reservedSeat.TicketPrice; reservation.TotalSeats += 1; reservedSeats.Add(reservedSeat); } _reservedSeatData.AddRange(reservedSeats); _reservationData.Add(reservation); _airplaneData.Where(ap => ap.Id == flight.AirplaneId).FirstOrDefault().ReservedSeats = reservedSeats.Count(); } }
private async Task SaveState(ReservedSeat reservedSeat, EntityState state) { _context.Entry(reservedSeat).State = state; await _context.SaveChangesAsync(); }
public async Task DeleteAsync(ReservedSeat reservedSeat) { _context.Remove(reservedSeat); await _context.SaveChangesAsync(); }
public async Task UpdateAsync(ReservedSeat reservedSeat) { await SaveState(reservedSeat, EntityState.Modified); }
public async Task CreateAsync(ReservedSeat reservedSeat) { await SaveState(reservedSeat, EntityState.Added); }
public void GenerateCorrectJson() { // Arrange Room room = new Room { Id = 1, Capacity = 2, Rows = 2 }; ReservedSeat rS = new ReservedSeat { Id = 1, RowId = 1, SeatId = 1, SeatState = SeatState.Reserved }; List <ReservedSeat> seats = new List <ReservedSeat> { rS }; // Arrange List <ObjRow> ObjRowList = new List <ObjRow>(); for (var j = 1; j <= room.Rows; j++) { List <ObjSeat> objSeatList = new List <ObjSeat>(); for (var i = 1; i <= (room.Capacity / room.Rows); i++) { ObjSeat ObjSeat = new ObjSeat { GridSeatNum = i, seatNumber = i, SeatStatus = "0" }; var seatTaken = 0; seats.ForEach(s => { if (s.SeatId == i & s.RowId == j & s.SeatState == SeatState.Reserved) { seatTaken = 1; } if (s.SeatId == i & s.RowId == j & s.SeatState == SeatState.Disabled) { seatTaken = 2; } }); if (seatTaken > 0) { ObjSeat.SeatStatus = seatTaken.ToString(); seatTaken = 0; } objSeatList.Add(ObjSeat); } ObjRow ObjRow = new ObjRow { GridRowId = j, PhyRowId = j.ToString(), objSeat = objSeatList }; ObjRowList.Add(ObjRow); } ObjArea ObjArea = new ObjArea { AreaDesc = "EXECUTIVE", AreaCode = "0000000003", AreaNum = "1", HasCurrentOrder = true, objRow = ObjRowList }; List <ObjArea> ObjAreaList = new List <ObjArea>(); ObjAreaList.Add(ObjArea); ColAreas ColAreas = new ColAreas { Count = 1, intMaxSeatId = 21, intMinSeatId = 2, objArea = ObjAreaList }; SeatLayout SeatLayout = new SeatLayout { colAreas = ColAreas }; List <object> areaList = new List <object>(); List <object> groupedSeatsList = new List <object>(); Root Root = new Root { product_id = 46539040, freeSeating = false, tempTransId = "1ecae165f2d86315fea19963d0ded41a", seatLayout = SeatLayout, areas = areaList, groupedSeats = groupedSeatsList }; var encoderSettings = new TextEncoderSettings(); encoderSettings.AllowCharacters('\u0022'); encoderSettings.AllowRange(UnicodeRanges.BasicLatin); var options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(encoderSettings), WriteIndented = true }; string jsonString = JsonSerializer.Serialize(Root, options); // Act string sut = JSONSeatingHelper.JSONSeating(room, seats); // Assert Assert.Equal(sut, jsonString); }