public IActionResult Deletar([FromBody] T objeto, string parametroDeletar)
        {
            RetornoTratado <T> retorno = new RetornoTratado <T>();

            retorno = genericBusiness.DeletarValidar(objeto, retorno, parametroDeletar);

            if (retorno.Erro == true)
            {
                return(Unauthorized(retorno));
            }
            else
            {
                return(Ok(retorno));
            }
        }
        public IActionResult Inserir([FromBody] T objeto)
        {
            RetornoTratado <T> retorno = new RetornoTratado <T>();

            retorno = genericBusiness.InserirValidar(objeto, retorno);

            if (retorno.Erro == true)
            {
                return(Unauthorized(retorno));
            }
            else
            {
                return(Ok(retorno));
            }
        }
        public IActionResult ConsultarComParametro([FromBody] T objeto)
        {
            RetornoTratado <T> retorno = new RetornoTratado <T>();

            retorno.Objeto = genericBusiness.ConsultarComParametro(objeto, retorno);

            if (retorno.Erro == true)
            {
                return(Unauthorized(retorno));
            }
            else
            {
                return(Ok(retorno));
            }
        }
Example #4
0
        public IActionResult ConsultarReservaAluno([FromBody] AlunoModel objeto)
        {
            RetornoTratado <RetornoEmprestimoAluno> retorno = new RetornoTratado <RetornoEmprestimoAluno>();

            retorno.Objeto = alunoBusiness.ConsultarReservaAluno(objeto, retorno);

            if (retorno.Erro == true)
            {
                return(Unauthorized(retorno));
            }
            else
            {
                return(Ok(retorno));
            }
        }
Example #5
0
        public virtual List <T> ConsultarComParametroSemPerderConexao(T objeto, RetornoTratado <T> retorno, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            var resultSelect = new Dictionary <string, object>();

            var objetoPreenchido = new List <T>();

            try
            {
                IDbCommand comando = conexao.CreateCommand();
                comando.Transaction = transaction;

                var propriedades = ObterNomePropriedades(objeto);

                StringBuilder camposPesquisa = new StringBuilder();
                if (propriedades.Contains("NOMETABELA"))
                {
                    propriedades.Remove("NOMETABELA");
                }

                foreach (var item in propriedades)
                {
                    camposPesquisa = item == propriedades.Last() ? camposPesquisa.Append(item) : camposPesquisa.Append(item + ", ");
                }

                comando.CommandText =
                    $@" SELECT 
                                {camposPesquisa}
                            FROM {ObterNomeTabela(objeto)}
                            {ObterWhere(objeto)}
                            ";

                if (conexao.State == ConnectionState.Closed)
                {
                    conexao.Open();
                }
                var linhasRetornadas = comando.ExecuteReader();

                while (linhasRetornadas.Read())
                {
                    var stringJson = string.Empty;

                    foreach (var propriedade in propriedades)
                    {
                        if (!propriedade.Equals("NOMETABELA"))
                        {
                            resultSelect.Add(propriedade, linhasRetornadas[propriedade.ToUpper().ToString()]);
                        }
                    }

                    stringJson = JsonConvert.SerializeObject(resultSelect);

                    objetoPreenchido.Add(JsonConvert.DeserializeObject <T>(stringJson));

                    resultSelect.Clear();
                }
                linhasRetornadas.Close();
            }
            catch (Exception exception)
            {
                conexao.Close();

                retorno.Erro         = true;
                retorno.ErroLocal    = exception.StackTrace;
                retorno.MensagemErro = "Erro ao consultar no banco";
            }

            return(objetoPreenchido);
        }
