public void deleteFolder(string currFolder)
        {
            MapFolderDB folderManeger = new MapFolderDB(new Settings());
            ObjectId    currFolderID  = new ObjectId(currFolder);
            MapFolder   currentFolder = folderManeger.GetMapFolderById(currFolderID);

            try
            {
                foreach (ObjectId idOfSubFolder in currentFolder.idOfSubFolders)
                {
                    deleteFolder(idOfSubFolder.ToString());
                }
            }
            catch
            {
            }
            ObjectId  prevFolderID = currentFolder.ParentDierctory;
            MapFolder prevFolder   = folderManeger.GetMapFolderById(prevFolderID);

            foreach (ObjectId objID in prevFolder.idOfSubFolders)
            {
                if (currFolderID.Equals(objID))
                {
                    currFolderID = objID;
                }
            }
            prevFolder.idOfSubFolders.Remove(currFolderID);
            folderManeger.UpdateMapFolder(prevFolder);
            folderManeger.RemoveMapFolderById(currFolderID);
            ViewBag.go2 = prevFolderID.ToString();
        }
        public ActionResult Details(string id)
        {
            if (!string.IsNullOrEmpty(id))
            {
                MapFolderDB _mfManeger   = new MapFolderDB(new Settings());
                UserDB      _userManeger = new UserDB(new Settings());

                var mId    = new ObjectId(id);
                var folder = _mfManeger.GetMapFolderById(mId);
                if (folder != null)
                {
                    var  userId      = User.Identity.GetUserId();
                    bool isFollowing = folder.Followers.Contains(new ObjectId(userId), new IDComparer());
                    ViewBag.isFollowing = isFollowing;
                    FolderPermissionController fpc = new FolderPermissionController();
                    MapViewModel mvm = new MapViewModel {
                        Id = folder.Id, Name = folder.Name, CreationTime = folder.CreationTime, CreatorId = folder.Creator, CreatorEmail = "not supported yet" /*UserManager.GetEmail(map.Creator.ToString())*/, Description = folder.Description, Model = folder.Model, ModelArchive = null
                    };
                    if (fpc.IsFolderOwner(id, User.Identity.GetUserId()))
                    {
                        return(View(mvm));
                    }
                    else
                    {
                        return(View(mvm));
                    }
                }
            }
            return(RedirectToAction("Index", "Home"));
        }
        public void addNewFolder(string parentID, string folderName, string folderDescription)
        {
            MapFolderDB folderManeger = new MapFolderDB(new Settings());
            var         id            = User.Identity.GetUserId();
            ObjectId    UserId        = new ObjectId(id);

            if (parentID == null || parentID.Equals(""))
            {
                parentID = folderManeger.GetSuperiorMapFolderOfUser(UserId).Id.ToString();
            }
            _mapFolderDataManager = new MapFolderDB(new Settings());


            MapPermissions mapPermissions = new MapPermissions();

            mapPermissions.Owner    = new KeyValuePair <ObjectId, MapPermissionType>(UserId, MapPermissionType.RW);
            mapPermissions.Users    = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.Groups   = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.AllUsers = MapPermissionType.NA;

            mapPermissions.Users.Add(UserId, MapPermissionType.RW);

            MapFolder folder = new MapFolder();

            folder.Name             = folderName;
            folder.Creator          = UserId;
            folder.CreationTime     = DateTime.Now;
            folder.Description      = folderDescription;
            folder.Followers        = new HashSet <ObjectId>();
            folder.Permissions      = mapPermissions;
            folder.idOfMapsInFolder = new HashSet <ObjectId>();
            folder.idOfSubFolders   = new HashSet <ObjectId>();
            folder.ParentDierctory  = new ObjectId(parentID);
            MapFolder parentFolder = folderManeger.GetMapFolderById(folder.ParentDierctory);
            string    path         = parentFolder.Model["path"].ToString();

            if (path.Equals(""))
            {
                path = parentFolder.Name;
            }
            else
            {
                path = path + "/" + parentFolder.Name;
            }
            if ((parentFolder.Model["type"]).Equals("sharedSup") || (parentFolder.Model["type"]).Equals("shared"))
            {
                folder.Model = new BsonDocument {
                    { "type", NOT_SUPIRIOR_BUT_SHARED }, { "path", path }
                };
            }
            else
            {
                folder.Model = new BsonDocument {
                    { "type", NOT_SUPIRIOR_BUT_OWNED }, { "path", path }
                };
            }

            folderManeger.AddSubFolder(parentFolder, folder);
        }
        public ActionResult OpenFolder(string Id)
        {
            string   userIdAsString = User.Identity.GetUserId();
            ObjectId userObjectID   = new ObjectId(userIdAsString);
            ObjectId parentID       = new ObjectId(Id);
            var      parent         = new MapFolderDB(new Settings()).GetMapFolderById(parentID);

            if (parent.Model["type"].Equals(SharedCodedData.OWNED_SUPIRIOR))
            {
                parent   = _mapFolderDataManager.GetSuperiorMapFolderOfUserOwned(userObjectID);
                parentID = parent.Id;
            }
            if (parent.Model["type"].Equals(SharedCodedData.SHARED_SUPIRIOR))
            {
                parent   = _mapFolderDataManager.GetSuperiorMapFolderOfUserShared(userObjectID);
                parentID = parent.Id;
            }
            ObjectId prevFolderID        = parent.ParentDierctory;
            var      allFoldersOfUser    = _mapFolderDataManager.GetAllMapFoldersOfUser(userObjectID);
            var      allFolderOwnedByUsr = new List <MapFolder>();

            foreach (var folder in allFoldersOfUser)
            {
                if (folder.Permissions.Owner.Key.ToString().Equals(userObjectID.ToString()) && !folder.Model["type"].Equals(SharedCodedData.SHARED_SUPIRIOR))
                {
                    allFolderOwnedByUsr.Add(folder);
                }
            }
            ViewBag.allFoldersOfUser = allFolderOwnedByUsr;
            var prevFolder = new MapFolderDB(new Settings()).GetMapFolderById(prevFolderID);
            var mapFolders = this._mapFolderDataManager.GetAllSubFolder(parent);
            var maps       = this._mapFolderDataManager.GetAllMapsInFolder(parent);

            ViewBag.maps               = maps;
            ViewBag.currFolder         = parent;
            ViewBag.currFolderID       = parent.Id;
            ViewBag.currFolderIDString = parent.Id.ToString();

            ViewBag.prevFolder = prevFolder;
            if (prevFolder == null)
            {
                ViewBag.prevFolderID = null;
            }
            else
            {
                ViewBag.prevFolderID = prevFolder.Id;
            }
            if (prevFolder != null)
            {
                List <MapFolder> prevFOlderInList = new List <MapFolder>()
                {
                    prevFolder
                };
                mapFolders = prevFOlderInList.Union(mapFolders);
                List <MapFolder> viewList = mapFolders.ToList();
            }
            return(PartialView("_MyFoldersView", mapFolders));
        }
        public FolderPermissionController()
        {
            this._mapManager    = new MapDB(new Settings());
            this._userService   = new UserDB(new Settings());
            this._groupManager  = new GroupDB(new Settings());
            this._folderManeger = new MapFolderDB(new Settings());

            //_userManager = UserManager;
        }
