using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; 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; public Manager( ILogger logger, IServiceProvider serviceProvider, IParserService parserService ) { this.logger = logger; this.serviceProvider = serviceProvider; this.parserService = parserService; } public Task ManageFileAsync(string path) { throw new NotImplementedException(); } public async Task ManageStringAsync(string str) { bool isSuccess = true; ////TODO: if (str == null || str.Length <= 2) // тут обязательно нужна проверка, если str не того формата, возникает exception в ParseStringAsync var template = await parserService.ParseStringAsync(str); ////TODO: а если template==null??? await CheckChangesAsync(template); //todo: only true????? return isSuccess; } private async Task CheckChangesAsync(Template esppTemplate) { // --- test --- using (var scope = serviceProvider.CreateScope()) { var services = scope.ServiceProvider; var templateService = services.GetService(); if (templateService == null) { return; } var resCreate = await templateService.CreateAsync(esppTemplate); var resCommit = await templateService.CommitAsync(); } // === end test === //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}) -----"); // } //} } } }