コード例 #1
0
ファイル: Engine.cs プロジェクト: IvanGarnizov/BlackSound
        public void Run()
        {
            songsController.Seed();

            input = Console.ReadLine();

            while (input != "stop")
            {
                var    arguments = input.Split(',').ToList();
                string command   = arguments[0];

                arguments.RemoveAt(0);

                switch (command)
                {
                case "CreateSong":
                    if (IsAdmin())
                    {
                        if (arguments.Count == 3)
                        {
                            songsController.Create(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.AddSongWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.AddSongNoAdmin);
                    }

                    break;

                case "ReadSongs":
                    if (IsAdmin())
                    {
                        if (arguments.Count == 0)
                        {
                            songsController.Read();
                        }
                        else
                        {
                            Console.WriteLine(Messages.NoArgumentsExpected);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.ReadSongsNoAdmin);
                    }

                    break;

                case "UpdateSong":
                    if (IsAdmin())
                    {
                        if (1 < arguments.Count && arguments.Count <= 4)
                        {
                            songsController.Update(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.UpdateSongWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.UpdateSongNoAdmin);
                    }

                    break;

                case "DeleteSong":
                    if (IsAdmin())
                    {
                        if (arguments.Count == 1)
                        {
                            songsController.Delete(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.DeleteSongWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.DeleteSongNoAdmin);
                    }

                    break;

                case "CreatePlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 2)
                        {
                            playlistsController.Create(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.AddPlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.AddPlaylistNoLogin);
                    }

                    break;

                case "ReadPlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 1)
                        {
                            playlistsController.Read(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.ReadPlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.ReadPlaylistsNoLogin);
                    }

                    break;

                case "UpdatePlaylist":
                    if (IsLoggedIn())
                    {
                        if (1 < arguments.Count && arguments.Count <= 3)
                        {
                            playlistsController.Update(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.UpdatePlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.UpdatePlaylistNoLogin);
                    }

                    break;

                case "DeletePlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 1)
                        {
                            playlistsController.Delete(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.DeletePlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.DeletePlaylistNoLogin);
                    }

                    break;

                case "SharePlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 1)
                        {
                            playlistsController.Share(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.SharePlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.SharePlaylistNoLogin);
                    }


                    break;

                case "AddSongToPlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 2)
                        {
                            playlistsController.AddSong(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.AddSongToPlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.AddSongToPlaylistNoLogin);
                    }

                    break;

                case "RemoveSongFromPlaylist":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 2)
                        {
                            playlistsController.RemoveSong(arguments, usersController.CurrentUser.Id);
                        }
                        else
                        {
                            Console.WriteLine(Messages.RemoveSongFromPlaylistWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.RemoveSongFromPlaylistNoLogin);
                    }

                    break;

                case "Register":
                    if (!IsLoggedIn())
                    {
                        if (arguments.Count == 3)
                        {
                            usersController.Register(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.RegisterWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.SomeoneAlreadyLoggedIn);
                    }

                    break;

                case "Login":
                    if (!IsLoggedIn())
                    {
                        if (arguments.Count == 2)
                        {
                            usersController.Login(arguments);
                        }
                        else
                        {
                            Console.WriteLine(Messages.LoginWrongNumberOfArguments);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.SomeoneAlreadyLoggedIn);
                    }

                    break;

                case "Logout":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 0)
                        {
                            usersController.Logout();
                        }
                        else
                        {
                            Console.WriteLine(Messages.NoArgumentsExpected);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.NooneLoggedIn);
                    }

                    break;

                case "CurrentUser":
                    if (IsLoggedIn())
                    {
                        if (arguments.Count == 0)
                        {
                            Console.WriteLine(usersController.CurrentUser.Email);
                        }
                        else
                        {
                            Console.WriteLine(Messages.NoArgumentsExpected);
                        }
                    }
                    else
                    {
                        Console.WriteLine(Messages.NooneLoggedIn);
                    }

                    break;

                default:
                    Console.WriteLine(Messages.CommandNotSupported(command));

                    break;
                }

                input = Console.ReadLine();
            }
        }