예제 #6
0
        private MapFolder createSuppFolderLocaly(string whichSupp)
        {
            MapFolderDB _mapFolderDataManager = new MapFolderDB(new Settings());

            var      id     = User.Identity.GetUserId();
            ObjectId UserId = new ObjectId(id);

            MapPermissions mapPermissions = new MapPermissions();

            mapPermissions.Owner    = new KeyValuePair <ObjectId, MapPermissionType>(UserId, MapPermissionType.RW);
            mapPermissions.Users    = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.Groups   = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.AllUsers = MapPermissionType.NA;

            mapPermissions.Users.Add(UserId, MapPermissionType.RW);

            MapFolder suppFolder = new MapFolder();

            suppFolder.Name              = "suppFolder" + whichSupp;
            suppFolder.Creator           = UserId;
            suppFolder.CreationTime      = DateTime.Now;
            suppFolder.Description       = "Supirior Folder " + whichSupp;
            suppFolder.Followers         = new HashSet <ObjectId>();
            suppFolder.Permissions       = mapPermissions;
            suppFolder.idOfMapsInFolder  = new HashSet <ObjectId>();
            suppFolder.idOfSubFolders    = new HashSet <ObjectId>();
            suppFolder.ParentDierctory   = new ObjectId();
            suppFolder.FirstFolderOfUser = UserId;
            suppFolder.Model             = new BsonDocument {
                { "type", whichSupp }, { "path", "" }
            };
            List <Map> maps = null;

            if (whichSupp.Equals(SharedCodedData.OWNED_SUPIRIOR))
            {
                maps = new MapDB(new Settings()).GetMapsByCreatorId(UserId).ToList();
            }
            else
            {
                maps = new MapDB(new Settings()).GetSharedMapsById(UserId).ToList();
            }
            foreach (Map map in maps)
            {
                suppFolder.idOfMapsInFolder.Add(map.Id);
            }
            return(suppFolder);
        }
