Exemple #1
0
        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);
        }
Exemple #2
0
        public double GetTotal(EnrollmentPaymentWorkflow workflow)
        {
            var optionsTotal = GetSelectedOptionsTotal(workflow);
            var fees         = GetFeesTotal(workflow, optionsTotal);

            var result = optionsTotal + fees;

            this.Total = result;
            return(result);
        }
Exemple #3
0
        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);
        }