Пример #1
0
        public BreadCrumbSuccessModel GetBreadcrumbs(int folderId)
        {
            var breadCrumbs = new BreadCrumbSuccessModel();

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder thisFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    breadCrumbs.BreadCrumbs.Add(new BreadCrumbItemModel()
                    {
                        FolderId        = thisFolder.Id,
                        FolderName      = thisFolder.FolderName,
                        ParentId        = thisFolder.Parent,
                        IsInitialFolder = true
                    });
                    var parent = thisFolder.Parent;
                    while (parent > 1)
                    {
                        CategoryFolder parentDb = db.CategoryFolders.Where(f => f.Id == parent).First();
                        breadCrumbs.BreadCrumbs.Add(new BreadCrumbItemModel()
                        {
                            FolderId        = parentDb.Id,
                            FolderName      = parentDb.FolderName,
                            IsInitialFolder = false
                        });
                        parent = parentDb.Parent;
                    }
                    breadCrumbs.Success = "ok";
                }
            }
            catch (Exception ex) { breadCrumbs.Success = Helpers.ErrorDetails(ex); }
            return(breadCrumbs);
        }
        public GetInfoSuccessModel GeFolderIdFromtPageName(string folderName)
        {
            GetInfoSuccessModel getInfoSuccess = new GetInfoSuccessModel();

            try
            {
                using (OggleBoobleMySqContext dbm = new OggleBoobleMySqContext())
                {
                    CategoryFolder categoryFolder = dbm.CategoryFolders.Where(f => f.FolderName == folderName).FirstOrDefault();
                    if (categoryFolder != null)
                    {
                        getInfoSuccess.PageId  = categoryFolder.Id;
                        getInfoSuccess.Success = "ok";
                    }
                    else
                    {
                        getInfoSuccess.Success = "page not found";
                    }
                }
            }
            catch (Exception ex)
            {
                getInfoSuccess.Success = Helpers.ErrorDetails(ex);
            }
            return(getInfoSuccess);
        }
Пример #3
0
 public string Build(int folderId, bool recurr)
 {
     string success = "";
     {
         try
         {
             using (OggleBoobleContext db = new OggleBoobleContext())
             {
                 //SignalRHost.ProgressHub.PostToClient("Creating static files");
                 //VwDirTree vwDirTree = db.VwDirTrees.Where(v => v.Id == folderId).First();
                 //totalFiles = Math.Max(vwDirTree.GrandTotalFiles, vwDirTree.TotalFiles);
                 //SignalRHost.ProgressHub.ShowProgressBar(totalFiles, 0);
                 CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                 var            rootFolder     = categoryFolder.RootFolder;
                 if (rootFolder == "centerfold")
                 {
                     rootFolder = "playboy";
                 }
                 success = CreatePage(folderId, rootFolder,
                                      categoryFolder.FolderName.Replace(".OGGLEBOOBLE.COM", ""), db, recurr);
             }
         }
         catch (Exception e) { success = Helpers.ErrorDetails(e); }
         return(success);
     }
 }
Пример #4
0
        public ImageInfoModel getFullImageDetails(int folderId, string linkId)
        {
            var timer = new System.Diagnostics.Stopwatch();

            timer.Start();
            var imageInfo = new ImageInfoModel();

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    //CategoryImageLink dbCategoryImageLink= db.CategoryImageLinks.Where(l=>l.ImageLinkId)

                    CategoryFolder dbPageFolder = db.CategoryFolders.Where(f => f.Id == folderId).FirstOrDefault();
                    imageInfo.RootFolder = dbPageFolder.RootFolder;
                    imageInfo.FolderPath = dbPageFolder.FolderPath;

                    ImageFile dbImageFile = db.ImageFiles.Where(i => i.Id == linkId).FirstOrDefault();
                    if (dbImageFile == null)
                    {
                        imageInfo.Success = "no image link found"; return(imageInfo);
                    }

                    if (dbImageFile.FolderId != folderId)
                    {
                        var dbModelFolder = db.CategoryFolders.Where(f => f.Id == dbImageFile.FolderId).FirstOrDefault();
                        if (dbModelFolder == null)
                        {
                            imageInfo.Success = "no image link folderId file found"; return(imageInfo);
                        }
                        imageInfo.ModelFolderId   = dbModelFolder.Id;
                        imageInfo.ModelFolderName = dbModelFolder.FolderName;
                    }

                    imageInfo.FolderName    = dbPageFolder.FolderName;
                    imageInfo.Height        = dbImageFile.Height;
                    imageInfo.FileName      = dbImageFile.FileName;
                    imageInfo.Link          = dbImageFile.Id;
                    imageInfo.Width         = dbImageFile.Width;
                    imageInfo.Size          = dbImageFile.Size;
                    imageInfo.LastModified  = dbImageFile.Acquired.ToShortDateString();
                    imageInfo.ExternalLink  = dbImageFile.ExternalLink;
                    imageInfo.InternalLinks = (from l in db.CategoryImageLinks
                                               join f in db.CategoryFolders on l.ImageCategoryId equals f.Id
                                               where l.ImageLinkId == linkId && l.ImageCategoryId != folderId
                                               select new { folderId = f.Id, folderName = f.FolderName })
                                              .ToDictionary(i => i.folderId, i => i.folderName);
                }
                imageInfo.Success = "ok";
            }
            catch (Exception ex) {
                imageInfo.Success = Helpers.ErrorDetails(ex);
            }
            timer.Stop();
            System.Diagnostics.Debug.WriteLine("GetImageLinks took: " + timer.Elapsed);
            return(imageInfo);
        }
Пример #5
0
        public AddVisitorSuccessModel AddVisitor(AddVisitorModel visitorData)
        {
            var addVisitorSuccess = new AddVisitorSuccessModel();

            try
            {
                using (OggleBoobleMySqContext db = new OggleBoobleMySqContext())
                {
                    CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == visitorData.PageId).FirstOrDefault();
                    if (categoryFolder != null)
                    {
                        addVisitorSuccess.PageName = categoryFolder.FolderName;
                    }

                    var existingVisitor = db.Visitors.Where(v => v.IpAddress == visitorData.IpAddress).FirstOrDefault();
                    if (existingVisitor != null)
                    {
                        addVisitorSuccess.VisitorId    = existingVisitor.VisitorId;
                        addVisitorSuccess.IsNewVisitor = false;
                    }
                    else
                    {
                        // We have a new visitor!
                        //string dnsHostName = Dns.GetHostName();
                        //IPHostEntry ipEntry = Dns.GetHostEntry(dnsHostName);
                        //IPAddress[] iPAddresses = ipEntry.AddressList;
                        //string ipAddress = iPAddresses[iPAddresses.Length - 1].ToString();
                        string  newVisitorId = Guid.NewGuid().ToString();
                        Visitor newVisitor   = new Visitor()
                        {
                            VisitorId    = newVisitorId,
                            InitialPage  = visitorData.PageId,
                            City         = visitorData.City,
                            Country      = visitorData.Country,
                            GeoCode      = visitorData.GeoCode,
                            Region       = visitorData.Region,
                            InitialVisit = DateTime.Now,
                            IpAddress    = visitorData.IpAddress
                        };
                        db.Visitors.Add(newVisitor);
                        db.SaveChanges();

                        addVisitorSuccess.VisitorId    = newVisitorId;
                        addVisitorSuccess.IsNewVisitor = true;
                    }
                    addVisitorSuccess.Success = "ok";
                }
            }
            catch (Exception ex)
            {
                addVisitorSuccess.Success = Helpers.ErrorDetails(ex);
            }
            return(addVisitorSuccess);
        }
Пример #6
0
 public IErrorsInfo CreateMappingForFolder(CategoryFolder fodler)
 {
     try
     {
     }
     catch (Exception ex)
     {
         string mes = ex.Message;
         DMEEditor.AddLogMessage(ex.Message, "Could not create fodler map" + mes, DateTime.Now, -1, mes, Errors.Failed);
     };
     return(DMEEditor.ErrorObject);
 }
Пример #7
0
        private void CreateRedirectPage(int folderId, StaticPageResultsModel resultsModel, OggleBoobleMySqlContext db, bool recurr)
        {
            try
            {
                CategoryFolder dbFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                if (((dbFolder.FolderType == "singleModel") || (dbFolder.FolderType == "singleParent")) && (dbFolder.RootFolder != "magazine"))
                {
                    string pageLocation = httpLocation + "album.html?folder=" + folderId;
                    var    sb           = new StringBuilder("<html>\n<head>\n");
                    sb.Append(createMetaHead(dbFolder.FolderName, pageLocation));
                    sb.Append("</head><body>\n");

                    var babepediaTrackBackLink = db.TrackbackLinks.Where(t => t.PageId == folderId && t.SiteCode == "BAB").FirstOrDefault();
                    if (babepediaTrackBackLink != null)
                    {
                        sb.Append("<div><a href='" + babepediaTrackBackLink.Href + "'>Babepedia</a></div>\n");
                    }
                    sb.Append("<script>\nif(document.URL.indexOf(\"?\")>0)\n" +
                              "{\n" +
                              "let paramLink='" + pageLocation + "&'.concat(document.URL.substring(document.URL.indexOf(\"?\")+1));\n" +
                              "(function(){window.location.href=paramLink;})();}\n" +
                              "else\n" +
                              " (function(){window.location.href='" + pageLocation + "&calledFrom=static';})();\n</script>\n");
                    sb.Append("</body>\n</html>");

                    string writeToDiskSuccess = WriteFileToDisk(sb.ToString(), dbFolder.FolderName, folderId, db);
                    if (writeToDiskSuccess != "ok")
                    {
                        resultsModel.Errors.Add(writeToDiskSuccess + "  " + dbFolder.FolderName);
                        resultsModel.Success = writeToDiskSuccess + "  " + dbFolder.FolderName;
                    }
                    else
                    {
                        resultsModel.PagesCreated++;
                    }
                }
                if (recurr)
                {
                    if (resultsModel.Success == "ok")
                    {
                        List <CategoryFolder> categoryFolders = db.CategoryFolders.Where(f => f.Parent == folderId).ToList();
                        foreach (CategoryFolder dbCategoryFolder in categoryFolders)
                        {
                            CreateRedirectPage(dbCategoryFolder.Id, resultsModel, db, true);
                        }
                    }
                }
                resultsModel.FoldersProcessed++;
            }
            catch (Exception e) { resultsModel.Success = Helpers.ErrorDetails(e); }
        }