예제 #7
0
        private MapFolder createFolderLocaly(string folderName)
        {
            MapFolderDB _mapFolderDataManager = new MapFolderDB(new Settings());

            var      id     = User.Identity.GetUserId();
            ObjectId UserId = new ObjectId(id);

            MapPermissions mapPermissions = new MapPermissions();

            mapPermissions.Owner    = new KeyValuePair <ObjectId, MapPermissionType>(UserId, MapPermissionType.RW);
            mapPermissions.Users    = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.Groups   = new Dictionary <ObjectId, MapPermissionType>();
            mapPermissions.AllUsers = MapPermissionType.NA;

            mapPermissions.Users.Add(UserId, MapPermissionType.RW);

            MapFolder suppFolder = new MapFolder();

            suppFolder.Name             = folderName;
            suppFolder.Creator          = UserId;
            suppFolder.CreationTime     = DateTime.Now;
            suppFolder.Description      = "shared folder for group" + folderName;
            suppFolder.Followers        = new HashSet <ObjectId>();
            suppFolder.Permissions      = mapPermissions;
            suppFolder.idOfMapsInFolder = new HashSet <ObjectId>();
            suppFolder.idOfSubFolders   = new HashSet <ObjectId>();

            // MapFolder supFolder = _mapFolderDataManager.GetSuperiorMapFolderOfUser
            suppFolder.ParentDierctory   = new ObjectId();
            suppFolder.FirstFolderOfUser = UserId;
            var maps = new MapDB(new Settings()).GetAllMaps();

            foreach (Map map in maps)
            {
                suppFolder.idOfMapsInFolder.Add(map.Id);
            }
            return(suppFolder);
        }
 public ActionResult Delete(string id)
 {
     try
     {
         // deleteFolder(id);
         ViewBag.folderID = id;
         var folder = new MapFolderDB(new Settings()).GetMapFolderById(new ObjectId(id));
         ViewBag.prevFolderID = folder.ParentDierctory.ToString();
         var map = this._mapFolderDataManager.GetMapFolderById(new ObjectId(id));
         if (IsValidId(id) && IsValidMap(map))
         {
             var mdvm = new MapDeleteViewModel {
                 Id = map.Id.ToString(), Name = map.Name, CreatorEmail = "", CreationTime = map.CreationTime, Description = map.Description
             };
             return(View(mdvm));
         }
     }
     catch (Exception)
     {
         return(RedirectToAction("Index", "Home"));
     }
     return(RedirectToAction("Index", "Home"));
 }
예제 #9
0
 public MapController()
 {
     this._mapManager    = new MapDB(new Settings());
     this._groupManager  = new GroupDB(new Settings());
     this._folderManeger = new MapFolderDB(new Settings());
 }
