コード例 #1
0
 public CompanyDataAccessService(FleetManagementDbContext context)
 {
     this._context = context;
     this._config  =
         new MapperConfiguration(cfg => { cfg.CreateMap <Company, Data.Models.Company>().ReverseMap(); });
     this._mapper = new Mapper(this._config);
 }
コード例 #2
0
        public static async Task CalculateNextService(string serviceId, FleetManagementDbContext context)
        {
            var service = await context.Services.FirstOrDefaultAsync(s => s.Id == serviceId);

            if (service == null)
            {
                return;
            }

            // BasedOn == time
            if (service.BasedOn == 0)
            {
                var currentTime = await context.Database.SqlQuery <DateTime>("SELECT GETUTCDATE()").FirstOrDefaultAsync();

                var newCreatedTime = new DateTimeOffset(new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Second, DateTimeKind.Utc));

                service.Created                 = newCreatedTime;
                service.NextServiceTime         = CalculateNextServiceTime(service);
                service.NextServiceReminderTime = CalculateNextServiceReminderTime(service);
            }
            // BasedOn == mileage
            else
            {
                var mileage = await context.TelematicsDatas.FirstOrDefaultAsync(t => t.VIN == service.Vehicle.VIN);

                if (mileage != null)
                {
                    service.NextServiceMileage         = CalculateNextServiceMileage(service, mileage.Mileage);
                    service.NextServiceReminderMileage = CalculateNextServiceReminderMileage(service, service.NextServiceMileage);
                }
            }

            await context.SaveChangesAsync();
        }
コード例 #3
0
 public TelematicsDataAcessService(FleetManagementDbContext context)
 {
     _context = context;
     _config  = new MapperConfiguration(cfg =>
     {
         cfg.CreateMap <Models.TelematicsData, Data.Models.TelematicsData>().ReverseMap();
     });
     _mapper = new Mapper(_config);
 }
コード例 #4
0
        public async Task Execute(IJobExecutionContext context)
        {
            try
            {
                using (FleetManagementDbContext dbContext = new FleetManagementDbContext())
                {
                    var vehicles = await dbContext.Vehicles.ToListAsync();

                    foreach (var vehicle in vehicles)
                    {
                        var telematicsData =
                            await dbContext.TelematicsDatas.FirstOrDefaultAsync(t => t.VIN == vehicle.VIN);

                        TelematicsData newTelematicsData = new TelematicsData
                        {
                            VIN          = vehicle.VIN,
                            Mileage      = TelematicsDataGenerator.GenerateNextMileageValue(telematicsData?.Mileage),
                            FuelLevel    = TelematicsDataGenerator.GenerateNextFuelLevelValue(telematicsData?.FuelLevel),
                            CurrentSpeed =
                                TelematicsDataGenerator.GenerateNextCurrentSpeedValue(telematicsData?.CurrentSpeed),
                            WorkingTime = telematicsData?.WorkingTime != null
                                ? telematicsData.WorkingTime += TimeSpan.FromMinutes(1)
                                : new TimeSpan(0, 0, 1, 0),
                        };

                        newTelematicsData.Idling = newTelematicsData.Idling.HasValue
                            ? telematicsData?.CurrentSpeed == 0
                                ? telematicsData.Idling += TimeSpan.FromMinutes(3)
                                : new TimeSpan(0, 0, 0, 0)
                            : new TimeSpan(0, 0, 3, 0);

                        if (telematicsData == null)
                        {
                            dbContext.TelematicsDatas.Add(newTelematicsData);
                        }
                        else
                        {
                            telematicsData.Mileage      = newTelematicsData.Mileage;
                            telematicsData.FuelLevel    = newTelematicsData.FuelLevel;
                            telematicsData.CurrentSpeed = newTelematicsData.CurrentSpeed;
                            telematicsData.WorkingTime  = newTelematicsData.WorkingTime;
                            telematicsData.Idling       = newTelematicsData.Idling;
                        }

                        await SeedTelematicsHistory.UpdateTelematicsHistory(newTelematicsData, dbContext);
                    }

                    await dbContext.SaveChangesAsync();
                }
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }
コード例 #5
0
 public DriverDataAccessService(FleetManagementDbContext context)
 {
     _context = context;
     _config  = new MapperConfiguration(cfg =>
     {
         cfg.CreateMap <Models.Company, Data.Models.Company>().ReverseMap();
         cfg.CreateMap <Models.Driver, Data.Models.Driver>()
         .ForMember(x => x.Company, b => b.ResolveUsing(c => c.Company)).ReverseMap();
     });
     _mapper = new Mapper(_config);
 }
コード例 #6
0
 public ServiceDataAccessService(FleetManagementDbContext context)
 {
     this._context = context;
     this._config  =
         new MapperConfiguration(
             cfg =>
     {
         cfg.CreateMap <Service, Data.Models.Service>().ReverseMap();
         cfg.CreateMap <Data.Models.Service, Service>().ReverseMap();
         cfg.CreateMap <EditService, Data.Models.Service>().ReverseMap();
         cfg.CreateMap <PostService, Data.Models.Service>().ReverseMap();
     });
     this._mapper = new Mapper(this._config);
 }
コード例 #7
0
 public VehicleDataAccessService(FleetManagementDbContext context)
 {
     this._context = context;
     this._config  = new MapperConfiguration(
         cfg =>
     {
         cfg.CreateMap <Company, Data.Models.Company>().ReverseMap();
         cfg.CreateMap <Driver, Data.Models.Driver>().ReverseMap();
         cfg.CreateMap <Vehicle, Data.Models.Vehicle>()
         .ForMember(v => v.Company, b => b.ResolveUsing(c => c.Company))
         .ForMember(v => v.Driver, b => b.ResolveUsing(c => c.Driver))
         .ReverseMap();
     });
     this._mapper = new Mapper(this._config);
 }
コード例 #8
0
        public async Task Execute(IJobExecutionContext context)
        {
            using (FleetManagementDbContext dbContext = new FleetManagementDbContext())
            {
                var currentTime = await dbContext.Database.SqlQuery <DateTime>("SELECT GETUTCDATE()").FirstOrDefaultAsync();

                var todaysDate = new DateTimeOffset(new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Second, DateTimeKind.Utc));

                var services = dbContext.Services.Where(s =>
                                                        (s.BasedOn == 0 && s.NextServiceReminderTime != null && DbFunctions.TruncateTime(s.NextServiceReminderTime) == DbFunctions.TruncateTime(todaysDate))).ToList();

                foreach (var service in services.ToList())
                {
                    MailHelper.SendEmail(service.Recipient, "Reminder services", $"The service {service.Name} for vehicle {service.Vehicle.Brand} with plate number {service.Vehicle.PlateNumber} is following.").RunSynchronously();
                }
            }
        }
