Example #1
0
        public async Task <bool> Handle(RegistrarOcorrenciaDeFeriasCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                return(false);
            }

            var colaborador = await _colaboradorRepository.BusqueColaborador(request.IdColaborador);

            var contrato = colaborador.Contratos.FirstOrDefault(x => x.Id == request.IdContrato);

            if (contrato == null)
            {
                contrato = await _colaboradorRepository.ObtenhaContrato(request.IdContrato);
            }

            var ocorrenciaDeFerias = new OcorrenciaDeFerias(contrato, request.DataDeInicio, request.DiasDeFerias, request.DiasDeAbono);

            await _ocorrenciaDeDeriasRepository.RegistrarOcorrenciaDeFeriasCommand(ocorrenciaDeFerias);

            if (Commit())
            {
                await Bus.RaiseEvent(AgendamentoDeFeriasQueryEvent.Crie(colaborador, request.IdContrato, ocorrenciaDeFerias));

                return(true);
            }

            return(false);
        }