public Estabelecimento Salvar(Estabelecimento estabelecimento) { var atual = estabelecimento.Id == 0 ? estabelecimento : _dominioRepository.Get <Estabelecimento>(estabelecimento.Id); atual.Classificacao = _dominioRepository.Get <TipoDominio>(estabelecimento.Classificacao.Id); if (estabelecimento.Id > 0) { ReflectionHelper.CopyPrimitiveValues(estabelecimento, atual, "Ativo"); } _dominioRepository.Save(atual); return(atual); }
public IHttpActionResult Incluir([FromBody] DescricaoExtraModel body) { var descricaoExtra = new DescricaoExtra { Estabelecimento = _dominioRepository.Get <Estabelecimento>(body.Estabelecimento.Id), Classificacao = _dominioRepository.Get <TipoDominio>(body.Classificacao.Id), DataCompra = body.DataCompra, Ativo = true, IndiceCompraDe = body.IndiceCompraDe, IndiceCompraAte = body.IndiceCompraAte, Descricao = body.Descricao }; _dominioRepository.Save(descricaoExtra); return(Ok()); }
public string ExportExcel(string[] filePathSource, DateTime dtRef) { const int idDesconhecido = 204; var getDescription = new Func <TipoDominio, string>(e => string.Concat(e.Id, "-", e.Descricao)); var lstEstabelecimentos = _dominioRepository.List <Estabelecimento>().OrderByDescending(e => e.PalavraChave.Length); var tipoDesconhecido = _dominioRepository.Get <TipoDominio>(idDesconhecido); var arquivos = new Dictionary <string, List <DebitoData> >(); var lancamentos = new List <Lancamento>(); var qtdEstab = new Dictionary <string, int>(); var filePathTarget = Path.GetTempFileName(); foreach (var filePath in filePathSource) { var dados = _excelDocumentService.OpenExcelDocument(filePath).ReadExcelDocument <DebitoData>(0, true); var minDate = dados.Select(d => d.Data).Min(); var prefixos = _dominioRepository.FindBy <ClassificacaoExtra>(x => x.DataInicio >= minDate); foreach (var item in dados) { var estab = lstEstabelecimentos.FirstOrDefault(e => Regex.IsMatch(item.Local.Replace("*", string.Empty).ToUpper(), e.PalavraChave.ToUpper().LikeToRegular())); var prefixoExtra = prefixos.Where(x => x.DataInicio <= item.Data && x.DataFim >= item.Data).FirstOrDefault(); DescricaoExtra descricaoExtra = null; var lanc = new Lancamento { Estabelecimento = estab }; if (estab != null) { #region Mudando a classificação de uma compra específica na data var estabKey = $"{estab.Id}{item.Data}"; if (!qtdEstab.ContainsKey(estabKey)) { qtdEstab[estabKey] = 0; } qtdEstab[estabKey] += 1; descricaoExtra = _dominioRepository.FindBy <DescricaoExtra>(x => x.Ativo && x.DataCompra == item.Data && x.Estabelecimento.Id == estab.Id && qtdEstab[estabKey] >= x.IndiceCompraDe && qtdEstab[estabKey] <= x.IndiceCompraAte) .FirstOrDefault(); if (descricaoExtra != null) { item.Local = $"{descricaoExtra.Descricao}-{item.Local}"; estab = new Estabelecimento { Classificacao = descricaoExtra.Classificacao }; } #endregion } else { estab = new Estabelecimento { Classificacao = prefixoExtra != null ? prefixoExtra.Classificacao : tipoDesconhecido } }; #region Adicionando prefixo por range de data if (prefixoExtra != null) { item.Local = string.Concat(prefixoExtra.Prefixo, item.Local); } #endregion if (!arquivos.ContainsKey(getDescription(estab.Classificacao))) { arquivos.Add(getDescription(estab.Classificacao), new List <DebitoData> { new DebitoData { Local = item.Local, Data = item.Data, Valor = item.Valor } }); } else { arquivos[getDescription(estab.Classificacao)].Add(new DebitoData { Local = item.Local, Data = item.Data, Valor = item.Valor }); } lanc.Valor = item.Valor; lanc.Descricao = item.Local; lanc.DtCompra = item.Data; lanc.DtReferencia = new DateTime(dtRef.Year, dtRef.Month, 1); lanc.DescricaoExtra = descricaoExtra; lanc.ClassificacaoExtra = prefixoExtra; lanc.CriadoEm = DateTime.Now; lancamentos.Add(lanc); } } _excelDocumentService.WriteExcelDocument(filePathTarget, arquivos); _excelDocumentService.CloseExcelDocument(); _dominioRepository.ApagarLancamentosPorDtRef(dtRef); _dominioRepository.Save(lancamentos.AsEnumerable()); //excelApp.CloseExcelDocument(); return(filePathTarget); }