internal long GetWeight(HttpRequestBase httpRequest, long kgWeight, StatisticsDbModel userStatistics) { var dbContext = new ApplicationDbContext(); long convertedValue = kgWeight; if (string.IsNullOrEmpty(userStatistics.WeightUnit)) { if (httpRequest != null && httpRequest.Cookies[DataConversion.WeightUnitCookie] != null && httpRequest.Cookies[DataConversion.WeightUnitCookie].Value != null) { if (httpRequest.Cookies[DataConversion.WeightUnitCookie].Value == DataConversion.WeightPounds) { userStatistics.WeightUnit = DataConversion.WeightPounds; convertedValue = DataConversion.ConvertKilogramsToPounds(kgWeight); } else { userStatistics.WeightUnit = DataConversion.WeightKilograms; } dbContext.SaveChanges(); } } else { convertedValue = userStatistics.WeightUnit == DataConversion.WeightPounds ? DataConversion.ConvertKilogramsToPounds(kgWeight) : kgWeight; } return(convertedValue); }
private bool UpdateStatistics(JobDbModel job, ApplicationDbContext dbContext) { var licenseOverdue = false; var statistics = dbContext.StatisticsDbModels.FirstOrDefault(s => s.User.Id == job.User.Id); if (statistics != null) { licenseOverdue = IsLicenseOverdue(dbContext, job.User.Id); if (!licenseOverdue) { if (job.AviationType == 1) { statistics.PilotScore += job.Dist / 10; } else { statistics.PilotScore += job.Dist / 15; } statistics.BankBalance += job.Pay; } } else { var newStatistics = new StatisticsDbModel() { BankBalance = job.Pay, PilotScore = job.AviationType == 1 ? job.Dist / 10 : job.Dist / 15, Logo = "/Content/img/default.jpg", User = job.User }; dbContext.StatisticsDbModels.Add(newStatistics); } return(licenseOverdue); }
internal string GetPilotDescription(StatisticsDbModel statistics, ApplicationDbContext dbContext) { var stBuilder = new StringBuilder(); var listOverdue = dbContext.PilotLicenseExpensesUser.Include("PilotLicenseExpense").Where(e => e.MaturityDate < DateTime.Now && e.User.Id == statistics.User.Id).ToList(); if (listOverdue.Count() > 0) { stBuilder.Append(string.Format("<hr />")); stBuilder.Append(string.Format(@"<div class='col-md-1'><img src='/Content/img/alert-002.png' style='width: 30px; height: 30px;' /></div>")); stBuilder.Append(string.Format("<h5><strong>")); stBuilder.Append(string.Format(" YOUR PILOT LICENSE EXPIRED. ")); stBuilder.Append(string.Format("</strong></h5>")); stBuilder.Append(string.Format("There are {0} license(s) requirements overdue. ", listOverdue.Count())); stBuilder.Append(string.Format("The next Jobs will not score and paid until you renew your license. ")); stBuilder.Append(string.Format("Click here to check your license requirements.")); foreach (var expenseOverdue in listOverdue.Where(o => !o.OverdueProcessed)) { var list = dbContext.LicenseItemUser.Where(x => x.User.Id == statistics.User.Id && x.PilotLicenseItem.PilotLicenseExpense.Id == expenseOverdue.PilotLicenseExpense.Id); foreach (var item in list.ToList()) { item.IsBought = false; } expenseOverdue.OverdueProcessed = true; } dbContext.SaveChanges(); } return(stBuilder.ToString()); }
public async Task <IActionResult> SaveViewStatistics([FromBody] StatisticsDbModel entry) { entry.Time = DateTime.Now; await dbClient.SaveStatisticsAsync(entry); return(Ok()); }
/// <summary> /// Saves information about a Jira REST API request. /// </summary> /// <param name="entry">An object containing statistics information about the Jira requests.</param> /// <returns>The result of the save operation.</returns> public Task SaveStatisticsAsync(StatisticsDbModel entry) { if (entry.Id == null) { return(statisticsCollection.InsertOneAsync(entry)); } return(statisticsCollection.ReplaceOneAsync(i => i.Id == entry.Id, entry, new UpdateOptions { IsUpsert = true })); }
internal StatisticsDbModel GetAllStatisticsInfo(ApplicationUser user, HomeViewModel filterModel) { var dbContext = new ApplicationDbContext(); var statistics = new StatisticsDbModel(); if (user != null) { TimeSpan span = new TimeSpan(); var allUserJobs = FilterJobs(user, filterModel, ref span); statistics = dbContext.StatisticsDbModels.FirstOrDefault(s => s.User.Id == user.Id); if (statistics != null) { if (statistics.Airline != null) { var statisticsAirline = dbContext.StatisticsDbModels.Where(s => s.Airline != null && s.Airline.Id == statistics.Airline.Id); statistics.AirlinePilotsHired = statisticsAirline.ToList(); statistics.Airline.AlowEdit = statistics.Airline.UserId == user.Id; statistics.Airline.HiredFBOs = dbContext.AirlineFbo.Where(x => x.Airline.Id == statistics.Airline.Id).ToList(); } statistics.NumberFlights = allUserJobs.Count(); statistics.FlightTimeTotal = String.Format("{0}h {1}m", (int)span.TotalHours, span.Minutes); //statistics.PayloadTotal = DataConversion.GetWeight(Request, payloadTotal) + DataConversion.GetWeightUnit(Request); var grad = GetGraduationInfo(span); statistics.GraduationPath = grad.Value; statistics.GraduationDesc = grad.Key; if (allUserJobs.Count() > 0) { statistics.LastFlight = allUserJobs.OrderBy(j => j.EndTime).Last().EndTime; statistics.LastAircraft = allUserJobs.OrderBy(j => j.EndTime).Last().ModelDescription; statistics.FavoriteAirplane = allUserJobs.GroupBy(q => q.ModelDescription) .OrderByDescending(gp => gp.Count()) .Select(g => g.Key).FirstOrDefault(); } } } return(statistics); }
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()); }