Пример #8
0
        private void XXGoDeepRecurr(int parentNode)
        {
            List <int>     childFolders    = null;
            CategoryFolder dbThisCatFolder = null;

            using (var db = new OggleBoobleMySqlContext())
            {
                dbThisCatFolder = db.CategoryFolders.Where(f => f.Id == parentNode).First();
                int fileLinkCount = db.CategoryImageLinks.Where(l => l.ImageCategoryId == parentNode).Count();
                childFolders = db.CategoryFolders.Where(f => f.Parent == parentNode).Select(f => f.Id).ToList();
                childFolders.AddRange(db.StepChildren.Where(s => s.Parent == parentNode).Select(s => s.Child).ToList());
                if ((dbThisCatFolder.Files != fileLinkCount) || (dbThisCatFolder.SubFolders != childFolders.Count()))
                {
                    dbThisCatFolder.Files      = fileLinkCount;
                    dbThisCatFolder.SubFolders = childFolders.Count();
                    db.SaveChanges();
                }
            }

            int thisLevelTotalFiles   = 0;
            int thisLevelTotalSubDirs = 0;

            foreach (int childFolder in childFolders)
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    thisLevelTotalFiles += db.ImageFiles.Where(i => i.FolderId == childFolder).Count();
                    if (db.CategoryFolders.Where(i => i.Parent == childFolder).FirstOrDefault() != null)
                    {
                        thisLevelTotalSubDirs += db.CategoryFolders.Where(f => f.Parent == childFolder).Count();
                    }
                }
                //GoDeepRecurr(childFolder);
            }

            using (var db = new OggleBoobleMySqlContext())
            {
                if (db.CategoryFolders.Where(i => i.Parent == parentNode).FirstOrDefault() != null)
                {
                    thisLevelTotalFiles   = db.CategoryFolders.Where(i => i.Parent == parentNode).Select(f => f.Files).Sum();
                    thisLevelTotalSubDirs = db.CategoryFolders.Where(f => f.Parent == parentNode).Select(f => f.SubFolders).Sum();
                }

                if ((dbThisCatFolder.TotalSubFolders != thisLevelTotalSubDirs) || (dbThisCatFolder.TotalChildFiles != thisLevelTotalFiles))
                {
                    dbThisCatFolder.TotalSubFolders = thisLevelTotalSubDirs;
                    dbThisCatFolder.TotalChildFiles = thisLevelTotalFiles;
                    db.SaveChanges();
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Display the directory for the specified CategoryFolder
        /// </summary>
        public override bool ViewFromFolder(FolderBase folder, Address address, FolderOptions flags)
        {
            CategoryFolder category = folder as CategoryFolder;

            if (category != null)
            {
                if (flags.HasFlag(FolderOptions.ClearFilter))
                {
                    _currentFilterString = null;
                }
                _currentCategory = category;
                _items           = ItemsForView();
                SortItems();
            }
            return(true);
        }
Пример #10
0
        public string RenameFolder(int folderId, string newFolderName)
        {
            string success;

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder rowToRename = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    rowToRename.FolderName = newFolderName;
                    db.SaveChanges();
                }
                success = "ok";
            }
            catch (Exception ex) { success = Helpers.ErrorDetails(ex); }
            return(success);
        }
Пример #11
0
        public string UpdateFolderImage(string linkId, int folderId, string level)
        {
            string success = "";

            try
            {
                using (var mdb = new OggleBoobleMySqlContext())
                {
                    CategoryFolder dbCategoryFolder = mdb.CategoryFolders.Where(f => f.Id == folderId).First();
                    if (level == "folder")
                    {
                        dbCategoryFolder.FolderImage = linkId;
                    }
                    else
                    {
                        CategoryFolder dbParentCategoryFolder = mdb.CategoryFolders.Where(f => f.Id == dbCategoryFolder.Parent).First();
                        dbParentCategoryFolder.FolderImage = linkId;
                    }
                    mdb.SaveChanges();
                }
                //using (var db = new OggleBoobleMSSqlContext())
                //{
                //    CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).FirstOrDefault();
                //    if (level == "folder")
                //    {
                //        dbCategoryFolder.FolderImage = linkId;
                //    }
                //    else
                //    {
                //        CategoryFolder dbParentCategoryFolder = db.CategoryFolders.Where(f => f.Id == dbCategoryFolder.Parent).First();
                //        dbParentCategoryFolders.FolderImage = linkId;
                //    }
                //    db.SaveChanges();
                //}
                success = "ok";
            }
            catch (Exception ex)
            {
                success = Helpers.ErrorDetails(ex);
            }
            return(success);
        }
Пример #12
0
        public ImageCommentSuccessModel Add(ImageCommentModel imageCommentModel)
        {
            var imageCommentSuccessModel = new ImageCommentSuccessModel();

            try
            {
                ImageComment dbNewImageComment = new ImageComment();
                dbNewImageComment.Id           = Guid.NewGuid().ToString();
                dbNewImageComment.Posted       = DateTime.Now;
                dbNewImageComment.ImageLinkId  = imageCommentModel.ImageLinkId;
                dbNewImageComment.CommentText  = imageCommentModel.CommentText;
                dbNewImageComment.CommentTitle = imageCommentModel.CommentTitle;
                dbNewImageComment.CalledFrom   = imageCommentModel.CalledFrom;
                dbNewImageComment.VisitorId    = imageCommentModel.VisitorId;
                using (var db = new OggleBoobleMySqlContext())
                {
                    db.ImageComments.Add(dbNewImageComment);
                    db.SaveChanges();

                    CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == imageCommentModel.FolderId).FirstOrDefault();
                    imageCommentSuccessModel.FolderName = categoryFolder.FolderName;
                    Visitor visitor = db.Visitors.Where(v => v.VisitorId == imageCommentModel.VisitorId).FirstOrDefault();
                    if (visitor != null)
                    {
                        imageCommentSuccessModel.VisitorInfo = visitor.City + " " + visitor.Region + " " + visitor.Country;
                    }
                    RegisteredUser dbRegisteredUser = db.RegisteredUsers.Where(u => u.VisitorId == imageCommentModel.VisitorId).FirstOrDefault();
                    if (dbRegisteredUser != null)
                    {
                        imageCommentSuccessModel.UserName = dbRegisteredUser.UserName;
                    }

                    imageCommentSuccessModel.Success = "ok";
                }
            }
            catch (Exception ex)
            {
                imageCommentSuccessModel.Success = Helpers.ErrorDetails(ex);
            }
            return(imageCommentSuccessModel);
        }
Пример #13
0
        public AlbumInfoModel GetQucikHeader(int folderId)
        {
            var albumInfo = new AlbumInfoModel();

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    albumInfo.RootFolder = dbCategoryFolder.RootFolder;
                    albumInfo.FolderName = dbCategoryFolder.FolderName;
                    albumInfo.FolderType = dbCategoryFolder.FolderType;
                }
                albumInfo.Success = "ok";
            }
            catch (Exception ex)
            {
                albumInfo.Success = Helpers.ErrorDetails(ex);
            }
            return(albumInfo);
        }
Пример #14
0
        private void RefreshForum(DirForum forum)
        {
            if (forum != null)
            {
                forumName.Text   = forum.Name;
                forumImage.Image = CategoryFolder.IconForCategory(forum.Cat);
                forumTitle.Text  = forum.Title;

                string descText = string.Format("<font face=\"Arial\" size=\"11px\"><div style=\"color:rgb({0});\">{1}</div></font>", UI.ToString(SystemColors.ControlText), forum.Desc);
                descText = descText.Replace("\n", "<br/>");
                forumDescription.Text = descText;

                if (forum.IsClosed)
                {
                    statusField.Text = Resources.JoinClosedForum;
                    joinButton.Text  = Resources.RequestAdmittance;
                }

                ResizeForm();
            }
        }
Пример #15
0
        /// <summary>
        /// Callback after the forum details are refreshed from the server, whether or not they
        /// succeed. The e.Forum parameter is null if the forum doesn't exist.
        /// </summary>
        private void OnForumUpdated(object sender, DirForum forum)
        {
            Platform.UIThread(this, delegate
            {
                _forum = forum;
                if (_forum != null)
                {
                    RefreshForum(_forum);
                }
                else
                {
                    forumName.Text     = _forumName;
                    forumImage.Image   = CategoryFolder.IconForCategory("CIX");
                    statusField.Text   = Resources.JoinNoSuchForum;
                    cancelButton.Text  = Resources.Close;
                    joinButton.Visible = false;
                    joinButton.Enabled = false;

                    ResizeForm();
                }
            });
        }
Пример #16
0
        public SuccessModel Create(int parentId, string newFolderName, string folderType)
        {
            SuccessModel successModel = new SuccessModel();

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    string ftpRepo      = imgRepo.Substring(7);
                    var    dbDestParent = db.CategoryFolders.Where(i => i.Id == parentId).First();
                    string newFtpPath   = ftpHost + ftpRepo + "/" + dbDestParent.FolderPath + "/" + newFolderName;
                    if (FtpUtilies.DirectoryExists(newFtpPath))
                    {
                        successModel.Success = "folder already exists";
                        return(successModel);
                    }

                    successModel.Success = FtpUtilies.CreateDirectory(newFtpPath);
                    if (successModel.Success == "ok")
                    {
                        CategoryFolder newFolder = new CategoryFolder();
                        //newFolder.Id = newFolderId;
                        newFolder.Parent     = parentId;
                        newFolder.FolderName = newFolderName.Trim();
                        newFolder.FolderType = folderType;
                        newFolder.RootFolder = dbDestParent.RootFolder;
                        newFolder.SortOrder  = 0;
                        newFolder.FolderPath = dbDestParent.FolderPath + "/" + newFolderName;
                        db.CategoryFolders.Add(newFolder);
                        db.SaveChanges();
                        int newFolderId = newFolder.Id;
                        successModel.ReturnValue = newFolderId.ToString();
                        successModel.Success     = "ok";
                    }
                }
            }
            catch (Exception ex) { successModel.Success = Helpers.ErrorDetails(ex); }
            return(successModel);
        }
Пример #17
0
        public string AddUpdate(FolderDetailModel model)
        {
            string success = "";

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == model.FolderId).First();
                    if (categoryFolder.FolderName != model.FolderName)
                    {
                        categoryFolder.FolderName = model.FolderName;
                    }

                    FolderDetail dbFolderDetail = db.FolderDetails.Where(d => d.FolderId == model.FolderId).FirstOrDefault();
                    if (dbFolderDetail == null)
                    {
                        dbFolderDetail = new FolderDetail {
                            FolderId = model.FolderId
                        };
                        db.FolderDetails.Add(dbFolderDetail);
                        db.SaveChanges();
                        dbFolderDetail = db.FolderDetails.Where(d => d.FolderId == model.FolderId).First();
                    }
                    dbFolderDetail.Birthday       = model.Birthday;
                    dbFolderDetail.FakeBoobs      = model.FakeBoobs;
                    dbFolderDetail.HomeCountry    = model.HomeCountry;
                    dbFolderDetail.HomeTown       = model.HomeTown;
                    dbFolderDetail.FolderComments = model.FolderComments;
                    dbFolderDetail.Measurements   = model.Measurements;
                    //dbFolderDetail.LinkStatus = model.LinkStatus;
                    db.SaveChanges();
                    success = "ok";
                }
            }
            catch (Exception ex) { success = Helpers.ErrorDetails(ex); }
            return(success);
        }
Пример #18
0
        public SlideshowItemsModel GetSlideShowItems(int folderId, bool includeSubFolders)
        {
            var timer = new System.Diagnostics.Stopwatch();

            timer.Start();
            slideshowItemModel = new SlideshowItemsModel();
            try
            {
                using (OggleBoobleContext db = new OggleBoobleContext())
                {
                    CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).FirstOrDefault();
                    if (categoryFolder == null)
                    {
                        slideshowItemModel.Success = "folderId " + folderId + " not found";
                        return(slideshowItemModel);
                    }
                    slideshowItemModel.FolderName = categoryFolder.FolderName;
                    slideshowItemModel.RootFolder = categoryFolder.RootFolder;

                    slideshowItemModel.SlideshowItems = db.Database.SqlQuery <vwSlideshowItem>(
                        "select row_number() over(order by SortOrder, FolderId, LinkId) 'Index', * from OggleBooble.vwSlideshowItems " +
                        "where FolderId = " + folderId).ToList();

                    if (includeSubFolders)
                    {
                        GetChildGalleryItems(folderId, db);
                    }
                }
                slideshowItemModel.Success = "ok";
            }
            catch (Exception ex)
            {
                slideshowItemModel.Success = Helpers.ErrorDetails(ex);
            }
            timer.Stop();
            System.Diagnostics.Debug.WriteLine("GetImageLinks took: " + timer.Elapsed);
            return(slideshowItemModel);
        }
