using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using PARR.DAL.Context; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; namespace PARR.EsppTemplateSync.Services { internal class Manager : IManager { private readonly ILogger logger; private readonly IServiceProvider serviceProvider; private readonly IParserService parserService; // private readonly ITemplateService templateService; public Manager( ILogger logger, IServiceProvider serviceProvider, IParserService parserService//, // ITemplateService templateService ) { this.logger = logger; this.serviceProvider = serviceProvider; this.parserService = parserService; // this.templateService = templateService; //using var scope = serviceProvider.CreateScope(); //var services = scope.ServiceProvider; //var templateService = services.GetService(); } public Task ManageFileAsync(string path) { throw new NotImplementedException(); } public async Task ManageStringAsync(string str) { bool isSuccess = true; //TOD if (str == null || str.Length <= 2) var template = await parserService.ParseStringAsync(str); await CheckChangesAsync(template); return isSuccess; } private async Task CheckChangesAsync(Template esppTemplate) { //if (!await templateService.CreateAsync(esppTemplate) || !await templateService.CommitAsync()) //{ // logger.LogError($"Не удалось создать запись Template {esppTemplate.EK}({esppTemplate.ShortDescription})"); //} //else // logger.LogInformation($"----- Создана запись Template {esppTemplate.EK}({esppTemplate.ShortDescription}) -----"); // ----------------- //using var dataContext = new DataContext(new Microsoft.EntityFrameworkCore.DbContextOptions { }); ////using var dataContext = new DataContext(opt => //// opt.UseNpgsql("Server=10.99.253.184;Database=parr;User Id=app_parr; Password=PosdfkhT&)%sdfligL&%5546;")); //dataContext.Templates.Add(esppTemplate); //await dataContext.SaveChangesAsync(); // ----------------- using (var scope = serviceProvider.CreateScope()) { var services = scope.ServiceProvider; var templateService = services.GetService(); if (templateService == null) return; var template = await templateService.GetTemplateByNameAsync(esppTemplate.EK); if (template == null) { esppTemplate.Status = "New"; logger.LogInformation($"В ЕСПП активирован неизвестной шаблон: {esppTemplate.EK} секунд. краткое описание: {esppTemplate.ShortDescription}"); if (!await templateService.CreateAsync(esppTemplate) || !await templateService.CommitAsync()) { logger.LogError($"Не удалось создать запись Template {esppTemplate.EK}({esppTemplate.ShortDescription})"); } else logger.LogInformation($"----- Создана запись Template {esppTemplate.EK}({esppTemplate.ShortDescription}) -----"); } } } } }