Exemplo n.º 1
0
    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;
                }
            }
        }
    }
Exemplo n.º 2
0
    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;
            }
        }
    }