using Microsoft.Extensions.Logging; using PARR.DAL.Contracts; using PARR.DAL.Models; using PARR.DAL.Services.Interfaces; using System.Globalization; namespace PARR.EsppTemplateSync.Services { internal class ParserService : IParserService { private readonly ILogger logger; public ParserService(ILogger logger) { this.logger = logger; } public async Task ParseFileAsync(string path) { //TODO: bool isSuccess = true; return isSuccess; } public Template? ParseString(string str) { //TODO: а если формат нет тот? Все будет ок? //TODO: var splittedContent = str.Split("<|>"); if (splittedContent.Length != 17) { return null; } //var name = splittedContent[0].Trim().Substring(1, splittedContent[0].Length - 2); var name = splittedContent[0].Trim(); var isActive = splittedContent[1].Trim(); 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(); //logger.LogInformation($"Получено сообщение: {ek}"); var template = new Template { Id = Guid.NewGuid(), DateCreated = DateTime.UtcNow, Name = name, IsActive = bool.Parse(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, //Status = "Checking" StatusCode = (int)StatusTemplateEnum.Ok }; //bool isSuccess = true; return template; } private DateTimeOffset? ConvertDateFromStr(string dateString) { var format = "dd/MM/yy HH:mm:ss"; var provider = CultureInfo.CurrentCulture; try { var result = DateTimeOffset.ParseExact(dateString, format, provider).ToOffset(new TimeSpan(0)); logger.LogInformation($"{dateString} было преобразовано в {result.ToString()}."); return result; } catch (FormatException) { logger.LogWarning($"{dateString} имеет некоррктный формат для преобразование в DateTimeOffset"); } return null; } } }