public IActionResult GetConviteByVagaId(long vagaId, long usuarioId)
        {
            Usuario usuario = _usuarioRepository.GetById(usuarioId);

            // Caso não encontre
            if (usuario == null)
            {
                return(StatusCode(404, "Usuário não encontrado"));
            }

            // Busca usuarioCandidato por UsuarioId
            var UsuarioCandidato = _usuarioCandidatoAlunoRepository.GetByUsuarioId(usuario.Id);

            // Caso não encontre
            if (UsuarioCandidato == null)
            {
                return(StatusCode(404, "Este usuário não é um candidato para receber convites."));
            }

            // Busca vaga por Id
            Vaga vaga = _vagaRepository.GetById(vagaId);

            // Caso não encontre
            if (vaga == null)
            {
                return(StatusCode(404, "Vaga não encontrada"));
            }

            // Busca usuarioEmpresa por usuarioEmpresaId
            var usuarioEmpresa = _usuarioEmpresaRepository.GetById(vaga.UsuarioEmpresaId);

            // Caso não encontre
            if (usuarioEmpresa == null)
            {
                return(StatusCode(404, "Este usuário não tem um perfil de empresa."));
            }

            // Busca empresa por Id e retorna apenas o nome da mesma
            var NomeEmpresa = _empresaRepository.GetById(usuarioEmpresa.EmpresaId).Nome;

            // Busca convite por vagaId e UsuarioId
            ConviteEntrevista convite = _conviteEntrevistaRepository.GetConviteEntrevistasByVagaIdAndCandidatoId(vagaId, UsuarioCandidato.Id);

            // Caso não encontre
            if (convite == null)
            {
                return(StatusCode(404, "Convite não encontrado"));
            }

            //Busca endereço da vaga
            Endereco endereco = _enderecoRepository.GetById(convite.EnderecoId);

            //Busca município da vaga
            Municipio municipio = _enderecoRepository.GetMunicipioById(endereco.MunicipioId);

            //Busca UfSigla da vaga
            UfSigla ufSigla = _enderecoRepository.GetUfSiglaById(municipio.UfSiglaId);

            // Cria o ViewModel de convite entrevista "diferente"
            ConviteEntrevistaViewModel conviteEntrevistaViewModel = null;

            try
            {
                conviteEntrevistaViewModel = new ConviteEntrevistaViewModel(convite.Id, NomeEmpresa, convite.DataHoraEntrevista, endereco.Logradouro, endereco.Bairro, endereco.Numero, municipio.Descricao, ufSigla.UFSigla, convite.InfosComplementares);
            }
            catch (Exception)
            {
                return(StatusCode(500, "Houve um erro interno ao criar um novo endereco"));
            }

            return(StatusCode(200, conviteEntrevistaViewModel));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> ImportUfs([FromForm] ExcelGenericInput file)
        {
            // Adquire o arquivo para leitura
            IWorkbook excel = WorkbookFactory.Create(file.Arq.OpenReadStream());

            // Procura em qual planilha esta a tabela que desejamos
            ISheet TabelaUfs = excel.GetSheet("Planilha1");

            // Caso não encontrar a planilha
            if (TabelaUfs == null)
            {
                throw new Exception("A planilha [Planilha1] não foi encontrada");
            }

            // Pega o index da primeira linha (Titulos) dessa tabela
            int primeiraLinhaIndexTitulos = TabelaUfs.FirstRowNum;

            // Pega o index da seguna linha (1° Registro) dessa tabela
            int segundaLinhaIndex = (TabelaUfs.FirstRowNum + 1);

            // Pega o index da ultima linha (Ultimo Registro) dessa tabela
            int ultimaLinhaIndex = TabelaUfs.LastRowNum;

            // Declara as celulas que existem na tabela
            ICell estadoCell = null;
            ICell ufCell     = null;

            // Declara uma lista de ufsSiglas para adiciona-las de uma vez no final da leitura do Excel
            List <UfSigla> ufsSiglas = new List <UfSigla>();

            // Adquire a primeira linha da tabela, que seria referente aos Titulos das colunas
            IRow linhasTitulos = TabelaUfs.GetRow(primeiraLinhaIndexTitulos);

            // Faz um foreach para dar valor aos "ICell's"
            foreach (ICell cell in linhasTitulos.Cells)
            {
                switch (cell.StringCellValue)
                {
                case "ESTADO":
                    estadoCell = cell;
                    break;

                case "UF":
                    ufCell = cell;
                    break;

                default:
                    break;
                }
            }

            // Declara os tipos de dados que existem na tabela
            string Estado = "";
            string Uf     = "";

            // Faz um for para iterar sobre TODAS as linhas da tabela a partir da segunda linha (pois a primeira linha é referente aos títulos das colunas)
            for (int rowNum = segundaLinhaIndex; rowNum <= ultimaLinhaIndex; rowNum++)
            {
                //Recupera a linha atual
                IRow linha = TabelaUfs.GetRow(rowNum);

                // ForEach para procurar em cada célula (Ex. Batalha Naval) para entregar o valor das células às variaveis declaradas antes do for (string's Estado e Uf)
                foreach (ICell cell in linha.Cells)
                {
                    if (cell.ColumnIndex == estadoCell.ColumnIndex)
                    {
                        Estado = cell.StringCellValue;
                    }

                    if (cell.ColumnIndex == ufCell.ColumnIndex)
                    {
                        Uf = cell.StringCellValue;
                    }
                }

                // Busca no BD se existe aquela UfSigla no banco, para não adicionar UfSigla's repetidos
                var ufSiglaDb = _enderecoRepository.GetUfSiglaBySigla(Uf);

                // Caso não encontre UfSigla no BD, cria um novo e adiciona-a na lista de UfsSiglas
                if (ufSiglaDb == null)
                {
                    try
                    {
                        ufSiglaDb = new UfSigla(Estado, Uf);

                        ufsSiglas.Add(ufSiglaDb);
                    }
                    catch (Exception)
                    {
                        StatusCode(500, "Houve um erro na criação do objeto UfSigla.");
                    }
                }
            }

            // Quando termina de ler o Excel, cria todas as UfsSiglas de uma vez
            var UfsNovosDb = _enderecoRepository.CreateRangeUfSigla(ufsSiglas);

            // Salva alterações no BD
            await _enderecoRepository.UnitOfWork.SaveDbChanges();

            // Retorna novas Ufs criadas
            return(StatusCode(200, new
            {
                UfSiglasNovosCriados = UfsNovosDb,
            }));
        }