public async Task <ResponseDto> SalvarNovoPeriodoDeFerias(NovoPeriodoDeFeriasRequestDto novoPeriodoDeFerias, DateTime dataUltimoPagamento) { var validacao = Validacoes.ValidarObjeto(new NovoPeriodoDeFeriasRequestDtoValidador().Validate(novoPeriodoDeFerias)); if (!validacao.objetoValido) { return new ResponseDto { Sucesso = false, Mensagem = validacao.erros } } ; if (novoPeriodoDeFerias.DataFim.Date > dataUltimoPagamento.AddDays(360).Date) { return(new ResponseDto { Sucesso = false, Mensagem = PeriodoDeFeriasMensagens.PERIODO_DE_FERIAS_FORA_DO_PERIODO_CORRENTE }); } var periodoDeFerias = new PeriodoDeFerias { ClientId = novoPeriodoDeFerias.ClienteId, DataInicio = novoPeriodoDeFerias.DataInicio, DataFim = novoPeriodoDeFerias.DataFim }; var periodosDeFeriasDoAno = (await _periodoDeFeriasRepositorio.Search(p => p.ClientId == novoPeriodoDeFerias.ClienteId)) .Where(p => p.DataInicio.Ticks >= dataUltimoPagamento.Ticks); if (periodosDeFeriasDoAno.Count() == 3) { return(new ResponseDto { Sucesso = false, Mensagem = PeriodoDeFeriasMensagens.QUANDTIDADE_MAXIMA_DE_PERIODOS_DE_FERIAS }); } if (NumeroDeDiasDeFeriasAposNovoPeriodo(periodosDeFeriasDoAno, periodoDeFerias) > 30) { return(new ResponseDto { Sucesso = false, Mensagem = PeriodoDeFeriasMensagens.QUANTIDADE_MAXIMA_DE_DIAS_DE_FERIAS }); } await _periodoDeFeriasRepositorio.Add(periodoDeFerias); return(new ResponseDto { Sucesso = true, Mensagem = PeriodoDeFeriasMensagens.PERIODO_DE_FERIAS_SALVO }); }
public async Task <IActionResult> InserirNovoPeriodoDeFerias(PeriodoDeFeriasModel periodoDeFeriasModel) { var periodoDeFeriasDTO = new NovoPeriodoDeFeriasRequestDto { ClienteId = periodoDeFeriasModel.ClienteId, DataInicio = periodoDeFeriasModel.DataInicioNovoPeriodo, DataFim = periodoDeFeriasModel.DataFimNovoPeriodo }; var dataUltimoPagamento = (await _clienteServico.BuscarClientePorId(periodoDeFeriasModel.ClienteId)) .UltimaAvaliacaoFisica; var diasDeFerias = (periodoDeFeriasModel.DataFimNovoPeriodo - periodoDeFeriasModel.DataInicioNovoPeriodo).Days; var resultado = await _periodoDeFeriasServico.SalvarNovoPeriodoDeFerias(periodoDeFeriasDTO, dataUltimoPagamento); if (resultado.Sucesso) { await _clienteServico.AtualizarDataVencimentoPagamento(periodoDeFeriasModel.ClienteId, diasDeFerias); } var informacoesPeriodoDeFerias = await _periodoDeFeriasServico.BuscarPeriodosDeFeriasDoAno(periodoDeFeriasModel.ClienteId); periodoDeFeriasModel.PeriodosDeFeriasAnteriores = new List <InformacoesPeriodoDeFeriasModel>(); foreach (var periodo in informacoesPeriodoDeFerias) { periodoDeFeriasModel.PeriodosDeFeriasAnteriores.Add(new InformacoesPeriodoDeFeriasModel { DataInicio = periodo.DataInicio, DataFim = periodo.DataFim }); } periodoDeFeriasModel.PeriodosDeFeriasAnteriores = periodoDeFeriasModel.PeriodosDeFeriasAnteriores.OrderBy(p => p.DataInicio).ToList(); periodoDeFeriasModel.Sucesso = resultado.Sucesso; periodoDeFeriasModel.Mensagens = MontarListaMensagens(resultado.Mensagem); return(PartialView("_periodoDeFerias", periodoDeFeriasModel)); }