Files
parr_api/PARR.EsppTemplateSync/Services/ParserService.cs

171 lines
5.3 KiB
C#
Raw Normal View History

using Microsoft.Extensions.Logging;
using PARR.DAL.Contracts;
using PARR.EsppTemplateSync.Domain;
using PARR.EsppTemplateSync.Settings;
2023-09-01 12:40:41 +10:00
using System.Globalization;
namespace PARR.EsppTemplateSync.Services
2023-08-25 15:32:06 +10:00
{
internal class ParserService : IParserService
{
private readonly ILogger<ParserService> logger;
private readonly GlobalSettings globalSettings;
private readonly SettingsFromDb settingsFromDb;
public ParserService(
ILogger<ParserService> logger,
GlobalSettings globalSettings,
SettingsFromDb settingsFromDb
)
{
this.logger = logger;
this.globalSettings = globalSettings;
this.settingsFromDb = settingsFromDb;
}
2023-08-31 12:04:05 +10:00
public async Task<bool> ParseFileAsync(string path)
{
//TODO:
bool isSuccess = true;
return isSuccess;
}
public EsppTemplate? ParseString(string str)
2023-08-25 15:32:06 +10:00
{
// TODO: а если формат нет тот? Все будет ок?
var splittedContent = str.Split(globalSettings.ParsingSeparator);
if (splittedContent.Length != 17)
{
return null;
}
//var name = splittedContent[0].Trim().Substring(1, splittedContent[0].Length - 2);
var name = splittedContent[0].Trim();
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
if (!string.IsNullOrEmpty(settingsFromDb.TemplatePrefixName)
&& !name.StartsWith(settingsFromDb.TemplatePrefixName, true, currentCulture)
)
{
logger.LogWarning($"Имя шаблона не соответствует обязательному префиксу({settingsFromDb.TemplatePrefixName}). Шаблон {name} игнорирован");
return null;
}
if (!bool.TryParse(splittedContent[1].Trim(), out var isActive))
isActive = false;
var workGroup = splittedContent[2].Trim();
var shortDescription = splittedContent[3].Trim();
var category = splittedContent[4].Trim();
var responseArea = splittedContent[5].Trim();
var duration = splittedContent[6].Trim();
var ek = splittedContent[7].Trim();
var initiator = splittedContent[8].Trim();
var fullDescription = splittedContent[9].Trim();
var closingCode = splittedContent[10].Trim();
var solution = splittedContent[11].Trim();
var process = splittedContent[12].Trim();
var subProcess = splittedContent[13].Trim();
var tnk = splittedContent[14].Trim();
var work = splittedContent[15].Trim();
var worker = splittedContent[16].Trim();
2023-08-25 15:32:06 +10:00
var template = new EsppTemplate
2023-09-01 12:40:41 +10:00
{
Name = name,
IsActive = isActive,
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
2023-09-01 12:40:41 +10:00
};
2023-08-25 15:32:06 +10:00
2023-09-01 12:40:41 +10:00
return template;
}
2023-09-01 12:40:41 +10:00
private DateTimeOffset? ConvertDateFromStr(string dateString)
{
var format = "dd/MM/yy HH:mm:ss";
2023-09-01 12:40:41 +10:00
var provider = CultureInfo.CurrentCulture;
try
{
var result = DateTimeOffset.ParseExact(dateString, format, provider).ToOffset(new TimeSpan(0));
logger.LogInformation($"{dateString} было преобразовано в {result.ToString()}.");
2023-09-01 12:40:41 +10:00
return result;
}
catch (FormatException)
{
logger.LogWarning($"{dateString} имеет некоррктный формат для преобразование в DateTimeOffset");
2023-09-01 12:40:41 +10:00
}
return null;
2023-08-25 15:32:06 +10:00
}
}
// dll
//public delegate Dt CustomParserHandlerDelegate<Dt>(string str);
//public class Converter
//{
// public T ParseString<T>(string str, CustomParserHandlerDelegate<T> customParser)
// {
// var obj = customParser(str);
// return obj;
// }
//}
//public class RunConverter
//{
// public void Run<T>(CustomParserHandlerDelegate<T> customParser)
// {
// var conv = new Converter();
// //var obj = conv.ParseString("sdfsdfsdf", SuperParser);
// var obj = conv.ParseString("sdfsdfsdf", customParser);
// }
//}
////---
//public class Xxx
//{
// void Test()
// {
// var rc = new RunConverter();
// rc.Run(SuperParser);
// }
// Model1 SuperParser(string str)
// {
// // custom logic
// return new Model1 { Field = str };
// }
//}
//public class Model1
//{
// public string Field { get; set; } = "111";
//}
2023-08-25 15:32:06 +10:00
}