public IHttpActionResult ProductSold(MembershipProductSoldParameterModel membershipProductSold
                                             )
        {
            try
            {
                var mappedModel = _mapper.Map <MembershipDataInput>(membershipProductSold);
                // Map to common MembershipDataInput model instance

                IStrategyWriterPart <MembershipDataInput, int, int, string> membershipProductSoldWriterPart =
                    _membershipWriterParts[StrategyWriterPartImplementations.ProductSoldMembershipWriterPart];

                // Get indexed product sold writer part from DI container
                string message = membershipProductSoldWriterPart.Process(mappedModel);


                return(Ok($"Success: Set {mappedModel.ProductSoldKey} eligible - {message}"));
            }
            catch (Exception exception)
            {
                if (_logParameterValue)
                {
                    _logger.Error(
                        $"ProductSold: ErrorTag: {ErrorTagProvider.ErrorTagDatabase} --  {exception.Message}");

                    _logger.Error(
                        $"Parameters ProductSold:- " +
                        $" ActivationId={membershipProductSold.ActivationId ?? ""}, EncryptedActivationId={membershipProductSold.EncryptedActivationId ?? ""}, " +
                        $" MembershipNo={membershipProductSold.MembershipNo}, EncryptedMembershipNo={membershipProductSold.EncryptedMembershipNo ?? ""}");
                }

                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError,
                                                                   exception.Message)));
            }
        }
        public IHttpActionResult CancelMembership(MembershipCancellationParameterModel membershipCancellationParameter)
        {
            try
            {
                // Use Injected mapper ...
                var mappedModel = _mapper.Map <MembershipCancellationParameterModel, MembershipDataInput>(membershipCancellationParameter);

                List <MembershipOutput> result = new List <MembershipOutput>();

                // Get indexed Cancellation writer part from DI container
                IStrategyWriterPart <MembershipDataInput, int, int, MembershipDetails> writerCancelationPart =
                    _membershipDetailsWriterParts[StrategyWriterPartImplementations.CancellMembershipWriterPart];

                result.Add(
                    new MembershipOutput()
                {
                    MembershipData = writerCancelationPart.Process(mappedModel)
                }
                    );

                return(Ok(result));
            }
            catch (Exception exception)
            {
                if (_logParameterValue)
                {
                    _logger.Error(
                        $"MembershipCancellation: ErrorTag: {ErrorTagProvider.ErrorTagDatabase} --  {exception.Message}");

                    _logger.Error(
                        $"Parameters MembershipLoad:- MembershipNo={membershipCancellationParameter.MembershipNo}, EncryptedMembershipNo={membershipCancellationParameter.EncryptedMembershipNo}"
                        );
                }

                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError,
                                                                   exception.Message)));
            }
        }