public void Deve_Incluir_Calendario_Fundamental_E_Retornar_Acima_200_dias_letivos() { MontarCabecalho(); TipoCalendarioDto tipoCalendario = AdicionarTipoCalendario(ano); var jsonParaPost = new StringContent(JsonConvert.SerializeObject(tipoCalendario), Encoding.UTF8, "application/json"); var postResult = _fixture._clientApi.PostAsync("api/v1/calendarios/tipos", jsonParaPost).Result; Assert.True(postResult.IsSuccessStatusCode); if (postResult.IsSuccessStatusCode) { PeriodoEscolarListaDto periodoEscolar = AdicionarPerioEscolar(ano); var jsonParaPost2 = new StringContent(JsonConvert.SerializeObject(periodoEscolar), Encoding.UTF8, "application/json"); var postResult2 = _fixture._clientApi.PostAsync("api/v1/periodo-escolar", jsonParaPost2).Result; Assert.True(postResult2.IsSuccessStatusCode); var filtro = new FiltroDiasLetivosDTO() { TipoCalendarioId = 1 }; var filtroPeriodoEscolar = new StringContent(JsonConvert.SerializeObject(filtro), Encoding.UTF8, "application/json"); var diasLetivosResponse = _fixture._clientApi.PostAsync("api/v1/calendarios/dias-letivos", filtroPeriodoEscolar).Result; if (diasLetivosResponse.IsSuccessStatusCode) { var diasLetivos = JsonConvert.DeserializeObject <DiasLetivosDto>(diasLetivosResponse.Content.ReadAsStringAsync().Result); Assert.True(diasLetivos.Dias > 0); } } }
public DiasLetivosDto CalcularDiasLetivos(FiltroDiasLetivosDTO filtro) { //se for letivo em um fds que esteja no calendário somar bool estaAbaixo = false; //buscar os dados var periodoEscolar = repositorioPeriodoEscolar.ObterPorTipoCalendario(filtro.TipoCalendarioId); var diasLetivosCalendario = BuscarDiasLetivos(periodoEscolar); var eventos = repositorioEvento.ObterEventosPorTipoDeCalendarioDreUe(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, false, false); var tipoCalendario = repositorioTipoCalendario.ObterPorId(filtro.TipoCalendarioId); if (tipoCalendario == null) { throw new NegocioException("Tipo de calendario não encontrado"); } var anoLetivo = tipoCalendario.AnoLetivo; List <DateTime> diasEventosNaoLetivos = new List <DateTime>(); List <DateTime> diasEventosLetivos = new List <DateTime>(); //transforma em dias diasEventosNaoLetivos = ObterDias(eventos, diasEventosNaoLetivos, EventoLetivo.Nao); diasEventosLetivos = ObterDias(eventos, diasEventosLetivos, EventoLetivo.Sim); //adicionar os finais de semana letivos se houver //se não houver dia letivo em fds não precisa adicionar foreach (var dia in diasEventosLetivos.Where(x => !EhDiaUtil(x))) { if (periodoEscolar.Any(w => w.PeriodoInicio <= dia && dia <= w.PeriodoFim)) { diasLetivosCalendario.Add(dia); } } //retirar eventos não letivos que não estão no calendário diasEventosNaoLetivos = diasEventosNaoLetivos.Where(w => diasLetivosCalendario.Contains(w)).ToList(); //retirar eventos não letivos que não contenha letivo diasEventosNaoLetivos = diasEventosNaoLetivos.Where(w => !diasEventosLetivos.Contains(w)).ToList(); //subtrai os dias nao letivos var diasLetivos = diasLetivosCalendario.Distinct().Count() - diasEventosNaoLetivos.Distinct().Count(); //verificar se eh eja ou nao var diasLetivosPermitidos = Convert.ToInt32(tipoCalendario.Modalidade == ModalidadeTipoCalendario.EJA ? repositorioParametrosSistema.ObterValorPorTipoEAno(TipoParametroSistema.EjaDiasLetivos, anoLetivo) : repositorioParametrosSistema.ObterValorPorTipoEAno(TipoParametroSistema.FundamentalMedioDiasLetivos, anoLetivo)); estaAbaixo = diasLetivos < diasLetivosPermitidos; return(new DiasLetivosDto { Dias = diasLetivos, EstaAbaixoPermitido = estaAbaixo }); }
public async Task <IActionResult> CalcularDiasLetivos(FiltroDiasLetivosDTO filtro, [FromServices] IObterDiasLetivosPorCalendarioUseCase useCase) { return(Ok(await useCase.Executar(filtro))); }
public IActionResult CalcularDiasLetivos(FiltroDiasLetivosDTO filtro) { return(Ok(comandosDiasLetivos.CalcularDiasLetivos(filtro))); }
public async Task <DiasLetivosDto> Executar(FiltroDiasLetivosDTO param) { return(await mediator.Send(new ObterQuantidadeDiasLetivosPorCalendarioQuery(param.TipoCalendarioId, param.DreId, param.UeId))); }