Example #1
0
        public VinculadorDeFuncionarioNoCargoTestes()
        {
            _onboardingSIGDB1faker = OnboardingSIGDB1FakerBuilder.Novo().Build();
            _funcionarioId         = _onboardingSIGDB1faker.Id();
            _cargoId = _onboardingSIGDB1faker.Id();

            _onboardingSIGDB1faker = OnboardingSIGDB1FakerBuilder.Novo().Build();
            _cargoDoFuncionarioDto = new CargoDoFuncionarioDto()
            {
                FuncionarioId = _funcionarioId,
                CargoId       = _cargoId,
                DataDeVinculo = _onboardingSIGDB1faker.QualquerDataDoUltimoAno()
            };

            var empresa = EmpresaBuilder.Novo().ComId(_onboardingSIGDB1faker.Id()).Build();

            _funcionario = FuncionarioBuilder.Novo().ComId(_funcionarioId).ComEmpresa(empresa).Build();
            _cargo       = CargoBuilder.Novo().ComId(_cargoId).Build();

            _notificacaoDeDominioMock   = new Mock <IDomainNotificationHandler>();
            _funcionarioRepositorioMock = new Mock <IFuncionarioRepositorio>();
            _cargoRepositorioMock       = new Mock <ICargoRepositorio>();

            _vinculadorDeFuncionarioNoCargo = new VinculadorDeFuncionarioNoCargo(
                _notificacaoDeDominioMock.Object,
                _funcionarioRepositorioMock.Object,
                _cargoRepositorioMock.Object
                );
        }
        public async Task Vincular(CargoDoFuncionarioDto cargoDoFuncionarioDto)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(cargoDoFuncionarioDto.FuncionarioId);

            var cargo = await _cargoRepositorio.ObterPorIdAsync(cargoDoFuncionarioDto.CargoId);

            var cargoDoFuncionario = new CargoDoFuncionario(funcionario, cargo, cargoDoFuncionarioDto.DataDeVinculo);

            if (!cargoDoFuncionario.Validar())
            {
                await NotificarValidacoesDeDominioAsync(cargoDoFuncionario.ValidationResult);

                return;
            }

            await _funcionarioRepositorio.AdicionarCargoParaFuncionarioAsync(cargoDoFuncionario);
        }
        public async Task <IActionResult> Put(CargoDoFuncionarioDto cargoDoFuncionarioDto)
        {
            await _vinculadorDeFuncionarioNoCargo.Vincular(cargoDoFuncionarioDto);

            return(Ok());
        }