/// <summary> /// The primary button control that generates the salary breakdown in a display grid. /// 1) It checks whether the salary input is not empty, populates a model called initialData with the values associated with the employee. /// 2) Collects the addition and the deduction components that the user has added from the UI(form) in userAdditionComponents and userDeductionComponents /// lists respectively and adds them to the initialData model. /// 3) The SalarySlipProcess() method of FormInput is then invoked to start the salary slip computation process. /// 4) The computedRules property of initialData model is used to populate the grid shown to the user. /// 5) The method PopulateGrid() is responsible for filling the display grid with the calculated components (salary Breakdown) that is displayed to the user. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void generateButton_Click(object sender, EventArgs e) { InitialData initialData = null; ICollection <Rules> userAdditionComponents = null; ICollection <Rules> userDeductionComponents = null; SalarySlip objSalarySlip = null; //Setup if (salary.Text.ToString() != string.Empty) { initialData = new InitialData(); decimal salaryAmount = Convert.ToDecimal(salary.Text); initialData.AssociateCode = associateCode.Text.ToString(); initialData.EmployeeName = requiredName.Text.ToString(); initialData.DateOfJoining = dateOfJoining.Text.ToString(); initialData.PanNumber = pan.Text.ToString(); initialData.AccountNumber = accountNumber.Text.ToString(); initialData.Designation = designation.Text.ToString(); initialData.Salary = salary.Text.ToString(); initialData.EmailId = email.Text.ToString(); initialData.Month = month.SelectedItem.ToString(); initialData.Year = year.SelectedItem.ToString(); if (addComponentNumber.Text != string.Empty) { List <Rules> userRules = new List <Rules>(); userRules = SegregateComponents(addComponentNumber, ComputationVariety.ADDITION, userRules); userAdditionComponents = FetchUserComponents(addOuterPanel.Controls, ComputationVariety.ADDITION, userRules); initialData.UserAdditionComponents = userAdditionComponents; } if (deductComponentNumber.Text != string.Empty) { List <Rules> userRules = new List <Rules>(); userRules = SegregateComponents(deductComponentNumber, ComputationVariety.SUBTRACTION, userRules); userDeductionComponents = FetchUserComponents(deductOuterPanel.Controls, ComputationVariety.SUBTRACTION, userRules); initialData.UserDeductionComponents = userDeductionComponents; } objSalarySlip = new FormInput(initialData); objSalarySlip.SalarySlipProcess(); ICollection <Rules> computedRules = initialData.ComputedRules; ICollection <Rules> finalResults = PopulateGrid(computedRules, userAdditionComponents, userDeductionComponents); } }