public override bool Equals(object obj) { if (obj == null) { return(false); } if (obj == this) { return(true); } return(obj is JobAssignment other && ((JobTitle == null && other.JobTitle == null) || (JobTitle?.Equals(other.JobTitle) == true)) && ((PayType == null && other.PayType == null) || (PayType?.Equals(other.PayType) == true)) && ((HourlyRate == null && other.HourlyRate == null) || (HourlyRate?.Equals(other.HourlyRate) == true)) && ((AnnualRate == null && other.AnnualRate == null) || (AnnualRate?.Equals(other.AnnualRate) == true)) && ((WeeklyHours == null && other.WeeklyHours == null) || (WeeklyHours?.Equals(other.WeeklyHours) == true))); }
public double CalculateBiWeeklyGrossPay() { double grossSalary = 0; if (PayType.Equals(PayType.SALARY)) { // 52 weeks in a year, two week long pay periods grossSalary = Salary / (52 / 2); } else { // checking for overtime if (HoursWorked > 80) { grossSalary = 80 * Salary; double remainingHours = HoursWorked - 80; // checking if over ten overtime hours if (remainingHours > 10) { // first ten overtime hours calculated at 150% hourly salary grossSalary += 10 * Salary * 1.5; // remaining overtime hours calculated at 175% hourly salary grossSalary += (remainingHours - 10) * Salary * 1.75; } else { // ten or less overtime hours, valuing at 150% hourly salary. grossSalary += remainingHours * Salary * 1.5; } } else { grossSalary = HoursWorked * Salary; } } return(Math.Round(grossSalary, 2, MidpointRounding.AwayFromZero)); }