Example #1
0
        public ActionResult RestaurarBackup(ArquivoModel model)
        {
            //Se não tiver login, encaminhar para a tela de login
            if (string.IsNullOrWhiteSpace(SessaoUsuario.SessaoLogin.Identificacao))
            {
                return(RedirectToAction("Login", "Usuario"));
            }

            if (!SessaoUsuario.SessaoLogin.Administrador)
            {
                ViewBag.MensagemErro = "Para restaurar um backup é necessário " +
                                       $"logar com um usuário administrador.";
                return(View("SemPermissao"));
            }

            //Validar a model recebida
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            //Converter para DTO
            RequisicaoArquivoDto requisicaoDto = new RequisicaoArquivoDto
            {
                Identificacao = SessaoUsuario.SessaoLogin.Identificacao,
                IdUsuario     = SessaoUsuario.SessaoLogin.IdUsuario
            };

            string mensagemErro = "";

            if (!model.ConverterModelParaDto(ref requisicaoDto, ref mensagemErro))
            {
                ModelState.AddModelError("", $"Erro ao converter para Dto: {mensagemErro}");
                return(View(model));
            }

            //Preparar requisição e retorno
            RetornoDto retorno = new RetornoDto();

            //Consumir o serviço
            RecursosBdBll recursosBll = new RecursosBdBll();

            recursosBll.RestaurarBackup(requisicaoDto, ref retorno);

            //Verificar o retorno
            if (retorno.Retorno == false)
            {
                //Se houver erro, exibir na tela de inclusão
                ModelState.AddModelError("", retorno.Mensagem);
                return(View(model));
            }

            TempData["Retorno"] = "BACKUPRESTAURADO";

            //Retornar para inicio
            return(RedirectToAction("Inicio", "Usuario"));
        }
Example #2
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);
            }
        }
Example #3
0
        /// <summary>
        /// Converte o arquivo para dto
        /// </summary>
        /// <param name="arquivoDto"></param>
        /// <param name="mensagemErro"></param>
        /// <returns></returns>
        public bool ConverterModelParaDto(ref RequisicaoArquivoDto arquivoDto, ref string mensagemErro)
        {
            try
            {
                arquivoDto.ArquivoBase64 = string.IsNullOrWhiteSpace(this.ArquivoBase64) ? "" : this.ArquivoBase64.Trim();

                return(true);
            }
            catch (Exception ex)
            {
                mensagemErro = ex.Message;
                return(false);
            }
        }