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)); }
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, })); }