Пример #1
0
        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());
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 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, ' ')));
 }
Пример #4
0
        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);
        }
Пример #5
0
        public override global::System.Data.DataSet Clone()
        {
            FuelConsumption cln = ((FuelConsumption)(base.Clone()));

            cln.InitVars();
            cln.SchemaSerializationMode = this.SchemaSerializationMode;
            return(cln);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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());
        }
Пример #10
0
    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));
            }
        }
Пример #12
0
Файл: DB.cs Проект: rgg1992/Test
    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;
    }
Пример #13
0
    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);
    }
Пример #14
0
            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);
            }