Esempio n. 1
0
        /// <summary>
        /// Edita uma entidade existente no banco de dados
        /// </summary>
        /// <param name="BaseRequisicaoDto"></param>
        /// <param name="retornoDto"></param>
        public virtual bool Editar(RequisicaoEntidadeDto <Y> requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                Guid idEntidade = (requisicaoDto.EntidadeDto == null) ? Guid.Empty : requisicaoDto.EntidadeDto.Id;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseEditar, idEntidade, mensagemErro);
                return(false);
            }

            if (requisicaoDto.EntidadeDto == null)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Não é possível editar uma entidade nula.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseEditar, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            if (!requisicaoDto.EntidadeDto.ValidarEntidade(ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseEditar, requisicaoDto.EntidadeDto.Id, mensagemErro);
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Obtém uma lista de entidades do banco de dados
        /// </summary>
        /// <param name="BaseRequisicaoDto"></param>
        /// <param name="retornoDto"></param>
        public virtual bool ObterListaFiltrada(RequisicaoObterListaDto requisicaoDto, ref RetornoObterListaDto <Y> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseObterListaFiltrada, Guid.Empty, mensagemErro);
                return(false);
            }

            // Caso não mande uma página válida, usar a página 1
            if (requisicaoDto.Pagina <= 0)
            {
                requisicaoDto.Pagina = 1;
            }

            // Valida o número de itens por página
            if (requisicaoDto.NumeroItensPorPagina <= 0)
            {
                requisicaoDto.NumeroItensPorPagina = 20;
            }

            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Restaura o banco de dados a partir do backup
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool RestaurarBackup(RequisicaoArquivoDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, mensagemErro);
                return(false);
            }

            try
            {
                PizzaByteContexto context = new PizzaByteContexto();
                Byte[]            bytes   = Convert.FromBase64String(requisicaoDto.ArquivoBase64);

                string comandosSql = Encoding.UTF8.GetString(bytes);

                string backupDescriptografado = "";
                if (!UtilitarioBll.DescriptografarString(comandosSql, ref backupDescriptografado))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao criptografar o backup";
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }

                using (SqlConnection conn = new SqlConnection(context.Database.Connection.ConnectionString))
                {
                    Server server = new Server(new ServerConnection(conn));
                    if (server.ConnectionContext.ExecuteNonQuery(backupDescriptografado) < 0)
                    {
                        retornoDto.Mensagem = "Falha ao restaurar o backup: ";

                        retornoDto.Retorno = false;
                        logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                        return(false);
                    }
                }
                retornoDto.Retorno = true;
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Mensagem = "Falha ao restaurar o backup: " + ex.Message;

                retornoDto.Retorno = false;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.RestaurarBackup, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Exclui uma entidade do banco de dados
        /// </summary>
        /// <param name="BaseRequisicaoDto"></param>
        /// <param name="retornoDto"></param>
        public virtual bool Excluir(RequisicaoObterDto requisicaoDto, ref RetornoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseExcluir, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            // Exclui do banco de dados
            if (!ExcluirBd(requisicaoDto.Id, ref mensagemErro))
            {
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseExcluir, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            return(true);
        }
Esempio n. 5
0
        /// <summary>
        /// Obtém uma entidade do banco de dados
        /// </summary>
        /// <param name="BaseRequisicaoDto"></param>
        /// <param name="retornoDto"></param>
        public virtual bool Obter(RequisicaoObterDto requisicaoDto, ref RetornoObterDto <Y> retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseObter, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            if (requisicaoDto.Id == Guid.Empty)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "O id é obrigatório para obter uma entidade.";
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseObter, requisicaoDto.Id, mensagemErro);
                return(false);
            }

            return(true);
        }
