コード例 #1
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
        public void CarInGate(Gate gate)
        {
            if (!gate.DriveIn)
            {
                CarOutGate(gate);
                return;
            }
            bool residentVehicle = false;

            foreach (var resident in ResidentsList)
            {
                if (resident.LicensePlate == gate.OpenGatesFor)
                {
                    residentVehicle = true;
                }
            }
            Vehicle vehicle = new Vehicle(gate.OpenGatesFor, residentVehicle);

            Task.Factory.StartNew(() =>
            {
                System.Threading.Thread.Sleep(20000);
                if (CheckIfNotParked(vehicle))
                {
                    Form.Invoke((MethodInvoker) delegate { ConsoleLog.Add("Automobilis nepastatytas " + vehicle); });
                }
            });
            MockedVehiclesInOut.Add(vehicle);
            NotParkedVehicles.Add(vehicle);
        }
コード例 #2
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
        public void CarOut(string licensePlate, int camId)
        {
            Gate gate = Gates.FirstOrDefault(gt => gt.Id == camId);

            if (gate == null)
            {
                Form.Invoke((MethodInvoker) delegate { ConsoleLog.Add("Kameros klaida"); });
                return;
            }

            Vehicle vehicle = NotParkedVehicles.FirstOrDefault(veh => veh.LicensePlate == licensePlate);

            if (vehicle == null)
            {
                Form.Invoke((MethodInvoker) delegate { ConsoleLog.Add("Mašina sistemoje nerasta!!! " + licensePlate); });
                gate.OpenVehicle(licensePlate, false);
                return;
            }

            if (!vehicle.Paid)
            {
                if (ResidentsList.FirstOrDefault(s => s.LicensePlate == vehicle.LicensePlate) == null)
                {
                    Form.Invoke((MethodInvoker) delegate { ConsoleLog.Add("Važiuoja nesusimokėjus " + vehicle); });
                    return;
                }

                vehicle.Resident = true;
                vehicle.Paid     = true;
            }

            gate.OpenVehicle(licensePlate, false);
        }
コード例 #3
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
        public void CarOutGate(Gate gate)
        {
            var vehicle = NotParkedVehicles.FirstOrDefault(v => v.LicensePlate == gate.OpenGatesFor);

            if (vehicle == null)
            {
                return;
            }
            NotParkedVehicles.Remove(vehicle);
            MockedVehiclesInOut.First(veh => veh == vehicle && veh.InParkingLot).OnExit();
        }
コード例 #4
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
        public Vehicle Parked(string license)
        {
            Vehicle vehicle;

            lock (NotParkedVehicles)
            {
                vehicle = NotParkedVehicles.FirstOrDefault(v => v.LicensePlate == license);
                if (vehicle != null)
                {
                    NotParkedVehicles.Remove(vehicle);
                }
            }
            return(vehicle);
        }
コード例 #5
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
 public void ArchiveCar(Vehicle vehicle)
 {
     if (!NotParkedVehicles.Remove(vehicle))
     {
         foreach (var parkingLotParkingSpace in ParkingLot.ParkingSpaces)
         {
             if (parkingLotParkingSpace.Vehicle == null)
             {
                 continue;
             }
             if (!parkingLotParkingSpace.Vehicle.Equals(vehicle))
             {
                 continue;
             }
             parkingLotParkingSpace.Vehicle = null;
         }
     }
 }
コード例 #6
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
        public void Pay(string licensePlat)
        {
            Vehicle vehicle = NotParkedVehicles.FirstOrDefault(v => v.LicensePlate == licensePlat);

            if (vehicle != null)
            {
                vehicle.OnPay();
            }
            else
            {
                foreach (var parkingLotParkingSpace in ParkingLot.ParkingSpaces)
                {
                    if (parkingLotParkingSpace.Vehicle != null && parkingLotParkingSpace.Vehicle.LicensePlate == licensePlat)
                    {
                        parkingLotParkingSpace.Vehicle.OnPay();
                        return;
                    }
                }
            }
        }
コード例 #7
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
 public void UnParked(Vehicle vehicle)
 {
     NotParkedVehicles.Add(vehicle);
 }
コード例 #8
0
ファイル: Console.cs プロジェクト: miprib/premium-parking
 public bool CheckIfNotParked(Vehicle vehicle)
 {
     return(NotParkedVehicles.Contains(vehicle));
 }