public Parking Depart(Car car) { if (car == null) { throw new ArgumentNullException(); } DateTime departure = DateTime.Now; Parking parking = new Parking(); using (ParkingDBContext context = factory.CreateDbContext()) { CarEntity carEntity = context.Cars.Single(ca => ca.StateNumber == car.StateNumber); var history = context.ParkingHistory.Where(ph => ph.IdCar == carEntity.IdCar).Last(); ParkingEntity parkingEntity = context.Parkings.Single(pa => pa.IdParking == history.IdParking); var carEntities = context.ParkingHistory.Include(ph => ph.Car).Where(ph => ph.IdParking == parkingEntity.IdParking && ph.Departure == null).Select(ph => ph.Car).ToList(); parking.ParkingName = parkingEntity.Name; parking.Latitude = parkingEntity.Latitude; parking.Longitude = parkingEntity.Longitude; foreach (var carEnt in carEntities) { User user = new User(); ApplicationUser userEntity = context.Users.Single(us => us.UsersHaveCars.Any(uhc => uhc.IdCar == carEnt.IdCar)); user.Username = userEntity.UserName; user.FirstName = userEntity.FirstName; user.LastName = userEntity.Lastname; user.UserPhoto = userEntity.UserPhoto; Car carInParking = new Car(); carInParking.StateNumber = carEnt.StateNumber; carInParking.Id = carEnt.IdCar; carInParking.Manufacturer = carEnt.Manufacturer; carInParking.Color = carEnt.Color; carInParking.Model = carEnt.Model; carInParking.Year = carEnt.Year; carInParking.Owner = user; ParkingHistoryEntity parkingHistoryIn = context.ParkingHistory.Last(phe => phe.IdCar == carEnt.IdCar); parking.AddCar(carInParking.StateNumber, carInParking.Owner, parkingHistoryIn.Arrival); } history.Departure = departure; context.SaveChanges(); return(parking); } }
public IHttpActionResult RunLottery() { List <dynamic> result = _parkingRepository.AllotParking(); dynamic ptempList = result[0]; dynamic etempList = result[1]; List <ParkingEntity> pList = new List <ParkingEntity>(); foreach (dynamic p in ptempList) { ParkingEntity pen = new ParkingEntity(); pen.PID = p.ParkingSlotID; pen.Wing = p.ParkingSlotWing; pList.Add(pen); } List <EmployeeEntity> eList = new List <EmployeeEntity>(); foreach (dynamic e in etempList) { EmployeeEntity een = new EmployeeEntity(); een.Id = e.EmployeeID; een.RoleTitle = e.RoleTitle; eList.Add(een); } if (pList.Count > eList.Count) { //assign parking slot to each employee randomly } else { //assign parking slot for random employee } return(Ok()); }
public void DepartureTest() { User user = new User(); user.Username = "******"; Car car = new Car(); car.Owner = user; car.StateNumber = "1234"; Parking parking = new Parking(); parking.ParkingName = "Zion"; using (ParkingDBContext context = contextFactory.CreateDbContext()) { ParkingEntity parkingEntity = new ParkingEntity(); parkingEntity.Name = parking.ParkingName; context.Parkings.Add(parkingEntity); ApplicationUser userEntity = new ApplicationUser(); userEntity.UserName = user.Username; context.Users.Add(userEntity); CarEntity carEntity = new CarEntity(); carEntity.StateNumber = car.StateNumber; UsersHaveCars uhc = new UsersHaveCars(); uhc.UserEntity = userEntity; uhc.CarEntity = carEntity; userEntity.UsersHaveCars = new List <UsersHaveCars>(); userEntity.UsersHaveCars.Add(uhc); context.SaveChanges(); } ParkingManager parkingManager = new ParkingManager(contextFactory); parkingManager.Arrive(car, parking, car.Owner.Username); parkingManager.Depart(car); Assert.DoesNotContain(car, parking.Cars); }
public Parking Arrive(Car car, Parking parking, string username) { if (car == null) { throw new ArgumentNullException(); } if (parking == null) { throw new ArgumentNullException(); } DateTime arrival = DateTime.Now; using (ParkingDBContext context = factory.CreateDbContext()) { ApplicationUser userEntity = context.Users.Single(us => us.UserName == username); User user = new User(); user.Username = userEntity.UserName; user.FirstName = userEntity.FirstName; user.Email = userEntity.Email; user.LastName = userEntity.Lastname; user.Password = userEntity.PasswordHash; user.UserPhoto = userEntity.UserPhoto; CarEntity carEntity = context.Cars.Single(ca => ca.StateNumber == car.StateNumber); ParkingEntity parkingEntity = context.Parkings.Single(park => park.Name == parking.ParkingName); ParkingHistoryEntity historyEntity = new ParkingHistoryEntity(); historyEntity.IdCar = carEntity.IdCar; historyEntity.IdUser = userEntity.Id; historyEntity.IdParking = parkingEntity.IdParking; historyEntity.Arrival = arrival; context.ParkingHistory.Add(historyEntity); context.SaveChanges(); parking.AddCar(car.StateNumber, user, arrival); return(parking); } }