Ejemplo n.º 1
0
        private IEnumerable <VehicleType> GetVehiclesOrder(AirplaneRequest request)
        {
            if (request.RequestType == RequestType.Landing)
            {
                yield return(VehicleType.FollowMeVan);

                if (request.HasVips)
                {
                    yield return(VehicleType.VipShuttle);
                }
                if (request.RefuelNeeded)
                {
                    yield return(VehicleType.Refueler);
                }
                yield return(VehicleType.BaggageLoader);

                yield return(VehicleType.BaggageVan);

                yield return(VehicleType.Stairs);

                yield return(VehicleType.Bus);
            }
            else
            {
                yield return(VehicleType.Stairs);

                yield return(VehicleType.Bus);

                yield return(VehicleType.BaggageLoader);

                yield return(VehicleType.BaggageVan);

                if (request.RefuelNeeded)
                {
                    yield return(VehicleType.Refueler);
                }
                yield return(VehicleType.CateringTruck);

                if (request.HasVips)
                {
                    yield return(VehicleType.VipShuttle);
                }
                yield return(VehicleType.FollowMeVan);
            }
        }
Ejemplo n.º 2
0
        private void OnAirplaneRequest(AirplaneRequest request)
        {
            string requestTypeStr = Enum.GetName(typeof(RequestType), request.RequestType);

            Console.WriteLine($"{DateTime.Now}: got request from airplane #{request.Id}, {requestTypeStr}");

            int site = 0;

            if (!site1Empty && !site2Empty)
            {
                oneSiteFreeHandle.Reset();
                requestsQueue.Enqueue(request);
                oneSiteFreeHandle.WaitOne();
            }
            if (site1Empty)
            {
                site       = 1;
                site1Empty = false;
            }
            else if (site2Empty)
            {
                site       = 2;
                site2Empty = false;
            }
            Console.WriteLine($"{DateTime.Now}: request of airplane #{request.Id} fulfilled, site #{site}");

            var vehicles = GetVehiclesOrder(request);

            foreach (var vehicle in vehicles)
            {
                var vehRequest = new VehicleRequest
                {
                    VehicleType = vehicle,
                    Site        = site
                };
                _mqClient.PublishToQueue(_vehicleRequestsQueueName, vehRequest);
            }
        }
Ejemplo n.º 3
0
        protected override bool isValid(out string exceptionMessage)
        {
            foreach (int s in seat) {
                if (!validSeat (s, out exceptionMessage)) {
                    return false;
                }
            }

            if (type.Length == 0) {
                return makeExceptionMessage (out exceptionMessage, "The type of the airplane is invalid");
            }

            if (code.Length == 0) {
                return makeExceptionMessage (out exceptionMessage, "The code of the airplane is invalid");
            }

            AirplaneRequest ar = new AirplaneRequest ();
            if (ar.fetchAirplaneFromCode (code).Count != 0) {
                return makeExceptionMessage(out exceptionMessage, "The code of the airplane already exists for an airplane");
            }

            return makeExceptionMessage(out exceptionMessage);
        }