public ActionResult Login(string email = "", string password = "")
        {
            if (Request.HttpMethod == "GET")
            {
                return(View());
            }
            else
            {
                var userAccount = UserAccountBLL.Authorize(email, ConvertMD5.GetMD5(password), UserAccountTypes.Employee);
                if (userAccount != null)
                {
                    WebUserData cookieData = new Admin.WebUserData()
                    {
                        UserID    = userAccount.UserID,
                        FullName  = userAccount.FullName,
                        GroupName = userAccount.GroupName,
                        LoginTime = DateTime.Now,
                        SessionID = Session.SessionID,
                        ClientIP  = Request.UserHostAddress,
                        Photo     = userAccount.Photo
                    };
                    FormsAuthentication.SetAuthCookie(cookieData.ToCookieString(), false);
                    return(RedirectToAction("Index", "Dashboard"));
                }
                else
                {
                    ModelState.AddModelError("", "Đăng nhập thất bại!");
                    ViewBag.Email = email;

                    return(View());
                }
            }
        }
Example #2
0
        public string SendResult(string orderId, string orderCurrency, string orderAmount, string transactionId, string message)
        {
            string url      = ConfigurationManager.AppSettings["LwCallBackUrl"];
            string signType = ConfigurationManager.AppSettings["LwSignType"];
            string key      = ConfigurationManager.AppSettings["LWTrustPayKey"];
            string preMd5   = signType + orderId + orderAmount + orderCurrency + transactionId + message + key;
            string sign     = ConvertMD5.GetMD5WithString(preMd5);

            sign = sign.ToLower();

            Dictionary <string, string> values = new Dictionary <string, string>
            {
                { "signType", signType },
                { "orderNo", orderId },
                { "orderAmount", orderAmount },
                { "orderCurrency", orderCurrency },
                { "transactionId", transactionId },
                { "status", message },
                { "sign", sign }
            };
            string time = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            string log  = "--TrustPay --time:" + time + ";message :" + message + ";orderid :" + orderId + ";orderAmount : " +
                          orderAmount + ";orderCurrency : " + orderCurrency + ";trsactionid :" + transactionId;

            Log.logWriter.WriteLog(log);
            string sHtmlText = HttpRequest.HttpPost(url, values);

            return(sHtmlText);
        }
