Exemplo n.º 1
0
        private ChallengeViewModel GetChallengerView(int pax, int cargo, long paxWeight, string departure, string arrival, string type, long totalPayment, long distance, string weightUnit, int jobId = 0)
        {
            var departureModel = AirportDatabaseFile.FindAirportInfo(departure);
            var arrivalModel   = AirportDatabaseFile.FindAirportInfo(arrival);

            var model = new ChallengeViewModel()
            {
                WeightUnit    = GetWeightUnit(Request),
                ArrivalICAO   = arrivalModel.ICAO,
                DepartureICAO = departureModel.ICAO,
                Cargo         = cargo,
                Dist          = distance,
                Pax           = pax,
                PaxWeight     = paxWeight,
                Type          = type,
                TotalPayment  = totalPayment,
                JobId         = jobId
            };

            switch (type)
            {
            case "Civilian":
                model.Briefing = $@"The biggest soccer team charter an unscheduled flight to participate in the championship. 
                The flight will depart from {departureModel.City} with {pax} players and all team delegation. 
                For the team's luggage and equipment will be loaded {model.Cargo}{weightUnit} in the hold of the plane.
                The final destination is {arrivalModel.City} airport. 
                The total payment involved is ${model.TotalPayment}.
                The captain will earn ${model.PaymentCaptain} when complete.
                The creator of the challenge will earn ${model.PaymentCreator}.";

                model.WaterMarkImg = "/Content/img/challenger/civilian-water-mark-002.png";
                break;

            case "Military":
                model.Briefing     = $@"The order of crew is transport the Defence Minister and his retinue of peace 
                from {departureModel.City} to {arrivalModel.City} (distance is {model.Dist} NM). 
                For this mission, the aircraft will take {pax} people on board and {model.Cargo}{weightUnit} of cargo 
                (total payload is {model.TotalPayload}{weightUnit}). 
                The total payment involved is ${model.TotalPayment}.
                The captain will earn ${model.PaymentCaptain} when complete this mission.
                The creator of the challenge will earn ${model.PaymentCreator}.";
                model.WaterMarkImg = "/Content/img/challenger/military-water-mark-002.png";
                break;

            case "Rescue":
                model.Briefing = $@"A group of students are lost in a park at {arrivalModel.City}. 
                The only hope for the group is a speedy air rescue. The rescue aircraft will take off from {departureModel.City}
                with {pax} doctors and firefighters aboard, and {model.Cargo}{weightUnit} of rescue and fire containment equipment. 
                The total payment involved is ${model.TotalPayment}.
                The captain will earn ${model.PaymentCaptain} when complete this mission.
                The creator of the challenge will earn ${model.PaymentCreator}.";

                model.WaterMarkImg = "/Content/img/challenger/rescue-water-mark-001.png";
                break;

            default:
                break;
            }
            return(model);
        }
