Esempio n. 1
0
        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(AnnualInvestment annualInvestment)
 {
     TaxableAmount -= annualInvestment.InvestmentAmmount;
 }
 public void Visit(AnnualInvestment annualInvestment)
 {
     // do nothing
 }