public String DeleteFolderLabel(String command, List <User> MasterUsers, List <Label> MasterLabels, List <Folder> MasterFolders) { String result = String.Empty; var regularExpression = new Regex(@"(Delete_Folder_Label)\s(\w+)\s([0-9]+)\s(['`‘].+['`’])", RegexOptions.IgnoreCase); var match = regularExpression.Match(command); String username = match.Groups[2].Value; String folderId = match.Groups[3].Value; String labelName = match.Groups[4].Value; labelName = Regex.Replace(labelName, "^['`‘]|['`‘]$", ""); User user = MasterUsers.Find(user => user.Username.ToLower() == username.ToLower()); if (user == null) { result = "Error - unknown user"; } else { Label label = MasterLabels.Find(label => label.UserId.Equals(user.Id) && label.Name.ToLower().Equals(labelName.ToLower())); if (label == null) { result = "Error - label name not exist"; } else { Folder folder = MasterFolders.Find(folder => folder.Id == folderId); if (folder == null) { result = "Error - folder doesn’t exist"; } else { if (folder.UserId != user.Id) { result = "Error - folder owner not match"; } else { FolderLabel folderLabel = Folder_Labels.Find(folderLabel => folderLabel.FolderId.Equals(folder.Id) && folderLabel.LabelId.Equals(label.Id)); if (folderLabel == null) { result = "Error - folder-label doesn’t exist"; } else { Folder_Labels.Remove(folderLabel); result = "Success"; } } } } } return(result); }
public String AddFolderLabel(String command, List <User> MasterUsers, List <Label> MasterLabels, List <Folder> MasterFolders) { String result = String.Empty; var regularExpression = new Regex(@"(Add_Folder_Label)\s(\w+)\s([0-9]+)\s(['`‘].+['`’])", RegexOptions.IgnoreCase); var match = regularExpression.Match(command); String username = match.Groups[2].Value; String folderId = match.Groups[3].Value; String labelName = match.Groups[4].Value; labelName = Regex.Replace(labelName, "^['`‘]|['`‘]$", ""); User user = MasterUsers.Find(user => user.Username.ToLower() == username.ToLower()); if (user == null) { result = "Error - unknown user"; } else { Label label = MasterLabels.Find(label => label.UserId.Equals(user.Id) && label.Name.ToLower().Equals(labelName.ToLower())); if (label == null) { result = "Error - label name not exist"; } else { Folder folder = MasterFolders.Find(folder => folder.Id == folderId); if (folder == null) { result = "Error - folder doesn’t exist"; } else { if (folder.UserId != user.Id) { result = "Error - folder owner not match"; } else { FolderLabel newFolderLabel = Folder_Labels.Find(newFolderLabel => newFolderLabel.FolderId.Equals(folder.Id) && newFolderLabel.LabelId.Equals(label.Id)); if (newFolderLabel != null) { result = "Error - Folder " + folder.Name + " with User " + user.Username + " already labeled with Label " + label.Name; } else { newFolderLabel = new FolderLabel(); newFolderLabel.Id = Guid.NewGuid().ToString(); newFolderLabel.FolderId = folder.Id; newFolderLabel.LabelId = label.Id; Folder_Labels.Add(newFolderLabel); result = "Success"; } } } } } return(result); }