Exemplo n.º 2
0
        public async Task <HttpResponseMessage> FinishJobMSFS()
        {
            var response = Request.CreateResponse(HttpStatusCode.BadRequest, "Server error");

            try
            {
                string icaoStr   = "";
                string latitude  = Request.Headers.GetValues("Latitude").First();
                string longitude = Request.Headers.GetValues("Longitude").First();
                var    airports  = AirportDatabaseFile.FindClosestLocation(Convert.ToDouble(latitude.Replace(",", ".")), Convert.ToDouble(longitude.Replace(",", ".")));
                if (airports.Count > 0)
                {
                    icaoStr = airports.First().ICAO;
                }

                string payloadStr          = Request.Headers.GetValues("Payload").First().Replace(",", ".");
                string usarIdStr           = Request.Headers.GetValues("UserId").First().Replace("\"", "");
                string fuelWeightStr       = Request.Headers.GetValues("FuelWeight").First().Replace(",", ".");
                string planeDescriptionStr = Request.Headers.GetValues("PlaneDescription").First().Replace(",", ".");

                response = FinishJob(icaoStr, payloadStr, usarIdStr, fuelWeightStr, "MSFS", planeDescriptionStr);
            }
            catch (Exception e)
            {
                ErrorLog.GetDefault(null).Log(new Error(e));
                response = Request.CreateResponse(HttpStatusCode.BadRequest, "Process error.");
            }

            return(response);
        }
 private void CheckWindowPopup()
 {
     if (_simVarsModel != null && ckbPopupParkingBrake.IsChecked.Value)
     {
         if (_startJobResponseInfo == null)
         {
             if (!_startPopUpShown && !_simVarsModel.ParkingBrakeOn)
             {
                 Application.Current.MainWindow.WindowState = WindowState.Normal;
                 _startPopUpShown = true;
             }
         }
         else
         {
             if (!_finishPopUpShown)
             {
                 bool isCloseToArrivel = AirportDatabaseFile.CheckClosestLocation(_simVarsModel.Latitude, _simVarsModel.Longitude,
                                                                                  _startJobResponseInfo.ArrivalLAT, _startJobResponseInfo.ArrivalLON);
                 if (isCloseToArrivel && _simVarsModel.ParkingBrakeOn)
                 {
                     Application.Current.MainWindow.WindowState = WindowState.Normal;
                     _finishPopUpShown    = true;
                     imgStart.Visibility  = Visibility.Hidden;
                     imgFinish.Visibility = Visibility.Visible;
                 }
             }
         }
     }
 }
Exemplo n.º 4
0
        public ActionResult FboProfile(int airlineId)
        {
            var dbContext = new ApplicationDbContext();

            var jobsDone   = dbContext.JobDbModels.Where(j => j.IsDone);
            var topArrival = jobsDone.GroupBy(q => q.ArrivalICAO)
                             .OrderByDescending(gp => gp.Count())
                             .Select(g => g.Key)
                             .Take(8).ToList();
            var topAirports = new List <AirportModel>();

            topArrival.ForEach(x => topAirports.Add(AirportDatabaseFile.FindAirportInfo(x)));

            var test    = topAirports.Select(t => t.ICAO).ToList();
            var fboInDB = dbContext.AirlineFbo.Where(x => test.Contains(x.Icao)).ToList();

            var airlineFboView = GetFboView(topAirports, fboInDB);

            var hiredFBOs = dbContext.AirlineFbo.Where(x => x.Airline.Id == airlineId).ToList();

            hiredFBOs.ForEach(x => x.Name = AirportDatabaseFile.FindAirportInfo(x.Icao).Name);
            airlineFboView.FboHired       = new List <AirlineFboDbModel>();
            airlineFboView.FboHired.AddRange(hiredFBOs);
            airlineFboView.CurrentAirline = dbContext.AirlineDbModels.FirstOrDefault(x => x.Id == airlineId);
            return(PartialView("AirlineFboView", airlineFboView));
        }
Exemplo n.º 5
0
        public ActionResult FilterFboList(string icao, int airlineId)
        {
            var dbContext = new ApplicationDbContext();
            var airports  = AirportDatabaseFile.GetAllAirportInfo().Where(x => x.ICAO.ToLower().StartsWith(icao.ToLower())).ToList();
            var temp      = airports.Select(t => t.ICAO).ToList();
            var fboInDB   = dbContext.AirlineFbo.Where(x => temp.Contains(x.Icao)).ToList();

            var airlineFboView = GetFboView(airports, fboInDB);

            airlineFboView.CurrentAirline = dbContext.AirlineDbModels.FirstOrDefault(x => x.Id == airlineId);

            return(PartialView("FboResultsView", airlineFboView));
        }
