Exemple #1
0
 private static Unit PrintReport(IDictionary <Role, double> report)
 {
     EmployeeAppHelpers.PrintReport(report);
     return(unit);
 }
Exemple #2
0
        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");
            }
        }
Exemple #3
0
        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");
            }
        }