Beispiel #1
0
        // 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}");
        }
Beispiel #2
0
        // 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}])");
        }
Beispiel #3
0
        // 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}");
        }