Exemplo n.º 6
0
        public int CalcDistance(string departure, string arrival)
        {
            var departureInfo = AirportDatabaseFile.FindAirportInfo(departure);
            var arrivalInfo   = AirportDatabaseFile.FindAirportInfo(arrival);

            if (departureInfo != null && arrivalInfo != null)
            {
                var departureCoord = new GeoCoordinate(departureInfo.Latitude, departureInfo.Longitude);
                var arrivalCoord   = new GeoCoordinate(arrivalInfo.Latitude, arrivalInfo.Longitude);

                var distMeters = departureCoord.GetDistanceTo(arrivalCoord);
                var distMiles  = (int)DataConversion.ConvertMetersToMiles(distMeters);
                return(distMiles);
            }
            return(0);
        }
Exemplo n.º 7
0
        public ActionResult AlternativeTips(string destination, int range)
        {
            var listTips = new List <SearchJobTipsViewModel>();

            if (!string.IsNullOrEmpty(destination) && destination.Length > 2)
            {
                var destinationInfo = AirportDatabaseFile.FindAirportInfo(destination);
                if (destinationInfo == null)
                {
                    return(null);
                }

                var destCoord = new GeoCoordinate(destinationInfo.Latitude, destinationInfo.Longitude);

                foreach (var airportInfo in AirportDatabaseFile.GetAllAirportInfo().OrderByDescending(x => x.RunwaySize))
                {
                    if (airportInfo.ICAO.ToUpper() != destination.ToUpper())
                    {
                        var airportInfoCoord = new GeoCoordinate(airportInfo.Latitude, airportInfo.Longitude);
                        var distMeters       = destCoord.GetDistanceTo(airportInfoCoord);
                        var distMiles        = (int)DataConversion.ConvertMetersToMiles(distMeters);

                        if (distMiles < range)
                        {
                            var viewModel = new SearchJobTipsViewModel()
                            {
                                AirportICAO       = airportInfo.ICAO,
                                AirportName       = airportInfo.Name,
                                Distance          = distMiles,
                                AirportElevation  = airportInfo.Elevation,
                                AirportRunwaySize = airportInfo.RunwaySize,
                                AirportTrasition  = airportInfo.Trasition,
                            };
                            listTips.Add(viewModel);
                        }
                    }
                }
            }
            else
            {
                return(null);
            }
            TempData["RangeValue"] = range;
            return(PartialView("AlternativeTipsPartialView", listTips));
        }
Exemplo n.º 8
0
        public ActionResult HireFbo(string icao)
        {
            var dbContext = new ApplicationDbContext();
            var airport   = AirportDatabaseFile.FindAirportInfo(icao);
            var fboInDB   = dbContext.AirlineFbo.Where(x => x.Icao == icao);

            if (fboInDB.Count() >= 15)
            {
                return(Json(new { error = true, responseText = "This FBO is not available. All contracts were hired." }, JsonRequestBehavior.AllowGet));
            }
            var user           = dbContext.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
            var userStatistics = dbContext.StatisticsDbModels.FirstOrDefault(x => x.User.Id == user.Id);
            var airline        = dbContext.AirlineDbModels.FirstOrDefault(a => a.Id == userStatistics.Airline.Id && a.UserId == user.Id);

            if (airline == null)
            {
                return(Json(new { error = true, responseText = "You must be the owner of the airline to hire FBOs." }, JsonRequestBehavior.AllowGet));
            }
            if (fboInDB.Any(x => x.Airline.Id == airline.Id))
            {
                return(Json(new { error = true, responseText = "This airline already hired the " + icao + " FBO." }, JsonRequestBehavior.AllowGet));
            }

            var airlineFbo = GetCalcAirlineFbo(airport, 0);

            airlineFbo.Airline = airline;

            if (airline.BankBalance < airlineFbo.Price)
            {
                return(Json(new { error = true, responseText = "Your airline doesn't have enough money to hire this FBO." }, JsonRequestBehavior.AllowGet));
            }
            airline.BankBalance = airline.BankBalance - airlineFbo.Price;
            // debito na airline

            dbContext.AirlineFbo.Add(airlineFbo);
            dbContext.SaveChanges();

            var airlineFboView = new AirlineFboView();

            airlineFboView.FboHired       = dbContext.AirlineFbo.Where(x => x.Airline.Id == airline.Id).ToList();
            airlineFboView.CurrentAirline = airline;

            return(PartialView("FboAirlineView", airlineFboView));
        }
        private async void btnStart_Click(object sender, RoutedEventArgs e)
        {
            Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
            btnStart.IsEnabled   = false;
            btnFinish.IsEnabled  = false;
            LoadConnect();
            Thread.Sleep(500);
            try
            {
                if (_simVarsModel != null)
                {
                    _simVarsModel.UserId  = _userId;
                    _startJobResponseInfo = await _flightJobsConnectorClientAPI.StartJob(_simVarsModel);

                    var arrivalInfo = AirportDatabaseFile.FindAirportInfo(_startJobResponseInfo.ArrivalICAO);
                    _startJobResponseInfo.ArrivalLAT = arrivalInfo.Latitude;
                    _startJobResponseInfo.ArrivalLON = arrivalInfo.Longitude;
                    AddLogMessage(_startJobResponseInfo.ResultMessage, LogMessageTypeEnum.Success);
                    btnFinish.IsEnabled       = true;
                    jobListDataGrid.IsEnabled = false;
                    imgStart.Visibility       = Visibility.Visible;
                    imgFinish.Visibility      = Visibility.Hidden;
                }
                else
                {
                    btnStart.IsEnabled  = true;
                    btnFinish.IsEnabled = false;
                }
            }
            catch (Exception ex)
            {
                btnStart.IsEnabled  = true;
                btnFinish.IsEnabled = false;
                AddLogMessage(ex.Message, LogMessageTypeEnum.Warnning);
            }
            finally
            {
                Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
            }
        }