Esempio n. 6
0
        /// <summary>
        /// Exclui um suporte do banco de dados a partir do ID
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Excluir(RequisicaoObterDto requisicaoDto, ref RetornoDto retornoDto)
        {
            if (!base.Excluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            string mensagemErro = "";

            if (!UtilitarioBll.ValidarUsuarioAdm(requisicaoDto.Identificacao, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Este usuário não é administrador. Para excluir mensagens de suporte é necessário " +
                                      $"logar com um usuário administrador. {mensagemErro}";

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirSuporte, requisicaoDto.Id, retornoDto.Mensagem);
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.ExcluirSuporte, requisicaoDto.Id, retornoDto.Mensagem);
                    return(false);
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Esempio n. 7
0
        /// <summary>
        /// Inclui um suporte no banco de dados
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public override bool Incluir(RequisicaoEntidadeDto <SuporteDto> requisicaoDto, ref RetornoDto retornoDto)
        {
            // Valida a requisição
            if (!base.Incluir(requisicaoDto, ref retornoDto))
            {
                return(false);
            }

            SuporteVo suporteVo    = new SuporteVo();
            string    mensagemErro = "";

            // Converte para VO a ser incluída no banco de dados
            if (!ConverterDtoParaVo(requisicaoDto.EntidadeDto, ref suporteVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao converter o suporte para VO: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            // Prepara a inclusão no banco de dados
            if (!IncluirBd(suporteVo, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Falha ao converter o suporte para VO: " + mensagemErro;

                logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }

            if (salvar)
            {
                // Salva as alterações
                if (!pizzaByteContexto.Salvar(ref mensagemErro))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = mensagemErro;

                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }
            }

            // Se for mensagem do usuário, enviar alerta por email
            if (suporteVo.Tipo == TipoMensagemSuporte.Usuario)
            {
                string corpoEmail = $"<p> Há uma nova mensagem de suporte!</p>" +
                                    $"<p> Mensagem incluída as {suporteVo.DataInclusao}:</p>" +
                                    $"<p><strong>{suporteVo.Mensagem}</strong></p><br/>" +
                                    "<p> Entre com a senha de suporte para responder à solicitação.</p>";

                if (!UtilitarioBll.EnviarEmail("*****@*****.**", "Nova mensagem de suporte", corpoEmail, ref mensagemErro))
                {
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, suporteVo.Id, $"Problemas para enviar a mensagem por email: {mensagemErro}");
                }

                if (!UtilitarioBll.EnviarEmail("*****@*****.**", "Nova mensagem de suporte", corpoEmail, ref mensagemErro))
                {
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, suporteVo.Id, $"Problemas para enviar a mensagem por email: {mensagemErro}");
                }

                if (!UtilitarioBll.EnviarEmail("*****@*****.**", "Nova mensagem de suporte", corpoEmail, ref mensagemErro))
                {
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, suporteVo.Id, $"Problemas para enviar a mensagem por email: {mensagemErro}");
                }

                if (!UtilitarioBll.EnviarEmail("*****@*****.**", "Nova mensagem de suporte", corpoEmail, ref mensagemErro))
                {
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.IncluirSuporte, suporteVo.Id, $"Problemas para enviar a mensagem por email: {mensagemErro}");
                }
            }

            retornoDto.Retorno  = true;
            retornoDto.Mensagem = "OK";
            return(true);
        }
