public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
        {
            string body = actionContext.Request.Content.ReadAsStringAsync().Result;
            MembershipDataInputModel model = new MembershipDataInputModel();

            model = JsonConvert.DeserializeObject <MembershipDataInputModel>(body);

            // GITCS-9 : Support searching by membership no ...
            if (actionContext.ActionDescriptor.ActionName.ToLower().Contains("cancel"))
            {
                model.UpdatedStatus = ActionMembershipStatus.Cancel;
            }

            var activation = string.IsNullOrEmpty(model.ActivationId) ? model.EncryptedActivationId : model.ActivationId;

            MembershipHelper  helper            = new MembershipHelper(_service);
            MembershipDetails membershipDetails = helper.GetMembershipDetails(activation);

            if (membershipDetails.IsEligible != null)
            {
                model.OverrideMust = membershipDetails.IsEligible.Value;
            }
            var validator = new MembershipDataInputValidator();
            var result    = validator.Validate(model);

            foreach (var e in result.Errors)
            {
                bindingContext.ModelState.AddModelError(e.PropertyName, e.ErrorMessage);
            }
            bindingContext.Model = model;
            return(true);
        }
        public IHttpActionResult MembershipLoad(MembershipDataInputModel membership)
        {
            try
            {
                //pass the data to the service to insert into the database
                string message = string.Empty;

                var mappedModel = Mapper.Map <MembershipDataInputModel, MembershipDataInput>(membership);

                NameAndAddressParameter nameAndAddress = new NameAndAddressParameter
                {
                    NameAndAddress = membership.CustNameAndAddress
                };
                var membershipProcess = new MembershipProcess(null, _membershipService, _mciRequestService, _logger, nameAndAddress);

                List <MembershipOutput> result = new List <MembershipOutput>();
                result.Add(new MembershipOutput()
                {
                    MembershipData = membershipProcess.UpdateMembershipData(mappedModel)
                });
                return(Ok(result));
            }
            catch (Exception exception)
            {
                if (_logParameterValue)
                {
                    _logger.Error($"MembershipLoad: ErrorTag: {ErrorTagProvider.ErrorTagDatabase} --  {exception.Message}");

                    _logger.Error(
                        $"Parameters MembershipLoad:- Name=FirstName={membership.CustNameAndAddress.FirstName}, LastName={membership.CustNameAndAddress.Surname}, Dob={membership.CustNameAndAddress.Dob}, " +
                        $" Address=AddresLine1={ membership.CustNameAndAddress.Address.Address1 ?? ""}, AddressLine2={membership.CustNameAndAddress.Address.Address2 ?? ""}, AddressLine3={membership.CustNameAndAddress.Address.Address3 ?? ""}, " +
                        $" AddressLine4={membership.CustNameAndAddress.Address.Address4 ?? ""}, PostCode={membership.CustNameAndAddress.Address.Postcode ?? ""}");
                }
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message)));
            }
        }