public ActionResult RenomearPasta(FormCollection PostFolder)
        {
            string _caminhoSolicitadoPasta = PostFolder["hidCaminhoComp"];
            string _novoNomePasta          = PostFolder["NomePasta"];
            string _diretorioBaseUsuario   = null;

            string _caminhoSemPasta     = null;
            string _antigoNomePasta     = null;
            string _nomePastaTemporaria = null;

            string _caminhoPastaOriginal     = null;
            string _caminhoMiniPastaOriginal = null;


            string _caminhoPastaAlterada         = null;
            string _caminhoPastaAlteradaTemp     = null;
            string _caminhoMiniPastaAlterada     = null;
            string _caminhoMiniPastaAlteradaTemp = null;

            string _caminhoPaiCompleto = null;


            UsuarioContext usuarioAcesso = new UsuarioContext();

            var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                     where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                     select usuarioInfoAcesso).SingleOrDefault();

            _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;

            Encoding iso = Encoding.GetEncoding("ISO-8859-1");

            _caminhoSolicitadoPasta = HttpUtility.UrlDecode(_caminhoSolicitadoPasta, iso);

            _caminhoSemPasta = _caminhoSolicitadoPasta.Substring(0, _caminhoSolicitadoPasta.LastIndexOf("/"));

            _antigoNomePasta = Path.GetFileName(_caminhoSemPasta);

            _caminhoSemPasta = _caminhoSemPasta.Substring(0, _caminhoSemPasta.LastIndexOf("/"));

            //   DiretoriosArquivosContext diretoriosArquivosContext = new DiretoriosArquivosContext();

            diretoriosArquivosContex.Configuration.AutoDetectChangesEnabled = false;

            using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    var _retornoQueryDiretorioArquivo = (from dirArquiInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                         where dirArquiInfo.Dia_Nome == _antigoNomePasta &&
                                                         dirArquiInfo.Dia_CaminhoAtual == _caminhoSemPasta + "/" &&
                                                         dirArquiInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                         select dirArquiInfo).AsNoTracking().SingleOrDefault();

                    var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                    {
                        Dia_Id              = _retornoQueryDiretorioArquivo.Dia_Id,
                        Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                        Dia_Nome            = _novoNomePasta,
                        Dia_CaminhoOriginal = _retornoQueryDiretorioArquivo.Dia_CaminhoOriginal,
                        Dia_CaminhoAtual    = _retornoQueryDiretorioArquivo.Dia_CaminhoAtual,
                        Dia_Tipo            = _retornoQueryDiretorioArquivo.Dia_Tipo,
                        Dia_DataCriacao     = _retornoQueryDiretorioArquivo.Dia_DataCriacao,
                        Dia_DataExclusao    = _retornoQueryDiretorioArquivo.Dia_DataExclusao,
                        Dia_Status          = _retornoQueryDiretorioArquivo.Dia_Status
                    };

                    diretoriosArquivosContex.Entry(diretoriosArquivos).State = EntityState.Modified;
                    diretoriosArquivosContex.SaveChanges();


                    try
                    {
                        //      DiretoriosArquivosContext diretoriosArquivosFilhosContext = new DiretoriosArquivosContext();

                        var _retornoQueryDiretorioArquivoFilhos = (from dirArquiFilhoInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                                   where dirArquiFilhoInfo.Dia_CaminhoAtual.StartsWith(_caminhoSolicitadoPasta) &&
                                                                   dirArquiFilhoInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                                   select dirArquiFilhoInfo).AsNoTracking();

                        //     List<NewPhotoCloudDiretoriosArquivos> _listArqDirUpdate = new List<NewPhotoCloudDiretoriosArquivos>();

                        foreach (var item in _retornoQueryDiretorioArquivoFilhos)
                        {
                            string _caminhoAlterado         = item.Dia_CaminhoAtual.Replace("/" + _antigoNomePasta + "/", "/" + _novoNomePasta + "/");
                            var    diretoriosArquivosFilhos = new NewPhotoCloudDiretoriosArquivos
                            {
                                Dia_Id              = item.Dia_Id,
                                Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                                Dia_Nome            = item.Dia_Nome,
                                Dia_CaminhoOriginal = item.Dia_CaminhoOriginal,
                                Dia_CaminhoAtual    = _caminhoAlterado,
                                //    Dia_CaminhoAtual = _caminhoSemPasta + "/" + _novoNomePasta + "/",
                                Dia_Tipo         = item.Dia_Tipo,
                                Dia_DataCriacao  = item.Dia_DataCriacao,
                                Dia_DataExclusao = item.Dia_DataExclusao,
                                Dia_Status       = item.Dia_Status
                            };

                            diretoriosArquivosContex.Entry(diretoriosArquivosFilhos).State = EntityState.Modified;
                        }
                        diretoriosArquivosContex.ChangeTracker.DetectChanges();
                        diretoriosArquivosContex.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        ViewBag.Message        = "Falha ao registrar a alteração dos conteúdos da pasta: <strong>" + _novoNomePasta + "</strong>";
                        ViewBag.Status         = -1;
                        ViewBag.CaminhoRetorno = _caminhoSemPasta;
                        ViewBag.PastaRetorno   = _antigoNomePasta;
                        return(PartialView());
                    }
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message        = "Falha ao registrar a alteração da pasta: <strong>" + _novoNomePasta + "</strong>";
                    ViewBag.Status         = -1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                try
                {
                    _caminhoMiniPastaOriginal = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoSemPasta + "/" + _antigoNomePasta);
                    _caminhoPastaOriginal     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoSemPasta + "/" + _antigoNomePasta);

                    _caminhoMiniPastaAlterada = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoSemPasta + "/" + _novoNomePasta);
                    _caminhoPastaAlterada     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoSemPasta + "/" + _novoNomePasta);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message        = "Falha ao renomear a pasta de  <strong>" + _antigoNomePasta + "</strong> para <strong>" + _novoNomePasta + "</strong>. <br /> Caminho muito extenso.";
                    ViewBag.Status         = -1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                if (_caminhoMiniPastaAlterada.Length >= 248)
                {
                    _caminhoPaiCompleto = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoSemPasta);
                    _caminhoPaiCompleto = _caminhoPaiCompleto.Substring(1, _caminhoPaiCompleto.LastIndexOf("\\") - 1);

                    trans.Rollback();
                    ViewBag.Message        = "Não é possível renomear a pasta <strong>" + _antigoNomePasta + "</strong>  para <strong>" + _novoNomePasta + "</strong>. <br /> Caminho muito extenso.";
                    ViewBag.Status         = 1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                if (_caminhoMiniPastaOriginal.Equals(_caminhoMiniPastaAlterada, StringComparison.InvariantCultureIgnoreCase))
                {
                    ConvertMD5 ConverteMd5 = new ConvertMD5();
                    _nomePastaTemporaria          = Path.GetFileName(_caminhoMiniPastaAlterada);
                    _caminhoMiniPastaAlteradaTemp = _caminhoSemPasta + "/" + ConverteMd5.getMD5Hash(CryptographyRepository.Criptografar(_nomePastaTemporaria));


                    try
                    {
                        //System.IO.Directory.Move(Server.MapPath(@"\pasta"), Server.MapPath(@"\pasta renomeada"));
                        _caminhoMiniPastaAlteradaTemp = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoMiniPastaAlteradaTemp);

                        System.IO.Directory.Move(@_caminhoMiniPastaOriginal, @_caminhoMiniPastaAlteradaTemp);
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        ViewBag.Message        = "Falha ao criar pasta temporária de miniaturas para configuração de diretórios.";
                        ViewBag.Status         = -1;
                        ViewBag.CaminhoRetorno = _caminhoSemPasta;
                        ViewBag.PastaRetorno   = _antigoNomePasta;
                        return(PartialView());
                    }
                }

                // Determine whether the directory exists.
                if (Directory.Exists(_caminhoMiniPastaAlterada))
                {
                    if (_caminhoMiniPastaAlteradaTemp != null)
                    {
                        System.IO.Directory.Move(@_caminhoMiniPastaAlteradaTemp, @_caminhoMiniPastaOriginal);
                    }

                    trans.Rollback();
                    ViewBag.Message        = "A pasta <strong>" + _novoNomePasta + "</strong> já existe.";
                    ViewBag.Status         = 1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                if (_caminhoMiniPastaAlteradaTemp != null)
                {
                    _caminhoMiniPastaOriginal = _caminhoMiniPastaAlteradaTemp;
                }

                try
                {
                    //System.IO.Directory.Move(Server.MapPath(@"\pasta"), Server.MapPath(@"\pasta renomeada"));

                    System.IO.Directory.Move(@_caminhoMiniPastaOriginal, @_caminhoMiniPastaAlterada);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message        = "Falha ao renomear a pasta de miniaturas, de <strong>" + _antigoNomePasta + "</strong> para <strong>" + _novoNomePasta + "</strong>.";
                    ViewBag.Status         = -1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                _nomePastaTemporaria = null;

                if (_caminhoPastaOriginal.Equals(_caminhoPastaAlterada, StringComparison.InvariantCultureIgnoreCase))
                {
                    ConvertMD5 ConverteMd5 = new ConvertMD5();
                    _nomePastaTemporaria      = Path.GetFileName(_caminhoPastaAlterada);
                    _caminhoPastaAlteradaTemp = _caminhoSemPasta + "/" + ConverteMd5.getMD5Hash(CryptographyRepository.Criptografar(_nomePastaTemporaria));


                    try
                    {
                        //System.IO.Directory.Move(Server.MapPath(@"\pasta"), Server.MapPath(@"\pasta renomeada"));
                        _caminhoPastaAlteradaTemp = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoPastaAlteradaTemp);

                        System.IO.Directory.Move(@_caminhoPastaOriginal, @_caminhoPastaAlteradaTemp);
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        ViewBag.Message        = "Falha ao criar pasta temporária para configuração de diretórios.";
                        ViewBag.Status         = -1;
                        ViewBag.CaminhoRetorno = _caminhoSemPasta;
                        ViewBag.PastaRetorno   = _antigoNomePasta;
                        return(PartialView());
                    }
                }

                // Determine whether the directory exists.
                if (Directory.Exists(_caminhoPastaAlterada))
                {
                    if (_caminhoPastaAlteradaTemp != null)
                    {
                        System.IO.Directory.Move(@_caminhoPastaAlteradaTemp, @_caminhoPastaOriginal);
                        // ?????????????? RENOMEAR MINI ?????????????????
                    }

                    trans.Rollback();
                    ViewBag.Message        = "A pasta <strong>" + _novoNomePasta + "</strong> já existe.";
                    ViewBag.Status         = 1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                if (_caminhoPastaAlteradaTemp != null)
                {
                    _caminhoPastaOriginal = _caminhoPastaAlteradaTemp;
                }

                try
                {
                    //System.IO.Directory.Move(Server.MapPath(@"\pasta"), Server.MapPath(@"\pasta renomeada"));

                    System.IO.Directory.Move(_caminhoPastaOriginal, _caminhoPastaAlterada);
                }
                catch (Exception e)
                {
                    System.IO.Directory.Move(_caminhoMiniPastaAlterada, _caminhoMiniPastaOriginal);
                    trans.Rollback();
                    ViewBag.Message        = "Falha ao renomear a pasta de  <strong>" + _antigoNomePasta + "</strong> para <strong>" + _novoNomePasta + "</strong>.";
                    ViewBag.Status         = -1;
                    ViewBag.CaminhoRetorno = _caminhoSemPasta;
                    ViewBag.PastaRetorno   = _antigoNomePasta;
                    return(PartialView());
                }

                trans.Commit();
            }



            ViewBag.Message        = "A pasta <strong>" + _antigoNomePasta + "</strong> foi renomeada para <strong>" + _novoNomePasta + "</strong> com sucesso.";
            ViewBag.Status         = 0;
            ViewBag.CaminhoRetorno = _caminhoSemPasta;
            ViewBag.PastaRetorno   = _novoNomePasta;
            return(PartialView());
        }
        public ActionResult CriarPasta(FormCollection PostFolder)
        {
            string _caminhoNovaPasta     = PostFolder["hidCaminhoComp"];
            string _novaPasta            = PostFolder["NomePasta"];
            string _diretorioBaseUsuario = null;
            string _caminhoCompleto      = null;
            string _caminhoCompletoMini  = null;
            string _caminhoPaiCompleto   = null;
            int?   _usu_id;

            UsuarioContext usuarioAcesso = new UsuarioContext();

            var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                     where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                     select usuarioInfoAcesso).SingleOrDefault();

            _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;

            _usu_id = _retornoQueryUser.Uac_Fk.Usu_Id;

            Encoding iso = Encoding.GetEncoding("ISO-8859-1");

            _caminhoNovaPasta = HttpUtility.UrlDecode(_caminhoNovaPasta, iso);


            using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                    {
                        Dia_Nome         = _novaPasta,
                        Dia_CaminhoAtual = _caminhoNovaPasta,
                        Dia_DataCriacao  = DateTime.Now.ToUniversalTime(),
                        Dia_Tipo         = "D",
                        Dia_Status       = "A",
                        Dia_Fk_Usu_id    = _usu_id
                    };

                    diretoriosArquivosContex.CloudDiretoriosArquivos.Add(diretoriosArquivos);

                    //   s.Entry(diretoriosArquivos).State = EntityState.Modified;
                    diretoriosArquivosContex.SaveChanges();
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message = "Falha ao registrar a pasta: <strong>" + _novaPasta + "</strong>";
                    ViewBag.Status  = -1;
                    return(PartialView());
                }


                try
                {
                    _caminhoCompletoMini = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoNovaPasta + _novaPasta);
                    _caminhoCompleto     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoNovaPasta + _novaPasta);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message = "Falha ao criar a pasta: <strong>" + _novaPasta + "</strong> <br /> Não é possível criar mais pastas dento do diretório atual. <br /> Caminho muito extenso.";
                    ViewBag.Status  = -1;
                    return(PartialView());
                }

                if (_caminhoCompletoMini.Length >= 248)
                {
                    _caminhoPaiCompleto = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoNovaPasta);
                    _caminhoPaiCompleto = _caminhoPaiCompleto.Substring(1, _caminhoPaiCompleto.LastIndexOf("\\") - 1);

                    trans.Rollback();
                    ViewBag.Message = "Não é possível criar a pasta <strong>" + _novaPasta + "</strong> dento do diretório <strong>" + Path.GetFileName(_caminhoPaiCompleto) + "</strong>. <br /> Caminho muito extenso.";
                    ViewBag.Status  = 1;
                    return(PartialView());
                }

                // Determine whether the directory exists.
                if (Directory.Exists(_caminhoCompleto))
                {
                    trans.Rollback();
                    ViewBag.Message = "A pasta <strong>" + _novaPasta + "</strong> já existe.";
                    ViewBag.Status  = 1;
                    return(PartialView());
                }

                try
                {
                    // Try to create the directory.
                    DirectoryInfo dimini = Directory.CreateDirectory(_caminhoCompletoMini);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message = "Falha ao criar a diretório de miniaturas para a pasta: <strong>" + _novaPasta + "</strong>";
                    ViewBag.Status  = -1;
                    return(PartialView());
                }
                try
                {
                    // Try to create the directory.
                    DirectoryInfo di = Directory.CreateDirectory(_caminhoCompleto);
                }
                catch (Exception e)
                {
                    // Delete the directory.
                    Directory.Delete(_caminhoCompletoMini, true);

                    trans.Rollback();
                    ViewBag.Message = "Falha ao criar a pasta: <strong>" + _novaPasta + "</strong>";
                    ViewBag.Status  = -1;
                    return(PartialView());
                }

                trans.Commit();
            }
            ViewBag.Message = "A pasta: <strong>" + _novaPasta + "</strong> foi criada com sucesso.";
            ViewBag.Status  = 0;
            return(PartialView());
        }
        public JsonResult UploadArquivos(IEnumerable <HttpPostedFileBase> file_upload, FormCollection PostFile)
        {
            string _caminho                = PostFile.Get("hidcaminho");
            string _arquivo                = "";
            string _retorno                = "";
            string _extencao               = "";
            string _nomeArquivo            = "";
            string _nomeArquivoOriginal    = null;
            string _nomeArquivoSemExtencao = "";
            string _caminhoCompleto        = null;
            string _caminhoCompletoMini    = null;
            string _diretorioBaseUsuario   = null;
            int?   _usu_id;

            try
            {
                UsuarioContext usuarioAcesso = new UsuarioContext();

                var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                         where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                         select usuarioInfoAcesso).SingleOrDefault();

                _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;
                _usu_id = _retornoQueryUser.Uac_Fk.Usu_Id;

                if (_diretorioBaseUsuario != null)
                {
                    if (file_upload != null && _caminho != null)
                    {
                        foreach (var file in file_upload)
                        {
                            if (file.ContentLength > 0)
                            {
                                using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                                {
                                    FileInfo fileInfo = new FileInfo(file.FileName);
                                    _nomeArquivoOriginal = null;
                                    // _nomeArquivo = file.FileName;
                                    _nomeArquivoSemExtencao = Path.GetFileNameWithoutExtension(file.FileName);
                                    _extencao = fileInfo.Extension.ToLower();

                                    //         string pattern = "/^[^\\/:;,.*?&\"\'<>«»]+$/";
                                    string pattern     = "[\\/:;,.*?&\"\'<>«»]";
                                    string replacement = "-";

                                    Regex rgx = new Regex(pattern);

                                    if (rgx.IsMatch(_nomeArquivoSemExtencao))
                                    {
                                        _nomeArquivoOriginal = file.FileName;
                                    }
                                    _nomeArquivoSemExtencao = rgx.Replace(_nomeArquivoSemExtencao, @replacement);

                                    if (_nomeArquivoSemExtencao.Length > 50)
                                    {
                                        _nomeArquivoOriginal    = file.FileName;
                                        _nomeArquivoSemExtencao = _nomeArquivoSemExtencao.Substring(0, 50);
                                        //_caminhoSolicitado.Substring(1, _caminhoSolicitado.LastIndexOf("/") - 1);
                                    }

                                    _nomeArquivo = _nomeArquivoSemExtencao + _extencao;
                                    try
                                    {
                                        var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                                        {
                                            Dia_Nome         = _nomeArquivo,
                                            Dia_NomeOriginal = _nomeArquivoOriginal,
                                            Dia_CaminhoAtual = _caminho,
                                            Dia_DataCriacao  = DateTime.Now.ToUniversalTime(),
                                            Dia_Tipo         = "A",
                                            Dia_Status       = "A",
                                            Dia_Fk_Usu_id    = _usu_id
                                        };

                                        diretoriosArquivosContex.CloudDiretoriosArquivos.Add(diretoriosArquivos);

                                        //   s.Entry(diretoriosArquivos).State = EntityState.Modified;
                                        diretoriosArquivosContex.SaveChanges();
                                    }
                                    catch (Exception ex)
                                    {
                                        trans.Rollback();
                                        //ViewBag.Message = "Falha ao registrar a arquivo: <strong>" + file.FileName + "</strong>";
                                        //ViewBag.Status = -1;
                                        //_retorno = ex.Message;
                                        //return Json(_retorno);
                                        Response.Status = "800 Falha ao registrar a arquivo: <strong>" + _nomeArquivo + "</strong>";
                                    }
                                    try
                                    {
                                        _caminhoCompleto     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminho + (_nomeArquivo).Replace(@"+", @"plus"));
                                        _caminhoCompletoMini = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminho + (_nomeArquivo).Replace(@"+", @"plus"));
                                    }
                                    catch (Exception e)
                                    {
                                        trans.Rollback();
                                        Response.Status = "799 Falha ao configurar arquivo: <strong>" + _nomeArquivo + "</strong> Caminho muito extenso.";
                                    }

                                    if (_caminhoCompletoMini.Length >= 248)
                                    {
                                        trans.Rollback();
                                        ViewBag.Message = "798 Falha ao carregar arquivo: <strong>" + _nomeArquivo + "</strong> Caminho muito extenso.";
                                    }


                                    _extencao = _extencao.Replace(@".", @"");
                                    if (_extencao != "jpg" && _extencao != "png" && _extencao != "gif" && _extencao != "mp4" && _extencao != "wmv" && _extencao != "mpg")
                                    {
                                        trans.Rollback();
                                        Response.Status = "804 Tipo de arquivo não permitido";
                                    }
                                    else
                                    {
                                        if (System.IO.File.Exists(_caminhoCompleto))
                                        {
                                            // ViewBag.Message = "O Arquivo Já existe na pasta: " +_caminho;
                                            //   Response.StatusCode = 801;
                                            trans.Rollback();
                                            Response.Status = "801 O Arquivo Já existe na pasta";
                                        }
                                        else
                                        {
                                            var v = file.ContentLength;
                                            if (file.ContentLength > 104857600)
                                            {
                                                //     Response.StatusCode = 805;
                                                trans.Rollback();
                                                Response.Status = "805 O Tamanho do arquivo não permitido";
                                            }
                                            else
                                            {
                                                try
                                                {
                                                    file.SaveAs(_caminhoCompleto);
                                                    _arquivo = _arquivo + _nomeArquivo;

                                                    //System.Drawing.Image img = System.Drawing.Image.FromFile(serverPath);
                                                    //System.Drawing.Image thumb = img.GetThumbnailImage(175, 175, null, IntPtr.Zero);
                                                    //img.Dispose();
                                                    //thumb.Save(serverPathMini);


                                                    int         thumbHeight  = 175;
                                                    int         thumbWidth   = 175;
                                                    ImageFormat image_format = null;

                                                    //Stream objStream = new StreamReader(serverPath).BaseStream;
                                                    //BinaryReader objBinaryReader = new BinaryReader(objStream);
                                                    //int i = (int)objStream.Length;
                                                    //byte[] arrBytes = objBinaryReader.ReadBytes(i);
                                                    //System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(arrBytes);
                                                    //System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream);

                                                    System.Drawing.Image image = System.Drawing.Image.FromFile(_caminhoCompleto);

                                                    System.Drawing.Image thumbnail = image.GetThumbnailImage(thumbWidth, thumbHeight, null, IntPtr.Zero);
                                                    //System.Drawing.Image thumbnail = new Bitmap(thumbWidth, thumbHeight);

                                                    System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(thumbnail);

                                                    // Melhoria da nova imagem
                                                    // graphic.Clear(Color.White);
                                                    graphic.InterpolationMode  = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                                                    graphic.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                                                    graphic.PixelOffsetMode    = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                                                    graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

                                                    // Desenha a nova imagem
                                                    graphic.DrawImage(image, 0, 0, thumbWidth, thumbHeight);


                                                    // Aplica a codificação necessária
                                                    System.Drawing.Imaging.ImageCodecInfo[]  info = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
                                                    System.Drawing.Imaging.EncoderParameters encoderParameters;
                                                    encoderParameters          = new System.Drawing.Imaging.EncoderParameters(3);
                                                    encoderParameters.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 24);
                                                    encoderParameters.Param[1] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0);
                                                    encoderParameters.Param[2] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

                                                    // Exibe a imagem em forma de JPG

                                                    switch (_extencao)
                                                    {
                                                    case "png":
                                                        Response.AddHeader("Response-Type", "image/png");
                                                        Response.ContentType = "image/png";
                                                        image_format         = ImageFormat.Png;
                                                        thumbnail.Save(_caminhoCompletoMini, image_format);
                                                        break;

                                                    case "gif":
                                                        Response.AddHeader("Response-Type", "image/gif");
                                                        Response.ContentType = "image/gif";
                                                        //   image_format = ImageFormat.Gif;
                                                        thumbnail.Save(_caminhoCompletoMini);
                                                        break;

                                                    case "jpg":
                                                        Response.AddHeader("Response-Type", "image/jpeg");
                                                        Response.ContentType = "image/jpeg";
                                                        thumbnail.Save(_caminhoCompletoMini, info[1], encoderParameters);
                                                        break;

                                                    default:
                                                        thumbnail.Save(_caminhoCompletoMini);
                                                        break;
                                                    }


                                                    thumbnail.Dispose();
                                                    image.Dispose();
                                                    graphic.Dispose();
                                                }
                                                catch (Exception ex)
                                                {
                                                    trans.Rollback();
                                                    Response.Status = ex.Message;// "797 Falha ao criar miniatura: <strong>" + file.FileName + "</strong>.";
                                                }
                                            }
                                        }
                                    }

                                    trans.Commit();
                                } //trans
                            }
                            else
                            {
                                Response.Status = "802 O Conteudo do Arquivo é 0";
                            }
                        } //foreach
                    }     //file_upload != null && _caminho != null
                    else
                    {
                        Response.Status = "803 O Arquivo é nullo.";
                    }
                } //_diretorioBaseUsuario != null
            }
            catch (Exception ex)
            {
                //    ViewBag.Message = "Erro "+ ex.Message;
                _retorno = ex.Message;
            }
            return(Json(_extencao));
        }
        public ActionResult RenomearArquivo(FormCollection PostFolder)
        {
            string _caminhoSolicitadoArquivo     = PostFolder["hidCaminhoComp"];
            string _novoNomeArquivo              = PostFolder["NomeArquivo"];
            string _novoNomeArquivoSemExtencao   = _novoNomeArquivo;
            string _diretorioBaseUsuario         = null;
            string _caminhoSemArquivo            = null;
            string _antigoNomeArquivo            = null;
            string _antigoNomeArquivoSemExtencao = null;
            string _arquivoExtencao              = null;

            string _caminhoMiniArquivoOriginal = null;
            string _caminhoArquivoOriginal     = null;
            string _caminhoMiniArquivoAlterado = null;
            string _caminhoArquivoAlterado     = null;

            UsuarioContext usuarioAcesso = new UsuarioContext();

            var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                     where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                     select usuarioInfoAcesso).SingleOrDefault();

            _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;

            Encoding iso = Encoding.GetEncoding("ISO-8859-1");



            _caminhoSolicitadoArquivo = HttpUtility.UrlDecode(_caminhoSolicitadoArquivo, iso);

            _caminhoSemArquivo = _caminhoSolicitadoArquivo.Substring(0, _caminhoSolicitadoArquivo.LastIndexOf("/"));

            _antigoNomeArquivo = Path.GetFileName(_caminhoSolicitadoArquivo);

            _antigoNomeArquivoSemExtencao = Path.GetFileNameWithoutExtension(_antigoNomeArquivo);

            FileInfo arquivoInfo = new FileInfo(_antigoNomeArquivo);

            _arquivoExtencao = arquivoInfo.Extension.ToLower();

            _novoNomeArquivo = _novoNomeArquivo.Trim() + _arquivoExtencao;

            diretoriosArquivosContex.Configuration.AutoDetectChangesEnabled = false;

            using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {
                    var _retornoQueryDiretorioArquivo = (from dirArquiInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                         where dirArquiInfo.Dia_Nome == _antigoNomeArquivo &&
                                                         dirArquiInfo.Dia_CaminhoAtual == _caminhoSemArquivo + "/" &&
                                                         dirArquiInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                         select dirArquiInfo).AsNoTracking().SingleOrDefault();

                    var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                    {
                        Dia_Id              = _retornoQueryDiretorioArquivo.Dia_Id,
                        Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                        Dia_Nome            = _novoNomeArquivo,
                        Dia_CaminhoOriginal = _retornoQueryDiretorioArquivo.Dia_CaminhoOriginal,
                        Dia_CaminhoAtual    = _retornoQueryDiretorioArquivo.Dia_CaminhoAtual,
                        Dia_Tipo            = _retornoQueryDiretorioArquivo.Dia_Tipo,
                        Dia_DataCriacao     = _retornoQueryDiretorioArquivo.Dia_DataCriacao,
                        Dia_DataExclusao    = _retornoQueryDiretorioArquivo.Dia_DataExclusao,
                        Dia_Status          = _retornoQueryDiretorioArquivo.Dia_Status
                    };

                    diretoriosArquivosContex.Entry(diretoriosArquivos).State = EntityState.Modified;
                    diretoriosArquivosContex.SaveChanges();
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message         = "Falha ao registrar a alteração do arquivo: <strong>" + _novoNomeArquivo + "</strong>";
                    ViewBag.Status          = -1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }

                try
                {
                    _caminhoMiniArquivoOriginal = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoSemArquivo + "/" + _antigoNomeArquivo);
                    _caminhoArquivoOriginal     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoSemArquivo + "/" + _antigoNomeArquivo);

                    _caminhoMiniArquivoAlterado = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoSemArquivo + "/" + _novoNomeArquivo);
                    _caminhoArquivoAlterado     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoSemArquivo + "/" + _novoNomeArquivo);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message         = "Falha ao renomear o arquivo de  <strong>" + _antigoNomeArquivo + "</strong> para <strong>" + _novoNomeArquivo + "</strong>. <br /> Caminho muito extenso.";
                    ViewBag.Status          = -1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }
                if (_caminhoMiniArquivoAlterado.Length >= 248)
                {
                    trans.Rollback();
                    ViewBag.Message         = "Não é possível renomear o arquivo <strong>" + _antigoNomeArquivo + "</strong>  para <strong>" + _novoNomeArquivo + "</strong>. <br /> Caminho muito extenso.";
                    ViewBag.Status          = 1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }
                if (System.IO.File.Exists(_caminhoArquivoAlterado))
                {
                    trans.Rollback();
                    ViewBag.Message         = "O arquivo <strong>" + _novoNomeArquivo + "</strong> já existe na pasta.";
                    ViewBag.Status          = 1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }

                try
                {
                    //System.IO.Directory.Move(Server.MapPath(@"\pasta"), Server.MapPath(@"\pasta renomeada"));

                    System.IO.File.Move(@_caminhoMiniArquivoOriginal, @_caminhoMiniArquivoAlterado);
                }
                catch (Exception e)
                {
                    trans.Rollback();
                    ViewBag.Message         = "Falha ao renomear a miniatura de <strong>" + _antigoNomeArquivo + "</strong> para <strong>" + _novoNomeArquivo + "</strong>.";
                    ViewBag.Status          = -1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }

                try
                {
                    System.IO.File.Move(_caminhoArquivoOriginal, _caminhoArquivoAlterado);
                }
                catch (Exception e)
                {
                    System.IO.File.Move(@_caminhoMiniArquivoAlterado, @_caminhoMiniArquivoOriginal);
                    trans.Rollback();
                    ViewBag.Message         = "Falha ao renomear o arquivo de  <strong>" + _antigoNomeArquivo + "</strong> para <strong>" + _novoNomeArquivo + "</strong>.";
                    ViewBag.Status          = -1;
                    ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
                    ViewBag.ArquivoRetorno  = _antigoNomeArquivoSemExtencao;
                    ViewBag.ExtencaoRetorno = _arquivoExtencao;
                    return(PartialView());
                }
                trans.Commit();
            }
            ViewBag.Message         = "O arquivo <strong>" + _antigoNomeArquivo + "</strong> foi renomeado para <strong>" + _novoNomeArquivo + "</strong> com sucesso.";
            ViewBag.Status          = 0;
            ViewBag.CaminhoRetorno  = _caminhoSemArquivo + "/";
            ViewBag.ArquivoRetorno  = _novoNomeArquivoSemExtencao;
            ViewBag.ExtencaoRetorno = _arquivoExtencao;
            return(PartialView());
        }
        public ActionResult MoverParaLixeira(FormCollection PostFolder)
        {
            string _caminhoOriginal         = PostFolder["caminhoPastaArquivo"];
            string _caminhoOriginalFormat   = null;
            string _caminhoOriginalCompleto = null;

            string _caminhoLixeiraCompleto             = null;
            string _caminhoOriginalMiniCompleto        = null;
            string _preservCaminhoOriginalCompleto     = null;
            string _preservCaminhoOriginalMiniCompleto = null;
            string _caminhoLixeiraMiniCompleto         = null;
            string _caminhoRenomeadoLixeiraMini        = null;
            string _caminhoRenomeadoLixeira            = null;
            string _caminhoRenomeado     = null;
            string _caminhoRenomeadoMini = null;
            string _caminhoDiretorioPai  = PostFolder["caminhoDiretorioPai"];
            string _caminhoSemPasta      = null;
            string _nomePastaArquivo     = PostFolder["nomePastaArquivo"];
            string _tipoPastaArquivo     = PostFolder["tipoPastaArquivo"];
            string _diretorioBaseUsuario = null;

            string _strRetornoNomePastaArquivo = null;
            string _retornoMensagem            = null;

            bool _pastaArquivoExiste          = false;
            bool _pastaArquivoExisteLixeira   = false;
            bool _renomeouPastaArquivoLixeira = false;

            int _qtdTotalPastas   = 0;
            int _qtdTotalArquivos = 0;

            var arrayCaminhoOriginal  = _caminhoOriginal.Split(',');
            var arraynomePastaArquivo = _nomePastaArquivo.Split(',');
            var arraytipoPastaArquivo = _tipoPastaArquivo.Split(',');


            UsuarioContext usuarioAcesso = new UsuarioContext();

            var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                     where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                     select usuarioInfoAcesso).SingleOrDefault();

            _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;

            Encoding iso = Encoding.GetEncoding("ISO-8859-1");



            diretoriosArquivosContex.Configuration.AutoDetectChangesEnabled = false;

            for (int i = 0; i < arrayCaminhoOriginal.Length; i++)
            {
                _caminhoOriginal  = arrayCaminhoOriginal[i].Trim();
                _nomePastaArquivo = arraynomePastaArquivo[i].Trim();
                _tipoPastaArquivo = arraytipoPastaArquivo[i].Trim().ToUpper();

                _caminhoOriginal = HttpUtility.UrlDecode(_caminhoOriginal, iso);

                _caminhoSemPasta = _caminhoOriginal.Substring(0, _caminhoOriginal.LastIndexOf("/"));


                _caminhoSemPasta = _caminhoSemPasta.Substring(0, _caminhoSemPasta.LastIndexOf("/"));

                _caminhoOriginalFormat = _caminhoOriginal.Substring(0, _caminhoOriginal.LastIndexOf("/"));

                using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    try
                    {
                        _caminhoOriginalCompleto     = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + _caminhoOriginalFormat);
                        _caminhoOriginalMiniCompleto = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + _caminhoOriginalFormat);
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        ViewBag.Message          = "Falha ao configurar caminhos originais do arquivo: <strong>" + _nomePastaArquivo + "</strong>. Item não excluido.";
                        ViewBag.Status           = -1;
                        ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                        ViewBag.NomePastaArquivo = _nomePastaArquivo;
                        return(PartialView());
                    }

                    try
                    {
                        _caminhoLixeiraCompleto     = Server.MapPath("~/pho_lixeira/" + _diretorioBaseUsuario + "/" + _nomePastaArquivo);
                        _caminhoLixeiraMiniCompleto = Server.MapPath("~/pho_lixeira_miniatura/" + _diretorioBaseUsuario + "/" + _nomePastaArquivo);
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        ViewBag.Message          = "Falha ao configurar caminhos de destino do arquivo: <strong>" + _nomePastaArquivo + "</strong>. Item não excluido.";
                        ViewBag.Status           = -1;
                        ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                        ViewBag.NomePastaArquivo = _nomePastaArquivo;
                        return(PartialView());
                    }
                    if (_tipoPastaArquivo.Trim().ToUpper() == "D")
                    {
                        _pastaArquivoExiste        = Directory.Exists(_caminhoOriginalCompleto);
                        _pastaArquivoExisteLixeira = Directory.Exists(_caminhoLixeiraCompleto);
                        _qtdTotalPastas++;
                    }
                    else if (_tipoPastaArquivo.Trim().ToUpper() == "A")
                    {
                        _pastaArquivoExiste        = System.IO.File.Exists(_caminhoOriginalCompleto);
                        _pastaArquivoExisteLixeira = System.IO.File.Exists(_caminhoLixeiraCompleto);
                        _qtdTotalArquivos++;
                    }
                    else
                    {
                        trans.Rollback();
                        ViewBag.Message          = "Falha ao identificar o tipo do item: <strong>" + _nomePastaArquivo + "</strong>.";
                        ViewBag.Status           = -1;
                        ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                        ViewBag.NomePastaArquivo = _nomePastaArquivo;
                        return(PartialView());
                    }

                    if (_pastaArquivoExiste)
                    {
                        if (_pastaArquivoExisteLixeira)
                        {
                            int loop = 2;

                            try
                            {
                                _preservCaminhoOriginalCompleto     = _caminhoOriginalCompleto;
                                _preservCaminhoOriginalMiniCompleto = _caminhoOriginalMiniCompleto;

                                if (_tipoPastaArquivo == "D")
                                {
                                    _caminhoRenomeado     = _caminhoOriginalCompleto + " (" + loop + ")";
                                    _caminhoRenomeadoMini = _caminhoOriginalMiniCompleto + " (" + loop + ")";

                                    _caminhoRenomeadoLixeiraMini = _caminhoLixeiraMiniCompleto + " (" + loop + ")";
                                    _caminhoRenomeadoLixeira     = _caminhoLixeiraCompleto + " (" + loop + ")";

                                    while (Directory.Exists(_caminhoRenomeadoLixeira))
                                    {
                                        loop++;
                                        _caminhoRenomeado     = _caminhoOriginalCompleto + " (" + loop + ")";
                                        _caminhoRenomeadoMini = _caminhoOriginalMiniCompleto + " (" + loop + ")";

                                        _caminhoRenomeadoLixeira     = _caminhoLixeiraCompleto + " (" + loop + ")";
                                        _caminhoRenomeadoLixeiraMini = _caminhoLixeiraMiniCompleto + " (" + loop + ")";
                                    }
                                }
                                else if (_tipoPastaArquivo == "A")
                                {
                                    FileInfo f = new FileInfo(_caminhoOriginalCompleto);
                                    _caminhoRenomeado     = _caminhoOriginalCompleto.Substring(0, _caminhoOriginalCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;
                                    _caminhoRenomeadoMini = _caminhoOriginalMiniCompleto.Substring(0, _caminhoOriginalMiniCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;

                                    _caminhoRenomeadoLixeiraMini = _caminhoLixeiraMiniCompleto.Substring(0, _caminhoLixeiraMiniCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;
                                    _caminhoRenomeadoLixeira     = _caminhoLixeiraCompleto.Substring(0, _caminhoLixeiraCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;

                                    while (System.IO.File.Exists(_caminhoRenomeadoLixeira))
                                    {
                                        loop++;
                                        _caminhoRenomeado     = _caminhoOriginalCompleto.Substring(0, _caminhoOriginalCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;
                                        _caminhoRenomeadoMini = _caminhoOriginalMiniCompleto.Substring(0, _caminhoOriginalMiniCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;

                                        _caminhoRenomeadoLixeira     = _caminhoLixeiraCompleto.Substring(0, _caminhoLixeiraCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;
                                        _caminhoRenomeadoLixeiraMini = _caminhoLixeiraMiniCompleto.Substring(0, _caminhoLixeiraMiniCompleto.LastIndexOf(f.Extension)) + "_(" + loop + ")" + f.Extension;
                                    }
                                }
                                System.IO.Directory.Move(@_caminhoOriginalCompleto, @_caminhoRenomeado);
                                System.IO.Directory.Move(@_caminhoOriginalMiniCompleto, @_caminhoRenomeadoMini);

                                _caminhoOriginalCompleto     = _caminhoRenomeado;
                                _caminhoOriginalMiniCompleto = _caminhoRenomeadoMini;
                                _caminhoLixeiraCompleto      = _caminhoRenomeadoLixeira;
                                _caminhoLixeiraMiniCompleto  = _caminhoRenomeadoLixeiraMini;

                                _renomeouPastaArquivoLixeira = true;
                            }
                            catch (Exception e)
                            {
                                trans.Rollback();
                                ViewBag.Message          = "Falha ao tentar renomear <strong>" + _nomePastaArquivo + "</strong>";
                                ViewBag.Status           = -1;
                                ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                                ViewBag.NomePastaArquivo = _nomePastaArquivo;
                                return(PartialView());
                            }
                        }

                        string _nomeLixeira = Path.GetFileName(_caminhoOriginalCompleto);
                        try
                        {
                            var _retornoQueryDiretorioArquivo = (from dirArquiInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                                 where dirArquiInfo.Dia_Nome == _nomePastaArquivo &&
                                                                 dirArquiInfo.Dia_CaminhoAtual == _caminhoSemPasta + "/" &&
                                                                 dirArquiInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                                 select dirArquiInfo).AsNoTracking().SingleOrDefault();

                            var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                            {
                                Dia_Id              = _retornoQueryDiretorioArquivo.Dia_Id,
                                Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                                Dia_Nome            = _nomePastaArquivo,
                                Dia_NomeLixeira     = _nomeLixeira,
                                Dia_CaminhoOriginal = _retornoQueryDiretorioArquivo.Dia_CaminhoAtual,
                                Dia_CaminhoAtual    = "/Lixeira/",
                                Dia_Tipo            = _retornoQueryDiretorioArquivo.Dia_Tipo,
                                Dia_DataCriacao     = _retornoQueryDiretorioArquivo.Dia_DataCriacao,
                                Dia_DataExclusao    = DateTime.Now.ToUniversalTime(),
                                Dia_Status          = "E"
                            };

                            diretoriosArquivosContex.Entry(diretoriosArquivos).State = EntityState.Modified;
                            diretoriosArquivosContex.SaveChanges();


                            try
                            {
                                //      DiretoriosArquivosContext diretoriosArquivosFilhosContext = new DiretoriosArquivosContext();

                                var _retornoQueryDiretorioArquivoFilhos = (from dirArquiFilhoInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                                           where dirArquiFilhoInfo.Dia_CaminhoAtual.StartsWith(_caminhoOriginal) &&
                                                                           dirArquiFilhoInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                                           select dirArquiFilhoInfo).AsNoTracking();

                                //     List<NewPhotoCloudDiretoriosArquivos> _listArqDirUpdate = new List<NewPhotoCloudDiretoriosArquivos>();

                                foreach (var item in _retornoQueryDiretorioArquivoFilhos)
                                {
                                    var diretoriosArquivosFilhos = new NewPhotoCloudDiretoriosArquivos
                                    {
                                        Dia_Id              = item.Dia_Id,
                                        Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                                        Dia_Nome            = item.Dia_Nome,
                                        Dia_CaminhoOriginal = item.Dia_CaminhoAtual,
                                        Dia_CaminhoAtual    = "/Lixeira/",
                                        //    Dia_CaminhoAtual = _caminhoSemPasta + "/" + _novoNomePasta + "/",
                                        Dia_Tipo         = item.Dia_Tipo,
                                        Dia_DataCriacao  = item.Dia_DataCriacao,
                                        Dia_DataExclusao = DateTime.Now.ToUniversalTime(),
                                        Dia_Status       = "E"
                                    };

                                    diretoriosArquivosContex.Entry(diretoriosArquivosFilhos).State = EntityState.Modified;
                                }
                                diretoriosArquivosContex.ChangeTracker.DetectChanges();
                                diretoriosArquivosContex.SaveChanges();
                            }
                            catch (Exception e)
                            {
                                if (_renomeouPastaArquivoLixeira)
                                {
                                    System.IO.Directory.Move(@_caminhoRenomeado, @_preservCaminhoOriginalCompleto);
                                    System.IO.Directory.Move(@_caminhoRenomeadoMini, @_preservCaminhoOriginalMiniCompleto);
                                }

                                trans.Rollback();
                                ViewBag.Message        = "Falha ao registrar a alteração dos conteúdos da pasta: <strong>" + _nomePastaArquivo + "</strong>";
                                ViewBag.Status         = -1;
                                ViewBag.CaminhoRetorno = _caminhoSemPasta;
                                ViewBag.PastaRetorno   = _nomePastaArquivo;
                                return(PartialView());
                            }
                        }
                        catch (Exception e)
                        {
                            if (_renomeouPastaArquivoLixeira)
                            {
                                System.IO.Directory.Move(@_caminhoRenomeado, @_preservCaminhoOriginalCompleto);
                                System.IO.Directory.Move(@_caminhoRenomeadoMini, @_preservCaminhoOriginalMiniCompleto);
                            }
                            trans.Rollback();
                            ViewBag.Message        = "Falha ao registrar a alteração da pasta: <strong>" + _nomePastaArquivo + "</strong>";
                            ViewBag.Status         = -1;
                            ViewBag.CaminhoRetorno = _caminhoSemPasta;
                            ViewBag.PastaRetorno   = _nomePastaArquivo;
                            return(PartialView());
                        }



                        try
                        {
                            System.IO.Directory.Move(_caminhoOriginalMiniCompleto, _caminhoLixeiraMiniCompleto);
                        }
                        catch (Exception e)
                        {
                            trans.Rollback();
                            ViewBag.Message          = "Falha ao tentar excluir a configuração de miniaturas para: <strong>" + _nomePastaArquivo + "</strong>";
                            ViewBag.Status           = -1;
                            ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                            ViewBag.NomePastaArquivo = _nomePastaArquivo;
                            return(PartialView());
                        }
                        try
                        {
                            System.IO.Directory.Move(_caminhoOriginalCompleto, _caminhoLixeiraCompleto);
                        }
                        catch (Exception e)
                        {
                            System.IO.Directory.Move(@_caminhoLixeiraMiniCompleto, @_preservCaminhoOriginalMiniCompleto);
                            trans.Rollback();
                            ViewBag.Message          = "Falha ao tentar excluir: <strong>" + _nomePastaArquivo + "</strong>";
                            ViewBag.Status           = -1;
                            ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                            ViewBag.NomePastaArquivo = _nomePastaArquivo;
                            return(PartialView());
                        }
                    }
                    else
                    {
                        trans.Rollback();
                        ViewBag.Message          = "<strong>" + _nomePastaArquivo + "</strong> não foi localizada nesse diretório.";
                        ViewBag.Status           = 1;
                        ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
                        ViewBag.NomePastaArquivo = _nomePastaArquivo;
                        return(PartialView());
                    }
                    trans.Commit();
                }
            } //for

            if ((_qtdTotalPastas + _qtdTotalArquivos) == 1)
            {
                if (_qtdTotalPastas == 1)
                {
                    _strRetornoNomePastaArquivo = "Pasta <strong>" + _nomePastaArquivo + "</strong>";
                    _retornoMensagem            = " excluida";
                }
                else if (_qtdTotalArquivos == 1)
                {
                    _strRetornoNomePastaArquivo = "Arquivo <strong>" + _nomePastaArquivo + "</strong>";
                    _retornoMensagem            = " excluido";
                }
            }
            else
            {
                if (_qtdTotalPastas >= 1)
                {
                    if (_qtdTotalPastas == 1)
                    {
                        _strRetornoNomePastaArquivo = "<strong>" + _qtdTotalPastas + " Pasta </strong>";
                    }
                    else
                    {
                        _strRetornoNomePastaArquivo = "<strong>" + _qtdTotalPastas + " Pastas </strong>";
                    }
                    _retornoMensagem = " excluidas";
                }
                if (_qtdTotalPastas >= 1 && _qtdTotalArquivos >= 1)
                {
                    _strRetornoNomePastaArquivo = _strRetornoNomePastaArquivo + " e ";
                }
                if ((_qtdTotalArquivos) >= 1)
                {
                    if (_qtdTotalArquivos == 1)
                    {
                        _strRetornoNomePastaArquivo = _strRetornoNomePastaArquivo + "<strong>" + _qtdTotalArquivos + " Arquivo </strong>";
                    }
                    else
                    {
                        _strRetornoNomePastaArquivo = _strRetornoNomePastaArquivo + "<strong>" + _qtdTotalArquivos + " Arquivos </strong>";
                    }
                    _retornoMensagem = " excluidos";
                }
            }

            ViewBag.Message          = _strRetornoNomePastaArquivo + _retornoMensagem + " com sucesso.";
            ViewBag.Status           = 0;
            ViewBag.CaminhoRetorno   = _caminhoDiretorioPai;
            ViewBag.NomePastaArquivo = _nomePastaArquivo;
            return(PartialView());
        }
        public ActionResult MoverPastaArquivo(MoverPastaArquivoOrigem moverPastaArquivo)
        {
            string _diretorioBaseUsuario      = "";
            string _caminhoOrigem             = "";
            string _caminhoOrigemMiniatura    = "";
            string _nomePastaArquivoOrigem    = "";
            string _caminhoDestino            = "";
            string _caminhoDestinoMiniatura   = "";
            string _caminhoSemPasta           = "";
            string _codigoPastaArquivo        = "";
            string _caminhoDestinoSubPastas   = "";
            bool   _pastaArquivoExisteOrigem  = false;
            bool   _pastaArquivoExisteDestino = false;

            var _qtdPastaMovido   = 0;
            var _qtdArquivoMovido = 0;

            ViewBag.Status = 0;


            //    MoverPastaArquivoRetornoSucesso _jsonRecuperaListaPastasArquivosMovidos;

            //      List<MoverPastaArquivoRetornoSucesso> RetornoPastasArquivosMovidos = new List<MoverPastaArquivoRetornoSucesso>();
            MoverPastaArquivoDesfazerMover RetornoPastasArquivosMovidos = new MoverPastaArquivoDesfazerMover();


            //var arrJsJsonMoverPara = new {
            //        "caminhoRetorno": moverPastaArquivo.CaminhoRetorno,
            //        "caminhoPastaPai":moverPastaArquivo.CaminhoPastaPai,
            //        "estadoPasta": moverPastaArquivo.EstadoPasta,
            //        "caminhoAtualDestino": moverPastaArquivo.CaminhoAtualDestino,
            //        "listaMoverPastasArquivos": [
            //                        { "nomePastaArquivo": moverPastaArquivo.ListaMoverPastasArquivos., "caminhoOriginal": moverPastaArquivo.ListaMoverPastasArquivos., "tipoArquivoPasta": moverPastaArquivo.ListaMoverPastasArquivos. }
            //            ]
            //};
            ConvertMD5 ConverterMD5 = new ConvertMD5();

            UsuarioContext usuarioAcesso = new UsuarioContext();

            var _retornoQueryUser = (from usuarioInfoAcesso in usuarioAcesso.CloudUsuariosAcesso
                                     where usuarioInfoAcesso.Uac_UserName == User.Identity.Name
                                     select usuarioInfoAcesso).SingleOrDefault();

            _diretorioBaseUsuario = _retornoQueryUser.Uac_Fk.Usu_DiretorioBase;



            var _cookieItensMovidos = HttpContext.Request.Cookies[ConverterMD5.getMD5Hash("ListaPastasArquivosMovidos")];

            if (_cookieItensMovidos != null)
            {
                RetornoPastasArquivosMovidos = JsonConvert.DeserializeObject <MoverPastaArquivoDesfazerMover>(HttpContext.Request.Cookies[ConverterMD5.getMD5Hash("ListaPastasArquivosMovidos")]["PasArqMov"]);
            }


            ViewBag.DirBase = _diretorioBaseUsuario;
            try
            {
                _caminhoDestino          = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + "/" + moverPastaArquivo.CaminhoAtualDestino);
                _caminhoDestinoMiniatura = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + "/" + moverPastaArquivo.CaminhoAtualDestino);
            }
            catch (Exception e)
            {
                ViewBag.Message = "Falha ao configurar caminhos de destino. Nenhum item foi movido.";
                ViewBag.Status  = -1;
                return(PartialView(moverPastaArquivo));
            }

            ///  _caminhoInicialMiniatura = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario);
            //  _caminhoInicial = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario);

            List <MoverPastaArquivoDesfazerMoverLista> ListaPastaArquivoMovido     = new List <MoverPastaArquivoDesfazerMoverLista>();
            List <MoverPastaArquivoNomeMovidos>        ListaNomePastaArquivoMovido = new List <MoverPastaArquivoNomeMovidos>();

            foreach (var itemPastaArquivo in moverPastaArquivo.ListaMoverPastasArquivos)
            {
                using (var trans = diretoriosArquivosContex.Database.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    _caminhoSemPasta = itemPastaArquivo.CaminhoOriginal.Substring(0, itemPastaArquivo.CaminhoOriginal.LastIndexOf("/"));
                    if (itemPastaArquivo.TipoArquivoPasta == 'D')
                    {
                        _caminhoSemPasta = _caminhoSemPasta.Substring(0, _caminhoSemPasta.LastIndexOf("/"));
                    }


                    try
                    {
                        _caminhoOrigem          = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + itemPastaArquivo.CaminhoOriginal);
                        _caminhoOrigemMiniatura = Server.MapPath("~/pho_fotos_miniatura/" + _diretorioBaseUsuario + itemPastaArquivo.CaminhoOriginal);

                        if (itemPastaArquivo.TipoArquivoPasta == 'D')
                        {
                            _nomePastaArquivoOrigem = Path.GetFileName(itemPastaArquivo.CaminhoOriginal.Substring(0, itemPastaArquivo.CaminhoOriginal.LastIndexOf("/")));
                        }
                        else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                        {
                            _nomePastaArquivoOrigem = Path.GetFileName(itemPastaArquivo.CaminhoOriginal);
                        }

                        //throw new Exception();
                    }
                    catch (Exception e)
                    {
                        trans.Rollback();
                        if (itemPastaArquivo.TipoArquivoPasta == 'D')
                        {
                            itemPastaArquivo.MensagemsRetorno = "Falha ao configurar caminhos de origem da pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Pasta não movida.";
                        }
                        else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                        {
                            itemPastaArquivo.MensagemsRetorno = "Falha ao configurar caminhos de origem do arquivo: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Arquivo não movido.";
                        }
                        itemPastaArquivo.StatusRetorno = -1;
                        continue;
                    }
                    if (itemPastaArquivo.TipoArquivoPasta == 'D')
                    {
                        _pastaArquivoExisteOrigem  = Directory.Exists(_caminhoOrigem);
                        _pastaArquivoExisteDestino = Directory.Exists(_caminhoDestino + _nomePastaArquivoOrigem);
                    }
                    else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                    {
                        _pastaArquivoExisteOrigem  = System.IO.File.Exists(_caminhoOrigem);
                        _pastaArquivoExisteDestino = System.IO.File.Exists(_caminhoDestino + _nomePastaArquivoOrigem);
                    }
                    else
                    {
                        itemPastaArquivo.MensagemsRetorno = "Falha ao identificar o tipo do item: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>.";
                        itemPastaArquivo.StatusRetorno    = -1;
                        continue;
                    }

                    if (_pastaArquivoExisteOrigem)
                    {
                        if (_pastaArquivoExisteDestino)
                        {
                            trans.Rollback();
                            if (itemPastaArquivo.TipoArquivoPasta == 'D')
                            {
                                itemPastaArquivo.MensagemsRetorno = "Já existe uma pasta com o nome <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong> neste local.";
                                itemPastaArquivo.StatusRetorno    = 1;
                            }
                            else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                            {
                                itemPastaArquivo.MensagemsRetorno = "Já existe um arquivo com o nome <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong> neste local.";
                                itemPastaArquivo.StatusRetorno    = 1;
                            }
                            continue;
                        }
                        else
                        {
                            try
                            {
                                var _retornoQueryDiretorioArquivo = (from dirArquiInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                                     where dirArquiInfo.Dia_Nome == itemPastaArquivo.NomePastaArquivo &&
                                                                     dirArquiInfo.Dia_CaminhoAtual == _caminhoSemPasta + "/" &&
                                                                     dirArquiInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                                     select dirArquiInfo).AsNoTracking().SingleOrDefault();

                                _codigoPastaArquivo = CryptographyRepository.Criptografar(_retornoQueryDiretorioArquivo.Dia_Id.ToString());
                                //  _codigoPastaArquivo = _retornoQueryDiretorioArquivo.Dia_Id.ToString();

                                var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                                {
                                    Dia_Id              = _retornoQueryDiretorioArquivo.Dia_Id,
                                    Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                                    Dia_Nome            = _retornoQueryDiretorioArquivo.Dia_Nome,
                                    Dia_CaminhoOriginal = _retornoQueryDiretorioArquivo.Dia_CaminhoAtual,
                                    Dia_CaminhoAtual    = moverPastaArquivo.CaminhoAtualDestino,
                                    Dia_Tipo            = _retornoQueryDiretorioArquivo.Dia_Tipo,
                                    Dia_DataCriacao     = _retornoQueryDiretorioArquivo.Dia_DataCriacao,
                                    Dia_Status          = _retornoQueryDiretorioArquivo.Dia_Status
                                };

                                diretoriosArquivosContex.Entry(diretoriosArquivos).State = EntityState.Modified;
                                diretoriosArquivosContex.SaveChanges();

                                try
                                {
                                    var _retornoQueryDiretorioArquivoFilhos = (from dirArquiFilhoInfo in diretoriosArquivosContex.CloudDiretoriosArquivos
                                                                               where dirArquiFilhoInfo.Dia_CaminhoAtual.StartsWith(itemPastaArquivo.CaminhoOriginal) &&
                                                                               dirArquiFilhoInfo.Dia_Fk_Usu_id == _retornoQueryUser.Uac_Fk.Usu_Id
                                                                               select dirArquiFilhoInfo).AsNoTracking();

                                    foreach (var item in _retornoQueryDiretorioArquivoFilhos)
                                    {
                                        _caminhoDestinoSubPastas = item.Dia_CaminhoAtual;

                                        _caminhoDestinoSubPastas = _caminhoDestinoSubPastas.Replace(itemPastaArquivo.CaminhoOriginal, moverPastaArquivo.CaminhoAtualDestino + itemPastaArquivo.NomePastaArquivo + "/");

                                        var diretoriosArquivosFilhos = new NewPhotoCloudDiretoriosArquivos
                                        {
                                            Dia_Id              = item.Dia_Id,
                                            Dia_Fk_Usu_id       = _retornoQueryUser.Uac_Fk.Usu_Id,
                                            Dia_Nome            = item.Dia_Nome,
                                            Dia_CaminhoOriginal = item.Dia_CaminhoAtual,
                                            Dia_CaminhoAtual    = _caminhoDestinoSubPastas,
                                            Dia_Tipo            = item.Dia_Tipo,
                                            Dia_DataCriacao     = item.Dia_DataCriacao,
                                            Dia_Status          = item.Dia_Status
                                        };

                                        diretoriosArquivosContex.Entry(diretoriosArquivosFilhos).State = EntityState.Modified;
                                    }
                                    diretoriosArquivosContex.ChangeTracker.DetectChanges();
                                    diretoriosArquivosContex.SaveChanges();
                                }
                                catch (Exception e)
                                {
                                    trans.Rollback();
                                    if (itemPastaArquivo.TipoArquivoPasta == 'D')
                                    {
                                        itemPastaArquivo.MensagemsRetorno = "Falha ao registrar a alteração da pasta contida na pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Pasta não movida.";
                                    }
                                    else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                                    {
                                        itemPastaArquivo.MensagemsRetorno = "Falha ao registrar a alteração do arquivo contido na pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Arquivo não movido.";
                                    }
                                    itemPastaArquivo.StatusRetorno = -1;
                                    continue;
                                }
                            }
                            catch (Exception e)
                            {
                                trans.Rollback();
                                if (itemPastaArquivo.TipoArquivoPasta == 'D')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao registrar a alteração da pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Pasta não movida.";
                                }
                                else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao registrar a alteração do arquivo: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Arquivo não movido.";
                                }
                                itemPastaArquivo.StatusRetorno = -1;
                                continue;
                            }

                            try
                            {
                                System.IO.Directory.Move(_caminhoOrigemMiniatura, _caminhoDestinoMiniatura + _nomePastaArquivoOrigem);
                            }
                            catch (Exception e)
                            {
                                trans.Rollback();
                                if (itemPastaArquivo.TipoArquivoPasta == 'D')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao tentar mover a configuração de miniaturas da pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Pasta não movida.";
                                }
                                else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao tentar mover a configuração de miniaturas do arquivo: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Arquivo não movido.";
                                }
                                itemPastaArquivo.StatusRetorno = -1;
                                continue;
                            }
                            try
                            {
                                System.IO.Directory.Move(_caminhoOrigem, _caminhoDestino + _nomePastaArquivoOrigem);
                            }
                            catch (Exception e)
                            {
                                System.IO.Directory.Move(_caminhoDestinoMiniatura + _nomePastaArquivoOrigem, _caminhoOrigemMiniatura);
                                trans.Rollback();
                                if (itemPastaArquivo.TipoArquivoPasta == 'D')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao tentar mover a pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Pasta não movida.";
                                }
                                else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                                {
                                    itemPastaArquivo.MensagemsRetorno = "Falha ao tentar mover o arquivo: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>. Arquivo não movido.";
                                }
                                itemPastaArquivo.StatusRetorno = -1;
                                continue;
                            }

                            if (itemPastaArquivo.TipoArquivoPasta == 'D')
                            {
                                _qtdPastaMovido++;
                            }
                            else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                            {
                                _qtdArquivoMovido++;
                            }

                            //     itemPastaArquivo.CodigoPastaArquivo = _codigoPastaArquivo;

                            MoverPastaArquivoDesfazerMoverLista PastaArquivoMovido     = new MoverPastaArquivoDesfazerMoverLista();
                            MoverPastaArquivoNomeMovidos        NomePastaArquivoMovido = new MoverPastaArquivoNomeMovidos();
                            if (_cookieItensMovidos != null)
                            {
                                foreach (var itemJaMovido in RetornoPastasArquivosMovidos.ListPasArqMov)
                                {
                                    if (itemJaMovido.CodPasArq == _codigoPastaArquivo)
                                    {
                                        RetornoPastasArquivosMovidos.ListPasArqMov.Remove(itemJaMovido);
                                        break;
                                    }
                                    Console.Write(itemJaMovido.CodPasArq + " == ");
                                    Console.Write(_codigoPastaArquivo);
                                }
                            }
                            PastaArquivoMovido.CodPasArq            = _codigoPastaArquivo;
                            NomePastaArquivoMovido.NomePastaArquivo = itemPastaArquivo.NomePastaArquivo;
                            NomePastaArquivoMovido.CaminhoOriginal  = itemPastaArquivo.CaminhoOriginal;
                            NomePastaArquivoMovido.TipoArquivoPasta = itemPastaArquivo.TipoArquivoPasta;

                            //    PastaArquivoMovido.NomePastaArquivo = itemPastaArquivo.NomePastaArquivo;
                            //     PastaArquivoMovido.TipoArquivoPasta = itemPastaArquivo.TipoArquivoPasta;
                            //     PastaArquivoMovido.DataMoverArquivoPasta = DateTime.Now.ToUniversalTime();

                            //    RetornoPastasArquivosMovidos.ListaPastaArquivoMovidos.Add(PastaArquivoMovido);

                            ListaPastaArquivoMovido.Add(PastaArquivoMovido);
                            ListaNomePastaArquivoMovido.Add(NomePastaArquivoMovido);

                            trans.Commit();
                        }
                    }
                    else
                    {
                        if (itemPastaArquivo.TipoArquivoPasta == 'D')
                        {
                            itemPastaArquivo.MensagemsRetorno = "A pasta <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong> não foi localizada. Ela pode ter sido removida ou renomeada.";
                            itemPastaArquivo.StatusRetorno    = -1;
                        }
                        else if (itemPastaArquivo.TipoArquivoPasta == 'A')
                        {
                            itemPastaArquivo.MensagemsRetorno = "O arquivo <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong> não foi localizado. Ele pode ter sido removido ou renomeado.";
                            itemPastaArquivo.StatusRetorno    = -1;
                        }
                        continue;
                    }

                    //try
                    //{
                    //    var diretoriosArquivos = new NewPhotoCloudDiretoriosArquivos
                    //    {

                    //        Dia_Nome = _novaPasta,
                    //        Dia_CaminhoAtual = _caminhoNovaPasta,
                    //        Dia_DataCriacao = DateTime.Now.ToUniversalTime(),
                    //        Dia_Tipo = "D",
                    //        Dia_Status = "A",
                    //        Dia_Fk_Usu_id = _usu_id

                    //    };

                    //    diretoriosArquivosContex.CloudDiretoriosArquivos.Add(diretoriosArquivos);

                    //    //   s.Entry(diretoriosArquivos).State = EntityState.Modified;
                    //    diretoriosArquivosContex.SaveChanges();
                    //}
                    //catch (Exception e)
                    //{
                    //    trans.Rollback();
                    //    if (itemPastaArquivo.TipoArquivoPasta == 'D')
                    //    {
                    //        itemPastaArquivo.MensagemsRetorno = "Falha ao registrar a pasta: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>";
                    //    }
                    //    else if (itemPastaArquivo.TipoArquivoPasta == 'A') {
                    //        itemPastaArquivo.MensagemsRetorno = "Falha ao registrar o arquivo: <strong>" + itemPastaArquivo.NomePastaArquivo + "</strong>";
                    //    }

                    //    itemPastaArquivo.StatusRetorno = -1;

                    //}

                    //trans.Commit();
                }
            }

            moverPastaArquivo.QtdPastaMovida   = _qtdPastaMovido;
            moverPastaArquivo.QtdArquivoMovido = _qtdArquivoMovido;

            if (_qtdPastaMovido == 0 && _qtdArquivoMovido == 0)
            {
                ViewBag.Message = "Nenhum item selecionado  foi movido.";
                ViewBag.Status  = 1;
            }
            //    string teste = moverPastaArquivo.CaminhoPastaPai;


            if (moverPastaArquivo.EstadoPasta == "aberta")
            {
                //string _caminhoRetornoAberta = moverPastaArquivo.CaminhoRetorno.Substring(0, moverPastaArquivo.CaminhoRetorno.LastIndexOf("/"));
                //_caminhoRetornoAberta = _caminhoRetornoAberta.Substring(0, _caminhoRetornoAberta.LastIndexOf("/"));
                //ViewBag.CaminhoRetorno = _caminhoRetornoAberta +"/";
                ViewBag.CaminhoRetorno = moverPastaArquivo.CaminhoPastaPai;
            }
            else
            {
                ViewBag.CaminhoRetorno = moverPastaArquivo.CaminhoRetorno;
            }

            if (_cookieItensMovidos != null)
            {
                foreach (var itemMovido in RetornoPastasArquivosMovidos.ListPasArqMov)
                {
                    MoverPastaArquivoDesfazerMoverLista PastaArquivoMovido = new MoverPastaArquivoDesfazerMoverLista();

                    PastaArquivoMovido.CodPasArq = itemMovido.CodPasArq;
                    ListaPastaArquivoMovido.Add(PastaArquivoMovido);
                }
            }

            RetornoPastasArquivosMovidos.DtMovArqPas   = DateTime.Now.ToUniversalTime();
            RetornoPastasArquivosMovidos.ListPasArqMov = ListaPastaArquivoMovido;

            //  string _jsonListaPastasArquivosMovidos = new JavaScriptSerializer().Serialize(Json.Encode(RetornoPastasArquivosMovidos));

            string _jsonListaPastasArquivosMovidos     = JsonConvert.SerializeObject(RetornoPastasArquivosMovidos);
            string _jsonListaNomePastasArquivosMovidos = "{\"ListPasArqMov\":" + JsonConvert.SerializeObject(ListaNomePastaArquivoMovido) + "}";

            HttpCookie CookieListaPastaArquivoMovidos = new HttpCookie(ConverterMD5.getMD5Hash("ListaPastasArquivosMovidos"));  //6DCF4293C1633A918B283205FB5A67E5

            CookieListaPastaArquivoMovidos.Values.Add("PasArqMov", _jsonListaPastasArquivosMovidos);
            CookieListaPastaArquivoMovidos.Expires = DateTime.Now.AddMinutes(5);
            System.Web.HttpContext.Current.Response.Cookies.Add(CookieListaPastaArquivoMovidos);

            //     Console.WriteLine(moverPastaArquivo);

            ViewBag.JsonMovidos = _jsonListaNomePastasArquivosMovidos;

            return(PartialView(moverPastaArquivo));
        }