예제 #1
0
        public static NextSection Next(ChangeOfCircs form, Sections completedSection)
        {
            var index = _order.IndexOf(completedSection) + 1;

            Sections?nextSection = null;

            while (!nextSection.HasValue && index < _order.Count)
            {
                var section = _order[index];

                if (!FeatureToggles.SkipWorkInProgressSection(section))
                {
                    var strategy = SectionStrategy.For(section);

                    if (strategy.Required(form))
                    {
                        nextSection = section;
                    }
                    else
                    {
                        strategy.SkipSection(form);
                    }
                }

                index++;
            }

            return(new NextSection
            {
                Id = form.Id,
                Section = nextSection,
            });
        }
예제 #2
0
        public static NextSection Start()
        {
            var form = new ChangeOfCircs();

            Repository.Insert(form);

            return(new NextSection
            {
                Id = form.Id,
                Section = Navigation.Order.First(),
            });
        }
예제 #3
0
        public static void Populate(CocDetail detail, Sections section, ChangeOfCircs form)
        {
            var index = _order.IndexOf(section) - 1;

            while (index >= 0 && !detail.PreviousSection.HasValue)
            {
                var previousSection = _order[index];

                if (!FeatureToggles.SkipWorkInProgressSection(previousSection))
                {
                    var strategy = SectionStrategy.For(previousSection);

                    if (strategy.Required(form))
                    {
                        detail.PreviousSection = previousSection;
                    }
                }

                index--;
            }

            detail.IsFinalSection = (section == _order.Last());
        }
예제 #4
0
 public override void SkipSection(ChangeOfCircs form)
 {
     form.OnSkipPaymentDetails();
 }
예제 #5
0
 public override bool Required(ChangeOfCircs form)
 {
     return(Navigation.RequiresPaymentDetails(form));
 }
예제 #6
0
 public override void SkipSection(ChangeOfCircs form)
 {
     form.OnSkipHealthProfessional();
 }
예제 #7
0
 public override bool Required(ChangeOfCircs form)
 {
     return(Navigation.RequiresHealthProfessional(form));
 }
예제 #8
0
 public override void SkipSection(ChangeOfCircs form)
 {
     form.OnSkipExpectedChildren();
 }
예제 #9
0
 public override bool Required(ChangeOfCircs form)
 {
     return(Navigation.RequiresExpectedChildren(form));
 }
예제 #10
0
 public virtual void SkipSection(ChangeOfCircs form)
 {
     throw new Exception("ClearSection not implemented for section: " + GetType());
 }
예제 #11
0
 public virtual bool Required(ChangeOfCircs form)
 {
     return(true); // default is to require sections
 }
예제 #12
0
 public static bool RequiresHealthProfessional(ChangeOfCircs form)
 {
     return(form.Options?.AddExpectedBaby == true);
 }
예제 #13
0
 public static bool RequiresExpectedChildren(ChangeOfCircs form)
 {
     return(form.Options?.AddExpectedBaby == true);
 }
예제 #14
0
 public static bool RequiresPaymentDetails(ChangeOfCircs form)
 {
     return(form.Options?.ChangePaymentDetails == true);
 }
예제 #15
0
 public static bool RequiresApplicantDetails(ChangeOfCircs form)
 {
     return(form.Options?.ChangePersonalDetails == true);
 }