Example #6
0
        public virtual RetornoTratado <T> AlterarSemPerderConexao(T objeto, RetornoTratado <T> retorno, string parametroAlterar, bool commitTransaction = true, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            try
            {
                IDbCommand comando = conexao.CreateCommand();
                comando.Transaction = transaction;

                var camposObjetoGenerico = ObterNomePropriedades(objeto);
                var camposPesquisa       = new StringBuilder();

                if (camposObjetoGenerico.Contains("NOMETABELA"))
                {
                    camposObjetoGenerico.Remove("NOMETABELA");
                }

                foreach (var item in camposObjetoGenerico)
                {
                    if (!item.ToUpper().Equals("ID" + ObterNomeTabela(objeto).ToUpper()))
                    {
                        camposPesquisa = item == camposObjetoGenerico.Last() ? camposPesquisa.Append(item) : camposPesquisa.Append(item + ", ");
                    }
                }

                var parametros         = ObterValoresObjeto(objeto);
                var parametrosPesquisa = new StringBuilder();
                foreach (var item in parametros)
                {
                    if (!item.ToUpper().Equals(parametros.First().ToUpper()))
                    {
                        parametrosPesquisa = item == parametros.Last() ? parametrosPesquisa.Append(item) : parametrosPesquisa.Append(item + ", ");
                    }
                }

                var variaveisMudanca = new StringBuilder();
                var valorClausula    = string.Empty;
                for (int i = 1; i < camposObjetoGenerico.Count(); i++)
                {
                    if (i == camposObjetoGenerico.Count() - 1)
                    {
                        variaveisMudanca.Append(camposObjetoGenerico[i] + "=" + parametros[i]);
                    }
                    else
                    {
                        variaveisMudanca.Append(camposObjetoGenerico[i] + "=" + parametros[i] + ", ");
                    }

                    if (valorClausula == string.Empty)
                    {
                        valorClausula = parametroAlterar.ToUpper() == camposObjetoGenerico[i - 1].ToUpper() ? parametros[i - 1] : "";
                    }
                }

                comando.CommandText =
                    $@" UPDATE {ObterNomeTabela(objeto)} 
                                  SET {variaveisMudanca}
                                WHERE {parametroAlterar} = {valorClausula}
                              ";


                var linhasRetornadas = comando.ExecuteNonQuery();

                if (linhasRetornadas < 0)
                {
                    transaction.Rollback();
                    retorno.Erro         = true;
                    retorno.MensagemErro = "Erro ao alterar no banco";
                }
                else
                {
                    if (commitTransaction)
                    {
                        transaction.Commit();
                    }
                }
            }
            catch (Exception exception)
            {
                transaction.Rollback();

                retorno.Erro         = true;
                retorno.ErroLocal    = exception.StackTrace;
                retorno.MensagemErro = "Erro ao alterar no banco";
            }

            return(retorno);
        }
Example #7
0
        public virtual List <T> Consultar(T objetoGenerico, RetornoTratado <T> retorno, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            var resultSelect = new Dictionary <string, object>();

            using (conexao = conexao == null ? new SqlConnection(configuration.GetValue <string>("SqlConnection")) : conexao)
            {
                var objetoPreenchido = new List <T>();

                try
                {
                    IDbCommand comando = conexao.CreateCommand();

                    var camposObjetoGenerico = ObterNomePropriedades(objetoGenerico);

                    StringBuilder camposPesquisa = new StringBuilder();
                    if (camposObjetoGenerico.Contains("NOMETABELA"))
                    {
                        camposObjetoGenerico.Remove("NOMETABELA");
                    }

                    foreach (var item in camposObjetoGenerico)
                    {
                        camposPesquisa = item == camposObjetoGenerico.Last() ? camposPesquisa.Append(item) : camposPesquisa.Append(item + ", ");
                    }

                    comando.CommandText =
                        $@" SELECT 
                                {camposPesquisa}
                            FROM {ObterNomeTabela(objetoGenerico)}
                            ";

                    if (conexao.State == ConnectionState.Closed)
                    {
                        conexao.Open();
                    }
                    var linhasRetornadas = comando.ExecuteReader();

                    while (linhasRetornadas.Read())
                    {
                        var stringJson = string.Empty;
                        foreach (var objeto in camposObjetoGenerico)
                        {
                            resultSelect.Add(objeto, linhasRetornadas[objeto.ToUpper().ToString()]);
                        }
                        stringJson = JsonConvert.SerializeObject(resultSelect);

                        objetoPreenchido.Add(JsonConvert.DeserializeObject <T>(stringJson));

                        resultSelect.Clear();
                    }
                    linhasRetornadas.Close();

                    conexao.Close();
                }
                catch (Exception exception)
                {
                    conexao.Close();

                    retorno.Erro         = true;
                    retorno.ErroLocal    = exception.StackTrace;
                    retorno.MensagemErro = "Erro ao consultar no banco";
                }
                finally
                {
                    if (conexao.State == ConnectionState.Open)
                    {
                        conexao.Close();
                    }
                }
                return(objetoPreenchido);
            }
        }
