コード例 #1
0
        // POST: api/BenefitsApi
        /// <summary>
        /// Post performs the calculation.
        /// </summary>
        /// <param name="model">a Family instance</param>
        /// <returns>CalculateResultsModel</returns>
        /// an IEnumerable collection
        public HttpResponseMessage Post([FromBody] Family model)
        {
            try
            {
                var validationResults = _familyValidator.Run(model);

                if (validationResults.IsValid)
                {
                    CalculationResults     results      = _calculator.RunCalculations(model, _appConfig);
                    CalculatedResultsModel resultsModel = _modelMapper.MapToResults(results);

                    return(Request.CreateResponse(HttpStatusCode.OK, resultsModel));
                }

                HttpError err = new HttpError("Invalid input parameter. " + validationResults.Message);
                return(Request.CreateErrorResponse(HttpStatusCode.NotAcceptable, err));
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                //TODO: log the exception
                HttpError err = new HttpError("Exception occurred check server logs");
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, err));
            }
        }
コード例 #2
0
        public CalculatedResultsModel MapToResults(CalculationResults calculation)
        {
            CalculatedResultsModel model = new CalculatedResultsModel();

            //Brute force approach
            //in real application we can integrate a mapping technology such
            //as automapper
            model.EmployeeName            = getEmployeeName(calculation.Family);
            model.AdjustedPeriodPayAmount = calculation.AdjustedPeriodAmount;
            model.AnnualCosts             = calculation.AnnualCosts;
            model.AnnualSalary            = calculation.AnnualSalary;
            model.EmployerDiscounts       = calculation.EmployerDiscounts;
            model.Family         = calculation.Family;
            model.PerPeriodCosts = (calculation.AnnualCosts - calculation.EmployerDiscounts) / 26;

            return(model);
        }
コード例 #3
0
        public void SetUp()
        {
            _family = new Family
            {
                Members = new List <Person> {
                    new Person {
                        IsEmployee = true,
                        FirstName  = "Aaron",
                        LastName   = "Smith"
                    }
                },
            };

            _calculator = new Calculator();
            _appConfig  = new AppConfiguration();

            _calculation = _calculator.RunCalculations(_family, _appConfig);
            _mapper      = new ModelMapper();
            _results     = _mapper.MapToResults(_calculation);
        }