Esempio n. 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);
        }
        public async Task Registro_de_ferias_sem_saldo_de_ferias()
        {
            // Arrange
            var context     = InMemoryDBContext.Crie();
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(context);

            var contrato = new Contrato(
                new Colaborador(Guid.NewGuid(), NomePessoa.Crie("Codeizi", "Treinamento"), DateTime.Now.AddYears(-34)),
                DateTime.Now.AddYears(-1),
                1000);

            await contratoDAO.AddAsync(contrato);

            await context.SaveChangesAsync();

            var registroDeFeriasCadastrado = new OcorrenciaDeFerias(contrato, contrato.PeriodoAquisitivo, 30, 0);

            var feriasDAO = FabricGenericDAO <IOcorrenciaDeFeriasDao> .Crie(context);

            await feriasDAO.AddAsync(registroDeFeriasCadastrado);

            await context.SaveChangesAsync();

            var registroDeFerias = RegistrarOcorrenciaDeFeriasViewModelBuilder.CrieConsiderandoContrato(contrato);

            // Act
            var response = await Client.PostAsync("api/ocorrenciadeferias", registroDeFerias.ToJson());

            var resultado = await JsonToObject <Resposta> .Convert(response);

            // Assert
            Assert.False(resultado.Success);
            Assert.Equal(System.Net.HttpStatusCode.BadRequest, response.StatusCode);
            Assert.True(resultado.Errors.Any());
        }
        public async Task Selecionar_ocorrencia_de_um_contrato()
        {
            // Arrange
            var contexto    = new InMemoryDBContext().Crie();
            var colaborador = new ColaboradorBuilder().CrieColaboradorSucesso().Get;
            var contratoDAO = FabricGenericDAO <IContratoDao> .Crie(contexto);

            var colaboradorDAO = FabricGenericDAO <IColaboradorDAO> .Crie(contexto);

            var ocorrenciaDeFeriasDAO = FabricGenericDAO <IOcorrenciaDeFeriasDao> .Crie(contexto);

            var repository = new ColaboradorRepository(contratoDAO, colaboradorDAO);
            await repository.RealizeAdmissao(colaborador);

            var ferias = new OcorrenciaDeFerias(colaborador.Contratos.First(),
                                                colaborador.Contratos.First().DataInicio.AddYears(1),
                                                30,
                                                0);

            await ocorrenciaDeFeriasDAO.AddAsync(ferias);

            await contexto.SaveChangesAsync();

            var ocorrenciaFeriasRepository = new OcorrenciaDeFeriasRepository(ocorrenciaDeFeriasDAO);

            // act
            var result = await ocorrenciaFeriasRepository.ObtenhaOcorrenciasDoPeriodoAquisitivo(colaborador.Contratos.First().Id,
                                                                                                colaborador.Contratos.First().PeriodoAquisitivo);

            // Assert
            Assert.NotNull(result);
        }
 public static AgendamentoDeFeriasQueryEvent Crie(
     Colaborador colaborador,
     Guid idContrato,
     OcorrenciaDeFerias ocorrenciaDeFerias)
 => new AgendamentoDeFeriasQueryEvent(colaborador,
                                      idContrato,
                                      ocorrenciaDeFerias.DataDeInicio,
                                      ocorrenciaDeFerias.DiasDeFerias,
                                      ocorrenciaDeFerias.DiasDeAbono,
                                      ocorrenciaDeFerias.PeriodoArquisitivo,
                                      ocorrenciaDeFerias.FeriasParcelada);