Example #8
0
        public virtual RetornoTratado <T> Inserir(T objeto, RetornoTratado <T> retorno, bool commitTransaction = true, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            using (conexao = conexao == null ? new SqlConnection(configuration.GetValue <string>("SqlConnection")) : conexao)
            {
                if (conexao.State == ConnectionState.Closed)
                {
                    conexao.Open();
                }
                using (transaction = transaction == null ? conexao.BeginTransaction() : transaction)
                {
                    try
                    {
                        IDbCommand comando = conexao.CreateCommand();
                        comando.Transaction = transaction;

                        var camposObjetoGenerico = ObterNomePropriedades(objeto);
                        var camposPesquisa       = new StringBuilder();

                        if (camposObjetoGenerico.Contains("NOMETABELA"))
                        {
                            camposObjetoGenerico.Remove("NOMETABELA");
                        }

                        foreach (var item in camposObjetoGenerico)
                        {
                            if (!item.ToUpper().Equals("ID" + ObterNomeTabela(objeto).ToUpper()))
                            {
                                camposPesquisa = item == camposObjetoGenerico.Last() ? camposPesquisa.Append(item) : camposPesquisa.Append(item + ", ");
                            }
                        }

                        var parametros         = ObterValoresObjeto(objeto);
                        var parametrosPesquisa = new StringBuilder();

                        parametros.Remove("'" + ObterNomeTabela(objeto) + "'");
                        foreach (var item in parametros)
                        {
                            if (!item.ToUpper().Equals(parametros.First().ToUpper()))
                            {
                                parametrosPesquisa = item == parametros.Last() ? parametrosPesquisa.Append(item) : parametrosPesquisa.Append(item + ", ");
                            }
                        }

                        comando.CommandText =
                            $@" INSERT INTO 
                                {ObterNomeTabela(objeto)}  ({camposPesquisa})
                                VALUES ({parametrosPesquisa})";

                        var linhasRetornadas = comando.ExecuteNonQuery();

                        if (linhasRetornadas < 0)
                        {
                            transaction.Rollback();
                            retorno.Erro         = true;
                            retorno.MensagemErro = "Erro ao inserir no banco";
                        }
                        else
                        {
                            if (commitTransaction)
                            {
                                transaction.Commit();
                            }
                        }
                        conexao.Close();
                    }
                    catch (Exception exception)
                    {
                        transaction.Rollback();

                        retorno.Erro         = true;
                        retorno.ErroLocal    = exception.StackTrace;
                        retorno.MensagemErro = "Erro ao inserir no banco";
                    }
                    finally
                    {
                        if (conexao.State == ConnectionState.Open)
                        {
                            conexao.Close();
                        }
                    }
                }
            }
            return(retorno);
        }
