public virtual AssuredDetail Handle(RequestBo request) { if (this._nextHandler != null) { return(this._nextHandler.Handle(request)); } else { return(null); } }
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")); }
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)); } }
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)); } }
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; } }
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; } }