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)); }
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); }
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))); } }
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)); }
public static Arquivo ConverterParaModel(this ArquivoDto dto) { return(ConverterPara(dto, new Arquivo())); }
/// <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); }