コード例 #1
0
        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 }));
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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 }));
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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 }));
            }
        }
コード例 #9
0
        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();
            }
        }
コード例 #11
0
 private async Task SaveState(ReservedSeat reservedSeat, EntityState state)
 {
     _context.Entry(reservedSeat).State = state;
     await _context.SaveChangesAsync();
 }
コード例 #12
0
 public async Task DeleteAsync(ReservedSeat reservedSeat)
 {
     _context.Remove(reservedSeat);
     await _context.SaveChangesAsync();
 }
コード例 #13
0
 public async Task UpdateAsync(ReservedSeat reservedSeat)
 {
     await SaveState(reservedSeat, EntityState.Modified);
 }
コード例 #14
0
 public async Task CreateAsync(ReservedSeat reservedSeat)
 {
     await SaveState(reservedSeat, EntityState.Added);
 }
コード例 #15
0
        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);
        }