Esempio n. 1
0
        public SuccessModel MoveCopyArchive(MoveCopyImageModel model)
        {
            SuccessModel successModel = new SuccessModel();

            if (model.SourceFolderId == model.DestinationFolderId)
            {
                successModel.Success = "Source and Destination the same";
                return(successModel);
            }
            try
            {
                string imageLinkId;
                using (var db = new OggleBoobleMySqlContext())
                {
                    ImageFile dbImageFile = db.ImageFiles.Where(i => i.Id == model.LinkId).FirstOrDefault();
                    if (dbImageFile == null)
                    {
                        successModel.Success = "link [" + model.LinkId + "] not found";
                        return(successModel);
                    }
                    imageLinkId = dbImageFile.Id;

                    var categoryImageLinks = db.CategoryImageLinks.Where(l => l.ImageCategoryId == model.DestinationFolderId).ToList();
                    if (model.Mode == "Copy")  // just add a rec to CategoryImageLink (which should be called File_Image)
                    {
                        MySqlDataContext.CategoryImageLink existingLink = categoryImageLinks.Where(l => l.ImageLinkId == imageLinkId).FirstOrDefault();
                        if (existingLink != null)
                        {
                            successModel.Success = "Link already exists";
                        }
                        else
                        {
                            db.CategoryImageLinks.Add(new MySqlDataContext.CategoryImageLink()
                            {
                                ImageCategoryId = model.DestinationFolderId,
                                ImageLinkId     = imageLinkId,
                                SortOrder       = 999
                            });
                            db.SaveChanges();
                            successModel.Success = "ok";
                        }
                    }
                    else  // Archive / Move
                    {
                        var oldCatImageLink = db.CategoryImageLinks
                                              .Where(c => c.ImageCategoryId == model.SourceFolderId && c.ImageLinkId == dbImageFile.Id).First();
                        db.CategoryImageLinks.Add(new MySqlDataContext.CategoryImageLink()
                        {
                            ImageCategoryId = model.DestinationFolderId,
                            ImageLinkId     = dbImageFile.Id,
                            SortOrder       = oldCatImageLink.SortOrder
                        });
                        db.SaveChanges();
                        if (model.Mode == "Move")
                        {
                            db.CategoryImageLinks.Remove(oldCatImageLink);
                        }
                        db.SaveChanges();
                    }
                    // determine if this is the first image added to folder
                    successModel.ReturnValue = db.CategoryImageLinks.Where(c => c.ImageCategoryId == model.DestinationFolderId).Count().ToString();
                }
                successModel.Success = "ok";
            }
            catch (Exception ex)
            {
                successModel.Success = Helpers.ErrorDetails(ex);
            }
            return(successModel);
        }
Esempio n. 2
0
        public string MoveLink(string linkId, int destinationFolderId, string request)
        {
            string success;

            try
            {
                string ftpRepo = imgRepo.Substring(7);
                using (var db = new OggleBoobleMySqlContext())
                {
                    ImageFile dbImageFile = db.ImageFiles.Where(i => i.Id == linkId).First();
                    string    ext         = dbImageFile.FileName.Substring(dbImageFile.FileName.LastIndexOf("."));

                    CategoryFolder dbSourceFolder = db.CategoryFolders.Where(f => f.Id == dbImageFile.FolderId).First();
                    string         sourceFtpPath  = ftpHost + ftpRepo + "/" + dbSourceFolder.FolderPath;
                    string         fileName       = dbImageFile.FileName;
                    //string assumedFileName = dbSourceFolder.FolderName + "_" + linkId + ext;

                    CategoryFolder dbDestFolder = db.CategoryFolders.Where(i => i.Id == destinationFolderId).First();
                    string         destFtpPath  = ftpHost + ftpRepo + "/" + dbDestFolder.FolderPath;

                    string newFileName = dbDestFolder.FolderName + "_" + linkId + ext;
                    if (dbSourceFolder.Id == dbDestFolder.Parent)
                    {
                        newFileName = dbSourceFolder.FolderName + "_" + linkId + ext;
                    }

                    if (!FtpUtilies.DirectoryExists(destFtpPath))
                    {
                        FtpUtilies.CreateDirectory(destFtpPath);
                    }

                    success = FtpUtilies.MoveFile(sourceFtpPath + "/" + fileName, destFtpPath + "/" + newFileName);

                    if (success == "ok")
                    {  // update ImageFile
                        dbImageFile.FileName = newFileName;
                        dbImageFile.FolderId = destinationFolderId;

                        // create new link
                        db.CategoryImageLinks.Add(new MySqlDataContext.CategoryImageLink()
                        {
                            ImageCategoryId = destinationFolderId,
                            ImageLinkId     = linkId,
                            SortOrder       = 1746
                        });

                        if (request == "MOV")
                        {  // update link
                            MySqlDataContext.CategoryImageLink existinglink = db.CategoryImageLinks
                                                                              .Where(l => l.ImageLinkId == linkId && l.ImageCategoryId == dbSourceFolder.Id).First();
                            db.CategoryImageLinks.Remove(existinglink);
                        }
                        //if (request == "ARK")


                        db.SaveChanges();
                        success = "ok";
                    }
                }
            }
            catch (Exception ex) { success = Helpers.ErrorDetails(ex); }
            return(success);
        }