public IHttpActionResult Listar() { return(Ok(_dominioRepository.FindBy <DescricaoExtra>(d => d.Ativo).Select(x => new { x.Id, estabelecimento = _estabelecimentoTransformer.Transform(x.Estabelecimento), classificacao = new { x.Classificacao.Id, x.Classificacao.Descricao }, x.Descricao, x.DataCompra, x.IndiceCompraDe, x.IndiceCompraAte })));; }
public void ExportExcel(string filePath) { var excelApp = new OpenXmlApplication(); //container.GetInstance<IExcelDocumentService>(); var dados = excelApp.OpenExcelDocument(filePath).ReadExcelDocument <DebitoData>(0, true); var minDate = dados.Select(d => d.Data).Min(); var lstEstabelecimentos = _dominioRepository.List <Estabelecimento>(); var extraDatas = _dominioRepository.FindBy <ClassificacaoExtra>(x => x.DataInicio >= minDate); var arquivos = new Dictionary <string, CSVFile>(); DeleteFolderCSVFiles(filePath); foreach (var item in dados) { var extraData = extraDatas.Where(x => x.DataInicio <= item.Data && x.DataFim >= item.Data).FirstOrDefault(); var estab = lstEstabelecimentos.FirstOrDefault(e => Regex.IsMatch(item.Local.Replace("*", string.Empty).ToUpper(), e.PalavraChave.ToUpper().LikeToRegular())); if (extraData != null) { item.Local = string.Concat(extraData.Prefixo, item.Local); } if (estab == null) { estab = new Estabelecimento { Classificacao = extraData != null ? extraData.Classificacao : new TipoDominio { Descricao = "DESCONHECIDO" } } } ; if (!arquivos.ContainsKey(estab.Classificacao.Descricao)) { var tmpSb = new CSVFile(); arquivos.Add(estab.Classificacao.Descricao, tmpSb); } var csvData = arquivos[estab.Classificacao.Descricao]; csvData.AppendLine(item); } Array.ForEach(arquivos.ToArray(), a => a.Value.Save(Path.Combine(@"c:\tmp", string.Concat(a.Key, ".csv")))); excelApp.CloseExcelDocument(); }
public IHttpActionResult Listar(int idDominio) { return(Ok(_dominioRepository.FindBy <TipoDominio>(x => x.Dominio.Id == idDominio) .Select(x => _tipoDominioTransformer.Transform(x)))); }
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); }