public IActionResult GetFuelTrend(int tripId) { var user = _repo.GetUser(User); if (user == null) { return(Unauthorized()); } var trip = _db.Trips.Include(t => t.Vehicle) .Include(t => t.TripData).ThenInclude(d => d.SignalType) .FirstOrDefault(t => t.User.Id == user.Id && t.TripId == tripId); if (trip != null) { var tripStatistic = new TripStatistic(); var fuelConsumption = new FuelConsumption(trip.Vehicle?.FuelType == FuelType.Diesel); var speedTrend = tripStatistic.GetSpeedTrendObd(trip); var consumption = fuelConsumption.CalcFuelConsumption(trip, speedTrend); return(Ok(JsonConvert.SerializeObject(consumption.OrderBy(c => c.Item1)))); } return(NotFound()); }
public void CalculateBasicData(Trip trip) { //Set duration trip.Duration = trip.TripData[trip.TripData.Count - 1].Timestamp - trip.TripData[0].Timestamp; //Calculate distance List <Tuple <DateTime, GpsCoordinate> > trace = GetGpsTrend(trip); for (int i = 0; i < trace.Count - 1; ++i) { trip.Distance += trace[i].Item2.GetDistance(trace[i + 1].Item2); } //Calculate average speed trip.AvgSpeed = trip.Duration.TotalHours > 0 ? (trip.Distance / 1000) / trip.Duration.TotalHours : 0; //Set start and end location if (trace.Count >= 2) { trip.StartLocation = trace[0].Item2; trip.EndLocation = trace[trace.Count - 1].Item2; } //Calculate fuel consumption if (trip.Vehicle != null) { var speedTrend = GetSpeedTrendObd(trip); var fuelCalculator = new FuelConsumption(trip.Vehicle.FuelType == FuelType.Diesel); //Calculates and sets the average consumption fuelCalculator.CalcFuelConsumption(trip, speedTrend); } }
public virtual string GetInfo() { return(string.Format("{0} | {1} | {2} | {3} | {4} | {5} | {6}", GetType().Name.PadLeft(8, ' '), CarsControlSystemType.ToString().PadLeft(9, ' '), Speed.ToString().PadLeft(5, ' '), FuelConsumption.ToString().PadLeft(4, ' '), Price.ToString().PadLeft(5, ' '), CurbWeight.ToString().PadLeft(10, ' '), GetFullWeight().ToString().PadLeft(10, ' '))); }
private void RecalculateFuelConsumption(Trip trip) { var tripStatistic = new TripStatistic(); var fuelConsumption = new FuelConsumption(trip.Vehicle?.FuelType == FuelType.Diesel); var speedTrend = tripStatistic.GetSpeedTrendObd(trip); fuelConsumption.CalcFuelConsumption(trip, speedTrend); }
public override global::System.Data.DataSet Clone() { FuelConsumption cln = ((FuelConsumption)(base.Clone())); cln.InitVars(); cln.SchemaSerializationMode = this.SchemaSerializationMode; return(cln); }
private static FuelConsumption SetFuelConsumption(TLFuelMilstoneEvent context) { var entity = new FuelConsumption(); entity.VehicleId = context.VehicleId; entity.FuelUsed = context.FuelConsumption; entity.FuelLevel = context.FuelLevel; entity.Milestone = (int)context.Milestone; entity.CustomerId = context.CustomerId; entity.DateTimeUtc = context.DateTimeUtc; return(entity); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { FuelConsumption ds = new FuelConsumption(); global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); any.Namespace = ds.Namespace; sequence.Items.Add(any); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
private static FuelConsumption SetFuelConsumptionobject(TLFuelMilstoneEvent context) { var entity = new FuelConsumption(); entity.VehicleId = context.VehicleId; entity.FuelUsed = context.FuelConsumption; entity.FuelLevel = context.FuelLevel; entity.Milestone = context.Milestone; entity.CustomerId = context.CustomerId; entity.DateTimeUtc = context.DateTimeUtc; //entity.TotalFuelConsumed += context.Message.FuelConsumption; return(entity); }
public String GetTextView(Int32 indentLevel) { String i = HttpClientHelper.Indent(indentLevel); String i2 = HttpClientHelper.Indent(indentLevel + 1); StringBuilder sb = new StringBuilder() .Append(i).Append("Id: ").Append(Id) .Append(i).Append("Id_External: ").Append(Id_External) .Append(i).Append("CreatedAt: ").Append(CreatedAt) .Append(i).Append("UpdatedAt: ").Append(UpdatedAt) .Append(i).Append("Id_Field: ").Append(Id_Field) .Append(i).Append("Id_AgriWorkPlan: ").Append(Id_AgriWorkPlan) .Append(i).Append("[Obsolete] OperationType: ").Append(OperationType) .Append(i).Append("[Obsolete] OperationSubtype: ").Append(OperationSubtype) .Append(i).Append("Id_WorkType: ").Append(Id_WorkType) .Append(i).Append("OperationNumber: ").Append(OperationNumber) .Append(i).Append("PlannedArea: ").Append(PlannedArea.F("0.00 ha")) .Append(i).Append("CompletedArea: ").Append(CompletedArea.F("0.00")) .Append(i).Append("HarvestedWeight: ").Append(HarvestedWeight.F("0.00")) .Append(i).Append("Status: ").Append(Status) .Append(i).Append("PlannedStartDate: ").Append(PlannedStartDate) .Append(i).Append("PlannedEndDate: ").Append(PlannedEndDate) .Append(i).Append("CompletedDate: ").Append(CompletedDate) .Append(i).Append("CompletedDatetime: ").Append(CompletedDatetime) .Append(i).Append("Season: ").Append(Season) .Append(i).Append("PlannedWaterRate: ").Append(PlannedWaterRate.F("0.00 l/ha")) .Append(i).Append("FactWaterRate: ").Append(FactWaterRate.F("0.00 l/ha")) .Append(i).Append("PlannedRowSpacing: ").Append(PlannedRowSpacing.F("0.00 cm")) .Append(i).Append("PlannedDepth: ").Append(PlannedDepth.F("0.00 cm")) .Append(i).Append("PlannedSpeed ").Append(PlannedSpeed.F("0.00 km/h")) .Append(i).Append("CompletedPercents: ").Append(CompletedPercents.F("0.00")) .Append(i).Append("PartiallyCompleted: ").Append(PartiallyCompleted) .Append(i).Append("PartiallyCompletedManuallyDefinedArea: ").Append(PartiallyCompletedManuallyDefinedArea.F("0.00 ha")) .Append(i).Append("CoveredArea: ").Append(CoveredArea.F("0.00")) .Append(i).Append("CoveredAreaByTrack: ").Append(CoveredAreaByTrack.F("0.00")) .Append(i).Append("MachineWorkArea: ").Append(MachineWorkArea.F("0.00")) .Append(i).Append("FuelConsumption: ").Append(FuelConsumption.F("0.00 l")) .Append(i).Append("FuelConsumptionPerHa: ").Append(FuelConsumptionPerHa.F("0.00 l/ha")) .Append(i).Append("AdditionalInfo: ").Append(AdditionalInfo) .Append(i).Append("Description: ").Append(Description) .Append(i).Append("Ids_ApplicationMixItems: ") .Append(i).Append("{"); Int32 itemNo = 0; foreach (CO_ApplicationMixItem applicationMixItemId in ApplicationMixItems) { sb.Append(i2).Append("item #: ").Append(++itemNo).Append(i2).AppendLine(applicationMixItemId.GetTextView(indentLevel + 1)); } sb .Append(i).Append("}") .Append(i).Append("Ids_MachineTasks: ") .Append(i).Append("{"); itemNo = 0; if (Ids_MachineTasks != null && Ids_MachineTasks.Count > 0) { foreach (Int32 machineTaskId in Ids_MachineTasks) { sb.Append(i2).Append("item #: ").Append(++itemNo).Append(i2).AppendLine(machineTaskId.ToString()); } } sb .Append(i).Append("}") .Append(i).Append("ActualStartDatetime: ").Append(ActualStartDatetime) .Append(i).Append("CustomName: ").Append(CustomName) .Append(i).Append("Id_FieldShape: ").Append(Id_FieldShape) .Append(i).Append("LockedToEdit: ").Append(LockedToEdit) .Append(i).Append("PlannedPlantSpacing: ").Append(PlannedPlantSpacing.F("0.00")); return(sb.ToString()); }
private FuelConsumption _fuelConsumption; // Fuel is updated through this script. private void Start() { _fuelConsumption = gameObject.GetComponent <FuelConsumption>(); // Initialize the FuelConsumption Script }
public async Task <ActionResult> GetOverview(DateTime?startDate, DateTime?endDate, DateTime?trackUnitStartDate, DateTime?trackUnitEndDate, string venueCode, string contactPersonId, string selectMachine, int?trackUnitHours, bool?trackUnitCurrentRentals, bool?trackUnitClosedRentals, bool?trackUnitPendingDeliveries, bool?trackUnitPendingCollections) { if (!ActiveCustomer.showOverview) { return(HttpNotFound()); } // *** Populate session variables with new valuespassed in if (startDate.HasValue) { Session["StartDate"] = startDate.Value; } if (endDate.HasValue) { Session["EndDate"] = endDate.Value; } if (trackUnitStartDate.HasValue) { Session["TrackUnitStartDate"] = trackUnitStartDate; } if (trackUnitEndDate.HasValue) { Session["TrackUnitEndDate"] = trackUnitEndDate; } if (trackUnitHours.HasValue) { Session["TrackUnitHours"] = trackUnitHours; } if (venueCode != null) { Session["venueCode"] = venueCode; } if (contactPersonId != null) { Session["contactPersonId"] = contactPersonId; } if (trackUnitCurrentRentals.HasValue && trackUnitCurrentRentals.Value == true) { Session["TrackUnitCurrentRentals"] = true; } else { Session["TrackUnitCurrentRentals"] = false; } if (trackUnitClosedRentals.HasValue && trackUnitClosedRentals.Value == true) { Session["TrackUnitClosedRentals"] = true; } else { Session["TrackUnitClosedRentals"] = false; } if (trackUnitPendingDeliveries.HasValue && trackUnitPendingDeliveries.Value == true) { Session["TrackUnitPendingDeliveries"] = true; } else { Session["TrackUnitPendingDeliveries"] = false; } if (trackUnitPendingCollections.HasValue && trackUnitPendingCollections.Value == true) { Session["TrackUnitPendingCollections"] = true; } else { Session["TrackUnitPendingCollections"] = false; } if (selectMachine != null) { if (selectMachine == "-1") { Session["SelectedMachine"] = null; } else { Session["SelectedMachine"] = selectMachine; } } // *** Populate the model with basic info about customer, and filters passed in OverviewViewModel model = new OverviewViewModel(); var userCustomers = (await db.GetUserCustomers(User.Identity.GetUserId())).Select(x => new { CustomerKey = x.CustomerKey, CustomerName = String.Format("{0} ({1})", x.Name, x.City), CustomerCurrency = x.currency }); model.userCustomers = new SelectList(userCustomers, "CustomerKey", "CustomerName", "CustomerCurrency"); model.accountManager = await db.GetAccountManagerDetails(this.ActiveCustomer); model.customerSelected = this.ActiveCustomer.CustomerKey; model.StartDate = DateTime.Today.AddMonths(-1); model.EndDate = DateTime.Today.AddMonths(1); model.TrackUnitStartDate = DateTime.Today.AddMonths(-1); model.TrackUnitEndDate = DateTime.Today.AddMonths(1); model.TrackUnitHours = 120; model.TrackUnitCurrentRentals = (bool)Session["TrackUnitCurrentRentals"]; model.TrackUnitClosedRentals = (bool)Session["TrackUnitClosedRentals"]; model.TrackUnitPendingDeliveries = (bool)Session["TrackUnitPendingDeliveries"]; model.TrackUnitPendingCollections = (bool)Session["TrackUnitPendingCollections"]; if (Session["StartDate"] != null && Session["EndDate"] != null) { model.StartDate = (DateTime)Session["StartDate"]; model.EndDate = (DateTime)Session["EndDate"]; } else { Session["StartDate"] = model.StartDate; Session["EndDate"] = model.EndDate; } if (Session["TrackUnitStartDate"] != null && Session["TrackUnitEndDate"] != null) { model.TrackUnitStartDate = (DateTime)Session["TrackUnitStartDate"]; model.TrackUnitEndDate = (DateTime)Session["TrackUnitEndDate"]; } else { Session["TrackUnitStartDate"] = model.TrackUnitStartDate; Session["TrackUnitEndDate"] = model.TrackUnitEndDate; } if (Session["TrackUnitHours"] != null) { model.TrackUnitHours = (int)Session["TrackUnitHours"]; } else { Session["TrackUnitHours"] = model.TrackUnitHours; } if (!string.IsNullOrWhiteSpace((string)Session["venueCode"])) { model.venueCodeSelected = (string)Session["venueCode"]; } else { Session["venueCode"] = model.venueCodeSelected = ""; } if (!string.IsNullOrWhiteSpace((string)Session["contactPersonId"])) { model.contactPersonIdSelected = (string)Session["contactPersonId"]; } else { Session["contactPersonId"] = model.contactPersonIdSelected = ""; } if (!string.IsNullOrWhiteSpace((string)Session["SelectedMachine"])) { model.selectedMachineSerial = (string)Session["SelectedMachine"]; } else { Session["SelectedMachine"] = model.selectedMachineSerial = ""; } // *** Orders, Venues and Order Statuses *** DateTime minDate; if (model.TrackUnitStartDate < model.StartDate) { minDate = model.TrackUnitStartDate; } else { minDate = model.StartDate; } if (DateTime.Today < minDate) { minDate = DateTime.Today; } DateTime maxDate; if (model.TrackUnitEndDate > model.EndDate) { maxDate = model.TrackUnitEndDate; } else { maxDate = model.EndDate; } if (DateTime.Today > maxDate) { maxDate = DateTime.Today; } IEnumerable <RentalOrder> fullOrders = await ActiveCustomer.GetRentalOrders(new RentalsDAL(), minDate, maxDate); IEnumerable <RentalOrder> orders = fullOrders.Where(i => i.DateOnHire.Date <= model.EndDate.Date && ((!i.DateOffHire.HasValue || i.DateOffHire.Value.Date >= model.StartDate))); IEnumerable <RentalOrder> fuelConsumptionPerMachineOrders = fullOrders.Where(i => i.DateOnHire.Date <= model.TrackUnitEndDate.Date && ((!i.DateOffHire.HasValue || i.DateOffHire.Value.Date >= model.TrackUnitStartDate.Date))); IEnumerable <RentalOrder> onSiteMachineOrders = fullOrders.Where(i => i.DateOnHire.Date <= DateTime.Today && ((!i.DateOffHire.HasValue || i.DateOffHire.Value.Date >= DateTime.Today))); IEnumerable <RentalOrder> filteredOrders = orders; List <string> projectVenueCodes = new List <string>(); IdentityUser userPrefs = (await new ROLWeb.Models.UserStore().FindByIdAsync(User.Identity.GetUserId())); if (userPrefs.ShowProjectMachines) { foreach (RentalOrder order in filteredOrders) { if (!projectVenueCodes.Contains(order.RorVenueCode) && order.ContactPersonId == userPrefs.ContactPersonId) { projectVenueCodes.Add(order.RorVenueCode); } } if (projectVenueCodes.Count() > 0) { filteredOrders = filteredOrders.Where(i => projectVenueCodes.Contains(i.RorVenueCode)); } } // Populate list of venues based on ALL orders var venueCheck = new List <String>(); model.Venues = filteredOrders .Select <RentalOrder, Venue>(x => new Venue { DeliveryName = x.DeliveryName, DeliveryCity = x.DeliveryCity, RorVenueCode = x.RorVenueCode }) .Distinct() .OrderByDescending(x => venueCheck.Contains(x.RorVenueCode)) .ThenBy(y => y.DeliveryName); if (projectVenueCodes.Count() > 0) { model.Venues = model.Venues.Where(i => projectVenueCodes.Contains(i.RorVenueCode)); } // Then filter the orders to only those in the current venue if (!string.IsNullOrWhiteSpace(model.venueCodeSelected)) { filteredOrders = filteredOrders.Where(i => i.RorVenueCode == model.venueCodeSelected); } model.orderContactPeople = new SelectList(filteredOrders.GroupBy(i => i.ContactPersonId).Select(i => i.First()), "ContactPersonId", "ContactPerson"); if (!string.IsNullOrWhiteSpace(model.contactPersonIdSelected)) { filteredOrders = filteredOrders.Where(i => i.ContactPersonId == model.contactPersonIdSelected); } string[] CurrentRentalCodes = Models.Rentals.OrderStatus.GetOrderStatusID("CurrentRentals", ActiveCustomer.DatabaseName); // Get the count of extras on rent model.extrasOnRent = filteredOrders.Where(i => i.ItemGroupId == "31900" && CurrentRentalCodes.Contains(i.OrderStatusId)).Count(); // Get a list of statuses that exist withn the filterd list of orders remove extras that are on rent model.orderStatus = filteredOrders.Where(i => !(i.ItemGroupId == "31900" && CurrentRentalCodes.Contains(i.OrderStatusId))).GroupBy(x => x.OrderStatusId).Select(y => new OrderStatusCount { OrderStatusId = y.Key, numOrders = y.Count() }); // *** Cost Overview, exchange rates *** IEnumerable <ExchangeRate> exchangeRates = db.GetExchangeRates(); model.ExchangeRate = exchangeRates.Where(i => i.CountryCode == ActiveCustomer.currency.ToUpper()).FirstOrDefault(); if (model.ExchangeRate == null) { model.ExchangeRate = new ExchangeRate() { CountryCode = "EUR", EuroRate = 1m }; } model.CostMultiplierElectric = 1m; model.CostMultiplierDiesel = 1m; model.CostMultiplierHybrid = 1m; if (ActiveCustomer.currency.ToLower() == "eur") { model.CurrencySymbol = "€"; model.CostMultiplierElectric = 1m; if (ActiveCustomer.CompanyId == "140") { model.CostMultiplierDiesel = 1.8m; } else { model.CostMultiplierDiesel = 1m; } model.CostMultiplierHybrid = 1m; } else if (ActiveCustomer.currency.ToLower() == "dkk") { model.CurrencySymbol = "KR"; model.CostMultiplierDiesel = 13.98m; model.CostMultiplierElectric = 2.3m; model.CostMultiplierHybrid = 1m; } else if (ActiveCustomer.currency.ToLower() == "sek") { model.CurrencySymbol = "SEK"; model.CostMultiplierDiesel = 18m; model.CostMultiplierElectric = 2.5m; model.CostMultiplierHybrid = 1m; } else if (ActiveCustomer.currency.ToLower() == "nok") { model.CurrencySymbol = "NOK"; model.CostMultiplierDiesel = 15m; model.CostMultiplierElectric = 2.5m; model.CostMultiplierHybrid = 1m; } else if (ActiveCustomer.currency.ToLower() == "pln") { model.CurrencySymbol = "PLN"; model.CostMultiplierDiesel = 1.21m; model.CostMultiplierElectric = 1m; model.CostMultiplierHybrid = 1m; } else if (ActiveCustomer.currency.ToLower() == "gbp") { model.CurrencySymbol = "£"; model.CostMultiplierDiesel = model.ExchangeRate.EuroRate; model.CostMultiplierElectric = model.ExchangeRate.EuroRate; model.CostMultiplierHybrid = model.ExchangeRate.EuroRate; } else { model.CurrencySymbol = "€"; } if (ActiveCustomer.showOverviewCosts) { if (string.IsNullOrWhiteSpace(model.venueCodeSelected)) { if (ActiveCustomer.showChildBRInvoices) { if (ActiveCustomer.useInvoiceAccount) { model.rentalCosts = await db.GetRentalCostsInvoiceAccountChildBR(this.ActiveCustomer, model.StartDate, model.EndDate); model.rentalCostsLastYear = await db.GetRentalCostsInvoiceAccountChildBR(this.ActiveCustomer, model.StartDate.AddYears(-1), model.EndDate.AddYears(-1)); } else { model.rentalCosts = await db.GetRentalCostsOrderAccountChildBR(this.ActiveCustomer, model.StartDate, model.EndDate); model.rentalCostsLastYear = await db.GetRentalCostsOrderAccountChildBR(this.ActiveCustomer, model.StartDate.AddYears(-1), model.EndDate.AddYears(-1)); } } else { if (ActiveCustomer.useInvoiceAccount) { model.rentalCosts = await db.GetRentalCostsInvoiceAccount(this.ActiveCustomer, model.StartDate, model.EndDate); model.rentalCostsLastYear = await db.GetRentalCostsInvoiceAccount(this.ActiveCustomer, model.StartDate.AddYears(-1), model.EndDate.AddYears(-1)); } else { model.rentalCosts = await db.GetRentalCostsOrderAccount(this.ActiveCustomer, model.StartDate, model.EndDate); model.rentalCostsLastYear = await db.GetRentalCostsOrderAccount(this.ActiveCustomer, model.StartDate.AddYears(-1), model.EndDate.AddYears(-1)); } } } else { model.rentalCosts = await db.GetRentalCostsInvoiceVenueAccount(this.ActiveCustomer, model.StartDate, model.EndDate); model.rentalCosts = model.rentalCosts.Where(i => i.RorVenueCode == model.venueCodeSelected); model.rentalCostsLastYear = await db.GetRentalCostsInvoiceVenueAccount(this.ActiveCustomer, model.StartDate.AddYears(-1), model.EndDate.AddYears(-1)); model.rentalCostsLastYear = model.rentalCosts.Where(i => i.RorVenueCode == model.venueCodeSelected); } } // *** Response Time *** Task GetCustKPIs = new Task(() => { if (ActiveCustomer.showOverviewResponseTime || ActiveCustomer.showOverviewMachinesNotInUse) { if (string.IsNullOrEmpty(model.venueCodeSelected)) { if (projectVenueCodes.Count() > 0) { IEnumerable <CustTRWKPIs> allKPIs = db.GetDWHCustVenuTRWKPIs(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.venueCodeSelected, model.StartDate, model.EndDate); List <CustTRWKPIs> projectVenueKPIs = allKPIs.Where(i => projectVenueCodes.Contains(i.venuecode)).ToList(); List <decimal> resolutionTime = projectVenueKPIs.Where(i => i.avgResolutionTime.HasValue).Select(i => i.avgResolutionTime.Value).ToList(); List <decimal> responseTime = projectVenueKPIs.Where(i => i.avgResponseTime.HasValue).Select(i => i.avgResponseTime.Value).ToList(); if (projectVenueKPIs.Count > 0) { CustTRWKPIs custTRWKPIs = new CustTRWKPIs() { companyid = projectVenueKPIs.First().companyid, customerid = projectVenueKPIs.First().customerid, venuecode = projectVenueKPIs.First().venuecode, machineCount = projectVenueKPIs.Sum(rec => rec.machineCount), avgResolutionTime = resolutionTime.Sum(rec => rec), avgResponseTime = responseTime.Sum(rec => rec), firstDayBreakdownCount = projectVenueKPIs.Sum(rec => rec.firstDayBreakdownCount), onTimeDeliveryCount = projectVenueKPIs.Sum(rec => rec.onTimeDeliveryCount), totalDeliveryCount = projectVenueKPIs.Sum(rec => rec.totalDeliveryCount), upTimePerc = projectVenueKPIs.Sum(rec => rec.upTimePerc) / projectVenueKPIs.Count(), solvedByPhoneCount = projectVenueKPIs.Sum(rec => rec.solvedByPhoneCount) }; if (resolutionTime.Count() > 0) { custTRWKPIs.avgResolutionTime /= resolutionTime.Count(); } if (responseTime.Count() > 0) { custTRWKPIs.avgResponseTime /= responseTime.Count(); } model.ResponseTimeKPI = custTRWKPIs; } var allPickupTimes = db.GetDWHCustTRWKPI_pickUpTime(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.StartDate, model.EndDate); model.CustTRWKPI_pickUpTime = allPickupTimes.FirstOrDefault(); } else { var allKPIs = db.GetDWHCustTRWKPIs(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.StartDate, model.EndDate); model.ResponseTimeKPI = allKPIs.FirstOrDefault(); var allPickupTimes = db.GetDWHCustTRWKPI_pickUpTime(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.StartDate, model.EndDate); model.CustTRWKPI_pickUpTime = allPickupTimes.FirstOrDefault(); } } else { var allKPIs = db.GetDWHCustVenuTRWKPIs(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.venueCodeSelected, model.StartDate, model.EndDate); model.ResponseTimeKPI = allKPIs.FirstOrDefault(i => i.venuecode == model.venueCodeSelected); var allPickupTimes = db.GetDWHCustVenuTRWKPI_pickUpTime(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, model.venueCodeSelected, ActiveCustomer.CustomerId, model.StartDate, model.EndDate); model.CustTRWKPI_pickUpTime = allPickupTimes.FirstOrDefault(); } if (model.ResponseTimeKPI == null) { model.ResponseTimeKPI = new CustTRWKPIs(); model.ResponseTimeKPI.avgResponseTime = 0.0m; model.ResponseTimeKPI.avgResolutionTime = 0.0m; } if (model.ResponseTimeKPI.avgResponseTime == null) { model.ResponseTimeKPI.avgResponseTime = 0.0m; } if (model.ResponseTimeKPI.avgResolutionTime == null) { model.ResponseTimeKPI.avgResolutionTime = 0.0m; } if (model.CustTRWKPI_pickUpTime == null) { model.CustTRWKPI_pickUpTime = new CustTRWKPI_pickUpTime(); model.CustTRWKPI_pickUpTime.avgPickupTime = 0.0m; } if (model.CustTRWKPI_pickUpTime.avgPickupTime == null) { model.CustTRWKPI_pickUpTime.avgPickupTime = 0.0m; } //If the active customer is French recalculate the On time delivery KPI if (ActiveCustomer.CompanyId == "140") { model.ResponseTimeKPI.totalDeliveryCount = filteredOrders.Where(i => i.DateOnHire < DateTime.Now).Count(); } } }); GetCustKPIs.Start(); // *** Per machine data *** Task PerMachineData = new Task(() => { model.FuelConsumptionPerMachine = db.GetDWHCustConsPerMachine(ActiveCustomer.DatabaseName, ActiveCustomer.CompanyId, ActiveCustomer.CustomerId, model.TrackUnitStartDate, model.TrackUnitEndDate); if (model.TrackUnitCurrentRentals || model.TrackUnitClosedRentals || model.TrackUnitPendingDeliveries || model.TrackUnitPendingCollections) { model.TrackUnitRentalCodes = new List <string>(); if (model.TrackUnitCurrentRentals == true) { model.TrackUnitRentalCodes.Add(Models.Rentals.OrderStatus.GetOrderStatusID_String("CurrentRentals", ActiveCustomer.DatabaseName)); } if (model.TrackUnitClosedRentals == true) { model.TrackUnitRentalCodes.Add(Models.Rentals.OrderStatus.GetOrderStatusID_String("ClosedRentals", ActiveCustomer.DatabaseName)); } if (model.TrackUnitPendingDeliveries == true) { model.TrackUnitRentalCodes.Add(Models.Rentals.OrderStatus.GetOrderStatusID_String("PendingDeliveries", ActiveCustomer.DatabaseName)); } if (model.TrackUnitPendingCollections == true) { model.TrackUnitRentalCodes.Add(Models.Rentals.OrderStatus.GetOrderStatusID_String("PendingCollections", ActiveCustomer.DatabaseName)); } string[] fuelConsumptionPerMachineInventTransIds = fuelConsumptionPerMachineOrders.Where(i => model.TrackUnitRentalCodes.Contains(i.OrderStatusId) && model.FuelConsumptionPerMachine.Select(n => n.inventtransid).Contains(i.InventTransId)).Select(i => i.InventTransId).ToArray(); model.FuelConsumptionPerMachine = model.FuelConsumptionPerMachine.Where(i => fuelConsumptionPerMachineInventTransIds.Contains(i.inventtransid)); if (!string.IsNullOrWhiteSpace(model.contactPersonIdSelected)) { //Bind contactpersonid to matching orders and fuelconsumptions foreach (FuelConsumption machine in model.FuelConsumptionPerMachine) { foreach (RentalOrder order in fuelConsumptionPerMachineOrders) { if (machine.inventtransid == order.InventTransId) { machine.ContactPersonId = order.ContactPersonId; } } } //Filter to machines with matching contact person id model.FuelConsumptionPerMachine = model.FuelConsumptionPerMachine.Where(i => i.ContactPersonId == model.contactPersonIdSelected); } } if (projectVenueCodes.Count() > 0) { model.FuelConsumptionPerMachine = model.FuelConsumptionPerMachine.Where(i => projectVenueCodes.Contains(i.rorvenuecode)); } if (!string.IsNullOrEmpty(model.venueCodeSelected)) { model.FuelConsumptionPerMachine = model.FuelConsumptionPerMachine.Where(i => i.rorvenuecode == model.venueCodeSelected).ToList(); } var duplicateMachines = model.FuelConsumptionPerMachine.Where(i => model.FuelConsumptionPerMachine.Where(x => x.inventtransid == i.inventtransid).Count() > 1).GroupBy(n => n.inventtransid); List <FuelConsumption> nonDuplicateMachines = model.FuelConsumptionPerMachine.Where(i => model.FuelConsumptionPerMachine.Where(x => x.inventtransid == i.inventtransid).Count() < 2).ToList(); List <FuelConsumption> summedDuplicates = new List <FuelConsumption>(); foreach (var inventTransitIdGroup in duplicateMachines) { FuelConsumption summedDupplicate = inventTransitIdGroup.First(); summedDupplicate.machineconsumption = inventTransitIdGroup.Sum(i => i.machineconsumption); summedDupplicate.machineEmission = inventTransitIdGroup.Sum(i => i.machineEmission); summedDupplicate.machineFuelCost = inventTransitIdGroup.Sum(i => i.machineFuelCost); summedDupplicate.machinerunningHourM1 = inventTransitIdGroup.Sum(i => i.machinerunningHourM1); summedDupplicate.lastActiveDate = inventTransitIdGroup.Max(i => i.lastActiveDate); summedDuplicates.Add(summedDupplicate); } model.FuelConsumptionPerMachine = nonDuplicateMachines.Concat(summedDuplicates); //Create list of machine types to populate the overview dropdown model.SelectMachines = model.FuelConsumptionPerMachine.Select(i => new SelectMachine() { Code = i.serialNumber, Name = i.machineType, FleetNumber = i.fleetNumber }) .OrderBy(i => i.Name); // Filter results based on selected machine type if (model.selectedMachineSerial != "") { model.FuelConsumptionPerMachine = model.FuelConsumptionPerMachine.Where(i => i.serialNumber == model.selectedMachineSerial).ToList(); } }); PerMachineData.Start(); PerMachineData.Wait(); // *** Machines not in Use *** if (ActiveCustomer.showOverviewMachinesNotInUse) { try { var user = (await new ROLWeb.Models.UserStore().FindByIdAsync(User.Identity.GetUserId())); int daysNotInUse = user.MachinesNotInUseDays; model.MachinesNotInUseHours = daysNotInUse * 24; //Dashboard V1.0 Definition if (ActiveCustomer.overviewVersion == null || ActiveCustomer.overviewVersion == "1") { var customers = orders.Select(x => x.CustAccount).Distinct(); int machinesNotInUse = 0; foreach (string customer in customers) { var machines = db.GetMachinesNotInUse(this.ActiveCustomer.DatabaseName, this.ActiveCustomer, daysNotInUse.ToString()); var ordersMachines = orders.Join(machines, x => new { x.CustAccount, x.SalesId, x.ObjectId }, y => new { CustAccount = customer, y.SalesId, y.ObjectId }, (ord, mac) => ord); machinesNotInUse += ordersMachines.Count(); } model.MachinesNotInUse = machinesNotInUse; } //Dashboard V2.0 Definition if (ActiveCustomer.overviewVersion == "2") { //Get required data model.MachinesNotInUse = 0; model.OnSiteMachines = db.GetDWHMachineOnSite(ActiveCustomer); if (!string.IsNullOrWhiteSpace(model.contactPersonIdSelected)) { onSiteMachineOrders = onSiteMachineOrders.Where(i => i.ContactPersonId == model.contactPersonIdSelected); } //Remove OnSiteMachines with no LastActive date model.OnSiteMachines = model.OnSiteMachines.Where(i => i.lastActiveDate.HasValue && i.lastActiveDate != Convert.ToDateTime("1900-01-01")).ToList(); IEnumerable <TrackUnitData> units = await rentals_db.GetTrackUnitData(); //Filter out machines past the users active hours selection //units = units.Where(i => i.GpsFixTime > DateTime.Now.AddHours(-model.TrackUnitHours)); //Remove machines which dont have matching order details List <string> onSiteMachineOrderSerialNumbers = onSiteMachineOrders.Select(i => i.ObjectId).ToList(); model.OnSiteMachines = model.OnSiteMachines.Where(i => onSiteMachineOrderSerialNumbers.Contains(i.serialNumber)).ToList(); //Remove machines which dont have track unit data List <string> trackUnitSerialNumbers = units.Select(i => i.ReferenceNumber).ToList(); model.OnSiteMachines = model.OnSiteMachines.Where(x => trackUnitSerialNumbers.Contains(x.serialNumber)).ToList(); //Filter out non venue machines if (!string.IsNullOrWhiteSpace(model.venueCodeSelected)) { model.OnSiteMachines = model.OnSiteMachines.Where(i => i.rorvenuecode == model.venueCodeSelected).ToList(); } //Filter out non project machines if (projectVenueCodes.Count() > 0) { model.OnSiteMachines = model.OnSiteMachines.Where(i => projectVenueCodes.Contains(i.rorvenuecode)).ToList(); } //Count Machines in use foreach (var machine in model.OnSiteMachines) { if (Convert.ToDateTime(machine.lastActiveDate) < DateTime.Now.AddHours(-model.TrackUnitHours) || Convert.ToDateTime(machine.lastActiveDate).Date == DateTime.Now.AddDays(1).Date) { model.MachinesNotInUse++; } } //Apply Track Unit Data model.OnSiteMachines.ForEach(i => i.Process(onSiteMachineOrders.First(x => x.ObjectId == i.serialNumber))); model.OnSiteMachines = model.ProcessOnSiteMachines(model.OnSiteMachines, units); model.MachinesInUse = model.OnSiteMachines.Count() - model.MachinesNotInUse; if (model.OnSiteMachines == null) { model.OnSiteMachines = new List <OnSiteMachine>(); } } } catch (Exception e) { model.OnSiteMachines = new List <OnSiteMachine>(); model.MachinesInUse = 0; } } else { model.OnSiteMachines = new List <OnSiteMachine>(); } // *** Energy Consumption and CO2 emissions *** var consumptionTotals = new List <FuelConsumptionAndEmission>(); if (ActiveCustomer.showOverviewEnergyConsumption || ActiveCustomer.showOverviewCO2Emissions) { var machines_GroupedByFuelType = model.FuelConsumptionPerMachine.GroupBy(i => i.fueltype); foreach (var machineGroup in machines_GroupedByFuelType) { if (!string.IsNullOrWhiteSpace(machineGroup.First().fueltype)) { consumptionTotals.Add(new FuelConsumptionAndEmission() { fueltype = machineGroup.First().fueltype, machineconsumption = machineGroup.Sum(i => i.machineconsumption), custaccount = ActiveCustomer.CustomerId, machineEmission = machineGroup.Sum(i => i.machineEmission), machineFuelCost = machineGroup.Sum(i => i.machineFuelCost), machinerunningHourM1 = machineGroup.Sum(i => i.machinerunningHourM1), unit = machineGroup.First().unit }); } } } model.ConsumptionTotals = consumptionTotals; GetCustKPIs.Wait(); if (ActiveCustomer.overviewVersion == null) { return(PartialView("_Overview_1", model)); } else { return(PartialView("_Overview_" + ActiveCustomer.overviewVersion, model)); } }
public List<FuelConsumption> getFuelConsumptionsForCar(int carId) { FuelConsumption item; List<FuelConsumption> fuelCons = new List<FuelConsumption>(); try { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CarDiaryDB"].ToString()); SqlDataReader dr; SqlCommand cmd = new SqlCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "dbo.getFuelConsumptionsForCar"; //set up the parameters cmd.Parameters.Add("@id", System.Data.SqlDbType.Int); //cmd.Parameters.Add("@price", System.Data.SqlDbType.Float).Direction = System.Data.ParameterDirection.Output; //set parameter values cmd.Parameters["@id"].Value = carId; cmd.Connection = conn; conn.Open(); dr = cmd.ExecuteReader(); while (dr.Read()) { item = new FuelConsumption(dr.GetInt32(0), dr.GetInt32(1), dr.GetString(2), dr.GetInt32(3), dr.GetString(4), dr.GetInt32(5) , dr.GetDouble(6), dr.GetDouble(7), dr.GetDouble(8), dr.GetDouble(9)); fuelCons.Add(item); } conn.Close(); } catch (Exception ex) { // Log the exception. ExceptionUtility.LogException(ex, "DB.cs"); } return fuelCons; }
private void fillFuelRow(int count, FuelConsumption item) { Table tbl = new Table(); tbl.Width = new Unit("100%"); tbl.Height = new Unit("100%"); tbl.Style.Add("min-width", "500px !important"); //------------------row----------------------- TableRow rw = new TableRow(); if (count % 2 == 0) rw.BackColor = System.Drawing.Color.White; else rw.BackColor = System.Drawing.Color.LightGray; //---------------------cell-------------- TableCell cell = new TableCell(); cell.Width = new Unit("10%"); Label date = new Label(); date.Width = new Unit("100%"); date.Style.Add("text-align", "center"); date.Font.Size = 10; date.Text = item.getFuel_date(); cell.Controls.Add(date); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("15%"); Label mileage = new Label(); mileage.Width = new Unit("100%"); mileage.Style.Add("text-align", "center"); mileage.Font.Size = 10; mileage.Text = item.getMileage().ToString("0.##"); cell.Controls.Add(mileage); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("10%"); Label distance = new Label(); distance.Width = new Unit("100%"); distance.Style.Add("text-align", "center"); distance.Font.Size = 10; distance.Text = item.getDistance().ToString("0.##"); cell.Controls.Add(distance); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("10%"); Label fuel = new Label(); fuel.Width = new Unit("100%"); fuel.Style.Add("text-align", "center"); fuel.Font.Size = 10; fuel.Text = item.getFuel_type(); cell.Controls.Add(fuel); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("15%"); Label quantity = new Label(); quantity.Width = new Unit("100%"); quantity.Style.Add("text-align", "center"); quantity.Font.Size = 10; quantity.Text = item.getLiters().ToString("0.##"); cell.Controls.Add(quantity); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("20%"); cell.Width = new Unit("10%"); Label price = new Label(); price.Width = new Unit("100%"); price.Style.Add("text-align", "center"); price.Font.Size = 10; price.Text = item.getTotalCost().ToString("0.##"); cell.Controls.Add(price); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("10%"); Label average = new Label(); average.Width = new Unit("100%"); average.Style.Add("text-align", "center"); average.Font.Size = 10; average.Text = item.getAvgConsPer100Km().ToString("0.##"); cell.Controls.Add(average); rw.Cells.Add(cell); //---------------------cell-------------- cell = new TableCell(); cell.Width = new Unit("10%"); ImageButton delete = new ImageButton(); //Image img = new Image(); //img.ImageUrl = "~/delete.ico"; //delete.BackgroundImage = img; delete.ImageUrl = "~/Images/delete.png"; delete.Style.Add("height", "20px"); delete.Style.Add("width", "20px"); delete.ID = "Delete" + item.getId(); delete.Click += new ImageClickEventHandler(ImageButton_Click); delete.ToolTip = "Изтрий"; cell.Controls.Add(delete); rw.Cells.Add(cell); cell.Width = new Unit("10%"); rw.Cells.Add(cell); tbl.Controls.Add(rw); Panel1.Controls.Add(tbl); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); FuelConsumption ds = new FuelConsumption(); global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); any1.Namespace = "http://www.w3.org/2001/XMLSchema"; any1.MinOccurs = new decimal(0); any1.MaxOccurs = decimal.MaxValue; any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any1); global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; any2.MinOccurs = new decimal(1); any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any2); global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute1.Name = "namespace"; attribute1.FixedValue = ds.Namespace; type.Attributes.Add(attribute1); global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute2.Name = "tableTypeName"; attribute2.FixedValue = "FuelConsumptionDataTable"; type.Attributes.Add(attribute2); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }