Esempio n. 1
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));
        }
Esempio n. 2
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));
        }