Exemple #1
0
    // 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);
    }
Exemple #2
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;
                }
            }
        }
    }
Exemple #3
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;
            }
        }
    }
Exemple #4
0
    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;
    }
Exemple #5
0
    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;
        }
    }