public double GetSelectedOptionsTotal(EnrollmentPaymentWorkflow workflow) { var result = 0.0; foreach (var s in Steps) { var workflowStep = workflow.GetStep(s.Id); if (workflowStep == null) { throw new Exception("Error.WorkflowStep.NotFound"); } if (s.SelectedOption == null) { throw new Exception("Error.EnrollmentStepOption.NothingSelected"); } var workflowStepOption = workflowStep.GetOption(s.SelectedOption.Id); if (workflowStepOption == null) { throw new Exception("Error.EnrollmentStepOption.NotFound"); } if (!double.TryParse(workflowStepOption.Price, out double price)) { throw new Exception("Error.WorkflowStepOption.PriceIsNotNumber"); } result += price; } return(result); }
public double GetTotal(EnrollmentPaymentWorkflow workflow) { var optionsTotal = GetSelectedOptionsTotal(workflow); var fees = GetFeesTotal(workflow, optionsTotal); var result = optionsTotal + fees; this.Total = result; return(result); }
public double GetFeesTotal(EnrollmentPaymentWorkflow workflow, double optionsTotal) { if (workflow == null) { return(0); } var partialTotal = optionsTotal; var result = 0.0; var platFees = workflow.PlatformFees; if (platFees != null) { var platformFixedFee = platFees.FixedFee; partialTotal += platformFixedFee; var platformVariableFee = platFees.VariableFee / 100 * partialTotal; partialTotal += platformVariableFee; result += platformFixedFee + platformVariableFee; } var orgFees = workflow.OrganizationFees; if (orgFees != null) { var orgFixedFee = orgFees.FixedFee; partialTotal += orgFixedFee; var orgVariableFee = orgFees.VariableFee / 100 * partialTotal; partialTotal += orgVariableFee; result += orgFixedFee + orgVariableFee; } return(result); }