Exemplo n.º 10
0
        private Dictionary <string, long> GetArrivalRanking(ApplicationDbContext dbContext, bool fromCurrentUser)
        {
            var jobsDone = dbContext.JobDbModels.Where(j => j.IsDone);

            if (fromCurrentUser)
            {
                var user = dbContext.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
                if (user != null)
                {
                    jobsDone = jobsDone.Where(j => j.User.Id == user.Id);
                }
            }

            var s = jobsDone.GroupBy(q => q.ArrivalICAO)
                    .OrderByDescending(gp => gp.Count())
                    .Select(g => g.Key)
                    .Take(10).ToList();
            var dic = new Dictionary <string, long>();

            s.ForEach(x => dic.Add(x + " - " + AirportDatabaseFile.FindAirportInfo(x).Name, jobsDone.Count(j => j.ArrivalICAO == x)));
            return(dic);
        }
Exemplo n.º 11
0
        public ActionResult ArrivalTips(string departure)
        {
            var listTips = new List <SearchJobTipsViewModel>();

            if (!string.IsNullOrEmpty(departure) && departure.Length > 2)
            {
                /*  Get destinations from current departure user jobs */
                var departureInfo = AirportDatabaseFile.FindAirportInfo(departure);
                if (departureInfo == null)
                {
                    return(null);
                }

                var departureCoord   = new GeoCoordinate(departureInfo.Latitude, departureInfo.Longitude);
                var dbContext        = new ApplicationDbContext();
                var user             = dbContext.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
                var allUserJobs      = FilterJobs(user, "");
                var filteredUserJobs = FilterJobs(user, departure);
                foreach (var job in filteredUserJobs)
                {
                    var jobAirportInfo = AirportDatabaseFile.FindAirportInfo(job.ArrivalICAO);
                    listTips.Add(new SearchJobTipsViewModel()
                    {
                        IdJob             = job.Id,
                        AirportICAO       = job.ArrivalICAO,
                        Cargo             = job.Cargo,
                        Pax               = job.Pax,
                        Pay               = job.Pay,
                        Payload           = job.Payload,
                        AirportName       = jobAirportInfo.Name,
                        AirportElevation  = jobAirportInfo.Elevation,
                        AirportRunwaySize = jobAirportInfo.RunwaySize,
                        AirportTrasition  = jobAirportInfo.Trasition,
                        Distance          = job.Dist
                    });
                }

                var countRandon = new Random();
                var indexRandon = new Random();

                if (allUserJobs.Count() > 1)
                {
                    var index = indexRandon.Next(1, allUserJobs.Count() - 1);

                    var count = countRandon.Next(1, allUserJobs.Count() - index);

                    /*  Get destinations from all user jobs */
                    foreach (var job in allUserJobs.GetRange(index, count).Take(7))
                    {
                        if (!listTips.Exists(x => x.AirportICAO == job.ArrivalICAO) &&
                            job.ArrivalICAO != departure)
                        {
                            var jobArrivalAirportInfo = AirportDatabaseFile.FindAirportInfo(job.ArrivalICAO);

                            var arrivalCoord = new GeoCoordinate(jobArrivalAirportInfo.Latitude, jobArrivalAirportInfo.Longitude);
                            var distMeters   = departureCoord.GetDistanceTo(arrivalCoord);
                            var distMiles    = (int)DataConversion.ConvertMetersToMiles(distMeters);

                            listTips.Add(new SearchJobTipsViewModel()
                            {
                                AirportICAO       = job.ArrivalICAO,
                                AirportName       = jobArrivalAirportInfo.Name,
                                AirportElevation  = jobArrivalAirportInfo.Elevation,
                                AirportRunwaySize = jobArrivalAirportInfo.RunwaySize,
                                AirportTrasition  = jobArrivalAirportInfo.Trasition,
                                Distance          = distMiles
                            });
                        }
                    }
                }

                /*  Random jobs */
                var tempListTips = new List <SearchJobTipsViewModel>();
                foreach (var airportInfo in AirportDatabaseFile.GetAllAirportInfo())
                {
                    if (airportInfo.ICAO.ToUpper() != departureInfo.ICAO.ToUpper())
                    {
                        var airportInfoCoord = new GeoCoordinate(airportInfo.Latitude, airportInfo.Longitude);
                        var distMeters       = departureCoord.GetDistanceTo(airportInfoCoord);
                        var distMiles        = (int)DataConversion.ConvertMetersToMiles(distMeters);

                        if (distMiles < 600)
                        {
                            var viewModel = new SearchJobTipsViewModel()
                            {
                                AirportICAO       = airportInfo.ICAO,
                                AirportName       = airportInfo.Name,
                                Distance          = distMiles,
                                AirportElevation  = airportInfo.Elevation,
                                AirportRunwaySize = airportInfo.RunwaySize,
                                AirportTrasition  = airportInfo.Trasition,
                            };
                            tempListTips.Add(viewModel);
                        }
                    }
                }
                var random         = new Random();
                var randomListTips = new List <SearchJobTipsViewModel>();
                for (int i = tempListTips.Count - 1; i >= 1; i--)
                {
                    int other = random.Next(0, i + 1);
                    randomListTips.Add(tempListTips[other]);
                }
                listTips.AddRange(randomListTips.Take(10));
            }
            else
            {
                return(null);
            }

            return(PartialView("ArrivalTipsPartialView", listTips));
        }
