public async Task <IActionResult> ObterPorMes([FromQuery] CalendarioEventosFiltroDto filtro, int mes, [FromServices] IConsultasEvento consultasEvento) { var listaRetorno = await consultasEvento.ObterQuantidadeDeEventosPorDia(filtro, mes); if (listaRetorno.Any()) { return(Ok(listaRetorno)); } else { return(StatusCode(204)); } }
public async Task <IActionResult> ObterPorDia(int dia, int mes, [FromQuery] CalendarioEventosFiltroDto filtro, [FromServices] IConsultasEvento consultasEvento) { var retorno = await consultasEvento.ObterEventosPorDia(filtro, mes, dia); if (retorno.Any()) { return(Ok(retorno)); } else { return(StatusCode(204)); } }
public async Task <IActionResult> ObterMeses([FromServices] IConsultasEvento consultasEvento, [FromQuery] CalendarioEventosFiltroDto calendarioEventoMesesFiltro) { var retorno = await consultasEvento.ObterQuantidadeDeEventosPorMeses(calendarioEventoMesesFiltro); if (retorno.Any()) { return(Ok(retorno)); } else { return(StatusCode(204)); } }
public async Task <IEnumerable <CalendarioTipoEventoPorDiaDto> > ObterQuantidadeDeEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes) { var usuario = await servicoUsuario.ObterUsuarioLogado(); var perfilAtual = servicoUsuario.ObterPerfilAtual(); var listaQuery = await repositorioEvento.ObterQuantidadeDeEventosPorDia(calendarioEventosMesesFiltro, mes, usuario, perfilAtual, usuario.TemPerfilSupervisorOuDiretor(), usuario.PodeVisualizarEventosOcorrenciaDre(), usuario.PodeVisualizarEventosLibExcepRepoRecessoGestoresUeDreSme()); List <CalendarioTipoEventoPorDiaDto> listaRetorno = new List <CalendarioTipoEventoPorDiaDto>(); if (listaQuery.Any()) { var listaDiasEventos = listaQuery.GroupBy(a => a.Dia).ToList(); listaDiasEventos.ForEach(a => { var tipoEventos = a.GroupBy(b => b.TipoEvento).Select(b => b.Key).ToList(); listaRetorno.Add(new CalendarioTipoEventoPorDiaDto() { Dia = a.Key, TiposEvento = tipoEventos.ToArray(), }); }); } return(listaRetorno); }
public async Task <IEnumerable <CalendarioEventosMesesDto> > ObterQuantidadeDeEventosPorMeses(CalendarioEventosFiltroDto calendarioEventosMesesFiltro) { var usuario = await servicoUsuario.ObterUsuarioLogado(); return(await repositorioEvento.ObterQuantidadeDeEventosPorMeses(calendarioEventosMesesFiltro, usuario, usuario.PerfilAtual, usuario.PodeVisualizarEventosOcorrenciaDre(), usuario.PodeVisualizarEventosLibExcepRepoRecessoGestoresUeDreSme())); }
public async Task <IEnumerable <CalendarioEventosNoDiaRetornoDto> > ObterEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes, int dia) { var usuario = await servicoUsuario.ObterUsuarioLogado(); return(await repositorioEvento.ObterEventosPorDia(calendarioEventosMesesFiltro, mes, dia, usuario, usuario.PerfilAtual, usuario.TemPerfilSupervisorOuDiretor(), usuario.PodeVisualizarEventosOcorrenciaDre(), usuario.PodeVisualizarEventosLibExcepRepoRecessoGestoresUeDreSme())); }
public async Task <IEnumerable <CalendarioEventosNoDiaRetornoDto> > ObterEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes, int dia) { var query = new StringBuilder(); query.AppendLine("select id, e.descricao,"); query.AppendLine("case"); query.AppendLine("when e.dre_id is not null then 'DRE'"); query.AppendLine("when e.ue_id is not null then 'UE'"); query.AppendLine("when e.ue_id is null and e.dre_id is null then 'SME'"); query.AppendLine("end as TipoEvento"); query.AppendLine("from evento e"); query.AppendLine("where e.excluido = false"); query.AppendLine("and extract(month from e.data_inicio) = @mes"); query.AppendLine("and extract(day from e.data_inicio) = @dia"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and e.dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and e.tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and e.ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and e.ue_id is null and e.dre_id is null"); } query.AppendLine("union distinct"); query.AppendLine("select id, e.descricao, "); query.AppendLine("case"); query.AppendLine("when e.dre_id is not null then 'DRE'"); query.AppendLine("when e.ue_id is not null then 'UE'"); query.AppendLine("when e.ue_id is null and e.dre_id is null then 'SME'"); query.AppendLine("end as TipoEvento"); query.AppendLine("from evento e"); query.AppendLine("where e.excluido = false"); query.AppendLine("and extract(month from e.data_fim) = @mes"); query.AppendLine("and extract(day from e.data_fim) = @dia"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and e.dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and e.tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and e.ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and e.ue_id is null and e.dre_id is null"); } return(await database.Conexao.QueryAsync <CalendarioEventosNoDiaRetornoDto>(query.ToString(), new { IdTipoCalendario = calendarioEventosMesesFiltro.IdTipoCalendario, DreId = calendarioEventosMesesFiltro.DreId, UeId = calendarioEventosMesesFiltro.UeId, mes, dia })); }
public async Task <IEnumerable <CalendarioEventosNoDiaRetornoDto> > ObterEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes, int dia) { var usuario = await servicoUsuario.ObterUsuarioLogado(); return(await repositorioEvento.ObterEventosPorDia(calendarioEventosMesesFiltro, mes, dia, usuario)); }
public async Task <IEnumerable <CalendarioEventosMesesDto> > ObterQuantidadeDeEventosPorMeses(CalendarioEventosFiltroDto calendarioEventosMesesFiltro) { var query = new StringBuilder(); query.AppendLine("SELECT a.mes,"); query.AppendLine("Count(*) eventos"); query.AppendLine("FROM(SELECT a.*,"); query.AppendLine("Rank()"); query.AppendLine("over("); query.AppendLine("PARTITION BY a.id, a.mes"); query.AppendLine("ORDER BY campo) rank_id"); query.AppendLine("FROM(SELECT id,"); query.AppendLine("Extract(month FROM data_inicio) mes,"); query.AppendLine("1 campo"); query.AppendLine("FROM evento"); query.AppendLine("where 1=1"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and ue_id is null and dre_id is null"); } query.AppendLine("UNION ALL"); query.AppendLine("SELECT id,"); query.AppendLine("Extract(month FROM data_fim) mes_evento,"); query.AppendLine("2 campo"); query.AppendLine("FROM evento"); query.AppendLine("where 1=1"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and ue_id is null and dre_id is null"); } query.AppendLine(") a) a"); query.AppendLine("WHERE a.rank_id = 1"); query.AppendLine("GROUP BY a.mes"); return(await database.Conexao.QueryAsync <CalendarioEventosMesesDto>(query.ToString(), new { IdTipoCalendario = calendarioEventosMesesFiltro.IdTipoCalendario, DreId = calendarioEventosMesesFiltro.DreId, UeId = calendarioEventosMesesFiltro.UeId })); }
public async Task <IEnumerable <EventosPorDiaRetornoQueryDto> > ObterQuantidadeDeEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes) { var query = new StringBuilder(); query.AppendLine("select a.dia, a.tipoevento from(select id, extract(day from e.data_inicio) as dia,"); query.AppendLine("case"); query.AppendLine("when e.dre_id is not null then 'DRE'"); query.AppendLine("when e.ue_id is not null then 'UE'"); query.AppendLine("when e.ue_id is null and e.dre_id is null then 'SME'"); query.AppendLine("end as TipoEvento"); query.AppendLine("from evento e"); query.AppendLine("where excluido = false"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and ue_id is null and dre_id is null"); } if (mes > 0) { query.AppendLine("and extract(month from e.data_inicio) = @mes"); } query.AppendLine("group by id, dia, tipoevento"); query.AppendLine("union distinct"); query.AppendLine("select id, extract(day from e.data_fim) as dia, "); query.AppendLine("case"); query.AppendLine("when e.dre_id is not null then 'DRE'"); query.AppendLine("when e.ue_id is not null then 'UE'"); query.AppendLine("when e.ue_id is null and e.dre_id is null then 'SME'"); query.AppendLine("end as TipoEvento"); query.AppendLine("from evento e"); query.AppendLine("where excluido = false"); if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.DreId)) { query.AppendLine("and dre_id = @DreId"); } if (calendarioEventosMesesFiltro.IdTipoCalendario > 0) { query.AppendLine("and tipo_calendario_id = @IdTipoCalendario"); } if (!string.IsNullOrEmpty(calendarioEventosMesesFiltro.UeId)) { query.AppendLine("and ue_id = @UeId"); } if (calendarioEventosMesesFiltro.EhEventoSme) { query.AppendLine("and ue_id is null and dre_id is null"); } if (mes > 0) { query.AppendLine("and extract(month from e.data_fim) = @mes"); } query.AppendLine("group by id, dia, tipoevento) a"); query.AppendLine("order by a.dia"); return(await database.Conexao.QueryAsync <EventosPorDiaRetornoQueryDto>(query.ToString(), new { IdTipoCalendario = calendarioEventosMesesFiltro.IdTipoCalendario, DreId = calendarioEventosMesesFiltro.DreId, UeId = calendarioEventosMesesFiltro.UeId, mes })); }
public Task <IEnumerable <CalendarioEventosMesesDto> > ObterQuantidadeDeEventosPorMeses(CalendarioEventosFiltroDto calendarioEventosMesesFiltro) { return(repositorioEvento.ObterQuantidadeDeEventosPorMeses(calendarioEventosMesesFiltro)); }
public async Task <IEnumerable <CalendarioTipoEventoPorDiaDto> > ObterQuantidadeDeEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes) { var listaQuery = await repositorioEvento.ObterQuantidadeDeEventosPorDia(calendarioEventosMesesFiltro, mes); List <CalendarioTipoEventoPorDiaDto> listaRetorno = new List <CalendarioTipoEventoPorDiaDto>(); if (listaQuery.Any()) { var listaDiasEventos = listaQuery.GroupBy(a => a.Dia).ToList(); listaDiasEventos.ForEach(a => { var tipoEventos = a.Take(3).Select(b => b.TipoEvento).ToList(); listaRetorno.Add(new CalendarioTipoEventoPorDiaDto() { Dia = a.Key, TiposEvento = tipoEventos.ToArray(), QuantidadeDeEventos = a.Count() }); }); } return(listaRetorno); }
public Task <IEnumerable <CalendarioEventosNoDiaRetornoDto> > ObterEventosPorDia(CalendarioEventosFiltroDto calendarioEventosMesesFiltro, int mes, int dia) { return(repositorioEvento.ObterEventosPorDia(calendarioEventosMesesFiltro, mes, dia)); }