コード例 #9
0
        public async Task Execute(IJobExecutionContext context)
        {
            using (FleetManagementDbContext dbContext = new FleetManagementDbContext())
            {
                var vehiclesVIN = dbContext.Vehicles.Select(v => v.VIN).ToList();

                foreach (var vehicleVIN in vehiclesVIN.ToList())
                {
                    var vehicleTelematics = await dbContext.TelematicsDatas.FirstOrDefaultAsync(t => t.VIN == vehicleVIN);

                    var vehicle = await dbContext.Vehicles.FirstOrDefaultAsync(v => v.VIN == vehicleVIN);

                    var services = dbContext.Services.Where(s => s.BasedOn == 1 && s.NextServiceReminderMileage != null && s.NextServiceReminderMileage <= vehicleTelematics.Mileage + 50 && s.NextServiceReminderMileage >= vehicleTelematics.Mileage - 50).ToList();

                    foreach (var service in services.ToList())
                    {
                        MailHelper.SendEmail(service.Recipient, "Reminder for a following service", $"The service {service.Name} for vehicle {vehicle.Brand} with plate number {vehicle.PlateNumber} is following.").RunSynchronously();
                    }
                }
            }
        }
コード例 #10
0
        public static async Task UpdateTelematicsHistory(TelematicsData telematicsData, FleetManagementDbContext dbContext)
        {
            var newTelematicsDataHistory = new Data.Models.TelematicsDataHistory()
            {
                VIN          = telematicsData.VIN,
                Mileage      = telematicsData.Mileage,
                FuelLevel    = telematicsData.FuelLevel,
                CurrentSpeed = telematicsData.CurrentSpeed,
                WorkingTime  = telematicsData.WorkingTime,
                Idling       = telematicsData.Idling,
                Modified     = DateTimeOffset.Now.LocalDateTime,
            };

            dbContext.TelematicsDataHistories.Add(newTelematicsDataHistory);
        }