// UploadPicture <albumName> <pictureTitle> <pictureFilePath> public static string Execute(string[] data) { if (Session.User == null) { throw new InvalidOperationException("Invalid credentials!"); } var albumName = data[1]; var pictureTitle = data[2]; var pictureFilePath = data[3]; var db = new PhotoShareContext(); var album = db.Albums.FirstOrDefault(x => x.Name == albumName); if (album == null) { throw new ArgumentException($"Album {albumName} not found!"); } album.Pictures.Add(new Picture() { Title = pictureTitle, Path = pictureFilePath }); db.SaveChanges(); db.Dispose(); return($"Picture {pictureTitle} added to {albumName}"); }
// ShareAlbum <albumId> <username> <permission> // For example: // ShareAlbum 4 dragon321 Owner // ShareAlbum 4 dragon11 Viewer public static string Execute(string[] data) { if (Session.User == null) { throw new InvalidOperationException("Invalid credentials!"); } var albumId = int.Parse(data[1]); var userName = data[2]; var permission = data[3]; var db = new PhotoShareContext(); var album = db.Albums.SingleOrDefault(x => x.Id == albumId); var user = db.Users.SingleOrDefault(x => x.Username == userName); if (album == null) { throw new ArgumentException($"Album {albumId} not found!"); } if (user == null) { throw new ArgumentException($"User {userName} not found!"); } if (permission != "owner" && permission != "viewer") { throw new ArgumentException("Permission must be either “Owner” or “Viewer”!"); } var parsed = (Role)Enum.Parse(typeof(Role), permission, true); album.AlbumRoles.Add(new AlbumRole() { User = user, Album = album, Role = parsed }); db.SaveChanges(); db.Dispose(); return($"Username {userName} added to album [{album.Name}] ([{permission}])"); }
// ModifyUser <username> <property> <new value> // For example: // ModifyUser <username> Password <NewPassword> // ModifyUser <username> BornTown <newBornTownName> // ModifyUser <username> CurrentTown <newCurrentTownName> // !!! Cannot change username public static string Execute(string[] data) { if (Session.User == null) { throw new InvalidOperationException("Invalid credentials!"); } var db = new PhotoShareContext(); var userName = data[1]; var property = data[2].ToLower(); var value = data[3]; var user = db.Users .FirstOrDefault(x => x.Username == userName); if (user == null) { throw new ArgumentException($"User {userName} not found"); } if (property != "password" && property != "borntown" && property != "currenttown") { throw new ArgumentException($"Property {property} not supported!"); } if (property == "password") { if (!value.Any(char.IsLower) || !value.Any(char.IsNumber)) { throw new ArgumentException($"Invalid Password"); } user.Password = value; db.SaveChanges(); } else if (property == "borntown") { var town = db.Towns.FirstOrDefault(x => x.Name.ToLower() == value.ToLower()); if (town == null) { throw new ArgumentException($"Town {value} not found"); } user.BornTown = town; db.SaveChanges(); } else { var town = db.Towns.FirstOrDefault(x => x.Name.ToLower() == value.ToLower()); if (town == null) { throw new ArgumentException($"Town {value} not found"); } user.CurrentTown = town; db.SaveChanges(); } db.Dispose(); return($"User {userName} {property} is {value}"); }