/// <summary> /// Staff menu /// </summary> static void StaffMenu() { if (!staffVerified) { StaffLogin(); } else { Console.WriteLine( "\n=============Staff Menu==========\n" + "1. Add a new movie DVD\n" + "2. Remove a movie DVD\n" + "3. Register a new Member\n" + "4. Find a registered member's phone number\n" + "0. Return to main menu\n" + "================================="); appStatus = (Reusables.waitUserResponse("\n Please make a selection (1-4 or 0 to return to main menu): ", new int[] { 0, 1, 2, 3, 4 })) switch { 0 => AppStatus.MainMenu, 1 => AppStatus.Staff1, 2 => AppStatus.Staff2, 3 => AppStatus.Staff3, 4 => AppStatus.Staff4, _ => AppStatus.MainMenu, }; } }
/// <summary> /// constructor /// </summary> /// <param name="givenName">member's given name</param> /// <param name="familyName">member's family name</param> /// <param name="address">member's address</param> /// <param name="phoneNumber">member's phone number</param> /// <param name="password">member's password</param> public Member(string givenName, string familyName, string address, string phoneNumber, string password) { this.givenName = Reusables.ToTitleCase(givenName); this.familyName = Reusables.ToTitleCase(familyName); this.address = address; this.phoneNumber = phoneNumber; this.username = Reusables.ToTitleCase(familyName) + Reusables.ToTitleCase(givenName); this.password = password; }
/// <summary> /// Constructor /// </summary> /// <param name="title">title of this movie</param> /// <param name="starring">starring of this movie</param> /// <param name="director">director of this movie</param> /// <param name="duration">duration of this movie</param> /// <param name="genre">gener of this movie</param> /// <param name="classification">classfication of this movie</param> /// <param name="releaseDate">release date of this movie</param> /// <param name="numCopies">number of copies available of this movie</param> public Movie(string title, string starring, string director, int duration, Genre genre, Classification classification, int releaseDate, int numCopies) { this.title = Reusables.ToTitleCase(title); this.starring = starring; this.director = director; this.duration = duration; this.genre = genre; this.classification = classification; this.releaseDate = releaseDate; this.numCopies = numCopies; }
/// <summary> /// Helps input menu for staff to add a movie /// This simply create a movie object based on the input /// No duplication check /// </summary> /// <returns>Movie object</returns> public static Movie Staff1() { Console.WriteLine("\n=====Add Movie====="); Console.Write("Title: "); string title = Console.ReadLine(); Console.Write("Starring: "); string starring = Console.ReadLine(); Console.Write("Director: "); string director = Console.ReadLine(); int duration = Reusables.waitUserIntegerResponse("Duration(minutes): "); Genre genre = (Reusables.waitUserResponse("Genre:\n" + "1. Drama\n" + "2. Adventure\n" + "3. Family\n" + "4. Action\n" + "5. Sci-Fi\n" + "6. Comedy\n" + "7. Animated\n" + "8. Thriller\n" + "9. Other\n" + "Select: ", new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 })) switch { 1 => Genre.Drama, 2 => Genre.Adventure, 3 => Genre.Family, 4 => Genre.Action, 5 => Genre.SciFi, 6 => Genre.Comedy, 7 => Genre.Animated, 8 => Genre.Thriller, 9 => Genre.Other, _ => Genre.Other, }; Classification classification = (Reusables.waitUserResponse("Classification:\n" + "1. General (G)\n" + "2. Parental Guidance (PG)\n" + "3. Mature (M15+)\n" + "4. Mature Accompanies (MA15+)\n" + "Select: ", new int[] { 1, 2, 3, 4 })) switch { 1 => Classification.General, 2 => Classification.ParentalGuidance, 3 => Classification.Mature, 4 => Classification.MatureAccompanied, _ => Classification.General, }; int releaseDate = Reusables.waitUserIntegerResponse("Release date (year): "); int numCopies = Reusables.waitUserIntegerResponse("Number of copies: "); return(new Movie(title, starring, director, duration, genre, classification, releaseDate, numCopies)); }
/// <summary> /// List all movies that the member is currently borrowing /// </summary> static void Member4Package() { if (user.NumBorrowing == 0) { Console.WriteLine("\n ** You have no movies borrowing ** \n"); } else { Console.WriteLine(MemberOptions.Member4(user.GetBorrowingMovies())); Reusables.waitUserPressEnter(); } appStatus = AppStatus.MemberMenu; }
/// <summary> /// Supports input for borrowing movie /// </summary> /// <param name="movies">all available movies in Movie Collection</param> /// <returns>title of the movie that is selected by the member</returns> public static string Member2(Movie[] movies) { Console.WriteLine("\n=====Borrow movie====="); // display all movie title in the store for (int i = 0; i < movies.Length; i++) { Console.WriteLine("{0}. {1}", i + 1, movies[i].title); } // ask which title they want to borrow (input by number) int res = Reusables.waitUserResponse("Select by number: ", Reusables.createIntArray(1, movies.Length)); // return title return(movies[res - 1].title); }
/// <summary> /// Member menu /// </summary> static void MemberMenu() { if (!memberVerified) { MemberLogin(); } else { Console.WriteLine( "\n==============Member Menu=========\n" + "1. Dispaly all movies\n" + "2. Borrow a movie DVD\n" + "3. Return a moive DVD\n" + "4. List current borrowed movie DVDs\n" + "5. Display top 10 most popular movies\n" + "0. Return to main menu\n" + "==================================="); switch (Reusables.waitUserResponse("\n Please make a selection (1-5 or 0 to return to main menu): ", new int[] { 0, 1, 2, 3, 4, 5 })) { case 0: appStatus = AppStatus.MainMenu; break; case 1: appStatus = AppStatus.Member1; break; case 2: appStatus = AppStatus.Member2; break; case 3: appStatus = AppStatus.Member3; break; case 4: appStatus = AppStatus.Member4; break; case 5: appStatus = AppStatus.Member5; break; default: appStatus = AppStatus.MainMenu; break; } } }
/// <summary> /// Helps input for staff to register new member /// This simply creates a member object, and so /// the duplication check should be performed after getting a value returned from this method /// </summary> /// <returns>Member object</returns> public static Member Staff3() { Console.WriteLine("\n=====Add new member==="); Console.Write("Given name: "); string givenName = Console.ReadLine(); Console.Write("Family name: "); string familyName = Console.ReadLine(); Console.Write("Address: "); string address = Console.ReadLine(); Console.Write("Phone number: "); string phoneNumber = Console.ReadLine(); string password = Reusables.waitUserSetPassword("Password: "); return(new Member(givenName, familyName, address, phoneNumber, password)); }
/// <summary> /// Landing page /// </summary> static void MainMenu() { staffVerified = false; memberVerified = false; Console.WriteLine( "\nWelcome to the Community Library\n" + "===========Main Menu============\n" + "1. Staff Login\n" + "2. Member Login\n" + "0. Exit\n" + "================================"); appStatus = (Reusables.waitUserResponse("\n Please make a selection (1-2, or 0 to exit): ", new int[] { 0, 1, 2 })) switch { 0 => AppStatus.Exit, 1 => AppStatus.StaffMenu, 2 => AppStatus.MemberMenu, _ => AppStatus.Exit, }; }
/// <summary> /// Supports input for returning movie /// </summary> /// <param name="borrowing">All movies that the user is currently borrowing</param> /// <returns>title of movie to be returned</returns> public static string Member3(Movie[] borrowing) { Console.WriteLine("\n=====Return movie====="); // remove null value and create new array for easy handling Movie[] nullRemoved = new Movie[0]; foreach (Movie m in borrowing) { if (m != null) { Array.Resize(ref nullRemoved, nullRemoved.Length + 1); nullRemoved[nullRemoved.Length - 1] = m; } } for (int i = 0; i < nullRemoved.Length; i++) { Console.WriteLine("{0}. {1}", i + 1, nullRemoved[i].title); } // ask which title they want to borrow (input by number) int res = Reusables.waitUserResponse("Select by number: ", Reusables.createIntArray(1, nullRemoved.Length)); // return title return(nullRemoved[res - 1].title); }
/// <summary> /// Display top 10 most popular movies /// </summary> static void Member5Package() { Console.WriteLine(MemberOptions.Member5(movieCollection.GetTopTenMovies())); Reusables.waitUserPressEnter(); appStatus = AppStatus.MemberMenu; }
/// <summary> /// Display all movies /// </summary> static void Member1Package() { Console.WriteLine(MemberOptions.Member1(movieCollection.GetAlphabetical())); Reusables.waitUserPressEnter(); appStatus = AppStatus.MemberMenu; }