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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        public static OutputDataDto GetSalesmenQuantity(this OutputDataDto outputDto, FileContentDto contentDto)
        {
            outputDto.SalesmenQuantity = contentDto.Salesmen.DistinctBy(s => s.Cpf).Count();

            return(outputDto);
        }
示例#5
0
        public static OutputDataDto GetCustomersQuantity(this OutputDataDto outputDto, FileContentDto contentDto)
        {
            outputDto.CustomersQuantity = contentDto.Customers.DistinctBy(c => c.Cnpj).Count();

            return(outputDto);
        }