Пример #19
0
        private void JoinForum_Load(object sender, EventArgs e)
        {
            CIX.DirectoryCollection.ForumUpdated += OnForumUpdated;

            statusField.Text = Resources.JoinForumStatusText;

            _forum = CIX.DirectoryCollection.ForumByName(_forumName);
            if (_forum != null && !string.IsNullOrEmpty(_forum.Desc))
            {
                RefreshForum(_forum);
            }
            else
            {
                if (_forum != null)
                {
                    forumTitle.Text = _forum.Title;
                }
                forumName.Text   = _forumName;
                forumImage.Image = CategoryFolder.IconForCategory("CIX");
                CIX.DirectoryCollection.RefreshForum(_forumName);
            }
            ResizeForm();
        }
Пример #20
0
 /// <summary>
 /// Display the directory for the specified CategoryFolder
 /// </summary>
 public override bool ViewFromFolder(FolderBase folder, Address address, FolderOptions flags)
 {
     CategoryFolder category = folder as CategoryFolder;
     if (category != null)
     {
         if (flags.HasFlag(FolderOptions.ClearFilter))
         {
             _currentFilterString = null;
         }
         _currentCategory = category;
         _items = ItemsForView();
         SortItems();
     }
     return true;
 }
Пример #21
0
        private void RepairLinksRecurr(int folderId, RepairReportModel repairReport, OggleBoobleContext db)
        {
            try
            {
                CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();

                string rootFolder = dbCategoryFolder.RootFolder;
                if (rootFolder == "centerfold")
                {
                    rootFolder = "playboy";
                }

                string ftpPath = ftpHost + "/" + rootFolder + ".ogglebooble.com/"
                                 + Helpers.GetParentPath(folderId) + dbCategoryFolder.FolderName;

                if (!FtpUtilies.DirectoryExists(ftpPath))
                {
                    repairReport.DirNotFound++;
                    FtpUtilies.CreateDirectory(ftpPath);
                    repairReport.Errors.Add("created directory " + ftpPath);
                }
                int folderRowsProcessed = 0;

                //if (repairReport.isSubFolder)
                //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed + "  Total: " + repairReport.RowsProcessed);
                //else
                //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed);

                List <ImageLink> goDaddyLinks =
                    (from c in db.CategoryImageLinks
                     join g in db.ImageLinks on c.ImageLinkId equals g.Id
                     where c.ImageCategoryId == folderId &&
                     g.Link.Contains(dbCategoryFolder.FolderName) &&
                     g.FolderLocation == dbCategoryFolder.Id
                     select(g)).ToList();

                string[] imageFiles = FtpUtilies.GetFiles(ftpPath);

                string goDaddyPrefix    = "http://" + rootFolder + ".ogglebooble.com/";
                string expectedLinkName = goDaddyPrefix + Helpers.GetParentPath(folderId) + dbCategoryFolder.FolderName;
                string ext = "";
                bool   fileNameInExpectedForm;
                string linkId = "";

                foreach (string fileName in imageFiles)
                {
                    //EnsureCorrectFileName(fileName, ftpPath);
                    if ((fileName.LastIndexOf("_") > 0) && (fileName.Substring(fileName.LastIndexOf("_")).Length > 40))
                    {
                        fileNameInExpectedForm = true;
                        if (fileName.IndexOf(".") > 0)
                        {
                            ext    = fileName.Substring(fileName.Length - 4);
                            linkId = fileName.Substring(fileName.LastIndexOf("_") + 1, 36);
                            //expectedFileName = dbCategoryFolder.FolderName + "_" + linkId + ext;
                            //if (fileName == expectedFileName)

                            var folderNameWhereImageSayItShouldBe = fileName.Substring(0, fileName.IndexOf("_"));
                            if (folderNameWhereImageSayItShouldBe != dbCategoryFolder.FolderName)
                            {
                                CategoryFolder categoryFolderWhereImageSayItShouldBe = db.CategoryFolders.Where(f => f.FolderName == folderNameWhereImageSayItShouldBe).FirstOrDefault();
                                if (categoryFolderWhereImageSayItShouldBe != null)
                                {
                                    string ftpPathWhereImageSayItShouldBe = ftpHost + categoryFolderWhereImageSayItShouldBe.RootFolder + ".ogglebooble.com/"
                                                                            + Helpers.GetParentPath(categoryFolderWhereImageSayItShouldBe.Id) + categoryFolderWhereImageSayItShouldBe.FolderName;
                                    string[] ArrayWhereImageSayItShouldBe = FtpUtilies.GetFiles(ftpPathWhereImageSayItShouldBe);
                                    if (ArrayWhereImageSayItShouldBe.Contains(categoryFolderWhereImageSayItShouldBe.FolderName + "_" + linkId + ext))
                                    {
                                        FtpUtilies.DeleteFile(ftpPath + categoryFolderWhereImageSayItShouldBe.FolderName + "_" + linkId + ext);
                                        repairReport.LinksRemoved++;
                                    }
                                }
                                else
                                {  // move file
                                    string source      = ftpPath + "/" + fileName;
                                    string destination = ftpHost + categoryFolderWhereImageSayItShouldBe.RootFolder + ".ogglebooble.com/"
                                                         + Helpers.GetParentPath(categoryFolderWhereImageSayItShouldBe.Id) + categoryFolderWhereImageSayItShouldBe.FolderName;
                                    if (source != destination)
                                    {
                                        FtpUtilies.MoveFile(source, destination);
                                        ImageLink extraLink = db.ImageLinks.Where(g => g.Id == linkId).FirstOrDefault();
                                        if (extraLink != null)
                                        {
                                            db.ImageLinks.Remove(extraLink);
                                            db.SaveChanges();
                                        }
                                        repairReport.ImagesMoved++;
                                    }
                                }
                            }

                            ImageLink goDaddyLinkExists = db.ImageLinks.Where(g => g.Id == linkId).FirstOrDefault();
                            if (goDaddyLinkExists == null)
                            {
                                if (FtpUtilies.DirectoryExists(ftpPath + "/" + fileName))
                                {
                                    ImageLink newLink = new ImageLink()
                                    {
                                        Id = linkId, Link = expectedLinkName + "/" + fileName, ExternalLink = "unknown", FolderLocation = folderId
                                    };
                                    db.ImageLinks.Add(newLink);
                                    db.SaveChanges();
                                    repairReport.NewLinksAdded++;
                                }
                            }
                            else
                            {
                                // if (goDaddyLinkExists.Link.ToUpper() != (expectedLinkName + "/" + fileName).ToUpper())
                                if (goDaddyLinkExists.Link != expectedLinkName + "/" + fileName)
                                {
                                    goDaddyLinkExists.Link = expectedLinkName + "/" + fileName;
                                    db.SaveChanges();
                                    repairReport.LinksEdited++;
                                }
                            }
                            if (db.CategoryImageLinks.Where(c => c.ImageCategoryId == folderId).Where(c => c.ImageLinkId == linkId).Where(c => c.ImageCategoryId == folderId).FirstOrDefault() == null)
                            {
                                CategoryImageLink newCatLink = new CategoryImageLink()
                                {
                                    ImageCategoryId = folderId, ImageLinkId = linkId
                                };
                                db.CategoryImageLinks.Add(newCatLink);
                                db.SaveChanges();
                                repairReport.CatLinksAdded++;
                            }
                        }
                        else
                        {
                            repairReport.Errors.Add("extension problem");
                            fileNameInExpectedForm = false;
                        }
                    }
                    else
                    {
                        fileNameInExpectedForm = false;
                        ext    = fileName.Substring(fileName.Length - 4);
                        linkId = Guid.NewGuid().ToString();
                        //expectedFileName = dbCategoryFolder.FolderName + "_" + linkId + ext;
                    }
                    if (!fileNameInExpectedForm)
                    {
                        // rename file
                        string renameSuccess = FtpUtilies.MoveFile(ftpPath + "/" + fileName, ftpPath + "/" + fileName);
                        if (renameSuccess == "ok")
                        {
                            repairReport.ImagesRenamed++;
                            ImageLink oldImageLink = goDaddyLinks.Where(g => g.Link == expectedLinkName + "/" + fileName).FirstOrDefault();
                            if (oldImageLink != null)
                            {
                                if (oldImageLink.Link != expectedLinkName + "/" + fileName)
                                {
                                    // update godaddy link
                                    oldImageLink.Link = expectedLinkName + "/" + fileName;
                                    db.SaveChanges();
                                    repairReport.LinksEdited++;
                                }
                            }
                            else
                            {
                                // link not found in this folder's links
                                ImageLink goDaddyLink = db.ImageLinks.Where(g => g.Id == linkId).FirstOrDefault();
                                if (goDaddyLink != null)
                                {
                                    goDaddyLink.Link = expectedLinkName + "/" + fileName;
                                    db.SaveChanges();
                                    repairReport.LinksEdited++;
                                }
                                else
                                {
                                    var newImageLink = new ImageLink()
                                    {
                                        Id             = linkId,
                                        FolderLocation = folderId,
                                        Link           = expectedLinkName + "/" + fileName,
                                        ExternalLink   = ""
                                    };
                                    db.ImageLinks.Add(newImageLink);
                                    db.SaveChanges();
                                    repairReport.NewLinksAdded++;
                                }

                                if (db.CategoryImageLinks.Where(c => c.ImageCategoryId == folderId).Where(c => c.ImageLinkId == linkId).FirstOrDefault() == null)
                                {
                                    CategoryImageLink newCatLink = new CategoryImageLink()
                                    {
                                        ImageCategoryId = folderId,
                                        ImageLinkId     = linkId
                                    };
                                    db.CategoryImageLinks.Add(newCatLink);
                                    db.SaveChanges();
                                    repairReport.CatLinksAdded++;
                                }
                            }
                        }
                        else
                        {
                            repairReport.Errors.Add("rename Failed: " + renameSuccess);
                        }
                    }

                    //if (repairReport.isSubFolder)
                    //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed + "  Total: " + repairReport.RowsProcessed);
                    //else
                    //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed);


                    repairReport.RowsProcessed++;
                    folderRowsProcessed++;
                }

                if (goDaddyLinks.Count() != imageFiles.Count())
                {
                    if (goDaddyLinks.Count() > imageFiles.Count())
                    {
                        string expectedFileName = "";
                        foreach (ImageLink goDaddyLink in goDaddyLinks)
                        {
                            expectedFileName = goDaddyLink.Link.Substring(goDaddyLink.Link.LastIndexOf("/") + 1);
                            linkId           = goDaddyLink.Link.Substring(goDaddyLink.Link.LastIndexOf("_") + 1, 36);
                            if (!imageFiles.Contains(expectedFileName))
                            {
                                ImageLink imageLink = db.ImageLinks.Where(i => i.Id == linkId).FirstOrDefault();
                                if (imageLink == null)
                                {
                                    repairReport.Errors.Add("image file in folder with no imageLink row");
                                }
                                else
                                {
                                    if (imageLink.FolderLocation == folderId)
                                    {
                                        CategoryImageLink categoryImageLink = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId && l.ImageLinkId == linkId).FirstOrDefault();
                                        //if (categoryImageLink == null)
                                        {
                                            //repairReport.Errors.Add("image file in folder with no imageLink row");
                                            List <ImageLink> flinks = db.ImageLinks.Where(i => i.ExternalLink == imageLink.ExternalLink).ToList();


                                            string downLoadSuccess = DownLoadImage(ftpPath, goDaddyLink.ExternalLink, expectedFileName);
                                            if (downLoadSuccess == "ok")
                                            {
                                                repairReport.ImagesDownLoaded++;
                                            }
                                            else
                                            {
                                                // problem with links to child folder files
                                                repairReport.Errors.Add(goDaddyLink.ExternalLink + " " + downLoadSuccess);
                                                db.ImageLinks.Remove(goDaddyLink);
                                                var badCatFolderImageLink = db.CategoryImageLinks.Where(c => c.ImageCategoryId == dbCategoryFolder.Id && c.ImageLinkId == goDaddyLink.Id).FirstOrDefault();
                                                if (badCatFolderImageLink != null)
                                                {
                                                    db.CategoryImageLinks.Remove(badCatFolderImageLink);
                                                }
                                                db.SaveChanges();
                                                repairReport.LinksRemoved++;
                                            }
                                        }
                                    }
                                }
                            }
                            //if (repairReport.isSubFolder)
                            //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed + "  Total: " + repairReport.RowsProcessed);
                            //else
                            //    SignalRHost.ProgressHub.PostToClient("Processing: " + dbCategoryFolder.FolderName + "  Rows: " + folderRowsProcessed);
                        }
                    }

                    if (imageFiles.Count() > goDaddyLinks.Count())
                    {
                        repairReport.Errors.Add("Extra Links Found in " + ftpPath);
                        foreach (string imageFile in imageFiles)
                        {
                            linkId = imageFile.Substring(imageFile.IndexOf("_") - 1);
                            var x = db.ImageLinks.Where(i => i.Link == imageFile).FirstOrDefault();
                            if (x == null)
                            {
                                // add a link
                                db.ImageLinks.Add(new ImageLink()
                                {
                                    Id           = Guid.NewGuid().ToString(),
                                    Link         = imageFile,
                                    ExternalLink = "gg"
                                });
                                db.SaveChanges();
                            }
                        }
                    }
                }


                int[] subDirs = db.CategoryFolders.Where(f => f.Parent == folderId).Select(f => f.Id).ToArray();
                foreach (int subDir in subDirs)
                {
                    repairReport.isSubFolder = true;
                    RepairLinksRecurr(subDir, repairReport, db);
                }
            }
            catch (Exception ex) { repairReport.Success = Helpers.ErrorDetails(ex); }
        }
