public IActionResult AddLevel(ParkingAddLevelViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest()); } var parking = _parkingRepository.FindById(viewModel.ParkingId); if (parking == null) { return(NotFound()); } var level = new ParkingLevel(viewModel.Floor); var result = parking.AddParkingLevel(level); if (!result.IsSuccess) { return(BadRequest(result.ErrorMessage)); } _context.SaveChanges(); return(RedirectToAction(nameof(Edit), new { id = viewModel.ParkingId })); }
private void CheckForParkingAvailability(ParkingLot parkingLot) { List <ParkingLevel> lstParkingLevel = parkingLot.ParkingLevels; int MotorcycleSpotOnlyLastRowNumber = ParkingLotConstants.MotorcycleSpotOnlyRowCount; int MixedSpotMotorcycleSpotLastSpotNumber = ParkingLotConstants.MixedSpotsMotorcycleSpotCount; for (int i = 0; i <= lstParkingLevel.Count - 1; i++) { ParkingLevel objParkingLevel = lstParkingLevel[i]; List <ParkingRow> lstParkingRow = objParkingLevel.ParkingRows; for (int j = 0; j <= lstParkingRow.Count - 1; j++) { ParkingRow objParkingRow = lstParkingRow[j]; List <ParkingSpot> lstParkingSpot = objParkingRow.ParkingSpots; for (int k = 0; k <= lstParkingSpot.Count - 1; k++) { ParkingSpot objParkingSpot = lstParkingSpot[k]; bool isFilled = objParkingSpot.IsFilled; if (j <= (MotorcycleSpotOnlyLastRowNumber - 1)) { if (isFilled == false) { IsParkingAvailable = true; VehicleParkingInformation = VehicleUtility.GetVehicleParkingInformation(objParkingSpot.LevelNumber, objParkingSpot.RowNumber, new List <int> { objParkingSpot.SpotNumber }, objParkingSpot.SpotType); break; } } else if (j > (MotorcycleSpotOnlyLastRowNumber - 1)) { if (k <= (MixedSpotMotorcycleSpotLastSpotNumber - 1)) { if (isFilled == false) { IsParkingAvailable = true; VehicleParkingInformation = VehicleUtility.GetVehicleParkingInformation(objParkingSpot.LevelNumber, objParkingSpot.RowNumber, new List <int> { objParkingSpot.SpotNumber }, objParkingSpot.SpotType); break; } } else { break; } } } if (IsParkingAvailable == true) { break; } } } }
public void AddParkingLevel() { var parking = new Parking(Address.BelarusMinskNemiga); var parkingLevel = new ParkingLevel(1); var result = parking.AddParkingLevel(parkingLevel); Assert.IsTrue(result.IsSuccess); }
public Result AddParkingLevel(ParkingLevel parkingLevel) { if (_parkingLevels.Any(x => x.Floor == parkingLevel.Floor)) { return(Result.Failure($"Parking level with floor {parkingLevel.Floor} already exists")); } _parkingLevels.Add(parkingLevel); return(Result.Success()); }
private void CheckForParkingAvailability(ParkingLot parkingLot) { List <ParkingLevel> lstParkingLevel = parkingLot.ParkingLevels; int MotorcycleSpotOnlyLastRowNumber = ParkingLotConstants.MotorcycleSpotOnlyRowCount; int MixedSpotCompactSpotLastSpotNumber = ParkingLotConstants.MixedSpotsMotorcycleSpotCount + ParkingLotConstants.MixedSpotsCompactSpotCount; for (int i = 0; i <= lstParkingLevel.Count; i++) { ParkingLevel objParkingLevel = lstParkingLevel[i]; List <ParkingRow> lstParkingRow = objParkingLevel.ParkingRows; for (int j = MotorcycleSpotOnlyLastRowNumber; j <= lstParkingRow.Count - 1; j++) { ParkingRow objParkingRow = lstParkingRow[j]; List <ParkingSpot> lstParkingSpot = objParkingRow.ParkingSpots; int intConsecutiveFiveSpotsCount = 0; List <int> lstConsecutiveFiveSpots = new List <int>(); for (int k = MixedSpotCompactSpotLastSpotNumber; k <= lstParkingSpot.Count - 1; k++) { ParkingSpot objParkingSpot = lstParkingSpot[k]; bool isFilled = objParkingSpot.IsFilled; if (isFilled == false) { intConsecutiveFiveSpotsCount++; lstConsecutiveFiveSpots.Add(objParkingSpot.SpotNumber); } else if (isFilled == true) { intConsecutiveFiveSpotsCount = 0; lstConsecutiveFiveSpots.Clear(); } if (intConsecutiveFiveSpotsCount == 5) { IsParkingAvailable = true; VehicleParkingInformation = VehicleUtility.GetVehicleParkingInformation(objParkingSpot.LevelNumber, objParkingSpot.RowNumber, lstConsecutiveFiveSpots, objParkingSpot.SpotType); break; } } if (IsParkingAvailable == true) { break; } } if (IsParkingAvailable == true) { break; } } }
public void AddExistsParkingLevel() { var parking = new Parking(Address.BelarusMinskNemiga); var parkingLevel1 = new ParkingLevel(1); var parkingLevel2 = new ParkingLevel(1); var result1 = parking.AddParkingLevel(parkingLevel1); var result2 = parking.AddParkingLevel(parkingLevel2); Assert.IsTrue(result1.IsSuccess); Assert.IsFalse(result2.IsSuccess); }
private void DoCarParking(ref ParkingLot parkingLot) { int intTargetLevelNumber = VehicleParkingInformation.LevelNumber; int intTargetRowNumber = VehicleParkingInformation.RowNumber; int intTargetSpotNumber = VehicleParkingInformation.SpotNumbers[0]; ParkingLevel objTargetParkingLevel = parkingLot.ParkingLevels[intTargetLevelNumber]; ParkingRow objTargetParkingRow = objTargetParkingLevel.ParkingRows[intTargetRowNumber - 1]; ParkingSpot objTargetParkingSpot = objTargetParkingRow.ParkingSpots[intTargetSpotNumber - 1]; objTargetParkingSpot.IsFilled = true; }
private static ParkingLot CreateParkingLot(int totalLevels, int spaces, string parkingName) { var parkingLot = new ParkingLot(); parkingLot.Name = parkingName; for (int level = 1; level <= totalLevels; level++) { var parkingLevel = new ParkingLevel(); parkingLevel.Level = level; parkingLevel.ParkingSlots = CreateParkingSlots(spaces); parkingLot.ParkingLevels.Add(parkingLevel); } return(parkingLot); }
private void DoBusParking(ref ParkingLot parkingLot) { int intTargetLevelNumber = VehicleParkingInformation.LevelNumber; int intTargetRowNumber = VehicleParkingInformation.RowNumber; List <int> lstTargetSpotNumber = VehicleParkingInformation.SpotNumbers; ParkingLevel objTargetParkingLevel = parkingLot.ParkingLevels[intTargetLevelNumber]; ParkingRow objTargetParkingRow = objTargetParkingLevel.ParkingRows[intTargetRowNumber - 1]; List <ParkingSpot> lstTargetParkingSpot = objTargetParkingRow.ParkingSpots. FindAll(x => (x.SpotNumber >= lstTargetSpotNumber[0] && x.SpotNumber <= lstTargetSpotNumber[lstTargetSpotNumber.Count - 1])); foreach (ParkingSpot parkingSpot in lstTargetParkingSpot) { parkingSpot.IsFilled = true; } }
public static ParkingLot CreateSampleParkingLot() { List <ParkingLevel> lstSampleParkingLevel = new List <ParkingLevel>(); for (int i = 0; i <= ParkingLotConstants.LevelCount; i++) { List <ParkingRow> lstSampleParkingRow = CreateSampleParkingRowList(i); ParkingLevel objSampleParkingLevel = CreateSampleParkingLevel(i, lstSampleParkingRow); lstSampleParkingLevel.Add(objSampleParkingLevel); } ParkingLot objSampleParkingLot = new ParkingLot(); objSampleParkingLot.ParkingLevels = lstSampleParkingLevel; return(objSampleParkingLot); }
public void RemoveParkingLevel(ParkingLevel parkingLevel) { _parkingLevels.Remove(parkingLevel); }
public static IParkingLevel Create(int numberOfLevels) { IParkingLevel parkingLevel = new ParkingLevel(numberOfLevels); return(parkingLevel); }