Manager. Mapping Template, изменен метод сравнения и обновления

This commit is contained in:
Mikhail Kuznetsov
2023-09-21 15:54:46 +10:00
parent 11cacad810
commit 9b05cda8dd
8 changed files with 121 additions and 42 deletions

View File

@@ -1,9 +1,9 @@
using PARR.DAL.Models;
using PARR.EsppTemplateSync.Domain;
namespace PARR.EsppTemplateSync.Services
{
internal interface IParserService
{
Template? ParseString(string str);
EsppTemplate? ParseString(string str);
}
}

View File

@@ -1,8 +1,10 @@
using Microsoft.Extensions.DependencyInjection;
using AutoMapper;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.EsppTemplateSync.Domain;
using PARR.EsppTemplateSync.Settings;
namespace PARR.EsppTemplateSync.Services
@@ -13,18 +15,21 @@ namespace PARR.EsppTemplateSync.Services
private readonly IServiceProvider serviceProvider;
private readonly IParserService parserService;
private readonly GlobalSettings globalSettings;
private readonly IMapper mapper;
public Manager(
ILogger<Manager> logger,
IServiceProvider serviceProvider,
IParserService parserService,
GlobalSettings globalSettings
GlobalSettings globalSettings,
IMapper mapper
)
{
this.logger = logger;
this.serviceProvider = serviceProvider;
this.parserService = parserService;
this.globalSettings = globalSettings;
this.mapper = mapper;
}
public Task<bool> ManageFileAsync(string path)
@@ -50,10 +55,10 @@ namespace PARR.EsppTemplateSync.Services
else
{
//если шаблон не аквтивен, пропускаем
if (!esppTemplate.IsActive)
{
return isSuccess;
}
//if (!esppTemplate.IsActive)
//{
// return isSuccess;
//}
await SyncTemplateAsync(esppTemplate);
// var template = await GetTemplateAsync(esppTemplate);
@@ -110,7 +115,25 @@ namespace PARR.EsppTemplateSync.Services
return isSuccess;
}
private async Task<Template?> GetTemplateAsync(Template esppTemplate)
//private async Task<Template?> GetTemplateAsync(Template esppTemplate)
//{
// using (var scope = serviceProvider.CreateScope())
// {
// var services = scope.ServiceProvider;
// var templateService = services.GetService<ITemplateService>();
// if (templateService == null)
// {
// throw new Exception($"Не найден сервис: {nameof(ITemplateService)}");
// // return;
// }
// return await templateService.GetTemplateByNameAsync(esppTemplate.Name);
// }
//}
private async Task SyncTemplateAsync(EsppTemplate esppTemplate)
{
using (var scope = serviceProvider.CreateScope())
{
@@ -124,25 +147,7 @@ namespace PARR.EsppTemplateSync.Services
// return;
}
return await templateService.GetTemplateByNameAsync(esppTemplate.Name);
}
}
private async Task SyncTemplateAsync(Template esppTemplate)
{
using (var scope = serviceProvider.CreateScope())
{
var services = scope.ServiceProvider;
var templateService = services.GetService<ITemplateService>();
if (templateService == null)
{
throw new Exception($"Не найден сервис: {nameof(ITemplateService)}");
// return;
}
var template = await templateService.GetTemplateByNameAsync(esppTemplate.Name);
Template? template = await templateService.GetTemplateByNameAsync(esppTemplate.Name);
//существует в ЕСПП но отсутствует в ПАРР.
//TODO деактивируем и видимо ещё что-то нужно
if (template == null)
@@ -159,12 +164,15 @@ namespace PARR.EsppTemplateSync.Services
//else
// logger.LogInformation($"----- Создана запись Template {esppTemplate.Name}({esppTemplate.ShortDescription}) -----");
//---
logger.LogWarning($"----- Найден шаблон ЕСПП незарегистрированный в ПАРР {esppTemplate.Name}({esppTemplate.ApplicationsInWork?.ShortDescription}) -----");
logger.LogWarning($"----- Найден шаблон ЕСПП незарегистрированный в ПАРР {esppTemplate.Name}({esppTemplate.ShortDescription}) -----");
return;
}
else
{
var isChanged = IsChanged(template,esppTemplate);
var mappedTemplate = mapper.Map<EsppTemplate>(template);
if (mappedTemplate == null)
return;
var isChanged = IsChanged(mappedTemplate, esppTemplate);
if (isChanged)
{
@@ -188,7 +196,7 @@ namespace PARR.EsppTemplateSync.Services
template.StatusCode = (int)StatusTemplateEnum.Updating;
}
private bool IsChanged(Template template, Template esppTemplate)
private bool IsChanged(EsppTemplate template, EsppTemplate esppTemplate)
{
foreach (var prop in template.GetType().GetProperties())
{
@@ -202,8 +210,8 @@ namespace PARR.EsppTemplateSync.Services
if (parrValue == null || esppValue == null)
continue;
//if (parrValue!.ToString()!.ToLower() != esppValue!.ToString()!.ToLower())
//return true;
if (parrValue!.ToString()!.ToLower() != esppValue!.ToString()!.ToLower())
return true;
}
return false;

View File

@@ -1,7 +1,5 @@
using Microsoft.Extensions.Logging;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.EsppTemplateSync.Domain;
using PARR.EsppTemplateSync.Settings;
using System.Globalization;
@@ -30,7 +28,7 @@ namespace PARR.EsppTemplateSync.Services
return isSuccess;
}
public Template? ParseString(string str)
public EsppTemplate? ParseString(string str)
{
//TODO: а если формат нет тот? Все будет ок?
@@ -60,13 +58,26 @@ namespace PARR.EsppTemplateSync.Services
var work = splittedContent[15].Trim();
var worker = splittedContent[16].Trim();
var template = new Template
var template = new EsppTemplate
{
Id = Guid.NewGuid(),
DateCreated = DateTime.UtcNow,
Name = name,
IsActive = bool.Parse(isActive),
StatusCode = (int)StatusTemplateEnum.Ok
WorkGroup = workGroup,
ShortDescription = shortDescription,
//Category = category,
ResponseArea = responseArea,
Duration = duration,
EK = ek,
//Initiator = initiator,
FullDescription = fullDescription,
//ClosingCode = closingCode,
Solution = solution,
Process = process,
SubProcess = subProcess,
TNK = tnk,
Work = work,
//Worker = worker
};
return template;