public async Task <IActionResult> OnGetAsync(int?id, string jobType) { if (id == null) { return(NotFound()); } var items = dataContext.Jobs.Where(x => x.Id == id); if (jobType == "HikDownloader") { items = items.Include(x => x.HardDriveStatuses) .Include("HardDriveStatuses.Camera") .Include(x => x.Photos) .Include(x => x.Videos); } else { items = items .Include(x => x.DeletedFiles) .Include("DeletedFiles.Camera"); } Job = await items.FirstOrDefaultAsync(); if (Job == null) { return(NotFound()); } return(Page()); }
public async Task <int> SaveChangesAsync(HikJob job, Camera camera) { this.ProcessAuditItems(job, camera); var res = await this.SaveChangesAsync(); return(res); }
private void ProcessAuditItems(HikJob job, Camera camera) { foreach (var entity in this.Context.ChangeTracker .Entries() .Where(e => e.State == EntityState.Modified || e.State == EntityState.Added) .Select(e => e.Entity) .OfType <IAuditable>()) { entity.Job = job; entity.Camera = camera; } }
static void Main(string[] args) { var container = AppBootstrapper.ConfigureIoc(); AppConfig appConfig = container.Resolve <IHikConfig>().Config; ILogger logger = container.Resolve <ILogger>(); logger.Info(appConfig.ToString()); var job = new HikJob { Started = DateTime.Now, JobType = nameof(HikDownloader), }; var config = new ConfigurationBuilder() .SetBasePath(AssemblyDirectory) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); var uowf = new UnitOfWorkFactory(config.GetConnectionString("HikConnectionString")); using (var unitOfWork = uowf.CreateUnitOfWork()) { var jobRepo = unitOfWork.GetRepository <HikJob>(); jobRepo.Add(job).GetAwaiter().GetResult(); unitOfWork.SaveChangesAsync().GetAwaiter().GetResult(); } var downloader = container.Resolve <HikDownloader>(new TypedParameter(typeof(AppConfig), appConfig)); job.Finished = DateTime.Now; var result = downloader.DownloadAsync().GetAwaiter().GetResult(); logger.Info("Save to DB..."); var jobResultSaver = new JobService(uowf, job, result); jobResultSaver.SaveAsync().GetAwaiter().GetResult(); logger.Info("Save to DB. Done!"); if (appConfig.Mode == "Recurring") { logger.Info("Starting Recurring"); var interval = appConfig.Interval * 60 * 1000; using (Timer timer = new Timer(async(o) => await downloader.DownloadAsync(), null, interval, interval)) { WaitForExit(); downloader?.Cancel(); } } WaitForExit(); }
public JobService(IUnitOfWorkFactory factory, HikJob job, JobResult result) { this.factory = factory; this.job = job; this.result = result; }