示例#1
0
        public VagaDto Add(VagaDto dtoVaga)
        {
            if (dtoVaga == null)
            {
                throw new Exception("Informe os dados da Vaga a ser adicionada.");
            }

            if (string.IsNullOrWhiteSpace(dtoVaga.Descricao))
            {
                throw new Exception("Não foi informado o nome da Vaga.");
            }

            VerificaNomeUnico(dtoVaga);

            if (!dtoVaga.ListaVagaTecnologia.Any())
            {
                throw new Exception("Não foi informado nenhuma Tecnologia para esta Vaga.");
            }

            Vaga novaVaga = new Vaga();

            novaVaga.Descricao = dtoVaga.Descricao;
            VincularTecnologia(dtoVaga, novaVaga);

            rhUow.Vaga.Add(novaVaga);
            rhUow.Commit();
            return((VagaDto)novaVaga);
        }
示例#2
0
        public List <CandidatoNotaDto> CalcularClassificacao(VagaDto dtoVaga)
        {
            if (dtoVaga == null)
            {
                throw new ServiceException("Informe os dados da Vaga a ser atualizada.");
            }

            if (dtoVaga.VagaId == 0)
            {
                throw new ServiceException("Informe o Identificador da Vaga.");
            }

            List <Entrevista>       listEntrevista = rhUow.Entrevista.GetAll(t => t.Candidato, t => t.ListaEntrevistaTecnologia).Where(t => t.VagaId == dtoVaga.VagaId).ToList();
            List <CandidatoNotaDto> listaCandidato = new List <CandidatoNotaDto>();

            foreach (var i in listEntrevista)
            {
                var candidatoAtual = (CandidatoNotaDto)i.Candidato;
                foreach (var entrevistaTecnologia in i.ListaEntrevistaTecnologia)
                {
                    var vagaTecnologia = rhUow.VagaTecnologia.GetById(entrevistaTecnologia.VagaTecnologiaId);
                    var vagaPesoAtual  = dtoVaga.ListaVagaTecnologia.FirstOrDefault(t => t.TecnologiaId == vagaTecnologia.TecnologiaId);

                    if (entrevistaTecnologia != null)
                    {
                        candidatoAtual.Total += vagaPesoAtual.Peso.Value;
                    }
                }
                listaCandidato.Add(candidatoAtual);
            }

            return(listaCandidato.OrderByDescending(t => t.Total).ToList());
        }
示例#3
0
        /// <summary>
        /// Método responsável por vincular as Tecnologias Informadas a Vaga a ser criada.
        /// </summary>
        /// <param name="dtoVaga">Dto da Vaga que está sendo criada.</param>
        /// <param name="novaVaga">Nova vaga criada para vinculá-la as tecnologias.</param>
        private void VincularTecnologia(VagaDto dtoVaga, Vaga novaVaga)
        {
            foreach (var vagaTecnologiaAtual in dtoVaga.ListaVagaTecnologia)
            {
                VagaTecnologia vagaTecnologia = new VagaTecnologia();
                vagaTecnologia.TecnologiaId = vagaTecnologiaAtual.TecnologiaId;

                novaVaga.ListaVagaTecnologia.Add(vagaTecnologia);
            }
        }
示例#4
0
        public VagaDto Get(int vagaId)
        {
            Vaga vaga = rhUow.Vaga.GetById(vagaId);

            vaga.ListaVagaTecnologia = rhUow.VagaTecnologia.GetAll().Where(t => t.VagaId == vagaId).ToList();
            vaga.ListaEntrevista     = rhUow.Entrevista.GetAll().Where(t => t.VagaId == vagaId).ToList();

            VagaDto dto = (VagaDto)vaga;

            return(dto);
        }
示例#5
0
        /// <summary>
        /// Método responsável por verificar se já existe uma Vaga cadastrada com esta Descrição.
        /// </summary>
        /// <param name="dtoVaga">Dados da vaga a ser verificado.</param>
        private void VerificaNomeUnico(VagaDto dtoVaga)
        {
            bool vagaDiferente = rhUow.Vaga.GetAll()
                                 .Any(t => t.Descricao == dtoVaga.Descricao &&
                                      t.VagaId != dtoVaga.VagaId);

            if (vagaDiferente)
            {
                throw new Exception("Já existe uma Vaga com esta Descrição. Favor digite um nome Diferente.");
            }
        }
示例#6
0
 public IActionResult Get(int id)
 {
     try
     {
         VagaDto dto = vagaService.Get(id);
         if (dto != null)
         {
             return(Ok(dto));
         }
         else
         {
             return(NotFound(id));
         }
     }
     catch (Exception ex)
     {
         _logger.LogCritical(ex, string.Format("Houve um erro ao buscar uma Vaga ID {0}.", id));
         return(StatusCode(500));
     }
 }
示例#7
0
        public IActionResult Put([FromBody] VagaDto dto)
        {
            try
            {
                VagaDto VagaAtualizada = vagaService.Update(dto);

                if (VagaAtualizada != null)
                {
                    return(Ok(VagaAtualizada));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, string.Format("Houve um erro ao atualizar uma Vaga {0}.", dto));
                return(StatusCode(500));
            }
        }
示例#8
0
        public IActionResult Post([FromBody] VagaDto dto)
        {
            try
            {
                VagaDto novaVaga = vagaService.Add(dto);

                if (novaVaga != null)
                {
                    return(Ok(novaVaga));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, string.Format("Houve um erro ao cadastrar uma Vaga {0}.", dto));
                return(StatusCode(500));
            }
        }
示例#9
0
        public IActionResult CalcularClassificacao([FromBody] VagaDto dto)
        {
            try
            {
                List <CandidatoNotaDto> lista = vagaService.CalcularClassificacao(dto);

                if (lista.Any())
                {
                    return(Ok(lista));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, string.Format("Houve um erro ao atualizar uma Vaga {0}.", dto));
                return(StatusCode(500));
            }
        }
示例#10
0
        public VagaDto Update(VagaDto dtoVagaAtualizar)
        {
            if (dtoVagaAtualizar == null)
            {
                throw new ServiceException("Informe os dados da Vaga a ser atualizada.");
            }

            if (dtoVagaAtualizar.VagaId == 0)
            {
                throw new ServiceException("Informe o Identificador da Vaga.");
            }

            if (string.IsNullOrWhiteSpace(dtoVagaAtualizar.Descricao))
            {
                throw new ServiceException("Informe o Nome da Vaga a ser atualizada.");
            }

            VerificaNomeUnico(dtoVagaAtualizar);

            Vaga vagaAtualizar = rhUow.Vaga.GetById(dtoVagaAtualizar.VagaId);

            VerificaVinculos(vagaAtualizar);

            List <VagaTecnologia> tecnologiasVaga = vagaAtualizar.ListaVagaTecnologia.ToList();

            foreach (var tec in tecnologiasVaga)
            {
                vagaAtualizar.ListaVagaTecnologia.Remove(tec);
            }


            vagaAtualizar.Descricao = dtoVagaAtualizar.Descricao;
            VincularTecnologia(dtoVagaAtualizar, vagaAtualizar);

            rhUow.Vaga.Update(vagaAtualizar);
            rhUow.Commit();
            return((VagaDto)vagaAtualizar);
        }