public void BuildOutputData(FileContentDto fileContent) { try { _outputData = new OutputDataDto { FileName = fileContent.InputFile.FileName , FileExtension = fileContent.InputFile.FileExtension , GenerationDate = DateTime.Now } .GetCustomersQuantity(fileContent) .GetSalesmenQuantity(fileContent) .GetIdFromMostExpensiveSale(fileContent , _context) .GetWorstSalesman(fileContent); _clientPublisher.Publish(_outputData , _configuration["RabbitMqHostName"] , _configuration["RabbitMqUsername"] , _configuration["RabbitMqPassword"] , int.Parse(_configuration["RabbitMqRetryCount"]) , _configuration["RabbitMqPublishQueueName"]); } catch (Exception exception) { _logger.LogCritical("An unexpected exception occurred when building output data object"); _logger.LogCritical("Exception: {message}", exception.Message); _logger.LogTrace(exception.Message); } }
public static OutputDataDto GetWorstSalesman(this OutputDataDto outputDto, FileContentDto contentDto) { var worstSalesman = contentDto.Sales.DistinctBy(x => x.SalesmanName).Min(x => x.SalesmanName); outputDto.WorstSalesman = worstSalesman; return(outputDto); }
public static OutputDataDto GetIdFromMostExpensiveSale(this OutputDataDto outputDto, FileContentDto contentDto , SalesProcessorDbContext context) { var sales = context.Sales.Where(s => s.InputFileName == contentDto.InputFile.FileName).ToList(); var results = new List <Tuple <int, float> >(); sales.ForEach(s => { s.SalesInfo = context.SalesInfo.Where(info => info.FkSale == s.Id).ToList(); var price = s.SalesInfo.Sum(saleInfo => saleInfo.ItemPrice); results.Add(Tuple.Create(s.SaleId, price)); }); results = results.OrderByDescending(x => x.Item2).ToList(); outputDto.MostExpensiveSale = results.First().Item1; return(outputDto); }
public static OutputDataDto GetSalesmenQuantity(this OutputDataDto outputDto, FileContentDto contentDto) { outputDto.SalesmenQuantity = contentDto.Salesmen.DistinctBy(s => s.Cpf).Count(); return(outputDto); }
public static OutputDataDto GetCustomersQuantity(this OutputDataDto outputDto, FileContentDto contentDto) { outputDto.CustomersQuantity = contentDto.Customers.DistinctBy(c => c.Cnpj).Count(); return(outputDto); }