Пример #22
0
        public RepairReportModel MoveManyCleanup(int root)
        {
            RepairReportModel repairReportModel = new RepairReportModel();

            try
            {
                using (OggleBoobleContext db = new OggleBoobleContext())
                {
                    CategoryFolder startFolder = db.CategoryFolders.Where(f => f.Id == root).FirstOrDefault();
                    string         ftpPath     = ftpHost + "/" + startFolder.RootFolder + ".ogglebooble.com/"
                                                 + Helpers.GetParentPath(startFolder.Id) + startFolder.FolderName;
                    string[] rootFiles = FtpUtilies.GetFiles(ftpPath);
                    //List<string> rootFileLinks = new List<string>();
                    //foreach (string fileName in rootFiles) rootFileLinks.Add(fileName.Substring(fileName.LastIndexOf("_") + 1, 36));
                    List <CategoryFolder> subDirs = db.CategoryFolders.Where(f => f.Parent == root).ToList();
                    string sourcePath = startFolder.RootFolder + ".ogglebooble.com/" + Helpers.GetParentPath(startFolder.Id) + startFolder.FolderName;
                    string moveFileSuccess, newLink, linkId, destinationPath;
                    string imageFileName = "";
                    foreach (CategoryFolder subDir in subDirs)
                    {
                        destinationPath = subDir.RootFolder + ".ogglebooble.com/" + Helpers.GetParentPath(subDir.Id) + subDir.FolderName;
                        List <CategoryImageLink> subFolderLinks = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subDir.Id).ToList();
                        foreach (CategoryImageLink subFolderLink in subFolderLinks)
                        {
                            bool found = false;
                            foreach (string fileName in rootFiles)
                            {
                                linkId = fileName.Substring(fileName.LastIndexOf("_") + 1, 36);
                                if (linkId == subFolderLink.ImageLinkId)
                                {
                                    found         = true;
                                    imageFileName = fileName;
                                    break;
                                }
                            }
                            //if (rootFiles.Contains(subFolderLink.ImageLinkId))
                            if (found)
                            {
                                ImageLink imageLink        = db.ImageLinks.Where(i => i.Id == subFolderLink.ImageLinkId).FirstOrDefault();
                                string    ext              = imageFileName.Substring(imageFileName.LastIndexOf("."));
                                string    newImageFileName = subDir.FolderName + "_" + subFolderLink.ImageLinkId + imageFileName.Substring(imageFileName.LastIndexOf("."));


                                if (FtpUtilies.DirectoryExists(ftpHost + sourcePath + "/" + imageFileName))
                                {
                                    moveFileSuccess = FtpUtilies.MoveFile(ftpHost + sourcePath + "/" + imageFileName, ftpHost + destinationPath + "/" + newImageFileName);
                                    if (moveFileSuccess == "ok")
                                    {
                                        if (imageLink != null)
                                        {
                                            newLink                  = "http://" + destinationPath + "/" + newImageFileName;
                                            imageLink.Link           = newLink;
                                            imageLink.FolderLocation = subDir.Id;
                                            db.SaveChanges();
                                            repairReportModel.LinksEdited++;
                                            CategoryImageLink badCategoryImageLink = db.CategoryImageLinks
                                                                                     .Where(c => c.ImageLinkId == subFolderLink.ImageLinkId && c.ImageCategoryId == root).FirstOrDefault();
                                            if (badCategoryImageLink != null)
                                            {
                                                db.CategoryImageLinks.Remove(badCategoryImageLink);
                                                db.SaveChanges();
                                                repairReportModel.LinksRemoved++;
                                            }
                                        }
                                        else
                                        {
                                            repairReportModel.Errors.Add("no imagelink found for link " + subFolderLink.ImageLinkId + " folder: " + startFolder.FolderName);
                                        }
                                    }
                                    else
                                    {
                                        repairReportModel.Errors.Add("link " + ftpHost + sourcePath + imageFileName + " error: " + moveFileSuccess);
                                    }
                                }
                            }
                            repairReportModel.RowsProcessed++;
                        }
                    }
                    repairReportModel.Success = "ok";
                }
            }
            catch (Exception ex)
            {
                repairReportModel.Success = Helpers.ErrorDetails(ex);
            }
            return(repairReportModel);
        }
Пример #23
0
 /// <summary>
 /// Load the directory tree.
 /// </summary>
 private static void LoadDirectoryTree(TreeNode parent)
 {
     foreach (string categoryName in CIX.DirectoryCollection.Categories)
     {
         CategoryFolder categoryFolder = new CategoryFolder {Name = categoryName};
         parent.Nodes.Add(new TreeNode
         {
             Name = categoryName,
             Tag = categoryFolder
         });
     }
     CategoryFolder allCategoryFolder = new CategoryFolder {Name = CategoryFolder.AllCategoriesName};
     parent.Nodes.Insert(0, new TreeNode
     {
         Name = CategoryFolder.AllCategoriesName,
         Tag = allCategoryFolder
     });
 }
