Ejemplo n.º 1
0
        /// <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);
            }
        }