Esempio n. 1
0
 public virtual AssuredDetail Handle(RequestBo request)
 {
     if (this._nextHandler != null)
     {
         return(this._nextHandler.Handle(request));
     }
     else
     {
         return(null);
     }
 }
Esempio n. 2
0
        public IActionResult Calculate(RequestDto request)
        {
            if (ModelState.IsValid)
            {
                // Need to use automapper and shall not do auto mapping in controller
                var _request = new RequestBo {
                    Age = request.Age, AssuredSum = request.AssuredSum
                };

                var assuredDetail = _ruleSet.Process(_request);
                return(View(assuredDetail));
            }

            return(View("Index"));
        }
Esempio n. 3
0
 public override AssuredDetail Handle(RequestBo request)
 {
     if (request.Age < 18 || request.Age > 65)
     {
         return(new AssuredDetail {
             Age = request.Age,
             SumAssured = request.AssuredSum,
             GrassPermium = 0,
             Description = $"Invalid age {request.Age}, the correct range is [18-65]"
         });
     }
     else
     {
         return(base.Handle(request));
     }
 }
Esempio n. 4
0
 public override AssuredDetail Handle(RequestBo request)
 {
     if (request.AssuredSum < 25000 || request.AssuredSum > 500000)
     {
         return(new AssuredDetail {
             Age = request.Age,
             SumAssured = request.AssuredSum,
             GrassPermium = 0,
             Description = $"Invalid AssuredSum {request.AssuredSum}, the correct range is [25000-500000]"
         });
     }
     else
     {
         return(base.Handle(request));
     }
 }
Esempio n. 5
0

        
Esempio n. 6
0
        public AssuredDetail Start(RequestBo request)
        {
            try
            {
                for (var counter = 0; counter < _handlers.Count; counter++)
                {
                    var next = counter + 1;
                    if (next >= _handlers.Count)
                    {
                        break;
                    }

                    _handlers[counter].SetNext(_handlers[next]);
                }

                return(_handlers[0].Handle(request));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 7
0
        public AssuredDetail Process(RequestBo request)
        {
            try
            {   // this needs to go to IoC container
                var handlers = new List <IHandler>()
                {
                    new AssuredSum25MTo50MReceiver(),
                    new InvalidAgeReceiver(),
                    new AgeUpto30Receiver(),
                    new Age31To50Receiver(),
                    new Age50To65Receiver()
                };
                var dispatcher = new RuleEngine(handlers);

                var assuredDetail = dispatcher.Start(request);

                return(assuredDetail);
            }
            catch (System.Exception)
            {
                throw;
            }
        }