Example #9
0
        public virtual RetornoTratado <T> Deletar(T objeto, RetornoTratado <T> retorno, string parametroDeletar, bool commitTransaction = true, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            using (conexao = conexao == null ? new SqlConnection(configuration.GetValue <string>("SqlConnection")) : conexao)
            {
                if (conexao.State == ConnectionState.Closed)
                {
                    conexao.Open();
                }
                using (transaction = transaction == null ? conexao.BeginTransaction() : transaction)
                {
                    try
                    {
                        IDbCommand comando = conexao.CreateCommand();
                        comando.Transaction = transaction;

                        var valorClausula  = string.Empty;
                        var camposeValores = ObterCampoValoresObjeto(objeto);

                        foreach (var item in camposeValores)
                        {
                            if (parametroDeletar.ToUpper().Equals(item.Key.ToUpper()))
                            {
                                if (item.Value is int)
                                {
                                    valorClausula = item.Value.ToString();
                                }
                                else if (item.Value is string)
                                {
                                    valorClausula = "'" + item.Value.ToString() + "'";
                                }
                            }
                        }

                        comando.CommandText =
                            $@" DELETE FROM
                                {ObterNomeTabela(objeto)} 
                                WHERE {parametroDeletar} = {valorClausula}";

                        var linhasRetornadas = comando.ExecuteNonQuery();

                        if (linhasRetornadas < 0)
                        {
                            transaction.Rollback();
                            retorno.Erro         = true;
                            retorno.MensagemErro = "Erro ao deletar aluno no banco";
                        }
                        else
                        {
                            if (commitTransaction)
                            {
                                transaction.Commit();
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        transaction.Rollback();
                        conexao.Close();

                        retorno.Erro         = true;
                        retorno.ErroLocal    = exception.StackTrace;
                        retorno.MensagemErro = "Erro ao deletar Aluno no banco";
                    }
                    finally
                    {
                        if (conexao.State == ConnectionState.Open)
                        {
                            conexao.Close();
                        }
                    }
                }
            }
            return(retorno);
        }
Example #10
0
        public List <RetornoEmprestimoAluno> ConsultarEmprestimosAluno(AlunoModel objeto, RetornoTratado <RetornoEmprestimoAluno> retorno)
        {
            var retornoEmprestimoAlunosLista = new List <RetornoEmprestimoAluno>();
            var retornoEmprestimoAlunos      = new RetornoEmprestimoAluno();

            using (var conexao = new SqlConnection(configuration.GetValue <string>("SqlConnection")))
            {
                try
                {
                    IDbCommand comando = conexao.CreateCommand();

                    var camposObjetoGenerico = ObterNomePropriedades(objeto);

                    StringBuilder camposPesquisa = new StringBuilder();
                    if (camposObjetoGenerico.Contains("NOMETABELA"))
                    {
                        camposObjetoGenerico.Remove("NOMETABELA");
                    }

                    foreach (var item in camposObjetoGenerico)
                    {
                        camposPesquisa = item == camposObjetoGenerico.Last() ? camposPesquisa.Append(item) : camposPesquisa.Append(item + ", ");
                    }

                    comando.CommandText =
                        $@"SELECT 
                                LIVRO.NOME AS NOME_LIVRO, ALUNO.NOME AS NOME_ALUNO, DATADEVOLUCAO, DATAFIM
                            FROM ALUNO AS ALUNO
                            INNER JOIN EMPRESTIMO AS EMPRESTIMO
                                ON ALUNO.IDALUNO = EMPRESTIMO.IDALUNO
                            INNER JOIN EMPRESTIMOLIVRO AS EMPRESTIMOLIVRO
                                ON EMPRESTIMOLIVRO.IDEMPRESTIMO = EMPRESTIMO.IDEMPRESTIMO
                            INNER JOIN LIVRO AS LIVRO
                                ON LIVRO.IDLIVRO = EMPRESTIMOLIVRO.IDLIVRO
                            ";

                    if (conexao.State == ConnectionState.Closed)
                    {
                        conexao.Open();
                    }
                    var linhasRetornadas = comando.ExecuteReader();



                    while (linhasRetornadas.Read())
                    {
                        retornoEmprestimoAlunos.NomeAluno     = linhasRetornadas["NOME_ALUNO"].ToString();
                        retornoEmprestimoAlunos.NomeLivro     = linhasRetornadas["NOME_LIVRO"].ToString();
                        retornoEmprestimoAlunos.DataDevolucao = linhasRetornadas["DATADEVOLUCAO"].ToString();
                        retornoEmprestimoAlunos.DataFim       = linhasRetornadas["DATAFIM"].ToString();

                        retornoEmprestimoAlunosLista.Add(retornoEmprestimoAlunos);
                    }

                    linhasRetornadas.Close();

                    conexao.Close();
                }
                catch (Exception exception)
                {
                    conexao.Close();

                    retorno.Erro         = true;
                    retorno.ErroLocal    = exception.StackTrace;
                    retorno.MensagemErro = "Erro ao consultar no banco";
                }
                finally
                {
                    if (conexao.State == ConnectionState.Open)
                    {
                        conexao.Close();
                    }
                }
                return(retornoEmprestimoAlunosLista);
            }
        }
        public override RetornoTratado <EmprestimoModel> Inserir(EmprestimoModel objeto, RetornoTratado <EmprestimoModel> retorno, bool commitTransaction = false, IDbConnection conexao = null, IDbTransaction transaction = null)
        {
            using (conexao = new SqlConnection(config.GetValue <string>("SqlConnection")))
            {
                conexao.Open();
                using (transaction = conexao.BeginTransaction())
                {
                    try
                    {
                        var comando = conexao.CreateCommand();
                        comando.Transaction = transaction;

                        var alunoBusca = alunoRepository.ConsultarComParametroSemPerderConexao(objeto.Aluno, new RetornoTratado <AlunoModel>(), conexao, transaction);
                        if (alunoBusca == null || alunoBusca.Count == 0)
                        {
                            retorno.Erro         = true;
                            retorno.MensagemErro = "Aluno não encontrado na base";
                            return(retorno);
                        }
                        if (alunoBusca.Count > 1)
                        {
                            retorno.Erro         = true;
                            retorno.MensagemErro = "Mais de um aluno encontrado, informar outro parametro de busca";
                            return(retorno);
                        }

                        comando.CommandText =
                            $@" INSERT INTO 
                                {ObterNomeTabela(objeto)} 
                                    (DATAINICIO, DATAFIM, DATADEVOLUCAO, IDALUNO)
                                VALUES                    
                                    ('{objeto.DataInicio.ToString("dd/MM/yyy")}', '{objeto.DataFim.ToString("dd/MM/yyy")}', '{objeto.DataDevolucao.ToString("dd/MM/yyy")}', {alunoBusca[0].IdAluno});
                                 ";

                        var linhasRetornadas = comando.ExecuteNonQuery();

                        if (linhasRetornadas < 0)
                        {
                            transaction.Rollback();
                            retorno.Erro         = true;
                            retorno.MensagemErro = "Erro ao inserir no banco";
                            return(retorno);
                        }

                        comando.CommandText = "SELECT SCOPE_IDENTITY() AS IDEMPRESTIMO";

                        var emprestimoInserido = comando.ExecuteReader();
                        var idEmprestimo       = 0;
                        while (emprestimoInserido.Read())
                        {
                            idEmprestimo = (int)emprestimoInserido.GetDecimal(0);
                        }
                        emprestimoInserido.Close();

                        foreach (var livro in objeto.Livros)
                        {
                            var livroBusca = livroRepository.ConsultarComParametroSemPerderConexao(livro, new RetornoTratado <LivroModel>(), conexao, transaction);
                            if (livroBusca == null)
                            {
                                transaction.Rollback();
                                retorno.Erro         = true;
                                retorno.MensagemErro = "Livro não encontrado na base";
                                return(retorno);
                            }
                            if (livroBusca.Count > 1)
                            {
                                transaction.Rollback();
                                retorno.Erro         = true;
                                retorno.MensagemErro = "Mais de um livro encontrado, informar outro parametro de busca";
                                return(retorno);
                            }
                            if (livroBusca[0].Quantidade == 0)
                            {
                                transaction.Rollback();
                                retorno.Erro         = true;
                                retorno.MensagemErro = "Livro não disponível para empréstimo, solicitar reserva";
                                return(retorno);
                            }

                            comando.CommandText =
                                $@"
                                INSERT INTO 
                                    EMPRESTIMOLIVRO
                                           (IDLIVRO, IDEMPRESTIMO)
                                VALUES
                                           ({livroBusca[0].IdLivro},{idEmprestimo})
                              ";
                            linhasRetornadas = comando.ExecuteNonQuery();

                            if (linhasRetornadas < 0)
                            {
                                retorno.Erro          = true;
                                retorno.MensagemErro += $"Houve um problema ao fazer empréstimo do livro {livroBusca[0].Nome}. ";
                            }
                            else
                            {
                                livroBusca[0].Quantidade -= 1;
                                livroRepository.AlterarSemPerderConexao(livroBusca[0], new RetornoTratado <LivroModel>(), "IdLivro", false, conexao, transaction);

                                transaction.Commit();
                            }
                        }

                        conexao.Close();
                    }
                    catch (Exception exception)
                    {
                        transaction.Rollback();

                        retorno.Erro         = true;
                        retorno.ErroLocal    = exception.StackTrace;
                        retorno.MensagemErro = "Erro ao inserir no banco";
                    }
                    finally
                    {
                        if (conexao.State == ConnectionState.Open)
                        {
                            conexao.Close();
                        }
                    }
                }
            }
            return(retorno);
        }
 public override List <EmprestimoModel> ConsultarComParametro(EmprestimoModel objeto, RetornoTratado <EmprestimoModel> retorno, IDbConnection conexao = null, IDbTransaction transaction = null)
 {
     return(base.ConsultarComParametro(objeto, retorno, conexao, transaction));
 }
Example #13
0
        public List <RetornoEmprestimoAluno> ConsultarReservaAluno(AlunoModel objeto, RetornoTratado <RetornoEmprestimoAluno> retorno)
        {
            var retornos = alunoRepository.ConsultarReservaAluno(objeto, retorno);

            return(retornos);
        }