/** * @fn private bool ModifySeasonalEmployee(SeasonalEmployee employee, string returnMessage) * * @brief allows user to modify this employee using the command line. * * @param SeasonalEmployee The employee to modify. * @param returnMessage message displayed to the user as the option to return from this method. * * @return whether the user canceled. */ private bool ModifySeasonalEmployee(SeasonalEmployee employee, string returnMessage) { bool done = false; bool isCanceled = false; //loop until user goes back do { Console.Clear(); Console.WriteLine(employee.Details()); Console.WriteLine("1. Change First Name(A-Z, a-z, ', -)"); Console.WriteLine("2. Change Last Name(A-Z, a-z, ', -)"); Console.WriteLine("3. Change Date of birth(yyyy-mm-dd)"); Console.WriteLine("4. Change Social insurance number"); Console.WriteLine("5. Change Piece Pay"); Console.WriteLine("6. Change Season"); Console.WriteLine("8. Cancel"); Console.WriteLine("9. " + returnMessage); //get user input until valid bool valid; do { valid = true; string input = Console.ReadLine(); switch (input) { case "1": Console.Write("Enter a new first name:"); while (employee.SetFirstName(Console.ReadLine()) == false) { Console.Write("Invalid name, Enter a new first name:"); } break; case "2": Console.Write("Enter a new last name:"); while (employee.SetLastName(Console.ReadLine()) == false) { Console.Write("Invalid name, Enter a new last name:"); } break; case "3": bool dateOfBirthDone = false; while (!dateOfBirthDone) { Console.Write("Enter a new date of birth:"); try { while (employee.SetDateofBirth(DateTime.ParseExact(Console.ReadLine(), "yyyy-MM-dd", CultureInfo.InvariantCulture)) == false) { Console.Write("Invalid date, Enter a new date of birth:"); } dateOfBirthDone = true; } catch (FormatException ex) { Console.WriteLine("Invalid date, Format: yyyy-mm-dd"); dateOfBirthDone = false; } } break; case "4": Console.Write("Enter a new social insurance number:"); while(employee.SetSocialInsuranceNumber(Console.ReadLine()) == false) { Console.Write("Invalid number, Enter a new social insurance number:"); } break; case "5": bool piecePayDone = false; while (!piecePayDone) { Console.Write("Enter a new piece pay:"); try { while (employee.SetPiecePay(decimal.Parse(Console.ReadLine())) == false) { Console.Write("Invalid pay, Enter a new piece pay:"); } piecePayDone = true; } catch (FormatException ex) { Console.WriteLine("Piece pay must be a number"); piecePayDone = false; } } break; case "6": Console.Write("Enter a new season:"); while(employee.SetSeason(Console.ReadLine()) == false) { Console.Write("Invalid season, Enter a new season:"); } break; case "8": done = true;//end isCanceled = true; break; case "9": done = true;//end isCanceled = false; break; default: Console.WriteLine("Invalid input, please enter number corrispoding to a menu option:"); valid = false; break; } } while (!valid); } while (!done); return isCanceled; }
public void SetDateofBirthTest() { SeasonalEmployee se = new SeasonalEmployee(); bool retSe = se.SetDateofBirth(new DateTime(1990, 11, 23)); ParttimeEmployee pe = new ParttimeEmployee(); bool retPe = pe.SetDateofBirth(new DateTime(1990, 11, 23)); FulltimeEmployee fe = new FulltimeEmployee(); bool retFe = fe.SetDateofBirth(new DateTime(1990, 11, 23)); ContractEmployee ce = new ContractEmployee(); bool retCe = ce.SetDateofBirth(new DateTime(1990, 11, 23)); Assert.AreEqual(retSe, true); Assert.AreEqual(retPe, true); Assert.AreEqual(retFe, true); Assert.AreEqual(retCe, true); }