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