Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        public async Task <IActionResult> SaveViewStatistics([FromBody] StatisticsDbModel entry)
        {
            entry.Time = DateTime.Now;
            await dbClient.SaveStatisticsAsync(entry);

            return(Ok());
        }
Beispiel #5
0
 /// <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
     }));
 }
Beispiel #6
0
        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);
        }
Beispiel #7
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());
        }