public ActionResult CreateFolder(string folderName, string clientDateTime)
        {
            if (folderName.Length > 25)
            {
                Error("Folder name should be 25 characters maximum!!!");
                return(RedirectToAction("ListAllContent"));
            }

            var userData = _readOnlyRepository.First <Account>(x => x.EMail == User.Identity.Name);

            if (userData.Files.Count(l => l.Name == folderName) > 0)
            {
                Error("Folder already exists!!!");
                return(RedirectToAction("ListAllContent"));
            }

            var actualPath = Session["ActualPath"].ToString();

            var putFolder = new PutObjectRequest {
                BucketName = userData.BucketName, Key = actualPath + folderName + "/", ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);
            AddActivity("El usuario ha creado el folder " + folderName);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + actualPath + "/"+folderName);

            //var folderInfo = new DirectoryInfo(serverFolderPath);

            //if (folderInfo.Exists)
            //{
            //    Error("Folder already exists!!!");
            //    return RedirectToAction("ListAllContent");
            //}
            var clientDate = Convert.ToDateTime(clientDateTime);

            userData.Files.Add(new File
            {
                Name         = folderName,
                CreatedDate  = clientDate,
                FileSize     = 0,
                IsArchived   = false,
                IsDirectory  = true,
                ModifiedDate = clientDate,
                Type         = "",
                Url          = actualPath
            });

            //var result=Directory.CreateDirectory(serverFolderPath);

            //if(!result.Exists)
            //    Error("The folder was not created!!! Try again please!!!");
            //else
            //{
            Success("The folder was created successfully!!!");
            _writeOnlyRepository.Update(userData);
            //}

            return(RedirectToAction("ListAllContent"));
        }
