using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; namespace PARR.MockData.Services { internal class TemplatesInitializer : ITemplatesInitializer { private readonly ILogger logger; private readonly ITemplateService templateService; private readonly IProcessService processService; private readonly ISubprocessService subprocessService; private readonly ITnkService tnkService; private readonly IWorkService workService; public TemplatesInitializer( ILogger logger, ITemplateService templateService, IProcessService processService, ISubprocessService subprocessService, ITnkService tnkService, IWorkService workService ) { this.logger = logger; this.templateService = templateService; this.processService = processService; this.subprocessService = subprocessService; this.tnkService = tnkService; this.workService = workService; } public async Task InitAsync() { var process = await processService.Get().FirstOrDefaultAsync(p => p.EsppId == 202); if (process == null) { process = new Process { Id = Guid.NewGuid(), DateCreated = DateTimeOffset.UtcNow, Name = "ПТК Выполнение регламентных работ (О3.2.2.4)", EsppId = 202, }; if (!await processService.CreateAsync(process) || !await processService.CommitAsync()) { logger.LogError($"Не удалось создать process {process.Name}"); return; } else logger.LogInformation($"----- Создан process: {process.Name} -----"); } var subprocess = await subprocessService.Get().FirstOrDefaultAsync(p => p.EsppId == 202); if (subprocess == null) { subprocess = new Subprocess { Id = Guid.NewGuid(), DateCreated = DateTimeOffset.UtcNow, Name = "ПТК Выполнение регламентных работ (О3.2.2.4)", EsppId = 202, ProcessId = process.Id, }; if (!await subprocessService.CreateAsync(subprocess) || !await subprocessService.CommitAsync()) { logger.LogError($"Не удалось создать subprocess {subprocess.Name}"); return; } else logger.LogInformation($"----- Создан subprocess: {subprocess.Name} -----"); } var tnk = await tnkService.Get().FirstOrDefaultAsync(p => p.EsppId == 292917); if (tnk == null) { tnk = new Tnk { Id = Guid.NewGuid(), DateCreated = DateTimeOffset.UtcNow, Name = "Прочее(работы)", EsppId = 292917, SubprocessId = subprocess.Id }; if (!await tnkService.CreateAsync(tnk) || !await tnkService.CommitAsync()) { logger.LogError($"Не удалось создать tnk {tnk.Name}"); return; } else logger.LogInformation($"----- Создан tnk: {tnk.Name} -----"); } var work = await workService.Get().FirstOrDefaultAsync(p => p.EsppId == 292917); if (work == null) { work = new Work { Id = Guid.NewGuid(), DateCreated = DateTimeOffset.UtcNow, Name = "Прочее(работы)", EsppId = 292917, TnkId = tnk.Id }; if (!await workService.CreateAsync(work) || !await workService.CommitAsync()) { logger.LogError($"Не удалось создать work {work.Name}"); return; } else logger.LogInformation($"----- Создан work: {work.Name} -----"); } } } }