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); } }
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); } }
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); }