Пример #24
0
        private void PerformFolderChecks(int folderId, RepairReportModel repairReport, bool recurr)
        {
            List <CategoryFolder> childFolders = null;

            try
            {
                string ftpPath;
                string imageFolderName;
                string imageFolderPath;
                List <CategoryImageLink> catLinks;
                List <ImageFile>         folderImages;
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    ftpPath         = ftpHost + "/" + imgRepo.Substring(8) + "/" + dbCategoryFolder.FolderPath;
                    imageFolderName = ftpPath.Substring(ftpPath.LastIndexOf("/") + 1);
                    childFolders    = db.CategoryFolders.Where(c => c.Parent == folderId).ToList();
                    folderImages    = db.ImageFiles.Where(if1 => if1.FolderId == folderId).ToList();
                    catLinks        = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).ToList();
                    imageFolderPath = dbCategoryFolder.FolderPath;
                    if (dbCategoryFolder.FolderType == "singleChild")
                    {
                        CategoryFolder dbParentFolder = db.CategoryFolders.Where(f => f.Id == dbCategoryFolder.Parent).First();
                        imageFolderName = dbParentFolder.FolderName;
                    }
                }
                //string folderName = dbCategoryFolder.FolderName;
                List <CategoryImageLink> dbRejCatlinks;
                string ftpFileName, physcialFileName, physcialFileLinkId, rejectFolder, ftpSuccess;
                string renameSuccess = RenamePhyscialFiles(ftpPath, imageFolderName, repairReport);
                if (renameSuccess != "ok")
                {
                    repairReport.Success = renameSuccess + "ftpPath: " + ftpPath + "  imageFolderName: " + imageFolderName;
                    return;
                }

                string[] physcialFiles = FtpUtilies.GetFiles(ftpPath);
                if (physcialFiles.Length > 0 && physcialFiles[0].StartsWith("ERROR"))
                {
                    repairReport.Success = physcialFiles[0];
                    return;
                }

                #region 0 rename ImageFiles to expected name
                List <ImageFile> dbFolderImageFiles;
                using (var db = new OggleBoobleMySqlContext())
                {
                    dbFolderImageFiles = db.ImageFiles.Where(if1 => if1.FolderId == folderId).ToList();

                    string expectedFileName;
                    foreach (ImageFile imageFile in dbFolderImageFiles)
                    {
                        if (imageFile.FileName.LastIndexOf(".") < 5)
                        {
                            imageFile.FileName = "xxxxx.jpg";
                            //repairReport.Errors.Add("bad filename: " + imageFile.FileName + "folder: " + imageFile.FolderId);
                        }
                        expectedFileName = imageFolderName + "_" + imageFile.Id + imageFile.FileName.Substring(imageFile.FileName.LastIndexOf("."));
                        if (imageFile.FileName != expectedFileName)
                        {
                            imageFile.FileName = expectedFileName;
                            db.SaveChanges();
                            repairReport.ImageFilesRenamed++;
                        }
                    }
                }
                #endregion

                #region 1. make sure every physicalFile has an ImageFile row
                ImageFile dbFolderImageFile;
                for (int i = 0; i < physcialFiles.Length; i++)
                {
                    physcialFileName   = physcialFiles[i];
                    physcialFileLinkId = physcialFileName.Substring(physcialFileName.LastIndexOf("_") + 1, 36);
                    dbFolderImageFile  = dbFolderImageFiles.Where(f => f.Id == physcialFileLinkId).FirstOrDefault();
                    if (dbFolderImageFile == null)
                    {
                        ImageFile dbMisplacedImageFile;
                        using (var db = new OggleBoobleMySqlContext())
                        {
                            dbMisplacedImageFile = db.ImageFiles.Where(m => m.Id == physcialFileLinkId).FirstOrDefault();
                        }
                        if (dbMisplacedImageFile != null)
                        {
                            if (dbMisplacedImageFile.FolderId == -6)
                            {
                                // should have moved file to rejects
                                //string newFileName = ftpPath + "/" + dbCategoryFolder.FolderPath + "/" + physcialFileName;
                                ftpFileName  = ftpPath + "/" + physcialFileName;
                                rejectFolder = ftpHost + "/archive.OggleBooble.com/rejects/" + dbMisplacedImageFile.FileName;
                                if (FtpUtilies.MoveFile(ftpFileName, rejectFolder) == "ok")
                                {
                                    using (var db = new OggleBoobleMySqlContext())
                                    {
                                        dbRejCatlinks = db.CategoryImageLinks.Where(l => l.ImageLinkId == dbMisplacedImageFile.Id).ToList();
                                        if (dbRejCatlinks.Count > 0)
                                        {
                                            foreach (CategoryImageLink dbRejCatlink in dbRejCatlinks)
                                            {
                                                if (dbRejCatlink.ImageCategoryId != -6)
                                                {
                                                    db.CategoryImageLinks.Remove(dbRejCatlink);
                                                    repairReport.CatLinksRemoved++;
                                                }
                                            }
                                            db.SaveChanges();
                                        }
                                    }
                                    repairReport.ImageFilesMoved++;
                                }
                            }
                            else
                            {
                                //var catLinks = db.CategoryImageLinks.Where(l => l.ImageLinkId == physcialFileLinkId).ToList();
                                bool itsok = false;
                                foreach (CategoryImageLink catLink in catLinks)
                                {
                                    if (catLink.ImageCategoryId == dbMisplacedImageFile.FolderId)
                                    {
                                        itsok = true;
                                        break;
                                    }
                                }
                                if (!itsok)
                                {
                                    using (var db = new OggleBoobleMySqlContext())
                                    {
                                        dbMisplacedImageFile.FolderId = folderId;
                                        db.SaveChanges();
                                        repairReport.ImageFilesMoved++;
                                    }
                                }
                            }
                        }  //  dbMisplacedImageFile != null
                        else
                        {
                            string            newFileName   = imgRepo + "/" + imageFolderPath + "/" + physcialFileName;
                            ImageFileInfo     imageFileInfo = GetImageFileInfo(newFileName);
                            CategoryImageLink ktest;
                            using (var db = new OggleBoobleMySqlContext())
                            {
                                ImageFile imageFile = new ImageFile()
                                {
                                    Id           = physcialFileLinkId,
                                    Acquired     = DateTime.Now,
                                    ExternalLink = "??",
                                    FileName     = physcialFileName,
                                    FolderId     = folderId,
                                    Height       = imageFileInfo.Height,
                                    Size         = imageFileInfo.Size,
                                    Width        = imageFileInfo.Width
                                };
                                db.ImageFiles.Add(imageFile);
                                dbFolderImageFiles.Add(imageFile);
                                db.SaveChanges();
                                repairReport.ImageFilesAdded++;
                                ktest = db.CategoryImageLinks.Where(l => (l.ImageCategoryId == folderId) && (l.ImageLinkId == physcialFileLinkId)).FirstOrDefault();
                            }
                            if (ktest == null)
                            {
                                try
                                {
                                    using (var db = new OggleBoobleMySqlContext())
                                    {
                                        int nextSortOrder = 0;
                                        if (db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Count() > 0)
                                        {
                                            nextSortOrder = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Max(l => l.SortOrder) + 2;
                                        }
                                        db.CategoryImageLinks.Add(new CategoryImageLink()
                                        {
                                            ImageCategoryId = folderId,
                                            ImageLinkId     = physcialFileLinkId,
                                            SortOrder       = nextSortOrder
                                        });
                                        db.SaveChanges();
                                        repairReport.CatLinksAdded++;
                                    }
                                }
                                catch (Exception ex)
                                {
                                    repairReport.Errors.Add("ktest lied: " + Helpers.ErrorDetails(ex));
                                }
                            }
                            else
                            {
                                if (dbFolderImageFile.Size == 0)
                                {
                                    //string newFileName = imgRepo + "/" + imageFolderPath + "/" + physcialFileName;
                                    //ImageFileInfo imageFileInfo2 = GetImageFileInfo(newFileName);
                                    if (imageFileInfo.Size == 0)
                                    {
                                        if (FtpUtilies.DeleteFile(ftpPath + "/" + dbFolderImageFile.FileName) == "ok")
                                        {
                                            using (var db = new OggleBoobleMySqlContext())
                                            {
                                                db.CategoryImageLinks.RemoveRange(db.CategoryImageLinks.Where(l => l.ImageLinkId == dbFolderImageFile.Id).ToList());
                                                db.ImageFiles.Remove(dbFolderImageFile);
                                                db.SaveChanges();
                                                repairReport.ZeroLenImageFilesRemoved++;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        using (var db = new OggleBoobleMySqlContext())
                                        {
                                            dbFolderImageFile.Size   = imageFileInfo.Size;
                                            dbFolderImageFile.Height = imageFileInfo.Height;
                                            dbFolderImageFile.Width  = imageFileInfo.Width;
                                            db.SaveChanges();
                                            repairReport.ZeroLenFileResized++;
                                        }
                                    }
                                }
                            }
                        }
                    } // dbFolderImageFile == null
                    repairReport.PhyscialFilesProcessed++;
                }
                #endregion

                #region 2. Make sure every ImageFile row has a physcial file
                // rebuild list
                var physcialFileLinkIds = new List <string>();

                for (int i = 0; i < physcialFiles.Length; i++)
                {
                    physcialFileLinkIds.Add(physcialFiles[i].Substring(physcialFiles[i].LastIndexOf("_") + 1, 36));
                }

                if (physcialFileLinkIds.Count() != dbFolderImageFiles.Count())
                {
                    if (physcialFileLinkIds.Count() > dbFolderImageFiles.Count())
                    {
                        using (var db = new OggleBoobleMySqlContext())
                        {
                            foreach (string pflinkId in physcialFileLinkIds)
                            {
                                dbFolderImageFile = db.ImageFiles.Where(i => i.Id == pflinkId).FirstOrDefault();
                                if (dbFolderImageFile == null)
                                {
                                    db.ImageFiles.Add(new ImageFile()
                                    {
                                        Id       = pflinkId,
                                        FolderId = folderId,
                                        FileName = ""
                                    });
                                    db.SaveChanges();
                                }
                                else if (dbFolderImageFile.FolderId != folderId)
                                {
                                    List <CategoryImageLink> links = db.CategoryImageLinks.Where(l => l.ImageLinkId == dbFolderImageFile.Id).ToList();
                                    if (links.Count() > 0)
                                    {
                                        dbFolderImageFile.FolderId = folderId;
                                        db.SaveChanges();
                                        repairReport.NoLinkImageFiles++;
                                    }
                                    else
                                    {
                                        string imageFileToRemove = ftpPath + "/" + imageFolderName + "_" + pflinkId + ".jpg";
                                        rejectFolder = ftpHost + "/archive.OggleBooble.com/rejects/" + imageFolderName + "_" + pflinkId + ".jpg";
                                        ftpSuccess   = FtpUtilies.MoveFile(imageFileToRemove, rejectFolder);
                                        //.DeleteFile(ftpPath + "/" + imageFolderName + "_" + pflinkId + ".jpg");
                                        //ftpSuccess = FtpUtilies.DeleteFile(ftpPath + "/" + imageFolderName + "_" + pflinkId + ".jpg");
                                        if (ftpSuccess == "ok")
                                        {
                                            repairReport.ImageFilesRemoved++;
                                            repairReport.Errors.Add("I moved a file to rejects : " + imageFolderName + "_" + pflinkId);
                                        }
                                        else
                                        {
                                            repairReport.Errors.Add("I wanted to delete : " + imageFolderName + "_" + pflinkId);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                foreach (ImageFile imageFile in dbFolderImageFiles)
                {
                    if (!physcialFileLinkIds.Contains(imageFile.Id))
                    {
                        if (imageFile.ExternalLink.IndexOf("http") > -1)
                        {
                            // Download missing File
                            if (imageFile.FileName.LastIndexOf(".") < 2)
                            {
                                repairReport.Errors.Add("bad filename: " + imageFile.FileName + "folder: " + imageFile.FolderId);
                            }
                            else
                            {
                                string expectedFileName = imageFolderName + "_" + imageFile.Id + imageFile.FileName.Substring(imageFile.FileName.LastIndexOf("."));
                                string newFileName      = imgRepo + "/" + imageFolderPath + "/" + expectedFileName;
                                string downLoadSuccess  = DownLoadImage(ftpPath, imageFile.ExternalLink, expectedFileName);
                                if (downLoadSuccess == "ok")
                                {
                                    repairReport.ImagesDownLoaded++;

                                    using (var db = new OggleBoobleMySqlContext())
                                    {
                                        if (db.CategoryImageLinks.Where(l => l.ImageLinkId == imageFile.Id).FirstOrDefault() == null)
                                        {
                                            db.CategoryImageLinks.Add(new CategoryImageLink()
                                            {
                                                ImageCategoryId = folderId, ImageLinkId = imageFile.Id, SortOrder = 9999
                                            });
                                            db.SaveChanges();
                                        }
                                    }
                                }
                                else
                                {
                                    //repairReport.Errors.Add("download faild: " + imageFile.ExternalLink);
                                    using (var db = new OggleBoobleMySqlContext())
                                    {
                                        if (db.CategoryImageLinks.Where(l => l.ImageLinkId == imageFile.Id).Count() > 0)
                                        {
                                            db.CategoryImageLinks.RemoveRange(db.CategoryImageLinks.Where(l => l.ImageLinkId == imageFile.Id).ToList());
                                            db.SaveChanges();
                                        }
                                        var ulIm = db.ImageFiles.Where(i => i.Id == imageFile.Id).FirstOrDefault();
                                        if (ulIm != null)
                                        {
                                            db.ImageFiles.Remove(ulIm);
                                            db.SaveChanges();
                                            repairReport.ImageFilesRemoved++;
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            repairReport.Errors.Add("ImageFile with no physcial file " + imageFile.Id);
                            using (var db = new OggleBoobleMySqlContext())
                            {
                                if (db.CategoryImageLinks.Where(l => l.ImageLinkId == imageFile.Id).Count() > 0)
                                {
                                    db.CategoryImageLinks.RemoveRange(db.CategoryImageLinks.Where(l => l.ImageLinkId == imageFile.Id).ToList());
                                }
                                var ulIm = db.ImageFiles.Where(i => i.Id == imageFile.Id).FirstOrDefault();
                                if (ulIm != null)
                                {
                                    db.ImageFiles.Remove(ulIm);
                                    db.SaveChanges();
                                    repairReport.ImageFilesRemoved++;
                                }
                            }
                        }
                    }
                    repairReport.ImageFilesProcessed++;
                }
                #endregion

                #region 3. check if there is a catlink for every physcial file

                using (var db = new OggleBoobleMySqlContext())
                {
                    foreach (string pfLinkId in physcialFileLinkIds)
                    {
                        if (db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId && l.ImageLinkId == pfLinkId).FirstOrDefault() == null)
                        {
                            int nextSortOrder = 0;
                            if (db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Count() > 0)
                            {
                                nextSortOrder = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Max(l => l.SortOrder) + 2;
                            }
                            db.CategoryImageLinks.Add(new CategoryImageLink()
                            {
                                ImageCategoryId = folderId,
                                ImageLinkId     = pfLinkId,
                                SortOrder       = nextSortOrder
                            });
                            db.SaveChanges();
                            repairReport.CatLinksAdded++;
                        }
                        repairReport.LinkRecordsProcessed++;
                    }
                }
                #endregion

                repairReport.Success = "ok";
            }
            catch (Exception ex)
            {
                repairReport.Errors.Add(Helpers.ErrorDetails(ex));
            }
            if (recurr)
            {
                //var childFolders = db.CategoryFolders.Where(c => c.Parent == folderId).ToList();
                foreach (CategoryFolder childFolder in childFolders)
                {
                    PerformFolderChecks(childFolder.Id, repairReport, recurr);
                }
            }
        }
Пример #25
0
        private string FtpMove(string currentFileName, MoveCopyImageModel model)
        {
            string success;
            string linkId = model.LinkId;

            using (var db = new OggleBoobleMySqlContext())
            {
                ImageFile dbImageFile = db.ImageFiles.Where(i => i.Id == linkId).FirstOrDefault();
                if (dbImageFile == null)
                {
                    return("link [" + linkId + "] not found");
                }
                //imageLinkId = dbImageFile.Id;

                // ? physcially more and rename .jpg
                CategoryFolder dbSourceFolder      = db.CategoryFolders.Where(f => f.Id == model.SourceFolderId).First();
                CategoryFolder dbDestinationFolder = db.CategoryFolders.Where(f => f.Id == model.DestinationFolderId).First();
                //string currentFileName = dbImageFile.FileName;
                string newFileName        = dbSourceFolder.FolderName + "_" + linkId;
                string destinationFtpPath = ftpHost + dbDestinationFolder.RootFolder + ".ogglebooble.com/" + Helpers.GetParentPath(model.DestinationFolderId) + dbDestinationFolder.FolderName;
                string sourceFtpPath      = ftpHost + dbSourceFolder.RootFolder + ".ogglebooble.com/" + Helpers.GetParentPath(model.SourceFolderId) + newFileName;

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

                success = FtpUtilies.MoveFile(sourceFtpPath + "/" + dbImageFile.FileName, destinationFtpPath + "/" + newFileName);
                if (success == "ok")
                {
                    #region move file on local drive
                    string localDestinationPath = "";
                    try
                    {
                        string localServerPath = "F:/Danni/";
                        string localSourcePath = localServerPath + Helpers.GetLocalParentPath(model.SourceFolderId) + dbSourceFolder.FolderName + "/" + dbImageFile.FileName;
                        //dbSourceFolder.FolderName + "_" + dbImageLink.Id + extension;
                        localDestinationPath = localServerPath + Helpers.GetLocalParentPath(model.DestinationFolderId) + dbDestinationFolder.FolderName;
                        FileInfo      localFile     = new FileInfo(localSourcePath);
                        DirectoryInfo directoryInfo = new DirectoryInfo(localDestinationPath);
                        if (!directoryInfo.Exists)
                        {
                            directoryInfo.Create();
                        }
                        localFile.MoveTo(localDestinationPath + "/" + newFileName);
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine("move file on local drive : " + Helpers.ErrorDetails(ex) + " " + localDestinationPath);
                    }
                    #endregion

                    //2. update ImageFile
                    //string linkPrefix = "http://" + dbDestinationFolder.RootFolder + ".ogglebooble.com/";
                    //newInternalLink = linkPrefix + Helpers.GetParentPath(model.DestinationFolderId) + dbDestinationFolder.FolderName + "/" + newFileName;
                    //var goDaddyrow = db.ImageLinks.Where(g => g.Id == dbImageLink.Id).FirstOrDefault();
                    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();
                }
                return(success);
            }
        }
Пример #26
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);
        }
Пример #27
0
        public SubFolderCountModel GetDeepFolderCounts(int folderId)
        {
            DateTime start      = DateTime.Now;
            var      countModel = new SubFolderCountModel()
            {
                FolderId = folderId, Changes = 0
            };

            try
            {
                //GoDeepRecurr(folderId);
                using (var db = new OggleBoobleMySqlContext())
                {
                    int            sub0ttlChildFiles = 0;
                    int            sub0ttlSubFolders = 0;
                    CategoryFolder dbCatFolder0      = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    int            fileLinkCount     = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Count();
                    int            subFolderCount    = db.CategoryFolders.Where(f => f.Parent == folderId).Count();
                    subFolderCount += db.StepChildren.Where(s => s.Parent == folderId).Count();
                    if ((dbCatFolder0.Files != fileLinkCount) || (dbCatFolder0.SubFolders != subFolderCount))
                    {
                        dbCatFolder0.Files      = fileLinkCount;
                        dbCatFolder0.SubFolders = subFolderCount;
                        db.SaveChanges();
                        countModel.Changes++;
                    }
                    var subFolders1 = db.CategoryFolders.Where(f => f.Parent == folderId).ToList();
                    foreach (var subFolder1 in subFolders1)
                    {
                        int sub1ttlChildFiles = 0;
                        int sub1ttlSubFolders = 0;
                        fileLinkCount      = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder1.Id).Count();
                        subFolderCount     = db.CategoryFolders.Where(f => f.Parent == subFolder1.Id).Count();
                        subFolderCount    += db.StepChildren.Where(s => s.Parent == subFolder1.Id).Count();
                        sub0ttlChildFiles += fileLinkCount;
                        sub0ttlSubFolders += subFolders1.Count();
                        if ((fileLinkCount != subFolder1.Files) || (subFolderCount != subFolder1.SubFolders))
                        {
                            subFolder1.Files      = fileLinkCount;
                            subFolder1.SubFolders = subFolderCount;
                            db.SaveChanges();
                            countModel.Changes++;
                        }

                        var subFolders2 = db.CategoryFolders.Where(f => f.Parent == subFolder1.Id).ToList();
                        sub0ttlChildFiles += subFolders2.Count();
                        sub1ttlSubFolders += subFolders2.Count();
                        foreach (CategoryFolder subFolder2 in subFolders2)
                        {
                            int sub2ttlChildFiles = 0;
                            int sub2ttlSubFolders = 0;
                            fileLinkCount      = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder2.Id).Count();
                            subFolderCount     = db.CategoryFolders.Where(f => f.Parent == subFolder2.Id).Count();
                            subFolderCount    += db.StepChildren.Where(s => s.Parent == subFolder2.Id).Count();
                            sub0ttlChildFiles += fileLinkCount;
                            sub1ttlChildFiles += fileLinkCount;
                            if ((fileLinkCount != subFolder2.Files) || (subFolderCount != subFolder2.SubFolders))
                            {
                                if (fileLinkCount != subFolder2.Files)
                                {
                                    subFolder2.Files = fileLinkCount;
                                }
                                subFolder2.SubFolders = subFolderCount;
                                db.SaveChanges();
                                countModel.Changes++;
                            }

                            var subFolders3 = db.CategoryFolders.Where(f => f.Parent == subFolder2.Id).ToList();
                            sub0ttlSubFolders += subFolders3.Count();
                            sub1ttlSubFolders += subFolders3.Count();
                            sub2ttlSubFolders += subFolders3.Count();
                            foreach (CategoryFolder subFolder3 in subFolders3)
                            {
                                int sub3ttlChildFiles = 0;
                                int sub3ttlSubFolders = 0;
                                subFolderCount     = db.CategoryFolders.Where(f => f.Parent == subFolder3.Id).Count();
                                fileLinkCount      = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder3.Id).Count();
                                sub0ttlChildFiles += fileLinkCount;
                                sub1ttlChildFiles += fileLinkCount;
                                sub2ttlChildFiles += fileLinkCount;
                                if ((fileLinkCount != subFolder3.Files) || (subFolderCount != subFolder3.SubFolders))
                                {
                                    if (fileLinkCount != subFolder3.Files)
                                    {
                                        subFolder3.Files = fileLinkCount;
                                    }
                                    subFolder3.SubFolders = subFolderCount;
                                    db.SaveChanges();
                                    countModel.Changes++;
                                }

                                var subFolders4 = db.CategoryFolders.Where(f => f.Parent == subFolder3.Id).ToList();
                                sub0ttlSubFolders += subFolders4.Count();
                                sub1ttlSubFolders += subFolders4.Count();
                                sub2ttlSubFolders += subFolders4.Count();
                                sub3ttlSubFolders += subFolders4.Count();
                                foreach (CategoryFolder subFolder4 in subFolders4)
                                {
                                    int sub4ttlChildFiles = 0;
                                    int sub4ttlSubFolders = 0;
                                    fileLinkCount      = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder4.Id).Count();
                                    subFolderCount     = db.CategoryFolders.Where(f => f.Parent == subFolder4.Id).Count();
                                    sub0ttlChildFiles += fileLinkCount;
                                    sub1ttlChildFiles += fileLinkCount;
                                    sub2ttlChildFiles += fileLinkCount;
                                    sub3ttlChildFiles += fileLinkCount;
                                    if ((fileLinkCount != subFolder4.Files) || (subFolderCount != subFolder4.SubFolders))
                                    {
                                        subFolder4.Files      = fileLinkCount;
                                        subFolder4.SubFolders = subFolderCount;
                                        db.SaveChanges();
                                        countModel.Changes++;
                                    }

                                    var subFolders5 = db.CategoryFolders.Where(f => f.Parent == subFolder4.Id).ToList();
                                    sub0ttlSubFolders += subFolders5.Count();
                                    sub1ttlSubFolders += subFolders5.Count();
                                    sub2ttlSubFolders += subFolders5.Count();
                                    sub3ttlSubFolders += subFolders5.Count();
                                    sub4ttlSubFolders += subFolders5.Count();
                                    foreach (CategoryFolder subFolder5 in subFolders5)
                                    {
                                        int sub5ttlChildFiles = 0;
                                        int sub5ttlSubFolders = 0;
                                        fileLinkCount  = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder5.Id).Count();
                                        subFolderCount = db.CategoryFolders.Where(f => f.Parent == subFolder5.Id).Count();
                                        if ((fileLinkCount != subFolder5.Files) || (subFolderCount != subFolder5.SubFolders))
                                        {
                                            subFolder5.Files      = fileLinkCount;
                                            subFolder5.SubFolders = subFolderCount;
                                            db.SaveChanges();
                                            countModel.Changes++;
                                        }
                                        sub0ttlChildFiles += fileLinkCount;
                                        sub1ttlChildFiles += fileLinkCount;
                                        sub2ttlChildFiles += fileLinkCount;
                                        sub3ttlChildFiles += fileLinkCount;
                                        sub4ttlChildFiles += fileLinkCount;
                                        var subFolders6 = db.CategoryFolders.Where(f => f.Parent == subFolder5.Id).ToList();
                                        sub0ttlSubFolders += subFolders6.Count();
                                        sub1ttlSubFolders += subFolders6.Count();
                                        sub2ttlSubFolders += subFolders6.Count();
                                        sub3ttlSubFolders += subFolders6.Count();
                                        sub4ttlSubFolders += subFolders6.Count();
                                        sub5ttlSubFolders += subFolders6.Count();
                                        foreach (CategoryFolder subFolder6 in subFolders6)
                                        {
                                            int sub6ttlChildFiles = 0;
                                            int sub6ttlSubFolders = 0;
                                            fileLinkCount  = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder6.Id).Count();
                                            subFolderCount = db.CategoryFolders.Where(f => f.Parent == subFolder6.Id).Count();
                                            if ((fileLinkCount != subFolder6.Files) || (subFolderCount != subFolder6.SubFolders))
                                            {
                                                subFolder6.Files      = fileLinkCount;
                                                subFolder6.SubFolders = subFolderCount;
                                                db.SaveChanges();
                                                countModel.Changes++;
                                            }
                                            sub0ttlChildFiles += fileLinkCount;
                                            sub1ttlChildFiles += fileLinkCount;
                                            sub2ttlChildFiles += fileLinkCount;
                                            sub3ttlChildFiles += fileLinkCount;
                                            sub4ttlChildFiles += fileLinkCount;
                                            sub5ttlChildFiles += fileLinkCount;
                                            var subFolders7 = db.CategoryFolders.Where(f => f.Parent == subFolder6.Id).ToList();
                                            sub0ttlSubFolders += subFolders7.Count();
                                            sub1ttlSubFolders += subFolders7.Count();
                                            sub2ttlSubFolders += subFolders7.Count();
                                            sub3ttlSubFolders += subFolders7.Count();
                                            sub4ttlSubFolders += subFolders7.Count();
                                            sub5ttlSubFolders += subFolders7.Count();
                                            sub6ttlSubFolders += subFolders7.Count();
                                            foreach (CategoryFolder subFolder7 in subFolders7)
                                            {
                                                //int sub6ttlChildFiles = 0;
                                                //int sub6ttlSubFolders = 0;
                                                fileLinkCount  = db.CategoryImageLinks.Where(l => l.ImageCategoryId == subFolder7.Id).Count();
                                                subFolderCount = db.CategoryFolders.Where(f => f.Parent == subFolder7.Id).Count();
                                                if ((fileLinkCount != subFolder7.Files) || (subFolderCount != subFolder7.SubFolders))
                                                {
                                                    subFolder7.Files      = fileLinkCount;
                                                    subFolder7.SubFolders = subFolderCount;
                                                    db.SaveChanges();
                                                    countModel.Changes++;
                                                }
                                                sub0ttlChildFiles += fileLinkCount;
                                                sub1ttlChildFiles += fileLinkCount;
                                                sub2ttlChildFiles += fileLinkCount;
                                                sub3ttlChildFiles += fileLinkCount;
                                                sub4ttlChildFiles += fileLinkCount;
                                                sub5ttlChildFiles += fileLinkCount;
                                                sub6ttlChildFiles += fileLinkCount;
                                                var subFolders8 = db.CategoryFolders.Where(f => f.Parent == subFolder7.Id).ToList();
                                                if (subFolders8.Count() > 0)
                                                {
                                                    throw new Exception("we need to go even deeper");
                                                }
                                            }
                                            if ((subFolder6.TotalChildFiles != sub6ttlChildFiles) || (subFolder6.TotalSubFolders != sub5ttlSubFolders))
                                            {
                                                subFolder6.TotalChildFiles = sub5ttlChildFiles;
                                                subFolder6.TotalSubFolders = sub5ttlSubFolders;
                                                db.SaveChanges();
                                                countModel.Changes++;
                                            }
                                        }
                                        if ((subFolder5.TotalChildFiles != sub5ttlChildFiles) || (subFolder5.TotalSubFolders != sub5ttlSubFolders))
                                        {
                                            subFolder5.TotalChildFiles = sub5ttlChildFiles;
                                            subFolder5.TotalSubFolders = sub5ttlSubFolders;
                                            db.SaveChanges();
                                            countModel.Changes++;
                                        }
                                    }
                                    if ((subFolder4.TotalChildFiles != sub4ttlChildFiles) || (subFolder4.TotalSubFolders != sub4ttlSubFolders))
                                    {
                                        subFolder4.TotalChildFiles = sub4ttlChildFiles;
                                        subFolder4.TotalSubFolders = sub4ttlSubFolders;
                                        db.SaveChanges();
                                        countModel.Changes++;
                                    }
                                }
                                if ((subFolder3.TotalChildFiles != sub3ttlChildFiles) || (subFolder3.TotalSubFolders != sub3ttlSubFolders))
                                {
                                    subFolder3.TotalChildFiles = sub3ttlChildFiles;
                                    subFolder3.TotalSubFolders = sub3ttlSubFolders;
                                    db.SaveChanges();
                                    countModel.Changes++;
                                }
                            }
                            if ((subFolder2.TotalChildFiles != sub2ttlChildFiles) || (subFolder2.TotalSubFolders != sub2ttlSubFolders))
                            {
                                subFolder2.TotalChildFiles = sub2ttlChildFiles;
                                subFolder2.TotalSubFolders = sub2ttlSubFolders;
                                db.SaveChanges();
                                countModel.Changes++;
                            }
                        }
                        if ((subFolder1.TotalChildFiles != sub1ttlChildFiles) || (subFolder1.TotalSubFolders != sub1ttlSubFolders))
                        {
                            subFolder1.TotalChildFiles = sub1ttlChildFiles;
                            subFolder1.TotalSubFolders = sub1ttlSubFolders;
                            db.SaveChanges();
                            countModel.Changes++;
                        }
                    }
                    if ((dbCatFolder0.TotalChildFiles != sub0ttlChildFiles) || (dbCatFolder0.TotalSubFolders != sub0ttlSubFolders))
                    {
                        dbCatFolder0.TotalChildFiles = sub0ttlChildFiles;
                        dbCatFolder0.TotalSubFolders = sub0ttlSubFolders;
                        db.SaveChanges();
                        countModel.Changes++;
                    }

                    countModel.FileCount      = dbCatFolder0.Files;
                    countModel.FolderCount    = dbCatFolder0.SubFolders;
                    countModel.TtlFileCount   = dbCatFolder0.TotalChildFiles;
                    countModel.TtlFolderCount = dbCatFolder0.TotalSubFolders;
                }
                countModel.Success = "ok";
            }
            catch (Exception ex) { countModel.Success = Helpers.ErrorDetails(ex); }

            var timeSpan = (DateTime.Now - start);

            countModel.TimeTook = timeSpan.TotalMinutes.ToString("N0") + ":" + timeSpan.TotalSeconds.ToString("N0");
            return(countModel);
        }
Пример #28
0
        private string UpDateDatesRecurr(int folderId, RepairReportModel results, OggleBoobleContext db)
        {
            string success = "";

            try
            {
                //CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).FirstOrDefault();
                //string ftpPath = ftpHost + "/" + dbCategoryFolder.RootFolder + ".ogglebooble.com/" + Helpers.GetParentPath(folderId);
                List <ImageLink> imageLinks        = db.ImageLinks.Where(l => l.FolderLocation == folderId).ToList();
                DateTime         imageFileDateTime = DateTime.MinValue;

                int    fWidth  = 0;
                int    fHeight = 0;
                long   fSize   = 0;
                string extension;
                string trimPath;
                string appDataPath = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/temp/");
                foreach (ImageLink imageLink in imageLinks)
                {
                    if (imageLink.Width == null)
                    {
                        try
                        {
                            CategoryFolder dbCategory = db.CategoryFolders.Where(f => f.Id == imageLink.FolderLocation).First();
                            extension = imageLink.Link.Substring(imageLink.Link.LastIndexOf("."));
                            string newFileName = dbCategory.FolderName + "_" + imageLink.Id + extension;
                            trimPath = imageLink.Link.Replace("/Root/", "").Replace("%20", " ").Replace(newFileName, "").Replace("http://", "");
                            // USE WEBCLIENT TO CREATE THE FILE
                            using (WebClient wc = new WebClient())
                            {
                                try
                                {
                                    wc.DownloadFile(new Uri(imageLink.Link), appDataPath + "tempImage" + extension);
                                }
                                catch (Exception ex)
                                {
                                    success = "wc. download didnt work " + ex.Message;
                                }
                            }
                            FtpWebRequest webRequest = null;
                            // USE WEBREQUEST TO UPLOAD THE FILE
                            try
                            {
                                // todo  write the image as a file to x.ogglebooble  4/1/19
                                string ftpPath = ftpHost + trimPath;
                                if (!FtpUtilies.DirectoryExists(ftpPath))
                                {
                                    FtpUtilies.CreateDirectory(ftpPath);
                                }

                                webRequest             = (FtpWebRequest)WebRequest.Create(ftpPath + "/" + newFileName);
                                webRequest.Credentials = networkCredentials;
                                webRequest.Method      = WebRequestMethods.Ftp.UploadFile;
                                //var zz = webRequest.Method = WebRequestMethods.Ftp.UploadFile;
                            }
                            catch (Exception ex)
                            {
                                success = " webRequest didnt work " + ex.Message;
                            }
                            // TAKE THE WEBREQUEST FILE STREAM TO

                            try
                            {
                                using (Stream requestStream = webRequest.GetRequestStream())
                                {
                                    byte[] fileContents = System.IO.File.ReadAllBytes(appDataPath + "tempImage" + extension);
                                    webRequest.ContentLength = fileContents.Length;
                                    requestStream.Write(fileContents, 0, fileContents.Length);
                                    requestStream.Flush();
                                    requestStream.Close();
                                }
                            }
                            catch (Exception ex)
                            {
                                success = "GetRequestStream didn't work " + ex.Message;
                            }

                            using (var fileStream = new FileStream(appDataPath + "tempImage" + extension, FileMode.Open, FileAccess.Read, FileShare.Read))
                            {
                                fSize = fileStream.Length;
                                using (var image = System.Drawing.Image.FromStream(fileStream, false, false))
                                {
                                    fWidth  = image.Width;
                                    fHeight = image.Height;
                                }
                                imageLink.Width  = fWidth;
                                imageLink.Height = fHeight;
                                db.SaveChanges();
                            }
                            DirectoryInfo directory = new DirectoryInfo(appDataPath);
                            FileInfo      tempFile  = directory.GetFiles("tempImage" + extension).FirstOrDefault();
                            if (tempFile != null)
                            {
                                tempFile.Delete();
                            }
                            System.Diagnostics.Debug.WriteLine("delete worked ");
                        }
                        catch (Exception ex)
                        {
                            System.Diagnostics.Debug.WriteLine("delete didn't work " + ex.Message);
                        }
                    }
                    if (imageLink.LastModified == null)
                    {
                        try
                        {
                            imageFileDateTime      = FtpUtilies.GetLastModified(imageLink.Link.Replace("http://", ftpHost));
                            imageLink.LastModified = imageFileDateTime;
                            db.SaveChanges();
                            results.NewLinksAdded++;
                        }
                        catch (Exception ex)
                        {
                            success = Helpers.ErrorDetails(ex);
                            results.Errors.Add(imageLink.Id + " date: " + imageFileDateTime + " error: " + success);
                            results.LinksRemoved++;
                        }
                    }
                    else
                    {
                        results.ImagesRenamed++;
                    }
                    results.RowsProcessed++;
                }

                foreach (int subDirId in db.CategoryFolders.Where(f => f.Parent == folderId).Select(f => f.Id).ToArray())
                {
                    UpDateDatesRecurr(subDirId, results, db);
                }
                success = "ok";
            }
            catch (Exception ex)
            {
                success = Helpers.ErrorDetails(ex);
            }
            return(success);
        }
Пример #29
0
        /// <summary>
        /// Build the layout for this item from the message.
        /// </summary>
        protected override CanvasItemLayout BuildLayout()
        {
            CanvasItemLayout newLayout = new CanvasItemLayout(this, DrawRectangle);

            if (Folder != null)
            {
                // Forum category icon, if one is present. At some point we should
                // replace this with an actual forum icon.
                Image categoryImage = null;

                if (Forum != null)
                {
                    categoryImage = CategoryFolder.IconForCategory(Forum.Cat);
                }
                if (categoryImage == null)
                {
                    categoryImage = Resources.Categories;
                }
                if (categoryImage != null)
                {
                    newLayout.Add(new CanvasImage
                    {
                        ID          = ActionID.None,
                        Image       = categoryImage,
                        ImageWidth  = 50,
                        ImageHeight = 50
                    });
                    newLayout.AddNewColumn();
                }

                // Forum name
                newLayout.Add(new CanvasText
                {
                    ID         = ActionID.None,
                    Text       = Folder.Name,
                    Font       = NameFont,
                    LineHeight = NameFont.Height + 10,
                    ForeColour = UI.System.ForegroundColour
                });
                newLayout.AddNewLine();

                // Forum title.
                if (Forum != null && !string.IsNullOrEmpty(Forum.Title))
                {
                    newLayout.Add(new CanvasHTMLText
                    {
                        ID         = ActionID.None,
                        Text       = Forum.Title,
                        Font       = TitleFont,
                        ForeColour = UI.System.ForegroundColour,
                        SpaceAfter = 15
                    });
                    newLayout.AddNewLine();
                }

                // Forum description.
                if (Forum != null && !string.IsNullOrEmpty(Forum.Desc))
                {
                    newLayout.Add(new CanvasHTMLText
                    {
                        ID         = ActionID.None,
                        HTMLText   = Forum.Desc,
                        Font       = DescriptionFont,
                        ForeColour = UI.System.ForegroundColour,
                        SpaceAfter = 15
                    });
                    newLayout.AddNewLine();
                }

                // If the Join is pending, say so.
                if (Forum != null && Forum.JoinPending)
                {
                    newLayout.Add(new CanvasImage
                    {
                        Image       = Resources.Warning,
                        ImageWidth  = 16,
                        ImageHeight = 16
                    });

                    newLayout.Add(new CanvasText
                    {
                        ID         = ActionID.None,
                        Text       = Resources.JoinPending,
                        LineHeight = 16,
                        Margin     = new Rectangle(0, 0, 0, 15),
                        Font       = Font
                    });
                    newLayout.AddNewLine();
                }

                // If a Resign is pending, say so.
                if (Folder.ResignPending)
                {
                    newLayout.Add(new CanvasImage
                    {
                        Image       = Resources.Warning,
                        ImageWidth  = 16,
                        ImageHeight = 16
                    });

                    newLayout.Add(new CanvasText
                    {
                        ID         = ActionID.None,
                        Text       = Resources.ResignPending,
                        LineHeight = 16,
                        Margin     = new Rectangle(0, 0, 0, 15),
                        Font       = Font,
                    });
                    newLayout.AddNewLine();
                }

                // If the Join failed, say so too.
                if (Folder.Flags.HasFlag(FolderFlags.JoinFailed))
                {
                    newLayout.Add(new CanvasImage
                    {
                        Image       = Resources.Error1,
                        ImageWidth  = 16,
                        ImageHeight = 16
                    });

                    newLayout.Add(new CanvasText
                    {
                        ID         = ActionID.None,
                        Text       = Resources.JoinFailure,
                        LineHeight = 16,
                        Font       = Font,
                        Margin     = new Rectangle(0, 0, 0, 15)
                    });
                    newLayout.AddNewLine();
                }

                // Resign/Join button
                // Don't display if the forum doesn't permit the user to resign it.
                if (Folder.CanResign)
                {
                    if (Folder.IsResigned ||
                        Folder.Flags.HasFlag(FolderFlags.JoinFailed) ||
                        Folder.ResignPending)
                    {
                        newLayout.Add(new CanvasButton
                        {
                            ID         = ActionID.JoinForum,
                            Text       = Resources.JoinForum,
                            Font       = DescriptionFont,
                            ForeColour = UI.System.ForegroundColour,
                            SpaceAfter = 15
                        });
                    }
                    else
                    {
                        newLayout.Add(new CanvasButton
                        {
                            ID         = ActionID.ResignForum,
                            Text       = Resources.ResignForum,
                            Font       = DescriptionFont,
                            ForeColour = UI.System.ForegroundColour,
                            SpaceAfter = 15
                        });
                    }
                }

                // Delete button
                // Offer the option to delete the folder if we're not joined to it
                newLayout.Add(new CanvasButton
                {
                    ID         = ActionID.Delete,
                    Text       = Resources.DeleteFolder,
                    Font       = DescriptionFont,
                    ForeColour = UI.System.ForegroundColour,
                    SpaceAfter = 15
                });

                // Add Participants button
                newLayout.Add(new CanvasButton
                {
                    ID         = ActionID.Participants,
                    Text       = Resources.Participants,
                    Font       = DescriptionFont,
                    ForeColour = UI.System.ForegroundColour,
                    SpaceAfter = 15
                });

                // Refresh button
                newLayout.Add(new CanvasButton
                {
                    ID         = ActionID.Refresh,
                    Text       = Resources.RefreshText,
                    Font       = DescriptionFont,
                    ForeColour = UI.System.ForegroundColour,
                    SpaceAfter = 15
                });

                // Manage Forum button
                if (Forum != null && Forum.IsModerator)
                {
                    newLayout.Add(new CanvasButton
                    {
                        ID         = ActionID.ManageForum,
                        Text       = Resources.ManageForum,
                        Font       = DescriptionFont,
                        ForeColour = UI.System.ForegroundColour,
                        SpaceAfter = 15
                    });
                }
            }
            return(newLayout);
        }
        public PageHitSuccessModel LogPageHit(PageHitRequestModel pageHitModel)
        {
            PageHitSuccessModel pageHitSuccessModel = new PageHitSuccessModel();

            try
            {
                using (OggleBoobleMySqContext db = new OggleBoobleMySqContext())
                {
                    var twoMinutesAgo = DateTime.Now.AddMinutes(-2);

                    var lastHit = db.PageHits.Where(h => h.VisitorId == pageHitModel.VisitorId && h.PageId == pageHitModel.PageId && h.Occured > twoMinutesAgo).FirstOrDefault();
                    if (lastHit == null)
                    {
                        db.PageHits.Add(new PageHit()
                        {
                            VisitorId = pageHitModel.VisitorId,
                            PageId    = pageHitModel.PageId,
                            Occured   = DateTime.Now //.AddMilliseconds(getrandom.Next())
                        });
                        db.SaveChanges();
                    }
                    pageHitSuccessModel.Success = "ok";
                    try
                    {
                        pageHitSuccessModel.PageHits = db.PageHits.Where(h => h.PageId == pageHitModel.PageId).Count();
                        var dbPageHitTotals = db.PageHitTotal.Where(h => h.PageId == pageHitModel.PageId).FirstOrDefault();
                        if (dbPageHitTotals != null)
                        {
                            pageHitSuccessModel.PageHits += dbPageHitTotals.Hits;
                        }
                        pageHitSuccessModel.UserPageHits  = db.PageHits.Where(h => h.VisitorId == pageHitModel.VisitorId).Count();
                        pageHitSuccessModel.UserImageHits = db.ImageHits.Where(h => h.VisitorId == pageHitModel.VisitorId).Count();

                        CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == pageHitModel.PageId).FirstOrDefault();
                        if (categoryFolder != null)
                        {
                            pageHitSuccessModel.RootFolder = categoryFolder.RootFolder;
                            pageHitSuccessModel.PageName   = categoryFolder.FolderName;

                            if (categoryFolder.Parent == -1)
                            {
                                pageHitSuccessModel.ParentName = "special";
                            }
                            else
                            {
                                CategoryFolder parentFolder = db.CategoryFolders.Where(f => f.Id == categoryFolder.Parent).FirstOrDefault();
                                if (parentFolder != null)
                                {
                                    pageHitSuccessModel.ParentName = parentFolder.FolderName;
                                }
                            }
                        }
                        else
                        {
                            pageHitSuccessModel.PageName = "Not Found";
                        }
                    }
                    catch (Exception ex)
                    {
                        pageHitSuccessModel.Success = "unrelated to insert, but: " + Helpers.ErrorDetails(ex);
                    }
                }
            }
            catch (Exception ex)
            {
                string err = Helpers.ErrorDetails(ex);
                if (err.Contains("Object reference not set to an instance of an object."))
                {
                    err = "Null reference. PageId: " + pageHitModel.PageId + " visId: " + pageHitModel.VisitorId;
                }
                pageHitSuccessModel.Success = err;
            }
            return(pageHitSuccessModel);
        }
Пример #31
0
        public AlbumInfoModel GetAlbumPageInfo(int folderId, string visitorId)
        {
            var albumInfo = new AlbumInfoModel();

            try
            {
                using (var db = new OggleBoobleMySqlContext())
                {
                    CategoryFolder dbCategoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    albumInfo.RootFolder      = dbCategoryFolder.RootFolder;
                    albumInfo.FolderName      = dbCategoryFolder.FolderName;
                    albumInfo.FolderType      = dbCategoryFolder.FolderType;
                    albumInfo.FileCount       = dbCategoryFolder.Files;
                    albumInfo.FolderCount     = dbCategoryFolder.SubFolders;
                    albumInfo.TotalChildFiles = dbCategoryFolder.TotalChildFiles;
                    albumInfo.TotalSubFolders = dbCategoryFolder.TotalSubFolders;
                    //albumInfo.FileCount = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Count();
                    //albumInfo.FolderCount = db.CategoryFolders.Where(f => f.Parent == folderId).Count();
                    albumInfo.UserPageHits = db.PageHits.Where(h => h.VisitorId == visitorId).Count();


                    int curFileCount = db.CategoryImageLinks.Where(l => l.ImageCategoryId == folderId).Count();
                    if (albumInfo.FileCount != curFileCount)
                    {
                        dbCategoryFolder.Files = curFileCount;
                        albumInfo.FileCount    = curFileCount;
                        db.SaveChanges();
                    }

                    #region 1. trackbackLinks
                    var trackbackLinks = db.TrackbackLinks.Where(t => t.PageId == folderId).ToList();
                    foreach (TrackbackLink trackbackLink in trackbackLinks)
                    {
                        if (trackbackLink.LinkStatus == "ok")
                        {
                            albumInfo.TrackBackItems.Add(new TrackbackLink()
                            {
                                SiteCode   = trackbackLink.SiteCode,
                                Href       = trackbackLink.Href,
                                LinkStatus = trackbackLink.LinkStatus
                            });
                        }
                    }
                    var dbFolderDetails = db.FolderDetails.Where(d => d.FolderId == folderId).FirstOrDefault();
                    if (dbFolderDetails != null)
                    {
                        albumInfo.FolderComments = dbFolderDetails.FolderComments;
                        albumInfo.StaticFile     = dbFolderDetails.StaticFile;
                        if (dbFolderDetails.StaticFileUpdate != null)
                        {
                            albumInfo.StaticFileUpdate = dbFolderDetails.StaticFileUpdate.Value.ToShortDateString();
                        }
                    }
                    #endregion

                    #region 2. BreadCrumbs
                    //CategoryFolder thisFolder = db.CategoryFolders.Where(f => f.Id == folderId).First();
                    //albumInfo.BreadCrumbs.Add(new BreadCrumbItemModel()
                    //{
                    //    FolderId = thisFolder.Id,
                    //    FolderName = thisFolder.FolderName,
                    //    ParentId = thisFolder.Parent,
                    //    IsInitialFolder = true
                    //});
                    //var parent = thisFolder.Parent;
                    //while (parent > 1)
                    //{
                    //    CategoryFolder parentDb = db.CategoryFolders.Where(f => f.Id == parent).First();
                    //    albumInfo.BreadCrumbs.Add(new BreadCrumbItemModel()
                    //    {
                    //        FolderId = parentDb.Id,
                    //        FolderName = parentDb.FolderName,
                    //        IsInitialFolder = false
                    //    });
                    //    parent = parentDb.Parent;
                    //}
                    #endregion

                    //db.PageHits.RemoveRange(db.PageHits.Where(h => h.VisitorId == devlVisitorId));
                    //db.ImageHits.RemoveRange(db.ImageHits.Where(i => i.VisitorId == devlVisitorId));
                    //db.SaveChanges();
                    albumInfo.PageHits = db.PageHits.Where(h => h.PageId == folderId).Count();
                    var dbPageHitTotals = db.PageHitTotal.Where(h => h.PageId == folderId).FirstOrDefault();
                    if (dbPageHitTotals != null)
                    {
                        albumInfo.PageHits += dbPageHitTotals.Hits;
                    }
                    CategoryFolder categoryFolder = db.CategoryFolders.Where(f => f.Id == folderId).FirstOrDefault();
                    //if (categoryFolder != null) albumInfo.RootFolder = mdb.CategoryFolders.Where(f => f.Id == folderId).First().RootFolder;
                    //albumInfo.UserPageHits = db.PageHits.Where(h => h.VisitorId == visitorId).Count();
                    //albumInfo.UserImageHits = db.ImageHits.Where(h => h.VisitorId == visitorId).Count();
                }
                albumInfo.Success = "ok";
            }
            catch (Exception ex)
            {
                albumInfo.Success = Helpers.ErrorDetails(ex);
            }
            return(albumInfo);
        }