private static void ExecutionWithoutVisitor(Employee emp) { double NetEarningoftheYear = 0.0; double TaxableAmount = 0.0; foreach (Interfaces.ISalary salary in emp.Salaries) { switch (salary.GetType().Name) { case nameof(MonthlySalary_Earning): MonthlySalary_Earning monthlySalary_Earning = salary as MonthlySalary_Earning; NetEarningoftheYear += (monthlySalary_Earning.BasicSalary + monthlySalary_Earning.ConveyanceAllowance + monthlySalary_Earning.FoodCard_Bill + monthlySalary_Earning.HRAExemption + monthlySalary_Earning.MedicalAllowance + monthlySalary_Earning.OtherBills + monthlySalary_Earning.PersonalAllowance + monthlySalary_Earning.TelephoneBill); TaxableAmount += (monthlySalary_Earning.BasicSalary + monthlySalary_Earning.HRAExemption + monthlySalary_Earning.MedicalAllowance + monthlySalary_Earning.PersonalAllowance); break; case nameof(MonthlySalary_Deduction): MonthlySalary_Deduction monthlySalary_Deduction = salary as MonthlySalary_Deduction; NetEarningoftheYear -= (monthlySalary_Deduction.ProvidentFund_EmployeeContribution + monthlySalary_Deduction.ProvidentFund_EmployerContribution + monthlySalary_Deduction.ProfessionTax + monthlySalary_Deduction.OtherDeduction); TaxableAmount -= (monthlySalary_Deduction.ProvidentFund_EmployeeContribution + monthlySalary_Deduction.ProvidentFund_EmployerContribution + monthlySalary_Deduction.ProfessionTax + monthlySalary_Deduction.OtherDeduction); break; case nameof(MonthlyExpense): MonthlyExpense monthlyExpense = salary as MonthlyExpense; TaxableAmount -= monthlyExpense.MonthlyRent; break; case nameof(AnnualInvestment): AnnualInvestment annualInvestment = salary as AnnualInvestment; TaxableAmount -= annualInvestment.InvestmentAmmount; break; } } Console.WriteLine("Annual Net Earning Amount : {0}", NetEarningoftheYear); Console.WriteLine("Annual Taxable Amount : {0}", TaxableAmount); }
public void Visit(MonthlySalary_Deduction monthlySalary_Deduction) { TaxableAmount -= (monthlySalary_Deduction.ProvidentFund_EmployeeContribution + monthlySalary_Deduction.ProvidentFund_EmployerContribution + monthlySalary_Deduction.ProfessionTax + monthlySalary_Deduction.OtherDeduction); }
public void Visit(MonthlySalary_Deduction monthlySalary_Deduction) { NetEarningoftheYear -= (monthlySalary_Deduction.ProvidentFund_EmployeeContribution + monthlySalary_Deduction.ProvidentFund_EmployerContribution + monthlySalary_Deduction.ProfessionTax + monthlySalary_Deduction.OtherDeduction); }