Esempio n. 8
0
        /// <summary>
        /// Executa o backup do sistema e retorna um arquivo .sql
        /// </summary>
        /// <param name="requisicaoDto"></param>
        /// <param name="retornoDto"></param>
        /// <returns></returns>
        public bool FazerBackupSistema(BaseRequisicaoDto requisicaoDto, ref RetornoObterArquivoDto retornoDto)
        {
            string mensagemErro = "";

            if (!UtilitarioBll.ValidarIdentificacao(requisicaoDto.Identificacao, requisicaoDto.IdUsuario, ref mensagemErro))
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = mensagemErro;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.BaseIncluir, Guid.Empty, mensagemErro);
                return(false);
            }

            PizzaByteContexto context = new PizzaByteContexto();

            try
            {
                StringBuilder deletes   = new StringBuilder(string.Empty);
                StringBuilder inserts   = new StringBuilder(string.Empty);
                StringBuilder insertsFk = new StringBuilder(string.Empty);

                ScriptingOptions scriptOptions = new ScriptingOptions();
                SqlConnection    conn          = new SqlConnection(context.Database.Connection.ConnectionString);
                Server           srv1          = new Server(new ServerConnection(conn));
                Database         db1           = srv1.Databases[context.Database.Connection.Database];

                deletes.AppendLine("Use " + context.Database.Connection.Database);
                deletes.AppendLine("GO ");
                deletes.AppendLine("BEGIN TRY ");
                deletes.AppendLine("BEGIN TRANSACTION ");

                List <string> tabelasComChaveEstrangeira = new List <string>();

                Scripter scr = new Scripter(srv1);
                foreach (Table table in db1.Tables)
                {
                    for (int i = 0; i < table.ForeignKeys.Count; i++)
                    {
                        if (!tabelasComChaveEstrangeira.Contains(table.ForeignKeys[i].ReferencedTable))
                        {
                            if (table.ForeignKeys[i].ReferencedTable == "Pedidos")
                            {
                                tabelasComChaveEstrangeira.Insert(0, table.ForeignKeys[i].ReferencedTable);
                            }
                            else
                            {
                                tabelasComChaveEstrangeira.Add(table.ForeignKeys[i].ReferencedTable);
                            }
                        }
                    }
                }

                // Tabelas que não fazer a fk de outras tabelas
                foreach (Table table in db1.Tables)
                {
                    if (table.Name != "__MigrationHistory" && !tabelasComChaveEstrangeira.Contains(table.Name))
                    {
                        ScriptingOptions options = new ScriptingOptions();
                        options.DriAll       = false;
                        options.ScriptSchema = false;
                        options.ScriptData   = true;
                        scr.Options          = options;

                        deletes.AppendLine("DELETE FROM [PizzaByte].[" + table.Name + "]");

                        // Add script to file content
                        foreach (string scriptLine in scr.EnumScript(new Urn[] { table.Urn }))
                        {
                            string line = scriptLine;
                            line = line.Replace("SET ANSI_NULLS ON", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER ON", string.Empty);
                            line = line.Replace("SET ANSI_NULLS OFF", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER OFF", string.Empty);
                            inserts.AppendLine(line.Trim());
                        }
                    }
                }

                deletes.AppendLine("DELETE FROM [PizzaByte].[Pedidos]");

                // Depois as tabelas que são fk
                foreach (Table table in db1.Tables)
                {
                    if (table.Name != "__MigrationHistory" && tabelasComChaveEstrangeira.Contains(table.Name))
                    {
                        ScriptingOptions options = new ScriptingOptions();
                        options.DriAll       = false;
                        options.ScriptSchema = false;
                        options.ScriptData   = true;
                        scr.Options          = options;

                        if (table.Name != "Pedidos")
                        {
                            deletes.AppendLine("DELETE FROM [PizzaByte].[" + table.Name + "]");
                        }

                        // Add script to file content
                        foreach (string scriptLine in scr.EnumScript(new Urn[] { table.Urn }))
                        {
                            string line = scriptLine;
                            line = line.Replace("SET ANSI_NULLS ON", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER ON", string.Empty);
                            line = line.Replace("SET ANSI_NULLS OFF", string.Empty);
                            line = line.Replace("SET QUOTED_IDENTIFIER OFF", string.Empty);
                            insertsFk.AppendLine(line.Trim());
                        }
                    }
                }

                deletes.Append(insertsFk.ToString());
                deletes.Append(inserts.ToString());
                deletes.AppendLine("COMMIT TRAN ");
                deletes.AppendLine("END TRY ");
                deletes.AppendLine("BEGIN CATCH ");
                deletes.AppendLine("ROLLBACK TRAN ");
                deletes.AppendLine("END CATCH ");

                string backupCriptografado = "";
                if (!UtilitarioBll.CriptografarString(deletes.ToString(), ref backupCriptografado))
                {
                    retornoDto.Retorno  = false;
                    retornoDto.Mensagem = "Erro ao criptografar o backup";
                    logBll.ResgistrarLog(requisicaoDto, LogRecursos.Backup, Guid.Empty, retornoDto.Mensagem);
                    return(false);
                }

                byte[] bytes  = Encoding.UTF8.GetBytes(backupCriptografado);
                string base64 = Convert.ToBase64String(bytes);

                retornoDto.ArquivoBase64 = base64;
                return(true);
            }
            catch (Exception ex)
            {
                retornoDto.Retorno  = false;
                retornoDto.Mensagem = "Erro ao executar o backup: " + ex.Message;
                logBll.ResgistrarLog(requisicaoDto, LogRecursos.Backup, Guid.Empty, retornoDto.Mensagem);
                return(false);
            }
        }