예제 #2
0
        public ActionResult AccountSignUp(AccountSignUpModel model)
        {
            var result = _readOnlyRepository.Query <Account>(a => a.EMail == model.EMail);

            if (result.Any())
            {
                Error("Email account is already registered in this site!!!");
                return(View(model));
            }

            var account = Mapper.Map <Account>(model);

            account.IsArchived  = false;
            account.IsAdmin     = false;
            account.IsBlocked   = false;
            account.SpaceLimit  = 2408;
            account.Password    = EncriptacionMD5.Encriptar(model.Password);
            account.Isconfirmed = false;
            account.BucketName  = string.Format("mdp.{0}", Guid.NewGuid());

            //var account = new Account
            //{
            //    Name = accountModel.Name,
            //    LastName = accountModel.LastName,
            //    EMail = accountModel.EMail,
            //    IsArchived = false,
            //    IsBlocked = false,
            //    SpaceLimit = 500,
            //    UsedSpace = 0,
            //    Password = EncriptacionMD5.Encriptar(accountModel.Password)
            //};
            //account.AddRole(new Role{Name = "User",IsArchived = false});

            var createdAccount = _writeOnlyRepository.Create(account);

            var token = Convert.ToInt64(Session["userReferralId"]);

            if (token != 0)
            {
                var userReferring = _readOnlyRepository.GetById <Account>(token);
                userReferring.Referrals.Add(createdAccount);
                _writeOnlyRepository.Update(userReferring);
            }

            var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + account.EMail);

            Directory.CreateDirectory(serverFolderPath);

            var newBucket = new PutBucketRequest {
                BucketName = account.BucketName
            };

            AWSClient.PutBucket(newBucket);

            var putFolder = new PutObjectRequest {
                BucketName = account.BucketName, Key = "Shared/", ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);

            var sharedDirectory = serverFolderPath + "/Shared";

            Directory.CreateDirectory(sharedDirectory);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + account.EMail);
            //Directory.CreateDirectory(serverFolderPath);

            //var sharedDirectory =serverFolderPath + "/Shared";
            //Directory.CreateDirectory(sharedDirectory);

            if (createdAccount.Files == null)
            {
                createdAccount.Files = new List <Domain.File>();
            }
            if (createdAccount.History == null)
            {
                createdAccount.History = new List <Actividades>();
            }

            createdAccount.Files.Add(new Domain.File
            {
                CreatedDate  = DateTime.Now,
                FileSize     = 0,
                IsArchived   = false,
                IsDirectory  = true,
                Name         = "Shared",
                Url          = "",
                Type         = "",
                ModifiedDate = DateTime.Now
            });
            _writeOnlyRepository.Update(createdAccount);



            AddActivity("El usuario se registro.", createdAccount);


            // ESTOOOOOOO
            #region EnvioCorreoParaNotificacion

            var fechaActual = DateTime.Now.Date;

            var pass        = result.FirstOrDefault().Id;
            var data        = "" + fechaActual.Day + fechaActual.Month + fechaActual.Year;
            var tokenConfir = pass + ";" + EncriptacionMD5.Encriptar(data);

            //var url = "http://minidropbox-1.apphb.com/PasswordReset/PasswordReset";
            var url = "http://minidropboxclase.apphb.com/Account/Confirmed";

            var emailBody = new StringBuilder("<b>Confirm your account of MiniDropbox</b>");
            emailBody.Append("<br/>");
            emailBody.Append("<br/>");
            emailBody.Append("<b>" + url + "?token=" + tokenConfir + "<b>");
            emailBody.Append("<br/>");
            emailBody.Append("<br/>");
            emailBody.Append("<b>This link is only valid through " + DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year + "</b>");

            if (MailSender.SendEmail(model.EMail, "Confirm your account of MiniDropbox", emailBody.ToString()))
            {
                return(Cancelar());
            }

            Error("E-Mail failed to be sent, please try again!!!");
            return(View(model));

            #endregion


            return(Cancelar());
        }
        public void RenameFolder(long objectId, string oldObjectName, string newObjectName, string clientDateTime2)
        {
            var userData = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileData = userData.Files.FirstOrDefault(f => f.Id == objectId);

            var userFiles = userData.Files.Where(t => t.Url.Contains(fileData.Name));

            var clientDate = Convert.ToDateTime(clientDateTime2);
            var newFoldUrl = string.IsNullOrEmpty(fileData.Url) || string.IsNullOrWhiteSpace(fileData.Url)
                ? newObjectName + "/"
                : fileData.Url.Replace(oldObjectName, newObjectName) + fileData.Name + "/";

            var putFolder = new PutObjectRequest {
                BucketName = userData.BucketName, Key = newFoldUrl, ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);

            foreach (var file in userFiles)
            {
                if (file == null)
                {
                    continue;
                }

                if (file.IsDirectory)
                {
                    RenameFolder(file.Id, oldObjectName, newObjectName, clientDateTime2);
                }
                else
                {
                    //Copy the object
                    var newUrl = file.Url.Replace(oldObjectName, newObjectName) + file.Name;

                    var copyRequest = new CopyObjectRequest
                    {
                        SourceBucket      = userData.BucketName,
                        SourceKey         = file.Url + file.Name,
                        DestinationBucket = userData.BucketName,
                        DestinationKey    = newUrl,
                        CannedACL         = S3CannedACL.PublicRead
                    };

                    AWSClient.CopyObject(copyRequest);

                    //Delete the original
                    var deleteRequest = new DeleteObjectRequest
                    {
                        BucketName = userData.BucketName,
                        Key        = file.Url + file.Name
                    };
                    AWSClient.DeleteObject(deleteRequest);

                    file.ModifiedDate = clientDate;
                    file.Url          = file.Url.Replace(oldObjectName, newObjectName);
                    _writeOnlyRepository.Update(file);
                }
            }//fin foreach

            var deleteFolderRequest = new DeleteObjectRequest
            {
                BucketName = userData.BucketName,
                Key        = fileData.Url + fileData.Name + "/"
            };

            AWSClient.DeleteObject(deleteFolderRequest);
            var newFolderUrl = fileData.Url.Replace(oldObjectName, newObjectName);

            fileData.Url = newFolderUrl;

            _writeOnlyRepository.Update(fileData);
        }
        private bool fileUploader(HttpPostedFileBase fileControl, string user, string clientDateTime)
        {
            if (fileControl == null)
            {
                Error("There was a problem uploading the file  , please try again!!!");
                return(false);
            }
            var fileSize = fileControl.ContentLength;

            if (fileSize > 10485760)
            {
                Error("The file must be of 10 MB or less!!!");
                return(false);
            }
            var userData   = _readOnlyRepository.First <Account>(x => x.EMail == User.Identity.Name);
            var actualPath = Session["ActualPath"].ToString();
            var fileName   = Path.GetFileName(fileControl.FileName);
            var clientDate = Convert.ToDateTime(clientDateTime);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/"+actualPath);

            //var directoryInfo = new DirectoryInfo(serverFolderPath);
            //if (!directoryInfo.Exists)
            //{
            //    directoryInfo.Create();
            //}
            //var sharedDirectory = new DirectoryInfo( Server.MapPath("~/App_Data/UploadedFiles/"+User.Identity.Name + "/Shared"));
            //if (!sharedDirectory.Exists)
            //{
            //    sharedDirectory.Create();
            //    userData.Files.Add(new File
            //    {
            //        Name = "Shared",
            //        CreatedDate = DateTime.Now,
            //        ModifiedDate = DateTime.Now,
            //        FileSize = 0,
            //        Type = "",
            //        Url = sharedDirectory.FullName,
            //        IsArchived = false,
            //        IsDirectory = true
            //    });
            //}
            //var path = Path.Combine(serverFolderPath, fileName);
            //var fileInfo = new DirectoryInfo(serverFolderPath+fileName);
            var putObjectRequest = new PutObjectRequest
            {
                BucketName  = userData.BucketName,
                Key         = actualPath + fileName,
                InputStream = fileControl.InputStream
            };
            var putResponse = AWSClient.PutObject(putObjectRequest);

            if (userData.Files.Count(l => l.Name == fileName && l.Url.EndsWith(actualPath) && !l.IsArchived) > 0)//Actualizar Info Archivo
            {
                var bddInfo = userData.Files.FirstOrDefault(f => f.Name == fileName);
                //bddInfo.ModifiedDate = clientDate;
                //bddInfo.Type = fileControl.ContentType;
                //bddInfo.FileSize = fileSize;
                bddInfo.FileVersions.Add(new FileVersion
                {
                    AmazonVersionId = putResponse.VersionId,
                    CreationDate    = clientDate,
                    FileSize        = fileSize,
                    IsArchived      = false
                });
                _writeOnlyRepository.Update(bddInfo);
            }
            else//Archivo nuevo
            {
                var newFile = new File
                {
                    Name         = fileName,
                    CreatedDate  = clientDate,
                    ModifiedDate = clientDate,
                    FileSize     = fileSize,
                    Type         = fileControl.ContentType,
                    Url          = actualPath,
                    IsArchived   = false,
                    IsDirectory  = false
                };
                //if (userData.Files == null)//Si es primer archivo subido por el usuario
                //{
                //    userData.Files = new List<File> {newFile};
                //    var retorno = _writeOnlyRepository.Update(userData);
                //    var file = retorno.Files.FirstOrDefault();
                //    file.FileVersions = new List<FileVersion>();
                //    file.FileVersions.Add(new FileVersion
                //    {
                //        AmazonVersionId = putResponse.VersionId,
                //        CreationDate = clientDate,
                //        FileSize = fileSize,
                //        IsArchived = false
                //    });
                //    _writeOnlyRepository.Update(file);
                //}
                //else
                //{
                userData.Files.Add(newFile);
                var archivo = _writeOnlyRepository.Update(userData).Files.LastOrDefault();
                archivo.FileVersions = new List <FileVersion>();
                archivo.FileVersions.Add(new FileVersion
                {
                    AmazonVersionId = putResponse.VersionId,
                    CreationDate    = clientDate,
                    FileSize        = fileSize,
                    IsArchived      = false
                });
                _writeOnlyRepository.Update(archivo);

                //}
            }
            //fileControl.SaveAs(path);

            return(true);
        }