Пример #1
0
        public async Task <object> GetFileStatus(FileStatusParamDto fileStatusParamDto, int network)
        {
            var saleFile = (await _saleFileRepository.CustomFind(
                                x => x.CurrentMonth == fileStatusParamDto.CurrentMonth &&
                                x.Network.Id == network &&
                                x.CurrentYear == fileStatusParamDto.CurrentYear,
                                x => x.FileStatus));

            if (!saleFile.Any())
            {
                return(null);
            }

            var saleFileObj = saleFile.OrderBy(x => x.Id).Last();

            if (saleFileObj.FileStatus.Id == (int)FileStatusEnum.InProgress)
            {
                var saleFileData = await _saleFileDataRepository.CustomFind(x => x.SaleFile.Id == saleFileObj.Id,
                                                                            x => x.SaleFileSkuStatus);

                return(new { saleFileData, saleFileObj.FileStatus });
            }
            else if (saleFileObj.FileStatus.Id == (int)FileStatusEnum.EndedError)
            {
                var saleFileDataError = await _saleFileDataErrorRepository.CustomFind(x => x.SaleFile.Id == saleFileObj.Id);

                return(new { saleFileDataError, saleFileObj.FileStatus });
            }
            else
            {
                return(new { saleFileObj.FileStatus });
            }
        }
        public async Task <IActionResult> SendSaleFile([FromForm] FileStatusParamDto fileStatusParamDto, IFormFile file)
        {
            try
            {
                if (file == null || file.Length == 0)
                {
                    _logger.Warn($"Importação de arquivo de venda - Arquivo não encontrado");
                    return(NotFound("Arquivo não encontrado"));
                }


                var messageReturn = await _saleFileService.SendSaleFile(fileStatusParamDto, file, Network, UserId);

                _logger.Info($"Importação de arquivo de venda - {messageReturn}");

                return(Ok(messageReturn));
            }
            catch (Exception ex)
            {
#if (!DEBUG)
                _logger.Fatal($"Importação de arquivo de venda - {ex.ToLogString(Environment.StackTrace)}");
#endif
                return(BadRequest($"Importação de arquivo de venda - {ex.ToLogString(Environment.StackTrace)}"));
            }
        }
Пример #3
0
        public async Task <object> GetFileStatus(FileStatusParamDto fileStatusParamDto, int network)
        {
            var hierarchyFile = (await _hierarchyFileRepository.CustomFind(
                                     x => x.CurrentMonth == fileStatusParamDto.CurrentMonth &&
                                     x.Network.Id == network &&
                                     x.CurrentYear == fileStatusParamDto.CurrentYear,
                                     x => x.FileStatus));

            if (!hierarchyFile.Any())
            {
                return(null);
            }

            var hierarchyFileObj = hierarchyFile.OrderBy(x => x.Id).Last();

            if (hierarchyFile != null && hierarchyFileObj.FileStatus.Id == (int)FileStatusEnum.EndedError)
            {
                var saleFileDataError = await _hierarchyFileDataErrorRepository.CustomFind(x => x.HierarchyFile.Id == hierarchyFileObj.Id);

                return(new { hierarchyFileObj.FileStatus, saleFileDataError });
            }


            return(new { hierarchyFileObj.FileStatus });
        }
        public async Task <IActionResult> GetHierarchyFileStatus([FromBody] FileStatusParamDto fileStatusParamDto)
        {
            try
            {
                var fileStatus = await _hierarchyFileService.GetFileStatus(fileStatusParamDto, Network);

                if (fileStatus == null)
                {
                    _logger.Warn($"status do arquivo de venda - Não encontramos nenhum arquivo importado no mes {fileStatusParamDto.CurrentMonth} e ano {fileStatusParamDto.CurrentYear}");
                    return(NotFound($"Não encontramos nenhum arquivo importado no mes {fileStatusParamDto.CurrentMonth} e ano {fileStatusParamDto.CurrentYear}"));
                }

                return(Ok(fileStatus));
            }
            catch (Exception ex)
            {
#if (!DEBUG)
                _logger.Fatal($"status do arquivo de hierarquia - {ex.ToLogString(Environment.StackTrace)}");
#endif
                return(BadRequest($"status do arquivo de hierarquia - {ex.ToLogString(Environment.StackTrace)}"));
            }
        }
Пример #5
0
        public async Task <IEnumerable <string> > SendSaleFile(FileStatusParamDto fileStatusParamDto, IFormFile formFile, int network, int user)
        {
            var extensions = Path.GetFileName(formFile.FileName).Split('.').Last().ToUpper();

            if (extensions == "XLS")
            {
                return new string[1] {
                           "favor importar arquivo com extensão .xlsx."
                }
            }
            ;

            if (extensions != "XLSX")
            {
                return new string[1] {
                           "favor importar arquivo com extensão .xlsx."
                }
            }
            ;

            if (await _saleFileRepository.ExistFile(fileStatusParamDto.CurrentMonth, fileStatusParamDto.CurrentYear, network))
            {
                return new string[1] {
                           "Existe um arquivo em fase de processamento ou ja foi processado"
                }
            }
            ;

            var fileName = $"{DateTime.Now.Year}" +
                           $"{DateTime.Now.Month.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Day.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Hour.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Minute.ToString().PadLeft(2, '0')}" +
                           $"{DateTime.Now.Second.ToString().PadLeft(2, '0')}.{extensions}";

            var path = Path.Combine(_env.WebRootPath, $"Content/SpreadSheet/Sale/{Path.GetFileName(fileName)}");

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await formFile.CopyToAsync(stream);
            }

            var spreadSheetMessages = new List <string>();
            var columnsToValidate   = new string[11] {
                "REVENDA", "COD LOJA", "CNPJ", "CPF VENDEDOR", "NOME VENDEDOR", "CATEGORIA", "DESCRIÇÃO PRODUTO", "QUANTIDADE", "DATA VENDA", "NÚMERO PEDIDO", "CÓDIGO EAN"
            };
            var fileInfo = new FileInfo(path);

            using (var excelPackage = new ExcelPackage(fileInfo))
            {
                var tab = excelPackage.Workbook.Worksheets[1];

                spreadSheetMessages = FileManipulator.ValidateSpreadsheet(tab, columnsToValidate);
            }

            if (spreadSheetMessages.Count == 0)
            {
                _saleFileRepository.Save(new SaleFile
                {
                    CreatedAt    = DateTime.Now,
                    CurrentMonth = fileStatusParamDto.CurrentMonth,
                    CurrentYear  = fileStatusParamDto.CurrentYear,
                    FileName     = fileName,
                    FileStatus   = await _fileStatusRepository.GetById((int)FileStatusEnum.Pending),
                    Network      = await _networkRepository.GetById(network),
                    User         = await _userRepository.GetById(user)
                });

                await _unitOfWork.CommitAsync();

                spreadSheetMessages.Add("Carga recebida com sucesso. Aguarde a validação dos seus dados.");
            }

            return(spreadSheetMessages);
        }