Example #1
0
        public async Task CadastrarEditar(ArquivoDto arquivoDTO, bool salvarContexto = true)
        {
            var arquivo = await Contexto.Arquivos
                          .FirstOrDefaultAsync(o =>
                                               o.Id.Equals(arquivoDTO.Id) ||
                                               o.NomeArquivo.Equals(arquivoDTO.NomeArquivo) &&
                                               o.Caminho.Equals(arquivoDTO.Caminho));

            var resultado = arquivoDTO.ConverterParaModel();

            resultado.DataUltimaAlteracao = DateTime.Now;
            resultado.Linhas = arquivoDTO.Linhas
                               .Select(o => o.ConverterParaModel())
                               .ToList();

            if (arquivo is null)
            {
                resultado.Id = Guid.NewGuid();
                await Contexto.Arquivos.AddAsync(resultado);
            }
            else
            {
                Contexto.Entry(resultado).State = EntityState.Modified;
            }

            if (salvarContexto)
            {
                await Contexto.SaveChangesAsync();
            }
        }
        public async Task <JsonResult> UploadFiles()
        {
            List <ArquivoDto> result = new List <ArquivoDto>();

            try
            {
                foreach (var file in Request.Form.Files)
                {
                    if (file != null || file.ContentType.ToLower().StartsWith("image/"))
                    {
                        MemoryStream ms = new MemoryStream();
                        file.OpenReadStream().CopyTo(ms);
                        ArquivoDto arquivo = new ArquivoDto();
                        arquivo.Nome = file.FileName;
                        //arquivo.Conteudo = ms.ToArray();
                        arquivo.Extensao = file.ContentType;

                        result.Add(arquivo);
                    }
                }
            }
            catch (Exception e)
            {
            }

            return(Json(result));
        }
Example #3
0
        public async Task <bool> Atualizar(ArquivoDto arquivoDTO)
        {
            var arquivo = await _arquivosRepositorio.Obter(arquivoDTO.Id);

            if (arquivo == null)
            {
                throw new RegraDeNegocioException(MensagensSistema.AtualizarArquivoInexistente);
            }

            var arquivoModificado = false;

            foreach (var linha in arquivoDTO.Linhas)
            {
                var linhaAtual = arquivo.Linhas.FirstOrDefault(o => o.Traducao.ConvertUtf8ToString().Equals(linha.TraducaoDecodificada));

                if (!arquivoModificado && linhaAtual == null)
                {
                    arquivoModificado = true;
                }

                linha.Original             = linha.OriginalDecodificada.ConvertStringToUtf8();
                linha.OriginalDecodificada = null;

                linha.Traducao             = linha.TraducaoDecodificada.ConvertStringToUtf8();
                linha.TraducaoDecodificada = null;
            }

            if (arquivoModificado)
            {
                await _arquivosRepositorio.CadastrarEditar(arquivoDTO);
            }

            return(arquivoModificado);
        }
Example #4
0
        public async Task <IActionResult> Atualizar([FromBody] ArquivoDto arquivoDto)
        {
            try
            {
                var resultado = await _arquivosServico.Atualizar(arquivoDto);

                if (resultado)
                {
                    return(Ok(MensagensSistema.ArquivoAtualizadoComSucesso));
                }

                // Não há alterações no arquivo
                return(StatusCode(304));
            }
            catch (RegraDeNegocioException e)
            {
                var guid = Guid.NewGuid();
                return(BadRequest(new ResultadoOperacao(false, MensagensSistema.Erro500RegraNegocio + e.Message, guid)));
            }
            catch (Exception)
            {
                var guid = Guid.NewGuid();
                return(BadRequest(new ResultadoOperacao(false, MensagensSistema.Erro500 + guid.ToString(), guid)));
            }
        }
Example #5
0
        private decimal CalcularPorcentagemTraducao(ArquivoDto arquivo)
        {
            decimal totalLinhas       = arquivo.Linhas.Count;
            decimal linhasModificadas = 0;

            foreach (var linha in arquivo.Linhas)
            {
                if ((!string.IsNullOrEmpty(linha.OriginalDecodificada) &&
                     !string.IsNullOrEmpty(linha.TraducaoDecodificada)) &&
                    !linha.OriginalDecodificada.Equals(linha.TraducaoDecodificada))
                {
                    linhasModificadas += 1;
                }
            }

            return(linhasModificadas == 0
                ? 0
                : Math.Round(linhasModificadas * 100 / totalLinhas, 2));
        }
Example #6
0
 public static Arquivo ConverterParaModel(this ArquivoDto dto)
 {
     return(ConverterPara(dto, new Arquivo()));
 }
Example #7
0
        /// <summary>
        /// Lê o arquivo excel informado e grava no banco de dados os dados desse arquivo
        /// </summary>
        /// <param name="arquivo">Informações do arquivo excel</param>
        /// <returns></returns>
        private async Task Cadastrar(ArquivoDto arquivo)
        {
            using (var pck = new ExcelPackage(arquivo.StreamArquivo))
            {
                var ws = pck.Workbook.Worksheets[0];

                var totalColunas = ws.ObterDimensoes().End.Column;
                var totalLinhas  = ws.ObterDimensoes().End.Row;

                for (var row = 2; row <= totalLinhas; row++)
                {
                    var cadastrar = true;

                    var linha = new LinhaArquivoDto(Guid.NewGuid(), arquivo.Id);

                    for (var col = 1; col <= totalColunas; col++)
                    {
                        switch (totalColunas)
                        {
                        case 3:
                            linha.Linha = row - 1;

                            switch (col)
                            {
                            case 1:
                                linha.Offset = ws.Cells[row, col].Value.ToString();
                                break;

                            case 2:
                                linha.Original = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                break;

                            case 3:
                                linha.Traducao = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                break;
                            }
                            break;

                        case 4:
                            if (Enum.TryParse(ws.Cells[row, 1].Value.ToString(), true, out YakuzaKiwamiColunasPermitidas _))
                            {
                                switch (col)
                                {
                                case 1:
                                    linha.Coluna = ws.Cells[row, col].Value.ToString();
                                    break;

                                case 2:
                                    linha.Linha = int.Parse(ws.Cells[row, col].Value.ToString() !) + 1;
                                    break;

                                case 3:
                                    linha.Original = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                    break;

                                case 4:
                                    linha.Traducao = ws.Cells[row, col].Value.ConvertStringToUtf8();
                                    break;
                                }
                            }
                            else
                            {
                                cadastrar = false;
                            }
                            break;
                        }
                    }

                    if (cadastrar)
                    {
                        arquivo.Linhas.Add(linha);
                    }
                }
            }

            await _arquivosRepositorio.CadastrarEditar(arquivo);
        }