private static Unit PrintReport(IDictionary <Role, double> report) { EmployeeAppHelpers.PrintReport(report); return(unit); }
public void Run(UserAction action) { switch (action) { case UserAction.Show: { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); Console.WriteLine(employee.ToString()); break; } case UserAction.Raise: { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); var happyEmployee = GiveRaise(employee, RAISE_RATE); Console.WriteLine("Employee " + employee); Console.WriteLine("Happy Employee " + happyEmployee); break; } case UserAction.Promote: { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); var happyEmployee = GivePromotion(employee, RAISE_RATE); Console.WriteLine("Employee " + employee); Console.WriteLine("Happy Employee " + happyEmployee); break; } case UserAction.ReportAll: { var employees = DbHelper.GetEmployees(); var report = employees .GroupBy(x => x.Role) .ToDictionary( xs => xs.Key, xs => xs.Select(x => x.Salary / 52).Sum() ); EmployeeAppHelpers.PrintReport(report); break; } case UserAction.ReportByRole: { var employees = DbHelper.GetEmployees(); var role = ReadRole(); // NOTE: there many ways to do this var report = employees .GroupBy(x => x.Role) .Where(x => x.Key == role) .ToDictionary( xs => xs.Key, xs => xs.Select(x => x.Salary / 52).Sum() ); EmployeeAppHelpers.PrintReport(report); break; } default: throw new Exception($"Something really bad has happened, Action of {action} is invalid"); } }
public void Run(string action) { if (action == "Show") { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); Console.WriteLine(employee.ToString()); } else if (action == "Raise") { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); var happyEmployee = GiveRaise(employee); Console.WriteLine("Employee " + employee); Console.WriteLine("Happy Employee " + happyEmployee); } else if (action == "Promote") { var id = ReadEmployeeId(); var employee = DbHelper.GetEmployee(id); var happyEmployee = GivePromotion(employee); Console.WriteLine("Employee " + employee); Console.WriteLine("Happy Employee " + happyEmployee); } else if (action == "ReportAll") { var employees = DbHelper.GetEmployees(); var report = new Dictionary <Role, double>(); foreach (var employee in employees) { if (!report.ContainsKey(employee.Role)) { report[employee.Role] = 0d; } report[employee.Role] = report[employee.Role] + (employee.Salary / 52); } EmployeeAppHelpers.PrintReport(report); } else if (action == "ReportByRole") { var role = ReadRole(); var employees = DbHelper.GetEmployees(); var report = new Dictionary <Role, double>(); foreach (var employee in employees) { if (employee.Role != role) { continue; } if (!report.ContainsKey(employee.Role)) { report[employee.Role] = 0d; } report[employee.Role] = report[employee.Role] + (employee.Salary / 52); } EmployeeAppHelpers.PrintReport(report); } else { throw new Exception($"Action of {action} is invalid"); } }