예제 #1
0
        public async Task Armazenar(FuncionarioDto dto)
        {
            await ValidarFuncionarioComMesmoNome(dto);

            if (!NotificacaoDeDominio.HasNotifications())
            {
                var funcionario = new Funcionario(dto.Nome, dto.Cpf);
                if (dto.Id > 0)
                {
                    funcionario = await _funcionarioRepositorio.ObterPorIdAsync(dto.Id);

                    funcionario.AlterarNome(dto.Nome);
                    funcionario.AlterarCpf(dto.Cpf);
                }

                funcionario.AlterarDataContratacao(dto.DataContratacao);

                if (funcionario.Validar() && funcionario.Id == 0)
                {
                    await _funcionarioRepositorio.AdicionarAsync(funcionario);
                }
                else
                {
                    await NotificarValidacoesDeDominio(funcionario.ValidationResult);
                }
            }
        }
예제 #2
0
        public async Task <IActionResult> Get(int id)
        {
            try
            {
                var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(id);

                return(Ok(FuncionarioDto.ConvertEntityToDto(funcionario)));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Problema ao recuperar o funcionário informado"));
            }
        }
        public async Task Vincular(int funcionarioId, int empresaId)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(funcionarioId);

            if (funcionario == null)
            {
                await NotificacaoDeDominio.HandleNotificacaoDeServicoAsync(FuncionarioResources.FuncionarioNaoExiste);

                return;
            }

            if (!funcionario.ValidarOVinculoComEmpresa())
            {
                await NotificarValidacoesDeDominioAsync(funcionario.ValidationResult);

                return;
            }

            var empresa = await _empresaRepositorio.ObterPorIdAsync(empresaId);

            if (empresa == null)
            {
                await NotificacaoDeDominio.HandleNotificacaoDeServicoAsync(EmpresaResources.EmpresaNaoExiste);

                return;
            }

            funcionario.VincularComEmpresa(empresa);
        }
예제 #4
0
        public async Task ValidarAsync(int funcionarioId)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(funcionarioId);

            if (funcionario == null)
            {
                await NotificacaoDeDominio.HandleNotificacaoDeServicoAsync(FuncionarioResources.FuncionarioNaoExiste);
            }
        }
        public async Task <IActionResult> Get(int id)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(id);

            if (funcionario == null)
            {
                return(Ok());
            }

            return(Ok(funcionario.MapTo <FuncionarioDto>()));
        }
예제 #6
0
        public async Task ExcluirAsync(int funcionarioId)
        {
            await _validadorDeExclusaoDeFuncionario.ValidarAsync(funcionarioId);

            if (NotificacaoDeDominio.HasNotifications)
            {
                return;
            }

            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(funcionarioId);

            _funcionarioRepositorio.Remover(funcionario);
        }
예제 #7
0
        public async Task Excluir(int id)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(id);

            if (await VerificarFuncionarioInvalido(funcionario))
            {
                return;
            }

            if (!NotificacaoDeDominio.HasNotifications())
            {
                _funcionarioRepositorio.Remover(funcionario);
            }
        }
        public async Task <Funcionario> EditarAsync(FuncionarioDto funcionarioDto)
        {
            var funcionario = await _funcionarioRepositorio.ObterPorIdAsync(funcionarioDto.Id);

            if (funcionario == null)
            {
                await NotificacaoDeDominio.HandleNotificacaoDeServicoAsync(FuncionarioResources.FuncionarioNaoExiste);
            }

            funcionario?.AlterarNome(funcionarioDto.Nome);
            funcionario?.AlterarCpf(funcionarioDto.Cpf);
            funcionario?.AlterarDataDeContratacao(funcionarioDto.DataDeContratacao);

            return(funcionario);
        }
        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);
        }