예제 #10
0
        public ActionResult Index(string id, string ownedOrShared)
        {
            //MailSender.SendMailMessage("*****@*****.**", "*****@*****.**", "", "", "(do not reply)", "lalalalalala");
            bool isOwned;
            bool isShared;

            ViewBag.isShared = ownedOrShared != null && ownedOrShared.Equals("shared");
            if (ownedOrShared == null)
            {
                isOwned  = false;
                isShared = false;
            }
            else
            {
                isOwned  = ownedOrShared.Equals("owned");
                isShared = ownedOrShared.Equals("shared");
            }
            ViewBag.ownedFolderID = null;
            MapFolderDB mapFolderManeger = new MapFolderDB(new Settings());
            bool        isIdOfOwned      = false;

            if (id != null)
            {
                ObjectId  oId = new ObjectId(id);
                MapFolder mf  = mapFolderManeger.GetMapFolderById(oId);
                if (isOwned)
                {
                    ViewBag.ownedFolderID = oId;
                    isIdOfOwned           = true;
                }
            }
            if (!isIdOfOwned)
            {
                ObjectId userID    = new ObjectId(User.Identity.GetUserId());
                var      supFolder = new MapFolderDB(new Settings()).GetSuperiorMapFolderOfUserOwned(userID);
                if (supFolder != null)
                {
                    ObjectId fId = supFolder.Id;
                    ViewBag.ownedFolderID = fId;
                }
                else
                {
                    supFolder = createSuppFolderLocaly(SharedCodedData.OWNED_SUPIRIOR);
                    mapFolderManeger.AddFolder(supFolder);
                    ObjectId fId = supFolder.Id;
                    ViewBag.ownedFolderID = fId;
                }
            }

            ViewBag.sharedFolderID = null;

            bool isIdOfShared = false;

            if (id != null)
            {
                ObjectId  oId = new ObjectId(id);
                MapFolder mf  = mapFolderManeger.GetMapFolderById(oId);
                if (isShared)
                {
                    ViewBag.sharedFolderID = oId;
                    isIdOfShared           = true;
                }
            }
            if (!isIdOfShared)
            {
                ObjectId userID    = new ObjectId(User.Identity.GetUserId());
                var      supFolder = new MapFolderDB(new Settings()).GetSuperiorMapFolderOfUserShared(userID);
                if (supFolder != null)
                {
                    ObjectId fId = supFolder.Id;
                    ViewBag.sharedFolderID = fId;
                }
                else
                {
                    supFolder = createSuppFolderLocaly(SharedCodedData.SHARED_SUPIRIOR);
                    mapFolderManeger.AddFolder(supFolder);
                    ObjectId fId = supFolder.Id;
                    ViewBag.sharedFolderID = fId;
                }
            }

            return(View());
        }
        public ActionResult OpenFolderShared(string Id)
        {
            string   userIdAsString      = User.Identity.GetUserId();
            ObjectId userObjectID        = new ObjectId(userIdAsString);
            ObjectId parentID            = new ObjectId(Id);
            var      parent              = new MapFolderDB(new Settings()).GetMapFolderById(parentID);
            bool     isCurrentFolderSupp = false;

            if (parent.Model["type"].Equals(SharedCodedData.SHARED_SUPIRIOR))
            {
                parent              = _mapFolderDataManager.GetSuperiorMapFolderOfUserShared(userObjectID);
                parentID            = parent.Id;
                isCurrentFolderSupp = true;
            }
            ObjectId prevFolderID = parent.ParentDierctory;
            var      prevFolder   = new MapFolderDB(new Settings()).GetMapFolderById(prevFolderID);

            if (prevFolder != null)
            {
                bool isPrevCorrect = false;
                if (prevFolder.Permissions.Users.Keys.Contains(userObjectID))
                {
                    isPrevCorrect = true;
                }
                else
                {
                    foreach (var groupId in prevFolder.Permissions.Groups.Keys)
                    {
                        var group = _groupManager.GetGroupById(groupId);
                        if (group.Members.Keys.Contains(userObjectID))
                        {
                            isPrevCorrect = true;
                            break;
                        }
                    }
                }
                if (!isPrevCorrect)
                {
                    prevFolder   = _mapFolderDataManager.GetSuperiorMapFolderOfUserShared(userObjectID);
                    prevFolderID = prevFolder.Id;
                }
            }
            var mapFolders = _mapFolderDataManager.GetAllSubFolder(parent);

            if (isCurrentFolderSupp)
            {
                mapFolders = this._mapFolderDataManager.GetAllFolders();
            }
            var finalMapFolders = new List <MapFolder>();

            foreach (var mapFolder in mapFolders)
            {
                if (mapFolder.Id.Equals(parent.Id))
                {
                    continue;
                }
                if (mapFolder.Permissions.Owner.Key.Equals(userObjectID))
                {
                    continue;
                }
                if (mapFolder.Permissions.Users.Keys.Contains(userObjectID))
                {
                    finalMapFolders.Add(mapFolder);
                }
                else
                {
                    foreach (var groupId in mapFolder.Permissions.Groups.Keys)
                    {
                        var group = _groupManager.GetGroupById(groupId);
                        if (group.Members.Keys.Contains(userObjectID))
                        {
                            finalMapFolders.Add(mapFolder);
                        }
                    }
                }
            }

            mapFolders = finalMapFolders;

            var maps = new List <Map>();

            if (parent.Model["type"].Equals(SharedCodedData.SHARED_SUPIRIOR))
            {
                var allMaps = _mapDataManager.GetAllMaps();
                foreach (var tempMap in allMaps)
                {
                    if (tempMap.Permissions.Owner.Key.Equals(userObjectID))
                    {
                        continue;
                    }
                    else if (tempMap.Permissions.Users.Keys.Contains(userObjectID))
                    {
                        maps.Add(tempMap);
                    }
                    else
                    {
                        var groups = _groupManager.GetAllGroupsOfUser(userObjectID);
                        foreach (var group in groups)
                        {
                            if (tempMap.Permissions.Groups.Keys.Contains(group.Id))
                            {
                                maps.Add(tempMap);
                                break;
                            }
                        }
                    }
                }
            }
            else
            {
                maps = this._mapFolderDataManager.GetAllMapsInFolder(parent).ToList();
            }

            ViewBag.maps               = maps;
            ViewBag.currFolder         = parent;
            ViewBag.currFolderID       = parent.Id;
            ViewBag.currFolderIDString = parent.Id.ToString();

            ViewBag.prevFolder = prevFolder;
            if (prevFolder == null)
            {
                ViewBag.prevFolderID = null;
            }
            else
            {
                ViewBag.prevFolderID = prevFolder.Id;
            }
            if (prevFolder != null)
            {
                List <MapFolder> prevFOlderInList = new List <MapFolder>()
                {
                    prevFolder
                };
                mapFolders = prevFOlderInList.Union(mapFolders);
                List <MapFolder> viewList = mapFolders.ToList();
            }
            return(PartialView("_MySharedFoldersView", mapFolders));
        }