Exemplo n.º 12
0
        public async Task <HttpResponseMessage> FindClosestLocationTest(string lat, string lon)
        {
            var list = AirportDatabaseFile.FindClosestLocation(Convert.ToDouble(lat), Convert.ToDouble(lon));

            return(Request.CreateResponse(HttpStatusCode.OK, list.Select(x => x.ICAO)));
        }
Exemplo n.º 13
0
        public JsonResult GetMapInfo(string departure, string arrival, string alternative)
        {
            /*
             * {
             *  "lat":53.3539,
             *      "lng":-2.275,
             *      "name":"MANCHESTER",
             *      "icon_url":"/assets/airport-e91142e842d5da7b82cfca5c7c9ef6ad.png",
             *      "icon_center_x":13,
             *      "icon_center_y":13
             * }*/

            var departureInfo   = AirportDatabaseFile.FindAirportInfo(departure);
            var arrivalInfo     = AirportDatabaseFile.FindAirportInfo(arrival);
            var alternativeInfo = string.IsNullOrEmpty(alternative) ? null : AirportDatabaseFile.FindAirportInfo(alternative);

            if (departureInfo != null && arrivalInfo != null)
            {
                var departureCoord = new GeoCoordinate(departureInfo.Latitude, departureInfo.Longitude);
                var arrivalCoord   = new GeoCoordinate(arrivalInfo.Latitude, arrivalInfo.Longitude);

                var depJson = new
                {
                    isRoute       = true,
                    lat           = departureCoord.Latitude,
                    lng           = departureCoord.Longitude,
                    name          = departureInfo.Name,
                    info          = "Departure airport",
                    icao          = departureInfo.ICAO,
                    runway_size   = departureInfo.RunwaySize + "ft",
                    elevation     = departureInfo.Elevation + "ft",
                    trasition     = departureInfo.Trasition + "ft",
                    icon_url      = "../Content/img/departing.png",
                    icon_center_x = 13,
                    icon_center_y = 13
                };

                var arrJson = new
                {
                    isRoute       = true,
                    lat           = arrivalCoord.Latitude,
                    lng           = arrivalCoord.Longitude,
                    name          = arrivalInfo.Name,
                    info          = "Arrival airport",
                    icao          = arrivalInfo.ICAO,
                    runway_size   = arrivalInfo.RunwaySize + "ft",
                    elevation     = arrivalInfo.Elevation + "ft",
                    trasition     = arrivalInfo.Trasition + "ft",
                    icon_url      = "../Content/img/arrival.png",
                    icon_center_x = 13,
                    icon_center_y = 13
                };

                var jsonList = new List <object>();
                jsonList.Add(depJson);
                jsonList.Add(arrJson);


                if (alternativeInfo != null)
                {
                    var alternativeCoord = new GeoCoordinate(alternativeInfo.Latitude, alternativeInfo.Longitude);
                    var altJson          = new
                    {
                        isRoute       = true,
                        lat           = alternativeCoord.Latitude,
                        lng           = alternativeCoord.Longitude,
                        name          = alternativeInfo.Name,
                        info          = "Alternative airport",
                        icao          = alternativeInfo.ICAO,
                        runway_size   = alternativeInfo.RunwaySize + "ft",
                        elevation     = alternativeInfo.Elevation + "ft",
                        trasition     = alternativeInfo.Trasition + "ft",
                        icon_url      = "../Content/img/alternative.png",
                        icon_center_x = 13,
                        icon_center_y = 13
                    };
                    jsonList.Add(altJson);
                }

                var userJobsSessionKey = "USER_JOBS_ICAOS";
                var userJobsIcaos      = new List <string>();
                if (Session[userJobsSessionKey] != null)
                {
                    userJobsIcaos = (List <string>)Session[userJobsSessionKey];
                }
                else
                {
                    using (var dbContext = new ApplicationDbContext())
                    {
                        var user = dbContext.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
                        if (user != null)
                        {
                            TimeSpan t           = new TimeSpan();
                            var      allUserJobs = FilterJobs(user, null, ref t);
                            userJobsIcaos = allUserJobs.Select(x => x.DepartureICAO).ToList();
                            userJobsIcaos.AddRange(allUserJobs.Select(x => x.ArrivalICAO));
                            Session.Add(userJobsSessionKey, userJobsIcaos.Distinct().ToList());
                        }
                    }
                }
                foreach (var icao in userJobsIcaos.Distinct())
                {
                    var favDptInfo    = AirportDatabaseFile.FindAirportInfo(icao);
                    var favDptCoord   = new GeoCoordinate(favDptInfo.Latitude, favDptInfo.Longitude);
                    var favDptAirport = new
                    {
                        isRoute       = false,
                        lat           = favDptCoord.Latitude,
                        lng           = favDptCoord.Longitude,
                        name          = favDptInfo.Name,
                        info          = icao,
                        icao          = icao,
                        runway_size   = favDptInfo.RunwaySize + "ft",
                        elevation     = favDptInfo.Elevation + "ft",
                        trasition     = favDptInfo.Trasition + "ft",
                        icon_url      = "../Content/img/favorite.png",
                        icon_center_x = 8,
                        icon_center_y = 8
                    };
                    jsonList.Add(favDptAirport);
                }

                return(Json(jsonList, JsonRequestBehavior.AllowGet));
            }
            return(new JsonResult());
        }
