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