Example #3
0
        public ActionResult HabilitarCookie()
        {
            ConvertMD5 objMD5 = new ConvertMD5();

            var _cookieHabilitadoBrowser = HttpContext.Request.Cookies[objMD5.getMD5Hash("BrowserVerificaCriarCookie")];

            if (_cookieHabilitadoBrowser == null)
            {
                return(View());
            }
            else
            {
                return(RedirectToAction("Login", "Acesso"));
            }
        }
        public ActionResult ChangePwd(string oldpass, string newpass, string confirmpass)
        {
            WebUserData userData = User.GetUserData();
            Account     account  = AccountBLL.GetPassByEmail(userData.UserID);

            if (string.IsNullOrEmpty(oldpass))
            {
                ModelState.AddModelError("old", "Old Password is required");
                return(View());
            }
            if (string.IsNullOrEmpty(newpass))
            {
                ModelState.AddModelError("new", "New Password is required");
                return(View());
            }
            if (string.IsNullOrEmpty(oldpass))
            {
                ModelState.AddModelError("confirm", "Confirm Password is required");
                return(View());
            }


            if (string.Equals(account.Password, ConvertMD5.GetMD5(oldpass)))
            {
                if (newpass.Equals(confirmpass))
                {
                    bool updateResult = AccountBLL.UpdatePass(ConvertMD5.GetMD5(newpass), userData.UserID);
                    if (updateResult)
                    {
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        return(View());
                    }
                }
                else
                {
                    ModelState.AddModelError("check", "The passwords do not match");
                    return(View());
                }
            }
            else
            {
                ModelState.AddModelError("oldfalse", "The Old passwords incorrect");
                return(View());
            }
        }
        public ActionResult Index(FormCollection Postpath)
        {
            ConvertMD5 objMD5 = new ConvertMD5();

            int _contFolder = 0;
            int _contFile   = 0;

            string realPath;
            //  string path = HttpUtility.UrlDecode(Postpath["dir"]);
            string path = Postpath["dir"];
            string _diretorioBaseUsuario = null;

            string _usuarioId = PhotoCloud.Models.CryptographyRepository.Descriptografar(HttpContext.Request.Cookies[objMD5.getMD5Hash("UserCookieAuthentication")][objMD5.getMD5Hash("USUIDLOGD")].ToString());


            int IDUsuario;

            if (int.TryParse(_usuarioId, out IDUsuario))
            {
                photocloudEntities ContextoUsuario = new photocloudEntities();

                var Consulta = (from usuario in ContextoUsuario.pho_usuarios
                                where usuario.usu_id == IDUsuario
                                select usuario).SingleOrDefault();


                _diretorioBaseUsuario = Consulta.usu_diretoriobase;
            }


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

            path = HttpUtility.UrlDecode(path, iso);

            realPath = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + "/" + path);

            if (System.IO.File.Exists(realPath))
            {
                return(base.File(realPath, "application/octet-stream"));
            }
            else if (System.IO.Directory.Exists(realPath))
            {
                try
                {
                    //cria objeto dirListModel do tipo lista do model DirModel (FileTreeModel)
                    List <DiretorioModel> dirListModel = new List <DiretorioModel>();

                    IEnumerable <string> dirList = Directory.EnumerateDirectories(realPath);
                    foreach (string dir in dirList)
                    {
                        DirectoryInfo objdiretorio = new DirectoryInfo(dir);

                        DiretorioModel dirModel = new DiretorioModel();

                        dirModel.DirBase     = _diretorioBaseUsuario;
                        dirModel.Dir         = "/" + path + Path.GetFileName(dir) + "/";
                        dirModel.DirName     = Path.GetFileName(dir);
                        dirModel.DirAccessed = objdiretorio.LastAccessTime;

                        dirListModel.Add(dirModel);
                        _contFolder++;
                    }

                    List <FileModel> fileListModel = new List <FileModel>();

                    IEnumerable <string> fileList = Directory.EnumerateFiles(realPath);
                    foreach (string file in fileList)
                    {
                        FileInfo f = new FileInfo(file);

                        FileModel fileModel = new FileModel();

                        if (f.Extension.ToLower() != "php" && f.Extension.ToLower() != "aspx" && f.Extension.ToLower() != "asp")
                        {
                            if (path == "")
                            {
                                path = "/";
                                fileModel.FileDirectory = "/";
                            }
                            else
                            {
                                string _pastaPai = path.Substring(1, path.LastIndexOf("/") - 1);

                                fileModel.FileDirectory = _pastaPai.Substring(_pastaPai.LastIndexOf("/") + 1);
                            }

                            fileModel.FileName = Path.GetFileName(file);


                            fileModel.FileDirectoryName = "pho_fotos/" + _diretorioBaseUsuario + path + Path.GetFileName(file);
                            fileModel.FileAccessed      = f.LastAccessTime;
                            fileModel.FileSizeText      = (f.Length < 1024) ? f.Length.ToString() + " B" : f.Length / 1024 + " KB";
                            fileModel.FileExtension     = f.Extension.Replace(@".", @"").ToLower();

                            fileListModel.Add(fileModel);

                            _contFile++;
                        }
                    }
                    if (_contFolder == 0 && _contFile == 0)
                    {
                        if (path == "")
                        {
                            ViewBag.MessageError = "Para iniciar crie suas pastas e faça upload de suas imagens e vídeos.";
                        }
                        else
                        {
                            if (_contFile == 0)
                            {
                                ViewBag.MessageError = "Pasta vazia.";
                            }
                        }

                        return(PartialView());
                    }

                    FileTreeModel explorerModel = new FileTreeModel(dirListModel, fileListModel);

                    return(PartialView(explorerModel));
                }
                catch (Exception ex)
                {
                    ViewBag.MessageError = realPath;
                    return(PartialView());
                }
            }
            else
            {
                //  ViewBag.MessageError = "O parâmetro de entrada " + path + " não é um arquivo ou diretório válido.";
                ViewBag.MessageError = realPath + ": não é um arquivo ou diretório válido.";
                return(PartialView());
                //  return Content(path + " não é um arquivo ou diretório válido.");
            }
        }
        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 async Task <ActionResult> Register(RegisterViewModel model)
        {
            ConvertMD5 DiretorioBaseMd5 = new ConvertMD5();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser
                {
                    UserName          = model.UserName,
                    Email             = model.Email,
                    Uac_DataExpiracao = DateTime.Now.ToUniversalTime(),
                    Uac_Fk            = new NewPhotoCloudUsuarios
                    {
                        Usu_Nome           = model.Nome,
                        Usu_SobreNome      = model.Sobrenome,
                        Usu_DataCadastro   = DateTime.Now.ToUniversalTime(),
                        Usu_Nivel          = 30,
                        Usu_DiretorioBase  = null,
                        Usu_DataNascimento = model.DataNascimento,
                        //Usu_Sexo = model.Genero,
                        Usu_Status = "D",
                    }
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");



                    NewPhotoCloud.Repositories.DiretorioBase.DiretorioRetorno DiretorioCriado = new NewPhotoCloud.Repositories.DiretorioBase.DiretorioRetorno();
                    //    DiretorioCriado = null;

                    try
                    {
                        DiretorioCriado = DiretorioBase.CriarDiretorioBase(user.Uac_Fk.Usu_Id.Value);
                    }
                    catch (RetryLimitExceededException /* dex */)
                    {
                        //Log the error (uncomment dex variable name and add a line here to write a log.
                        ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
                    }


                    if (DiretorioCriado.retorno == 0)
                    {
                        try
                        {
                            user.Uac_DataExpiracao        = DateTime.Now.ToUniversalTime().AddDays(30);
                            user.Uac_Fk.Usu_DiretorioBase = DiretorioCriado.diretorio;
                            user.Uac_Fk.Usu_Status        = "A";

                            await UserManager.UpdateAsync(user);
                        }
                        catch (RetryLimitExceededException /* dex */)
                        {
                            //Log the error (uncomment dex variable name and add a line here to write a log.
                            ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
                        }
                    }

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        // Com base no Username e no Password, este método autentica o usuário e o direciona para o local correto.

        public static bool AutenticarUsuario(string prmUsername, string prmPassword, bool prmLembrarUsuario, bool prmManterConectado)
        {
            ConvertMD5 objMD5 = new ConvertMD5();

            photocloudEntities ContextoUsuario = new photocloudEntities();
            NavegadorModel     infoNavegador   = new NavegadorModel();

            infoNavegador = PhotoCloud.Repositories.VerificaNavegador.VerificaNavegadorUsuario();

            try
            {
                var RetornoQueryUser = (from usuarioacesso in ContextoUsuario.pho_usuario_acesso
                                        where (usuarioacesso.usa_login == prmUsername || usuarioacesso.usa_email == prmUsername) && usuarioacesso.usa_senha == prmPassword
                                        select usuarioacesso).SingleOrDefault();

                if (RetornoQueryUser == null)
                {
                    return(false);
                }
                else
                {
                    HttpCookie UserCookie = new HttpCookie(objMD5.getMD5Hash("UserCookieAuthentication")); // 8A6A69740453A3B012E65AF01EE3ECB5

                    string _nomeMaquina = Dns.GetHostName();
                    string _IpMaquina;

                    IPHostEntry hostInfo = Dns.GetHostEntry(Dns.GetHostName());
                    _IpMaquina = hostInfo.AddressList.Where(i => i.AddressFamily.Equals(AddressFamily.InterNetwork)).First().ToString();

                    UserCookie.Values.Add(objMD5.getMD5Hash("USUMAQNOM"), CryptographyRepository.Criptografar(_nomeMaquina.ToString()));                    // DCD17261F4508BC339600DC8729122A8
                    UserCookie.Values.Add(objMD5.getMD5Hash("USUMAQIP4"), CryptographyRepository.Criptografar(_IpMaquina.ToString()));                      // 0A4191585949F34F8D8BBE51A6797A4F
                    UserCookie.Values.Add(objMD5.getMD5Hash("USUIDLOGD"), CryptographyRepository.Criptografar(RetornoQueryUser.usa_fk_usuario.ToString())); // F68E1C790CD5E7A191A394A889E69A95


                    //UserCookie.Values.Add(objMD5.getMD5Hash("USULOGEXP"), DateTime.Now.AddDays(7).ToString());
                    //UserCookie.Values.Add(objMD5.getMD5Hash("USUBROWSER"),infoNavegador.browserName);
                    //UserCookie.Values.Add(objMD5.getMD5Hash("USUBROWTIP"),infoNavegador.browserType);
                    //UserCookie.Values.Add(objMD5.getMD5Hash("USUBROWVER"),infoNavegador.browserVersion);
                    //UserCookie.Values.Add(objMD5.getMD5Hash("USUACECOOK"), infoNavegador.browserCookies.ToString());

                    //Definindo o prazo de vida do cookie
                    if (prmManterConectado)
                    {
                        UserCookie.Expires = DateTime.Now.AddDays(7);
                    }
                    HttpContext.Current.Response.Cookies.Add(UserCookie);

                    if (prmLembrarUsuario)
                    {
                        HttpCookie LembrarUsuarioCookie = new HttpCookie(objMD5.getMD5Hash("UserCookieLembrarUsuario"));                                            // 77E9E65EE9901E30F3C233D965916A9C

                        LembrarUsuarioCookie.Values.Add(objMD5.getMD5Hash("USERNAME"), CryptographyRepository.Criptografar(RetornoQueryUser.usa_login.ToString())); // 27087B329DEEADE828EDD652D45461B2
                        LembrarUsuarioCookie.Expires = DateTime.Now.AddDays(30);
                        HttpContext.Current.Response.Cookies.Add(LembrarUsuarioCookie);
                    }
                    else
                    {
                        if (HttpContext.Current.Request.Cookies[objMD5.getMD5Hash("UserCookieLembrarUsuario")] != null)
                        {
                            HttpCookie myCookie = new HttpCookie(objMD5.getMD5Hash("UserCookieLembrarUsuario"));
                            myCookie.Expires = DateTime.Now.AddDays(-1d);
                            HttpContext.Current.Response.Cookies.Add(myCookie);
                        }
                    }

                    if (prmManterConectado)                                                                                               //UserCookieManterConectado
                    {
                        HttpCookie ManterConectadoCookie = new HttpCookie(objMD5.getMD5Hash("UserCookieManterConectado"));                // D2DB44648B1CB2007956559DBD5E42AD

                        ManterConectadoCookie.Values.Add(objMD5.getMD5Hash("USUMANTERLOG"), CryptographyRepository.Criptografar("true")); // 366C1B435FAAA4260922DCE106F28589
                        ManterConectadoCookie.Expires = DateTime.Now.AddDays(30);
                        HttpContext.Current.Response.Cookies.Add(ManterConectadoCookie);
                    }
                    else
                    {
                        if (HttpContext.Current.Request.Cookies[objMD5.getMD5Hash("UserCookieManterConectado")] != null)
                        {
                            HttpCookie myCookie = new HttpCookie(objMD5.getMD5Hash("UserCookieManterConectado"));
                            myCookie.Expires = DateTime.Now.AddDays(-1d);
                            HttpContext.Current.Response.Cookies.Add(myCookie);
                        }
                    }

                    return(true);
                }
            }
            catch (Exception e)
            {
                throw e;
                //  return false;
            }
        }
        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));
        }
        public ActionResult Input(Employee model, HttpPostedFileBase uploadPhoto)
        {
            try
            {
                //kiem tra tinh hop le
                if (string.IsNullOrEmpty(model.FirstName))
                {
                    ModelState.AddModelError("FirstName", "First Name is required");
                }
                if (string.IsNullOrEmpty(model.LastName))
                {
                    ModelState.AddModelError("LastName", "Last Name is required");
                }
                if (string.IsNullOrEmpty(model.Password))
                {
                    ModelState.AddModelError("Password", "Password is required");
                }
                if (string.IsNullOrEmpty(model.City))
                {
                    ModelState.AddModelError("City", "City is required");
                }
                if (string.IsNullOrEmpty(model.Country))
                {
                    ModelState.AddModelError("Country", "Country is required");
                }
                if (string.IsNullOrEmpty(model.Email))
                {
                    ModelState.AddModelError("Email", "Email is required");
                }
                if (string.IsNullOrEmpty(model.Address))
                {
                    model.Address = "";
                }
                if (string.IsNullOrEmpty(model.HomePhone))
                {
                    model.HomePhone = "";
                }
                if (string.IsNullOrEmpty(model.Title))
                {
                    model.Title = "";
                }
                if (string.IsNullOrEmpty(model.Notes))
                {
                    model.Notes = "";
                }
                if (string.IsNullOrEmpty(model.PhotoPath))
                {
                    model.PhotoPath = "";
                }

                if (!ConvertMD5.IsMD5(model.Password))
                {
                    model.Password = ConvertMD5.GetMD5(model.Password);
                }
                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                if (model.EmployeeID == 0)
                {
                    if (uploadPhoto != null)
                    {
                        string filePath = Path.Combine(Server.MapPath("~/Images"), uploadPhoto.FileName);
                        model.PhotoPath = uploadPhoto.FileName;
                        uploadPhoto.SaveAs(filePath);
                        int employeeID = HumanResourceBLL.Employee_Add(model);
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        model.PhotoPath = "";
                        int employeeID = HumanResourceBLL.Employee_Add(model);
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    if (uploadPhoto != null)
                    {
                        string filePath = Path.Combine(Server.MapPath("~/Images"), uploadPhoto.FileName);
                        model.PhotoPath = uploadPhoto.FileName;
                        uploadPhoto.SaveAs(filePath);
                        bool rs = HumanResourceBLL.Employee_Update(model);
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        Employee employee = HumanResourceBLL.Employee_Get(model.EmployeeID);
                        model.PhotoPath = employee.PhotoPath;
                        bool rs = HumanResourceBLL.Employee_Update(model);
                        return(RedirectToAction("Index"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message + ":" + ex.StackTrace);
                return(View(model));
            }
        }
        public ActionResult ListaArquivos(FormCollection Postpath)
        {
            ConvertMD5 objMD5 = new ConvertMD5();

            var pastaAtual = Postpath["pasta"];

            if ((pastaAtual.LastIndexOf("/") - 1) > 1)
            {
                string   _formataBreadcrumb = pastaAtual.Substring(1, pastaAtual.LastIndexOf("/") - 1);
                string[] _breadcrumb        = _formataBreadcrumb.Split('/');
                ViewData["breadcrumb"]        = _breadcrumb;
                ViewData["formataBreadcrumb"] = _formataBreadcrumb;
                ViewData["tamanhoBreadcrumb"] = _formataBreadcrumb.Length;
            }


            pastaAtual = pastaAtual.Substring(0, pastaAtual.LastIndexOf("/"));
            pastaAtual = pastaAtual.Substring(pastaAtual.LastIndexOf("/") + 1);

            if (pastaAtual == "" || pastaAtual == null)
            {
                pastaAtual = "[photoCloud]:";
            }
            ViewData["pasta"]     = pastaAtual; //.Replace(@"_", @" ");
            ViewData["diretorio"] = Postpath["pasta"];



            //pastaAtual.Substring(pastaAtual.LastIndexOf("/") + 1);

            string realPath;
            string path = Postpath["pasta"];
            string _diretorioBaseUsuario = null;

            string _usuarioId = PhotoCloud.Models.CryptographyRepository.Descriptografar(HttpContext.Request.Cookies[objMD5.getMD5Hash("UserCookieAuthentication")][objMD5.getMD5Hash("USUIDLOGD")].ToString());

            int IDUsuario;

            if (int.TryParse(_usuarioId, out IDUsuario))
            {
                photocloudEntities ContextoUsuario = new photocloudEntities();

                var Consulta = (from usuario in ContextoUsuario.pho_usuarios
                                where usuario.usu_id == IDUsuario
                                select usuario).SingleOrDefault();


                _diretorioBaseUsuario = Consulta.usu_diretoriobase;
            }
            //   ViewData["path"] = Postpath["pasta"];

            realPath = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + "/" + path);

            //   ViewData["realPath"] = realPath;

            //  or realPath = "FullPath of the folder on server"

            if (System.IO.File.Exists(realPath))
            {
                //http://stackoverflow.com/questions/1176022/unknown-file-type-mime
                return(base.File(realPath, "application/octet-stream"));
            }
            else if (System.IO.Directory.Exists(realPath))
            {
                //Uri url = Request.Url;

                ////Every path needs to end with slash
                //if (url.ToString().Last() != '/')
                //{
                //    Response.Redirect("/Explorer/" + path + "/");
                //}

                List <ListaDirModel> dirListModel = new List <ListaDirModel>();

                IEnumerable <string> dirList = Directory.EnumerateDirectories(realPath);
                foreach (string dir in dirList)
                {
                    DirectoryInfo d = new DirectoryInfo(dir);

                    ListaDirModel dirModel = new ListaDirModel();

                    dirModel.DirBase     = _diretorioBaseUsuario;
                    dirModel.Dir         = "/" + path + Path.GetFileName(dir) + "/";
                    dirModel.DirName     = Path.GetFileName(dir);
                    dirModel.DirAccessed = d.LastAccessTime;

                    dirListModel.Add(dirModel);
                }

                List <ListaFileModel> fileListModel = new List <ListaFileModel>();

                IEnumerable <string> fileList = Directory.EnumerateFiles(realPath);
                foreach (string file in fileList)
                {
                    FileInfo f = new FileInfo(file);

                    ListaFileModel fileModel = new ListaFileModel();

                    if (f.Extension.ToLower() != "php" && f.Extension.ToLower() != "aspx" && f.Extension.ToLower() != "asp")
                    {
                        fileModel.FileName          = Path.GetFileName(file);
                        fileModel.FileDirectoryName = "pho_fotos/" + _diretorioBaseUsuario + path + Path.GetFileName(file);
                        fileModel.FileAccessed      = f.LastAccessTime;
                        fileModel.FileSizeText      = (f.Length < 1024) ? f.Length.ToString() + " B" : f.Length / 1024 + " KB";
                        fileModel.FileExtension     = f.Extension.Replace(@".", @"").ToLower();

                        fileListModel.Add(fileModel);
                    }
                }

                ListaConteudoDirModel explorerModel = new ListaConteudoDirModel(dirListModel, fileListModel);

                return(PartialView(explorerModel));
            }
            else
            {
                return(Content(path + " não é um arquivo ou diretório válido."));
            }
            //  return Content(realPath);
        }
        public ActionResult ListaArquivos(FormCollection Postpath)
        {
            string _caminhoSolicitado      = Postpath["pasta"];
            string _pastaAtual             = "";
            string _diretorioPai           = "";
            string _caminhoCompleto        = "";
            string _diretorioBaseUsuario   = "";
            int?   _idUsuario              = null;
            string _cookieViewGridListHash = "";

            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;
            _idUsuario            = _retornoQueryUser.Uac_Fk.Usu_Id;

            _cookieViewGridListHash = "0000000000" + _idUsuario.ToString();
            _cookieViewGridListHash = _cookieViewGridListHash.Substring(_cookieViewGridListHash.Length - 10);

            _cookieViewGridListHash = ConverterMD5.getMD5Hash(CryptographyRepository.Criptografar("viewgridlist" + _cookieViewGridListHash));

            ViewData["cookieViewGridListHash"] = _cookieViewGridListHash;

            var _viewgridlist = HttpContext.Request.Cookies[_cookieViewGridListHash];

            if (_viewgridlist == null)
            {
                ViewData["viewgridlist"] = "grid";
            }
            else
            {
                ViewData["viewgridlist"] = _viewgridlist.Value.ToString();
            }


            if ((_caminhoSolicitado.LastIndexOf("/") - 1) > 1)
            {
                string   _formataBreadcrumb = _caminhoSolicitado.Substring(1, _caminhoSolicitado.LastIndexOf("/") - 1);
                string[] _breadcrumb        = _formataBreadcrumb.Split('/');
                ViewData["breadcrumb"]        = _breadcrumb;
                ViewData["formataBreadcrumb"] = _formataBreadcrumb;
                ViewData["tamanhoBreadcrumb"] = _formataBreadcrumb.Length;
            }

            _pastaAtual = _caminhoSolicitado.Substring(0, _caminhoSolicitado.LastIndexOf("/"));

            if (_caminhoSolicitado == "/")
            {
                _diretorioPai = "/";
            }
            else
            {
                _diretorioPai = _pastaAtual.Substring(0, _pastaAtual.LastIndexOf("/")) + "/";
            }


            _pastaAtual = _pastaAtual.Substring(_pastaAtual.LastIndexOf("/") + 1);

            if (_diretorioPai == "" || _diretorioPai == null)
            {
                _diretorioPai = "/";
            }

            if (_pastaAtual == "" || _pastaAtual == null)
            {
                _pastaAtual = "[photoCloud:]";
            }

            ViewData["diretorioPai"]   = _diretorioPai;
            ViewData["pastaAtual"]     = _pastaAtual;
            ViewData["diretorioAtual"] = _caminhoSolicitado;



            _caminhoCompleto = Server.MapPath("~/pho_fotos/" + _diretorioBaseUsuario + "/" + _caminhoSolicitado);

            if (System.IO.File.Exists(_caminhoCompleto))
            {
                //http://stackoverflow.com/questions/1176022/unknown-file-type-mime
                return(base.File(_caminhoCompleto, "application/octet-stream"));
            }
            else if (System.IO.Directory.Exists(_caminhoCompleto))
            {
                List <ListaDiretorios> list_listaDiretorios = new List <ListaDiretorios>();

                IEnumerable <string> diretorioLista = Directory.EnumerateDirectories(_caminhoCompleto);
                foreach (string dir in diretorioLista)
                {
                    //if (Path.GetFileName(dir) != _diretorioBaseUsuario + "_RECICLE")
                    //{
                    DirectoryInfo d = new DirectoryInfo(dir);

                    ListaDiretorios dirModel = new ListaDiretorios();

                    dirModel.DiretorioBase       = _diretorioBaseUsuario;
                    dirModel.Diretorio           = "/" + _caminhoSolicitado + Path.GetFileName(dir) + "/";
                    dirModel.DiretorioNome       = Path.GetFileName(dir);
                    dirModel.DiretorioDataAcesso = d.LastAccessTime;

                    list_listaDiretorios.Add(dirModel);
                    //}
                }

                int quant = list_listaDiretorios.Count;

                List <ListaArquivos> list_listaArquivos = new List <ListaArquivos>();

                IEnumerable <string> arquivoLista = Directory.EnumerateFiles(_caminhoCompleto);
                foreach (string fil in arquivoLista)
                {
                    FileInfo f = new FileInfo(fil);

                    ListaArquivos fileModel = new ListaArquivos();

                    if (f.Extension.ToLower() != "php" && f.Extension.ToLower() != "aspx" && f.Extension.ToLower() != "asp")
                    {
                        fileModel.ArquivoNome       = Path.GetFileName(fil);
                        fileModel.ArquivoDiretorio  = "pho_fotos/" + _diretorioBaseUsuario + _caminhoSolicitado + Path.GetFileName(fil);
                        fileModel.ArquivoCaminho    = _caminhoSolicitado + Path.GetFileName(fil);
                        fileModel.ArquivoDataAcesso = f.LastAccessTime;
                        fileModel.ArquivoTamanho    = (f.Length < 1024) ? f.Length.ToString() + " B" : f.Length / 1024 + " KB";
                        fileModel.ArquivoExtensao   = f.Extension.Replace(@".", @"").ToLower();

                        list_listaArquivos.Add(fileModel);
                    }
                }

                ListaDiretoriosArquivos explorerModel = new ListaDiretoriosArquivos(list_listaDiretorios, list_listaArquivos);

                return(PartialView(explorerModel));
            }
            else
            {
                return(Content("<div class='alert alert-danger' role='alert'>" + _caminhoSolicitado + " não é um arquivo ou diretório válido.</div>"));
            }
        }