// FUNCTION TO CREATE SAMPLE ROWS public static List <ParkingRow> CreateSampleParkingRowList(int levelNumber) { List <ParkingRow> lstSampleParkingRow = new List <ParkingRow>(); int MotorcycleSpotOnlyLastRowNumber = ParkingLotConstants.MotorcycleSpotOnlyRowCount; for (int i = 1; i <= ParkingLotConstants.RowCount; i++) { ParkingRow objParkingRow = new ParkingRow(); List <ParkingSpot> lstSample1ParkingSpot = CreateSample1ParkingSpotList(levelNumber, i); List <ParkingSpot> lstSample2ParkingSpot = CreateSample2ParkingSpotList(levelNumber, i); if (i <= MotorcycleSpotOnlyLastRowNumber) { objParkingRow = CreateSampleParkingRow(levelNumber, i, lstSample1ParkingSpot); } else if (i > MotorcycleSpotOnlyLastRowNumber) { objParkingRow = CreateSampleParkingRow(levelNumber, i, lstSample2ParkingSpot); } lstSampleParkingRow.Add(objParkingRow); } return(lstSampleParkingRow); }
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; } } } }
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; } } }
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 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; } }