Exemplo n.º 14
0
        internal IList <JobListModel> GenerateBoardJobs(JobSerachModel model, StatisticsDbModel statistics)
        {
            IList <JobListModel> listBoardJobs = new List <JobListModel>();

            try
            {
                var weightUnit = GetWeightUnit(Request);
                var dep        = AirportDatabaseFile.FindAirportInfo(model.Departure);
                var arrival    = AirportDatabaseFile.FindAirportInfo(model.Arrival);

                var  depCoord      = new GeoCoordinate(dep.Latitude, dep.Longitude);
                var  randomPob     = new Random();
                var  randomCargo   = new Random();
                int  id            = 0;
                bool validGaProfit = false;

                var arrCoord   = new GeoCoordinate(arrival.Latitude, arrival.Longitude);
                var distMeters = depCoord.GetDistanceTo(arrCoord);
                var distMiles  = (int)DataConversion.ConvertMetersToMiles(distMeters);

                //                    if (distMiles >= model.MinRange && distMiles <= model.MaxRange && arrival.ICAO.ToUpper() != dep.ICAO.ToUpper() &&
                //                        arrival.ICAO.ToUpper() == model.Arrival.ToUpper())

                if (arrival.ICAO.ToUpper() != dep.ICAO.ToUpper() &&
                    arrival.ICAO.ToUpper() == model.Arrival.ToUpper())
                {
                    var customCapacity = model.CustomPlaneCapacity;

                    if (GetWeightUnit(Request) == DataConversion.UnitPounds)
                    {
                        customCapacity.CustomCargoCapacityWeight = DataConversion.ConvertPoundsToKilograms(customCapacity.CustomCargoCapacityWeight);
                    }

                    int index = randomPob.Next(14, 25);
                    if (model.AviationType == "GeneralAviation" && model.UseCustomPlaneCapacity)
                    {
                        validGaProfit = customCapacity.CustomCargoCapacityWeight < 3000 && customCapacity.CustomPassengerCapacity < 30;
                    }

                    long gePobCount = 0, auxCargoCount = 0;

                    for (int i = 0; i < index; i++)
                    {
                        long pob          = 0;
                        long cargo        = 0;
                        long profit       = 0;
                        bool isFisrtClass = Convert.ToBoolean(randomPob.Next(2));

                        var  flightType     = model.AviationType.Trim();
                        int  alternateCargo = randomPob.Next(2);
                        bool isCargo        = alternateCargo == 0 || flightType == "Cargo";
                        if (isCargo)
                        {
                            int minCargo = 5;
                            int maxCargo = 160;
                            if (flightType == "AirTransport")
                            {
                                minCargo = 100; maxCargo = 3000;
                            }
                            ;
                            if (flightType == "Cargo")
                            {
                                minCargo = 80; maxCargo = 3500;
                            }
                            if (flightType == "HeavyAirTransport")
                            {
                                minCargo = 800; maxCargo = 6000;
                            }

                            if (model.UseCustomPlaneCapacity)
                            {
                                var cargoCapacity = customCapacity.CustomCargoCapacityWeight;
                                if (cargoCapacity < minCargo)
                                {
                                    cargoCapacity = minCargo + 1;
                                }
                                cargo = randomCargo.Next(minCargo, cargoCapacity);
                                if (auxCargoCount + cargo > cargoCapacity)
                                {
                                    cargo = cargoCapacity - auxCargoCount;
                                    if (cargo == 0)
                                    {
                                        continue;
                                    }
                                    auxCargoCount = cargoCapacity;
                                }
                                else
                                {
                                    auxCargoCount += cargo;
                                }
                            }
                            else
                            {
                                cargo = randomCargo.Next(minCargo, maxCargo);
                            }

                            if (flightType == "GeneralAviation")
                            {
                                if (validGaProfit)
                                {
                                    profit  = Convert.ToInt32(taxCargoGE * distMiles * cargo);
                                    profit += (140 / customCapacity.CustomCargoCapacityWeight);
                                }
                                else
                                {
                                    profit = Convert.ToInt32(taxCargo * distMiles * cargo);
                                }
                            }
                            else if (flightType == "AirTransport")
                            {
                                profit = Convert.ToInt32(taxCargo * distMiles * cargo);
                            }
                            else if (flightType == "Cargo")
                            {
                                profit = Convert.ToInt32((taxCargo + 0.0005) * distMiles * cargo);
                            }
                            else // HeavyAirTransport
                            {
                                profit = Convert.ToInt32(taxCargo * distMiles * cargo);
                            }
                        }
                        else
                        {
                            int minPob = 1;
                            int maxPob = 12;
                            if (flightType == "AirTransport")
                            {
                                minPob = 10; maxPob = 80;
                            }
                            ;
                            if (flightType == "HeavyAirTransport")
                            {
                                minPob = 50; maxPob = 140;
                            }

                            if (model.UseCustomPlaneCapacity)
                            {
                                if (customCapacity.CustomPassengerCapacity < minPob)
                                {
                                    customCapacity.CustomPassengerCapacity = minPob + 1;
                                }
                                pob = randomPob.Next(minPob, customCapacity.CustomPassengerCapacity);
                                if (gePobCount + pob > customCapacity.CustomPassengerCapacity)
                                {
                                    pob = customCapacity.CustomPassengerCapacity - gePobCount;
                                    if (pob == 0)
                                    {
                                        continue;
                                    }
                                    gePobCount = customCapacity.CustomPassengerCapacity;
                                }
                                else
                                {
                                    gePobCount += pob;
                                }
                            }
                            else
                            {
                                pob = randomPob.Next(minPob, maxPob);
                            }

                            if (flightType == "GeneralAviation")
                            {
                                isFisrtClass = true; /// Always premium for GA
                                if (validGaProfit)
                                {
                                    profit  = Convert.ToInt32(taxFirstGE * distMiles * pob);
                                    profit += ((distMiles * 2) / customCapacity.CustomPassengerCapacity);
                                }
                                else
                                {
                                    profit = Convert.ToInt32(taxFirstC * distMiles * pob);
                                }
                            }
                            else if (flightType == "AirTransport")
                            {
                                profit = isFisrtClass ? Convert.ToInt32(taxFirstC * distMiles * pob) : Convert.ToInt32(taxEcon * distMiles * pob);
                            }
                            else // HeavyAirTransport
                            {
                                profit = isFisrtClass ? Convert.ToInt32(taxFirstC * distMiles * pob) : Convert.ToInt32(taxEcon * distMiles * pob);
                            }
                        }

                        cargo = GetWeight(Request, cargo, statistics);

                        listBoardJobs.Add(new JobListModel()
                        {
                            Id           = id++,
                            Departure    = dep,
                            Arrival      = arrival,
                            Dist         = distMiles,
                            Pax          = pob,
                            Cargo        = cargo,
                            PayloadLabel = (isCargo) ? "[Cargo] " : (isFisrtClass) ? "[Full price] " : "[Promo] ",
                            PayloadView  = (isCargo) ? cargo + weightUnit : (isFisrtClass) ? pob + " Pax" : pob + " Pax",
                            Pay          = profit,
                            FirstClass   = isFisrtClass,
                            AviationType = model.AviationType,
                            IsCargo      = isCargo
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("error", ex.Message);
            }

            return(listBoardJobs.OrderBy(j => j.Arrival).ThenBy(x => x.PayloadLabel).ToList());
        }