namespace IntegrativeProgramming
public class PayrollSystem
public static void Main(string[] args)
PayrollContainer payrollContainer = new PayrollContainer();
EmployeeAccount employeeAccount = new EmployeeAccount();
Menu m = new Menu(payrollContainer, employeeAccount);
private PayrollContainer PayrollContainer { get; set; }
private EmployeeAccount EmployeeAccount { get; set; }
public Menu(PayrollContainer PayrollContainer, EmployeeAccount EmployeeAccount)
this.PayrollContainer = PayrollContainer;
this.EmployeeAccount = EmployeeAccount;
Console.WriteLine("Payroll System\n\n1. Login as Admin\n2. Login as Employee\n3. Exit");
input = int.Parse(Console.ReadLine());
admin = new AdminLogin(PayrollContainer, EmployeeAccount);
employee = new EmployeeLogin(PayrollContainer, EmployeeAccount);
employee.employeeLogin();
System.Environment.Exit(0);
Console.WriteLine("Please enter between 1-3 only.");
private PayrollContainer PayrollContainer { get; set; }
private EmployeeAccount EmployeeAccount { get; set; }
private LoginValidator validator;
public AdminLogin(PayrollContainer PayrollContainer, EmployeeAccount EmployeeAccount)
this.PayrollContainer = PayrollContainer;
this.EmployeeAccount = EmployeeAccount;
private bool loop = true;
private string username, password;
validator = new LoginValidator(EmployeeAccount);
Console.Write("Enter your login credentials. Enter 0 to exit.\n");
Console.Write("Enter username: ");
username = Console.ReadLine();
Console.Write("Enter password: ");
password = Console.ReadLine();
if (username.Equals("0") || password.Equals("0"))
else if (validator.validateAdmin(username, password) == true)
Console.WriteLine("Logged in successfully!");
Console.WriteLine("Login failed. Please try again.");
Console.WriteLine("Admin menu\n\n1. Add employee\n2. Generate payroll\n3. Logout");
input = int.Parse(Console.ReadLine());
Console.WriteLine("Do you want to restart? Y/N");
char choice = char.Parse(Console.ReadLine());
if (choice == 'Y' || choice == 'y')
else if (choice == 'N' || choice == 'n')
menu = new Menu(PayrollContainer, EmployeeAccount);
Console.WriteLine("Enter between 1-3.");
public void addEmployee()
Console.Write("Enter your Username: ");
EmployeeAccount.EmployeeID = Console.ReadLine();
Console.Write("Enter your Password: ");
EmployeeAccount.EmployeePassword = Console.ReadLine();
Console.WriteLine("Employee account created successfuily.\n");
Console.WriteLine("Employee username is {0}.\nEmployee password is {1}.", EmployeeAccount.EmployeeID, EmployeeAccount.EmployeePassword);
public void generatePayroll()
Console.WriteLine("Payroll creator\n\n1. Guard\n2. Agent");
Console.Write("Enter employee role: ");
int role = int.Parse(Console.ReadLine());
Console.Write("Enter Username: ");
PayrollContainer.EmployeeID = Console.ReadLine();
Console.Write("Payout month: ");
PayrollContainer.Month = Console.ReadLine();
Console.Write("Payout year: ");
PayrollContainer.Year = Console.ReadLine();
Console.Write("Total working days: ");
PayrollContainer.TotalHrs = Convert.ToInt32(Console.ReadLine());
PayrollContainer.GuardBasicPay = 50 * (PayrollContainer.TotalHrs * 8);
Console.Write("Total overtime hrs: ");
PayrollContainer.OtHrs = double.Parse(Console.ReadLine());
PayrollContainer.OtIncentives = 100;
PayrollContainer.Allowance = 2000;
if (PayrollContainer.TotalHrs > 15)
PayrollContainer.SSS = PayrollContainer.GuardBasicPay * .12;
PayrollContainer.PAGIBIG = PayrollContainer.GuardBasicPay * .02;
PayrollContainer.PhilHealth = PayrollContainer.GuardBasicPay * .0275;
PayrollContainer.SSS = PayrollContainer.GuardBasicPay * .06;
PayrollContainer.PAGIBIG = PayrollContainer.GuardBasicPay * .02;
PayrollContainer.PhilHealth = PayrollContainer.GuardBasicPay * .01375;
PayrollContainer.Deductions = PayrollContainer.SSS + PayrollContainer.PAGIBIG + PayrollContainer.PhilHealth;
PayrollContainer.Total = PayrollContainer.GuardBasicPay + PayrollContainer.Allowance + (PayrollContainer.OtIncentives * PayrollContainer.OtHrs) - PayrollContainer.Deductions;
Console.Write("Enter Username: ");
PayrollContainer.EmployeeID = Console.ReadLine();
Console.Write("Payout month: ");
PayrollContainer.Month = Console.ReadLine();
Console.Write("Payout year: ");
PayrollContainer.Year = Console.ReadLine();
Console.Write("Total working days: ");
PayrollContainer.TotalHrs = Convert.ToInt32(Console.ReadLine());
PayrollContainer.AgentBasicPay = 100 * (PayrollContainer.TotalHrs * 8);
Console.Write("Total overtime hrs: ");
PayrollContainer.OtHrs = double.Parse(Console.ReadLine());
PayrollContainer.OtIncentives = 100;
PayrollContainer.Allowance = 2000;
if (PayrollContainer.TotalHrs > 15)
PayrollContainer.SSS = PayrollContainer.AgentBasicPay * .12;
PayrollContainer.PAGIBIG = PayrollContainer.AgentBasicPay * .02;
PayrollContainer.PhilHealth = PayrollContainer.AgentBasicPay * .0275;
PayrollContainer.SSS = PayrollContainer.AgentBasicPay * .06;
PayrollContainer.PAGIBIG = PayrollContainer.AgentBasicPay * .02;
PayrollContainer.PhilHealth = PayrollContainer.AgentBasicPay * .01375;
PayrollContainer.Deductions = PayrollContainer.SSS + PayrollContainer.PAGIBIG + PayrollContainer.PhilHealth;
PayrollContainer.Total = PayrollContainer.AgentBasicPay + PayrollContainer.Allowance + (PayrollContainer.OtIncentives * PayrollContainer.OtHrs) - PayrollContainer.Deductions;
Console.WriteLine("Enter between 1-2.");
public class LoginValidator
private EmployeeAccount EmployeeAccount { get; set; }
private string adminUser = "admin";
private string adminPass = "Integrative123";
public LoginValidator(EmployeeAccount EmployeeAccount)
this.EmployeeAccount = EmployeeAccount;
public bool validateAdmin(String username, String password)
if (username.Equals(adminUser) && password.Equals(adminPass))
public bool validateEmployee(String username, String password)
if (EmployeeAccount.EmployeeID.Equals(username) && EmployeeAccount.EmployeePassword.Equals(password))
public class EmployeeLogin
private PayrollContainer PayrollContainer { get; set; }
private EmployeeAccount EmployeeAccount { get; set; }
private LoginValidator validator;
public EmployeeLogin(PayrollContainer PayrollContainer, EmployeeAccount EmployeeAccount)
this.PayrollContainer = PayrollContainer;
this.EmployeeAccount = EmployeeAccount;
private bool loop = true;
private string username, password;
public void employeeLogin()
validator = new LoginValidator(EmployeeAccount);
Console.Write("Enter your login credentials. Enter 0 to exit.\n");
Console.Write("Enter username: ");
username = Console.ReadLine();
Console.Write("Enter password: ");
password = Console.ReadLine();
if (username.Equals("0") || password.Equals("0"))
else if (validator.validateEmployee(username, password) == true)
Console.WriteLine("Logged in successfully!");
Console.WriteLine("Login failed. Please try again.");
public void employeeMenu()
Console.WriteLine("Employee menu\n\n1. Show payslip\n2. Logout");
input = int.Parse(Console.ReadLine());
if (username.Equals(PayrollContainer.EmployeeID))
menu = new Menu(PayrollContainer, EmployeeAccount);
Console.WriteLine("Enter between 1-2.");
public void showPayslip()
Console.WriteLine("Month\tYear\tTotal hours\tOvertime hours\tAllowance\tSSS\tPAGIBIG\tPhilHealth\tTotal");
Console.WriteLine(".............................................................................//........................");
Console.WriteLine("{0}\t{1}\t\t{2}\t\t\t\t{3}\t\t\t{4}\t\t{5}\t\t{6}\t\t{7}\t\t{8}\n", PayrollContainer.Month, PayrollContainer.Year, PayrollContainer.TotalHrs, PayrollContainer.OtHrs, PayrollContainer.Allowance, PayrollContainer.SSS, PayrollContainer.PAGIBIG, PayrollContainer.PhilHealth, PayrollContainer.Total);
public class EmployeeAccount
public string EmployeeID { get; set; }
public string EmployeePassword { get; set; }
public class PayrollContainer
public string EmployeeID { get; set; }
public string Month { get; set; }
public string Year { get; set; }
public double GuardBasicPay { get; set; }
public double AgentBasicPay { get; set; }
public int TotalHrs { get; set; }
public double OtHrs { get; set; }
public double OtIncentives { get; set; }
public double Allowance { get; set; }
public double PhilHealth { get; set; }
public double PAGIBIG { get; set; }
public double SSS { get; set; }
public double Total { get; set; }
public double Deductions { get; set; }