public JsonResult Confirm(List <JobDbModel> jobList) { var dbContext = new ApplicationDbContext(); bool isPounds = GetWeightUnit(Request) == DataConversion.UnitPounds; // Check GUEST var user = dbContext.Users.FirstOrDefault(u => u.UserName == User.Identity.Name); if (user != null && user.Email == AccountController.GuestEmail) { return(Json("Guest can't save!!!", JsonRequestBehavior.AllowGet));; } if (jobList != null) { if (Request.Cookies[PassengersWeightCookie] != null && Request.Cookies[PassengersWeightCookie].Value != null) { PaxWeight = int.Parse(Request.Cookies[PassengersWeightCookie].Value); } foreach (var selJob in jobList) { selJob.User = user; selJob.StartTime = DateTime.Now; selJob.EndTime = DateTime.Now; selJob.ChallengeExpirationDate = DateTime.Now.AddDays(-1); selJob.PaxWeight = PaxWeight; if (isPounds) { selJob.Cargo = DataConversion.ConvertPoundsToKilograms(selJob.Cargo); } if (Session["JobSerachModel"] != null) { JobSerachModel searchModel = (JobSerachModel)Session["JobSerachModel"]; if (!string.IsNullOrEmpty(searchModel.Alternative) && searchModel.Alternative.Length == 4) { selJob.AlternativeICAO = searchModel.Alternative.ToUpper(); } } dbContext.JobDbModels.Add(selJob); } dbContext.SaveChanges(); } return(Json("Saved", JsonRequestBehavior.AllowGet));; }
public JsonResult ResultNext(FormCollection form) { var ids = new List <int>(); var pageSelsIds = form["sels"]; var passengersWeight = form["paxWeight-text"]; bool isPounds = GetWeightUnit(Request) == DataConversion.UnitPounds; if (isPounds) { PaxWeight = int.TryParse(passengersWeight, out PaxWeight) ? PaxWeight : 185; } else { PaxWeight = int.TryParse(passengersWeight, out PaxWeight) ? PaxWeight : 84; } if (pageSelsIds != null) { string[] sList = pageSelsIds.ToString().Split(','); foreach (var idString in sList) { ids.Add(Convert.ToInt32(idString)); } } long totalPax = 0; long totalCargo = 0; long totalPay = 0; var list = new Dictionary <string, JobDbModel>(); var jobs = (IList <JobListModel>)Session["JobSearchResult"]; if (jobs != null) { foreach (var job in jobs.Where(j => j.Selected || ids.Contains(j.Id))) { JobDbModel jobDB; if (!list.ContainsKey(job.Arrival.ICAO)) { jobDB = new JobDbModel() { DepartureICAO = job.Departure.ICAO, ArrivalICAO = job.Arrival.ICAO, Dist = job.Dist, Pax = job.Pax, Cargo = job.Cargo, Pay = job.Pay, FirstClass = job.FirstClass, AviationType = GetAviationTypeId(job.AviationType) }; list.Add(job.Arrival.ICAO, jobDB); } else { jobDB = list[job.Arrival.ICAO]; jobDB.Pax += job.Pax; jobDB.Cargo += job.Cargo; jobDB.Pay += job.Pay; } totalPax += job.Pax; totalCargo += job.Cargo; totalPay += job.Pay; } } var jobList = list.Values.ToList(); var viewModel = new ConfirmJobsViewModel() { JobsList = jobList, TotalPax = totalPax, TotalCargo = totalCargo, TotalPay = string.Format("{0:C}", totalPay), TotalPayload = string.Format("{0:G}", (totalPax * PaxWeight) + totalCargo) }; var pxWeight = isPounds ? DataConversion.ConvertPoundsToKilograms(PaxWeight) : PaxWeight; Response.SetCookie(new HttpCookie(PassengersWeightCookie, pxWeight.ToString())); return(Confirm(jobList)); }
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()); }