public ActionResult RelatorioIncumprimento(RelatorioIncumprimentoViewModel view, string sort, string direction, int? page, string tabNr) { if (ModelState.IsValid) { if (tabNr == null || tabNr == "") tabNr = "1"; view.SetParameters(int.Parse(tabNr), page == null ? 1 : page.Value, sort, direction, Request.Params); if (view.dataFim != default(DateTime) && view.dataInicio != default(DateTime)) { view = getIncumprimentos(view); } else { if (view.dataInicio == default(DateTime)) view.dataFim = DateTime.Now; if (view.dataInicio == default(DateTime)) view.dataInicio = new DateTime(view.dataFim.Year - 1, view.dataFim.Month, view.dataFim.Day); } } if (view.dataInicio == default(DateTime)) view.dataFim = DateTime.Now; if (view.dataInicio == default(DateTime)) view.dataInicio = new DateTime(view.dataFim.Year - 1, view.dataFim.Month, view.dataFim.Day); if (view.entidadeId > 0) { this.ViewBag.entidadeId = new SelectList(entidadesRepository.All, "entidadeId", "nome", view.entidadeId); } else { this.ViewBag.entidadeId = new SelectList(entidadesRepository.All, "entidadeId", "nome"); } this.ViewBag.operacao = new SelectList(valoresSistemaRepository.GetPorTipologia("OPERACAO_EVENTO"), "valorSistemaId", "descricao"); return this.View(view); }
protected RelatorioIncumprimentoViewModel getIncumprimentos(RelatorioIncumprimentoViewModel view) { IQueryable<Apolice> apolices = apolicesRepository.All.Include("entidade").Include("eventoHistorico").Include("veiculo").Include("Tomador") .Where(a => a.entidadeId == view.entidadeId); if (view.operacao != null) { apolices = apolices.Where(a => a.eventoHistorico.codigoOperacao.valorSistemaId == view.operacao); } apolices = apolices.Where(a => a.dataReporte >= view.dataInicio && a.dataReporte <= view.dataFim); List<Apolice> apolicesAtivas = apolices.ToList(); IQueryable<ApoliceHistorico> historico = apolicesHistoricoRepository.All.Include("entidade").Include("eventoHistorico").Include("veiculo").Include("Tomador") .Where(h => h.entidadeId == view.entidadeId); if (view.operacao != null) { historico = historico.Where(h => h.eventoHistorico.codigoOperacao.valorSistemaId == view.operacao); } historico = historico.Where(a => a.dataReporte >= view.dataInicio && a.dataReporte <= view.dataFim); List<ApoliceHistorico> apolicesHistorico = historico.ToList(); List<RegistoIncumprimentoView> incumprimentos = new List<RegistoIncumprimentoView>(); foreach (Apolice a in apolicesAtivas) { if (a.SLA > new TimeSpan(0)) { incumprimentos.Add(new RegistoIncumprimentoView { operacao = a.eventoHistorico.codigoOperacao.valor, numeroApolice = a.numeroApolice, seguradora = a.entidade.nome, matricula = a.veiculo.numeroMatricula, dataInicio = a.dataInicio, dataFim = a.dataFim, SLA = a.SLA, tipo = RegistoIncumprimentoView.TipoApolice.Ativo, registoId = a.apoliceId }); } } foreach (ApoliceHistorico h in apolicesHistorico) { if (h.SLA > new TimeSpan(0)) { incumprimentos.Add(new RegistoIncumprimentoView { operacao = h.eventoHistorico.codigoOperacao.valor, numeroApolice = h.numeroApolice, seguradora = h.entidade.nome, matricula = h.veiculo.numeroMatricula, dataInicio = h.dataInicio, dataFim = h.dataFim, SLA = h.SLA, tipo = RegistoIncumprimentoView.TipoApolice.Historico, registoId = h.apoliceId }); } } view.totalNumberOfRecords = incumprimentos.Count; if (view.PageSize == 0) view.PageSize = view.totalNumberOfRecords; switch (view.SortColumn) { case "Operacao": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.operacao); else view.resultado = incumprimentos.OrderBy(s => s.operacao); break; case "Apolice": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.numeroApolice); else view.resultado = incumprimentos.OrderBy(s => s.numeroApolice); break; case "Seguradora": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.seguradora); else view.resultado = incumprimentos.OrderBy(s => s.seguradora); break; case "Matricula": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.matricula); else view.resultado = incumprimentos.OrderBy(s => s.matricula); break; case "DataInicio": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.dataInicio); else view.resultado = incumprimentos.OrderBy(s => s.dataInicio); break; case "DataFim": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.dataFim); else view.resultado = incumprimentos.OrderBy(s => s.dataFim); break; case "SLA": if (view.SortDirection == System.ComponentModel.ListSortDirection.Descending) view.resultado = incumprimentos.OrderByDescending(s => s.SLA); else view.resultado = incumprimentos.OrderBy(s => s.SLA); break; default: view.resultado = incumprimentos.OrderByDescending(i => i.dataInicio).ToList(); break; } view.resultado = view.resultado.Skip((view.CurrentPageNumber - 1) * view.PageSize).ToList(); view.resultado = view.resultado.Take(view.PageSize).ToList(); return view; }
public ActionResult exportIncumprimentosToCsv(RelatorioIncumprimentoViewModel viewModel, string sort, string direction, string tabNr) { if (tabNr == null || tabNr == "") tabNr = "1"; viewModel.SetParameters(int.Parse(tabNr), 1, sort, direction, Request.Params); viewModel.PageSize = 0; RelatorioIncumprimentoViewModel result = getIncumprimentos(viewModel); List<RegistoIncumprimentoCsv> listRegistos = new List<RegistoIncumprimentoCsv>(); foreach(var item in viewModel.resultado) { listRegistos.Add(new RegistoIncumprimentoCsv(){ matricula = item.matricula, numeroApolice = item.numeroApolice, operacao = item.operacao, seguradora = item.seguradora, SLA = item.SLA, dataInicio = item.dataInicio, dataFim = item.dataFim}); } CsvExport<RegistoIncumprimentoCsv> csv = new CsvExport<RegistoIncumprimentoCsv>(listRegistos); byte[] fileBytes = csv.ExportToBytes(); return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, "RelatorioIncumprimentos_" + DateTime.Now.ToShortDateString() + ".csv"); }