public IHttpActionResult Get(KeyValueParameter getParameters)
        {
            try
            {
                // Use indexed DI resoloution
                IGetRequestProcess keyValuePair = _strategyProcesses[GetRequestProcessImplementations.KeyValuePair];

                //KeyValuePairStrategy keyValuePair = new KeyValuePairStrategy(getParameters, _mailingHistoryService,
                //    _mciRequestService, _clientScopeService, _logger, _permissionsService, _membershipService,
                //    _customerDetailsService, _travelSummaryService, _customerMatchService,
                //    _membershipFlagsKeyValueReader
                //    );
                getParameters.AccessControl =
                    _clientScopeService.VerifyUserHasAccessToGroupCode(getParameters.AccessControl,
                                                                       Scope.CUSTOMER_RETRIEVE_KVPAIR);
                object output = keyValuePair.Execute(getParameters);

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

                    _logger.Error(
                        $"Parameters PermissionLoad:- Name=Key={getParameters.KeyValue.Key}, Value={getParameters.KeyValue.Value}");
                }

                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message)));
            }
        }
Exemplo n.º 2
0
 public void Setup()
 {
     _keyValueParameterValidator = new KeyValueParameterValidator();
     _keyValuePar       = new KeyValueParameter();
     _keyValueValidator = new KeyValueValidator();
     _keyValue          = new KeyValue();
 }
        // [Route("api/v4/customer/KeyValuePair")]
        public IHttpActionResult GetV2(KeyValueParameter getParameters)
        {
            try
            {
                // Get the correct strategy via indexed DI resoloution
                IGetRequestProcess keyValuePair = _strategyProcesses[GetRequestProcessImplementations.KeyValuePairV2];

                getParameters.AccessControl =
                    _clientScopeService.VerifyUserHasAccessToGroupCode(getParameters.AccessControl,
                                                                       Scope.CUSTOMER_RETRIEVE_KVPAIR);
                object output = keyValuePair.Execute(getParameters);

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

                    _logger.Error(
                        $"Parameters CustomerGetKeyValuePairv2:- Name=Key={getParameters.KeyValue.Key}, Value={getParameters.KeyValue.Value}");
                }

                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message)));
            }
        }
Exemplo n.º 4
0
 public MailingHistoryProcess(NameAndAddressParameter nameAndAddress, IMailingHistoryService mailingHistoryService, IMciRequestService mciRequestService, IClientScopeService clientScopeService, ILog logger, KeyValueParameter keyValue = null)
 {
     _nameAndAddress        = nameAndAddress;
     _keyValue              = keyValue;
     _mailingHistoryService = mailingHistoryService;
     _mciRequestService     = mciRequestService;
     _clientScopeService    = clientScopeService;
     _logger = logger;
 }
Exemplo n.º 5
0
 public ProcessPermission(KeyValueParameter keyValueParameter, IPermissionService permissionService, IMciRequestService mciRequestService, ILog logger, NameAndAddressParameter nameAndAddress)
 {
     _permissionService = permissionService;
     _logger            = logger;
     _nameAndAddress    = nameAndAddress;
     _mciRequestService = mciRequestService;
     _keyValueParameter = keyValueParameter;
     _logParameterValue = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableObjectDump"]);
 }
        public AssignProfileCardIntent(
            IOleSettings settings,
            ISitecoreDataWrapper dataWrapper,
            IIntentInputFactory inputFactory,
            IConversationResponseFactory responseFactory,
            IParameterResultFactory resultFactory,
            IPublishWrapper publishWrapper,
            IProfileService profileService,
            ISearchService searchService) : base(inputFactory, responseFactory, settings)
        {
            DataWrapper    = dataWrapper;
            PublishWrapper = publishWrapper;
            ProfileService = profileService;
            SearchService  = searchService;

            var profileParameters = new Dictionary <string, string>
            {
                { Constants.SearchParameters.FilterPath, Constants.Paths.ProfilePath },
                { Constants.SearchParameters.TemplateId, Constants.TemplateIds.ProfileCardTemplateId.ToString() },
                { Constants.SearchParameters.AutoStart, "true" }
            };

            ConversationParameters.Add(new ItemParameter(ProfileCardItemKey, Translator.Text("Chat.Intents.AssignProfileCard.ProfileCardItemParameterRequest"), profileParameters, dataWrapper, inputFactory, resultFactory));

            var nameParameter = new Dictionary <string, string>
            {
                { Constants.SearchParameters.FilterPath, Constants.Paths.ContentPath },
            };
            var nameParam = new ItemParameter(ItemNameKey, Translator.Text("Chat.Intents.AssignProfileCard.ItemNameParameterRequest"), nameParameter, dataWrapper, inputFactory, resultFactory);

            nameParam.IsOptional = true;
            ConversationParameters.Add(nameParam);

            var templateParameter = new Dictionary <string, string>
            {
                { Constants.SearchParameters.FilterPath, Constants.Paths.TemplatePath },
            };
            var templateParam = new ItemParameter(TemplateItemKey, Translator.Text("Chat.Intents.AssignProfileCard.TemplateItemParameterRequest"), templateParameter, dataWrapper, inputFactory, resultFactory);

            templateParam.IsOptional = true;
            ConversationParameters.Add(templateParam);

            var folderParameter = new Dictionary <string, string>
            {
                { Constants.SearchParameters.FilterPath, Constants.Paths.ContentPath },
            };
            var folderParam = new ItemParameter(FolderItemKey, Translator.Text("Chat.Intents.AssignProfileCard.FolderItemParameterRequest"), folderParameter, dataWrapper, inputFactory, resultFactory);

            folderParam.IsOptional = true;
            ConversationParameters.Add(folderParam);

            var fieldParam = new KeyValueParameter(FieldItemKey, Translator.Text("Chat.Intents.AssignProfileCard.FieldNameParameterRequest"), Translator.Text("Chat.Intents.AssignProfileCard.FieldValueParameterRequest"), inputFactory, resultFactory);

            fieldParam.IsOptional = true;
            ConversationParameters.Add(fieldParam);
        }
Exemplo n.º 7
0
        public string GetParameterValueByCode(string Code)
        {
            KeyValueParameter kvp = GetParameterByCode(Code);

            if (kvp != null)
            {
                return(kvp.Value);
            }
            return(string.Empty);
        }
Exemplo n.º 8
0
        public string GetParameterValueById(int Id)
        {
            KeyValueParameter kvp = GetParameterById(Id);

            if (kvp != null)
            {
                return(kvp.Value);
            }
            return(string.Empty);
        }
 public MembershipProcess(KeyValueParameter keyValue, IMembershipService membershipService,
                          IMciRequestService mciRequestService, ILog logger, NameAndAddressParameter nameAndAddress = null)
 {
     _keyValue          = keyValue;
     _nameAndAddress    = nameAndAddress;
     _mciRequestService = mciRequestService;
     _membershipService = membershipService;
     _logger            = logger;
     _logParameterValue = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableObjectDump"]);
 }
Exemplo n.º 10
0
        private NameAndAddressParameter BuildWorkingNameAndAddressParameter(KeyValueParameter keyValueParameter)
        {
            NameAndAddressParameter tempNad = new NameAndAddressParameter();

            tempNad.AccessControl          = keyValueParameter.AccessControl;
            tempNad.ResponseRequestedItems = keyValueParameter.ResponseRequestedItems;
            tempNad.ReturnMe       = keyValueParameter.ReturnMe;
            tempNad.NameAndAddress = new WebApiServices.Models.NameAndAddress();

            return(tempNad);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Generate a custom MembershipPermissionFlags resposnse
        /// NB : Logic refactored from ProcessPermission.ProcessPermissionFromKeyValue() & MembershipProcess.ProcessMembershipWithKeyValue()
        /// </summary>
        /// <returns></returns>
        public object Process(KeyValueParameter keyValueParameter)
        {
            _keyValueParameter       = keyValueParameter;
            _nameAndAddressParameter = BuildWorkingNameAndAddressParameter(keyValueParameter);
            // Dummy NameAndAddress instance - Service and DataAccess classes expect one ...


            MembershipFlags membershipFlags = null;

            try
            {
                // If we have A CPC Key , use the CPC method to get the customer_id from the PermissionsId key value
                int pKey = string.Compare(keyValueParameter.KeyValue.Key, "CPCK", StringComparison.CurrentCultureIgnoreCase) == 0
                    ? GetCustomerIdFromPermissionId(Convert.ToInt64(keyValueParameter.KeyValue.Value))
                    : GetCustomerIdFromKeyValue();
                // Else use MCI customer Index lookup

                if (pKey > 0)
                {
                    try
                    {
                        // Cell services to retrieve data
                        PermissionFull    permissionsFull   = GetPermissionsFull(pKey);
                        MembershipDetails membershipDetails = GetMembershipDetails(pKey);

                        // Build our cuistomised response class...
                        membershipFlags = BuildMembershipPermissionFlags(
                            permissionsFull,
                            membershipDetails
                            );
                    }
                    catch (Exception ex)
                    {
                        _logger.Error("KeyValueMembershipFlagsReadStrategyPart.Process() :" + ex.Message, ex);
                        if (_logParameterValues)
                        {
                            _logger.Error($"KeyValueMembershipFlagsReadStrategyPart.Process() :- Key={keyValueParameter.KeyValue.Key}, Value={keyValueParameter.KeyValue.Value}");
                        }
                        throw new Exception(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("ProcessPermission Key and Value Execute :" + ex.Message, ex);
                if (_logParameterValues)
                {
                    _logger.Error($"Parameters ProcessPermissionFromKeyValue:- Key={keyValueParameter.KeyValue.Key}, Value={keyValueParameter.KeyValue.Value}");
                }

                throw new Exception(ex.Message);
            }
            return(membershipFlags);
        }
Exemplo n.º 12
0
        public void SetParameterValue(string Code, string Value)
        {
            KeyValueParameter kvp = GetParameterByCode(Code);

            if (kvp == null)
            {
                kvp = new KeyValueParameter()
                {
                    Code = Code
                };
                KeyValueParameters.Add(kvp);
            }
            else
            {
                Entry(kvp).State = EntityState.Modified;
            }
            kvp.Value = Value;
            SaveChanges();
        }
Exemplo n.º 13
0
        public object Process(KeyValueParameter keyValueParameter)
        {
            KeyValueParameter _parameter = keyValueParameter;

            NoAccessToCustomerDetails message = new NoAccessToCustomerDetails();

            if (_parameter.AccessControl.ModuleAccess.Find(x => x.HasAccess && x.Key == GroupCode.GCUST) == null)
            {
                message.Message = "You dont' have access for CustomerDetails data.";
                return(message);
            }

            CustomerInfoDetails customerInfoDetails =
                _customerDetailsService.GetCustomerDetail(
                    new KeyValuePair <string, string>(_parameter.KeyValue.Key, _parameter.KeyValue.Value),
                    _parameter.ReturnMe.CustomerDetails.AddressType.Value,
                    _parameter.SuppressionOptions
                    );

            return(customerInfoDetails);
        }
        public object ProcessForNameAndAddress(NameAndAddressParameter nameAndAddressParameter, KeyValueParameter keyValueParameter = null)
        {
            List <string> emptyList = new List <string>();

            if (nameAndAddressParameter.ReturnMe.CustomerKeys.SequenceEqual(emptyList))
            {
                NoAccessToCusotmerKeys message = new NoAccessToCusotmerKeys();
                message.Message = null;
                return(message);
            }
            else if (nameAndAddressParameter.AccessControl.CustomerKeyAccess.Find(x => x.HasAccess) == null)
            {
                NoAccessToCusotmerKeys message = new NoAccessToCusotmerKeys();
                message.Message = "You dont' have access CustomerKeys data.";
                return(message);
            }

            if (nameAndAddressParameter == null)
            {
                throw new ArgumentException("NameAndAddress cannot be null.");
            }

            object       customerIndexList = new object();
            CustomerKeys keys = new CustomerKeys();

            try
            {
                var pkey = _mciRequestService.GetPersistantKey(nameAndAddressParameter.NameAndAddress);

                if (pkey == null || !pkey.HasValue)
                {
                    keys.Keys.HasPartialResult = false;
                    keys.Keys         = null;
                    customerIndexList = keys;
                }
                else
                {
                    if (keyValueParameter == null)
                    {
                        ReturnMeForKeyValuePair returnme = new ReturnMeForKeyValuePair();
                        returnme.CustomerKeys   = nameAndAddressParameter.ReturnMe.CustomerKeys;
                        returnme.MailingHistory = nameAndAddressParameter.ReturnMe.MailingHistory;
                        returnme.Membership     = nameAndAddressParameter.ReturnMe.Membership;
                        returnme.Permissions    = nameAndAddressParameter.ReturnMe.Permissions;
                        keyValueParameter       = new KeyValueParameter {
                            AccessControl = nameAndAddressParameter.AccessControl, ReturnMe = returnme
                        };
                    }
                    keyValueParameter.KeyValue.Key   = "PKEY";
                    keyValueParameter.KeyValue.Value = pkey.Value.ToString();

                    // AE : Feb 18
                    // Call to New self instance ! Replace with direct call to target ley value Process() method
                    // var customerKeyProcess = new CustomerKeyProcess(keyValueParameter, _mciRequestService,
                    //     _clientScopeService, _logger);
                    // customerIndexList = customerKeyProcess.Process();
                    customerIndexList = Process(keyValueParameter);
                }
            }
            catch (Exception ex)
            {
                _logger.Error("NameAndAddressStrategy Execute (CustomerKeys) " + "ErrorTag: " + ErrorTagProvider.ErrorTag + " -- " + ex.Message, ex);
                throw new Exception(ex.Message);
            }

            return(customerIndexList);
        }
        public IHttpActionResult Post(PermissionsCustomerLoad permissions)
        {
            try
            {
                var mappedPermissions = Mapper.Map <WebApiServices.Models.Gdpr.PermissionsCustomerLoadModel>(permissions);
                var processPermission =
                    new ProcessPermission(null, _permissionsService, _mciRequestService, _logger, null);
                var message = processPermission.AddOrUpdateCustomerPermission(mappedPermissions);

                //Post show return summary instead of message if the load is successfully
                if (string.Compare(DatabaseMessage.PermissionsCreated, message,
                                   StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    if ((!string.IsNullOrWhiteSpace(permissions.CustomerNameAndAddress.FirstName)) &&
                        (!string.IsNullOrWhiteSpace(permissions.CustomerNameAndAddress.Surname)) &&
                        (permissions.CustomerNameAndAddress.Address != null))
                    {
                        NameAndAddressParameter parameter = new NameAndAddressParameter()
                        {
                            NameAndAddress = permissions.CustomerNameAndAddress, ResponseRequestedItems = new List <string>()
                            {
                                ReturnMeTypeConstant.Permissions.ToString()
                            }
                        };

                        parameter.ReturnMe = new ReturnMe()
                        {
                            Permissions = new ReturnMePermissions
                            {
                                Required            = true,
                                Journey             = permissions.JourneyType,
                                ResponseParameter   = GdprResponseType.Summary.ToString(),
                                PermissionParameter = "All",
                                MatchType           = Saga.Gmd.WebApiServices.Common.MatchType.POSTCODE_AND_NAME.ToString()
                            }
                        };
                        parameter.NameAndAddress.MatchType = Saga.Gmd.WebApiServices.Common.MatchType.POSTCODE_AND_NAME
                                                             .ToString();

                        // Use indexed DI resoloution to get the required strategy
                        IGetRequestProcess nameAndAddress = _strategyProcesses[GetRequestProcessImplementations.NameAndAddress];

                        //NameAndAddressStrategy nameAndAddress = new NameAndAddressStrategy(parameter,
                        //    _mailingHistoryService, _mciRequestService, _clientScopeService, _logger, _permissionsService,
                        //    _membershipService, _customerMatchService, _customerDetailsService, _travelSummaryService);
                        parameter.AccessControl =
                            _clientScopeService.VerifyUserHasAccessToGroupCode(parameter.AccessControl,
                                                                               Scope.CUSTOMER_PERMISSIONS_RETRIEVE_NAMEADDR);
                        object output = nameAndAddress.Execute(parameter);
                        return(Ok(output));
                    }
                    else
                    {
                        KeyValueParameter parameter = new KeyValueParameter()
                        {
                            ResponseRequestedItems = new List <string>()
                            {
                                ReturnMeTypeConstant.Permissions.ToString()
                            },
                            KeyValue = new KeyValue()
                            {
                                Key = "CPCK", Value = permissions.PermissionsId.ToString()
                            }
                        };

                        parameter.ReturnMe = new ReturnMeForKeyValuePair()
                        {
                            Permissions = new ReturnMePermissions
                            {
                                Required            = true,
                                Journey             = permissions.JourneyType,
                                ResponseParameter   = GdprResponseType.Summary.ToString(),
                                PermissionParameter = "All"
                            }
                        };

                        // Use indexed DI resoloution  to get the required strategy
                        IGetRequestProcess strategy = _strategyProcesses[GetRequestProcessImplementations.PermissionsKeyValuePair];

                        //PermissionsKeyValuePairStrategy strategy = new PermissionsKeyValuePairStrategy(parameter, _mailingHistoryService,
                        //    _mciRequestService, _clientScopeService,
                        //    _logger, _permissionsService,
                        //    _membershipService, _customerDetailsService,
                        //    _travelSummaryService, _customerMatchService);
                        object output = strategy.Execute(parameter);
                        return(Ok(output));
                    }
                }
                return(Ok(message));
            }
            catch (Exception exception)
            {
                if (_logParameterValue)
                {
                    _logger.Error($"PermissionGetNameAndAddress: ErrorTag: {ErrorTagProvider.ErrorTagDatabase} --  {exception.Message}");

                    _logger.Error(
                        $"Parameters PermissionLoad:- Name=FirstName={permissions.CustomerNameAndAddress.FirstName}, LastName={permissions.CustomerNameAndAddress.Surname}, Dob={permissions.CustomerNameAndAddress.Dob}, " +
                        $" Address=AddresLine1={ permissions.CustomerNameAndAddress.Address.Address1 ?? ""}, AddressLine2={permissions.CustomerNameAndAddress.Address.Address2 ?? ""}, AddressLine3={permissions.CustomerNameAndAddress.Address.Address3 ?? ""}, " +
                        $" AddressLine4={permissions.CustomerNameAndAddress.Address.Address4 ?? ""}, PostCode={permissions.CustomerNameAndAddress.Address.Postcode ?? ""}");
                }
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message)));
            }
        }
        public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
        {
            KeyValueParameter model = new KeyValueParameter();

            var a = actionContext.Request.Content.ReadAsStringAsync().Result;

            model.KeyValue.Key   = bindingContext.GetValue("KeyValue.Key").ToType <string>();
            model.KeyValue.Value = bindingContext.GetValue("KeyValue.Value").ToType <string>();

            model.SuppressionOptions.IgnoreSuppression =
                string.IsNullOrEmpty(bindingContext.GetValue("SuppressionOptions.IgnoreSuppression")) || !bindingContext.GetValue("SuppressionOptions.IgnoreSuppression").IsBooleanString()
                ? true
                : bindingContext.GetValue("SuppressionOptions.IgnoreSuppression").ToType <bool>();

            var queryValuePairs = actionContext.Request.GetQueryNameValuePairs();
            var keyValuePairs   = queryValuePairs as KeyValuePair <string, string>[] ?? queryValuePairs.ToArray();
            var returnMeItems   = keyValuePairs.ToList();
            var items           = (from item in returnMeItems where item.Key.ToLower().Contains("returnme")
                                   select item.Key.Split('.')
                                   into splitItems
                                   select splitItems[1].ToLower()).ToList();

            // Get ReturnMe.XXX Items from the param list  - Get the XXX item names from the query params

            model.ReturnMe.CustomerKeys           = bindingContext.GetValue("ReturnMe.CustomerKeys") == null ? null : bindingContext.GetValue("ReturnMe.CustomerKeys").ToType <List <string> >();
            model.ReturnMe.Permissions.Required   = bindingContext.GetValue("ReturnMe.Permissions.Required") != null && bindingContext.GetValue("ReturnMe.Permissions.Required").ToType <bool>();
            model.ReturnMe.TravelSummary.Required = bindingContext.GetValue("ReturnMe.TravelSummary.Required") != null &&
                                                    bindingContext.GetValue("ReturnMe.TravelSummary.Required")
                                                    .ToType <bool>();
            if (model.ReturnMe.Permissions != null)
            {
                model.ReturnMe.Permissions.ResponseParameter   = bindingContext.GetValue("Returnme.Permissions.ResponseParameter").ToType <string>();
                model.ReturnMe.Permissions.PermissionParameter = bindingContext.GetValue("ReturnMe.Permissions.PermissionParameter").ToType <string>();
                model.ReturnMe.Permissions.Journey             = bindingContext.GetValue("ReturnMe.Permissions.Journey").ToType <string>();
            }

            model.ReturnMe.MembershipFlags.Required    = bindingContext.GetValue("ReturnMe.MembershipFlags.Required") != null && bindingContext.GetValue("ReturnMe.MembershipFlags.Required").ToType <bool>();
            model.ReturnMe.Membership.Required         = bindingContext.GetValue("ReturnMe.Membership.Required") != null && bindingContext.GetValue("ReturnMe.Membership.Required").ToType <bool>();
            model.ReturnMe.CustomerDetails.Required    = bindingContext.GetValue("Returnme.CustomerDetails.Required") != null && bindingContext.GetValue("Returnme.CustomerDetails.Required").ToType <bool>();
            model.ReturnMe.CustomerDetails.AddressType = bindingContext.GetValue("Returnme.CustomerDetails.AddressType").ToAddressType() ?? AddressType.Correspondence;

            if (items.Contains("mailinghistory"))
            {
                model.ReturnMe.MailingHistory = new MailingHistory();
            }
            if (model.ReturnMe.MailingHistory != null)
            {
                model.ReturnMe.MailingHistory.Product            = bindingContext.GetValue("Returnme.MailingHistory.Product").ToType <string>();
                model.ReturnMe.MailingHistory.FromDate           = bindingContext.GetValue("ReturnMe.MailingHistory.FromDate").ToType <DateTime>();
                model.ReturnMe.MailingHistory.ToDate             = bindingContext.GetValue("ReturnMe.MailingHistory.ToDate").ToType <DateTime>();
                model.ReturnMe.MailingHistory.FieldsTobeReturned = bindingContext.GetValue("ReturnMe.MailingHistory.FieldsTobeReturned").ToType <List <string> >();
            }

            // Note, following logic to extract actual returnme items from the get parameter collection so that processing can be easier in later stage.
            // if you add new ReturnMe item that value should be added to where clause x.Contains("NewRequestMe")
            var distinctreturnMeItems = items.Distinct().Where(x =>
                                                               x.ToLower().Contains("mailinghistory") ||
                                                               x.ToLower().Contains("customerkeys") ||
                                                               x.ToLower().Contains("permissions") ||
                                                               x.ToLower().Contains("membership") ||
                                                               x.ToLower().Contains("customerdetails") ||
                                                               x.ToLower().Contains("travelsummary") ||
                                                               x.ToLower().Contains("membershipflags"))
                                        .ToList();

            model.ResponseRequestedItems          = distinctreturnMeItems;
            model.AccessControl.CustomerKeyAccess = model.ReturnMe.CustomerKeys?.ToCustomerKeyGroupCodeEnum();
            model.AccessControl.ModuleAccess      = model.ResponseRequestedItems.ToGroupCodeEnum();


            var validator = new KeyValueParameterValidator();
            var result    = validator.Validate(model);

            foreach (var e in result.Errors)
            {
                bindingContext.ModelState.AddModelError(e.PropertyName, e.ErrorMessage);
            }

            bindingContext.Model = model;

            return(true);
        }
        public object[] Execute(KeyValueParameter keyValue)
        {
            int processedObject = 0;

            _keyValue = keyValue;

            object[] output = new object[_keyValue.ResponseRequestedItems.Count];
            try
            {
                //if (_keyValue.ReturnMe.CustomerKeys != null)
                //{
                //    var customerKeyProcess = new CustomerKeyProcess(_keyValue, _mciRequestService,
                //        _clientScopeService, _logger);
                //    output[_processedObject] = customerKeyProcess.Process();
                //    _processedObject++;
                //}

                //if (_keyValue.ReturnMe.MailingHistory != null)
                //{
                //    MailingHistoryProcess mailingHistoryProcess = new MailingHistoryProcess(
                //        _nameAndAddress, _mailingHistoryService, _mciRequestService, _clientScopeService,
                //        _logger, _keyValue);
                //    output[_processedObject] = mailingHistoryProcess.ProcessForKeyValue();
                //    _processedObject++;
                //}

                if (_keyValue.ReturnMe.Permissions != null && _keyValue.ReturnMe.Permissions.Required)
                {
                    // we make some temporary parameters to pass so that we can create an address to construct
                    // the ProcessPermission() object

                    //KeyValueParameter tempKVP = new KeyValueParameter();
                    //tempKVP.KeyValue = _keyValue.KeyValue;
                    //tempKVP.AccessControl = new WebApiServices.Models.Security.AccessControl();
                    //tempKVP.AccessControl.CustomerKeyAccess.Add(new WebApiServices.Models.Security.CustomerKeyAccess() { HasAccess = true, Key = WebApiServices.Models.GroupCode.GCUST });
                    //tempKVP.AccessControl.ModuleAccess.Add(new WebApiServices.Models.Security.ModuleAccess() { HasAccess = true, Key = WebApiServices.Models.GroupCode.GCUST });
                    //tempKVP.ReturnMe.CustomerDetails.AddressType = AddressType.Correspondence;


                    //var customerDetails = new CustomerDetailsProcess(tempKVP, _customerDetailsService, _logger);
                    //WebApiServices.Models.Customer.CustomerInfoDetails details = customerDetails.Process() as WebApiServices.Models.Customer.CustomerInfoDetails;

                    NameAndAddressParameter tempNad = new NameAndAddressParameter();

                    tempNad.AccessControl          = _keyValue.AccessControl;
                    tempNad.ResponseRequestedItems = _keyValue.ResponseRequestedItems;
                    tempNad.ReturnMe       = _keyValue.ReturnMe;
                    tempNad.NameAndAddress = new WebApiServices.Models.NameAndAddress();



                    //if (details != null)
                    //{
                    //tempNad.NameAndAddress.FirstName = details.FirstName;
                    //tempNad.NameAndAddress.Surname = details.Surname;
                    //tempNad.NameAndAddress.Title = details.Title;
                    //tempNad.NameAndAddress.Dob = details.Dob;

                    //if (details.Address.GetType() == typeof(WebApiServices.Models.Customer.CorrespondenceAddress))
                    //{
                    //    WebApiServices.Models.Customer.CorrespondenceAddress a = details.Address as WebApiServices.Models.Customer.CorrespondenceAddress;

                    //    tempNad.NameAndAddress.Address.Address1 = a.Address1;
                    //    tempNad.NameAndAddress.Address.Address2 = a.Address2;
                    //    tempNad.NameAndAddress.Address.Address3 = a.Address3;
                    //    tempNad.NameAndAddress.Address.Address4 = a.Address4;
                    //    tempNad.NameAndAddress.Address.Postcode = a.Postcode;

                    //}
                    //else if(details.Address.GetType() == typeof(WebApiServices.Models.Customer.TransactionalAddress))
                    //{
                    //    WebApiServices.Models.Customer.TransactionalAddress a = details.Address as WebApiServices.Models.Customer.TransactionalAddress;

                    //    tempNad.NameAndAddress.Address = new Address()
                    //    {
                    //        Address1 = a.HouseNumber + (string.IsNullOrEmpty(a.HouseNumber) == false ? " " : "") + a.Street,
                    //        Address2 = a.Street1,
                    //        Address3 = a.City,
                    //        Address4 = a.County,
                    //        Postcode = a.Postcode
                    //    };

                    //}

                    //var permissionProcess = new ProcessPermission(_keyValue, _permissionService, _mciRequestService, _logger, _nameAndAddress);
                    var permissionProcess = new ProcessPermission(_keyValue, _permissionService, _mciRequestService, _logger, tempNad);
                    output[processedObject] = permissionProcess.ProcessPermissionFromKeyValue();
                    processedObject++;
                    // }
                }

                //if (_keyValue.ReturnMe.Membership != null && _keyValue.ReturnMe.Membership.Required)
                //{
                //    var membershipProcess = new MembershipProcess(_keyValue, _membershipService,
                //        _mciRequestService, _logger);
                //    var memberObj = membershipProcess.ProcessMembershipWithKeyValue();
                //    output[_processedObject] = memberObj;
                //    _processedObject++;
                //    if (memberObj != null && (memberObj.GetType() != typeof(NoAccessToMembership)))
                //    {
                //        //need to resize the array to accommodate the membershipstatus, membershipCancelReason and MembershipStatusReason values
                //        //that are retrieved from GMD to populate the frontend e.g AFE
                //        Array.Resize(ref output, output.Length + 1);
                //        output[_processedObject] = membershipProcess.GetMembershipOptionsData();
                //        _processedObject++;
                //    }
                //}

                //if (_keyValue.ReturnMe.CustomerDetails != null && _keyValue.ReturnMe.CustomerDetails.Required)
                //{
                //    CustomerInfo info = new CustomerInfo();
                //    var customerDetails = new CustomerDetailsProcess(_keyValue, _customerDetailsService,_logger);
                //    info.CustomerDetails = customerDetails.Process();
                //    output[_processedObject] = info;
                //    _processedObject++;
                //}

                //if (_keyValue.ReturnMe.TravelSummary != null && _keyValue.ReturnMe.TravelSummary.Required)
                //{
                //    var travelSummary = new CustomerMatchProcess(_nameAndAddress, _customerMatchService, _travelSummaryService, _logger);
                //    output[_processedObject] = travelSummary.TravelSummaryProcess(int.Parse(_keyValue.KeyValue.Value));
                //    _processedObject++;
                //}
            }
            catch (Exception ex)
            {
                _logger.Error($"{this.GetType().Name}: ErrorTag: {ErrorTagProvider.ErrorTag} -- {ex.Message}", ex);
                throw new Exception(ex.Message);
            }

            return(output);
        }
Exemplo n.º 18
0
        /// <summary>
        /// keyValue now an instance parameter to allow for Autofac DI instantiation of strategy classes...
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public object[] Execute(KeyValueParameter keyValue)
        {
            _keyValue = keyValue;
            int processedObject = 0;

            object[] output = new object[_keyValue.ResponseRequestedItems.Count];

            bool customerFound = true;

            try
            {
                if (_keyValue.ReturnMe.CustomerKeys != null)
                {
                    // AE : Feb 18 - Used injected key Process instance from DI container
                    // var customerKeyProcess = new CustomerKeyProcess(_keyValue, _mciRequestService,
                    //     _clientScopeService, _logger);
                    output[processedObject] = _customerKeyProcess.Process(_keyValue);

                    customerFound = _customerKeyProcess.CustomerFound;
                    processedObject++;
                }

                if (customerFound)
                {
                    if (_keyValue.ReturnMe.MailingHistory != null)
                    {
                        MailingHistoryProcess mailingHistoryProcess = new MailingHistoryProcess(
                            _nameAndAddress, _mailingHistoryService, _mciRequestService, _clientScopeService,
                            _logger, _keyValue);
                        output[processedObject] = mailingHistoryProcess.ProcessForKeyValue();
                        processedObject++;
                    }


                    // CITCS-17 - Request includes an aggregated view of Membership Permissions
                    if (_keyValue.ReturnMe.MembershipFlags.Required)
                    {
                        // IKeyValueReadStrategyPart mebmershipFlagsReader = new KeyValueMembershipFlagsReadStrategyPart(
                        //    _keyValue, _permissionService, _mciRequestService, _membershipService, _logger
                        //     );
                        output[processedObject] = _membershipFlagsKeyValueReader.Process(_keyValue);
                        processedObject++;
                    }

                    // As per Sam Sheperd 19/09/2017 - We should not process any permissions data request in /Customer
                    // so I have commented this out and asked Jay to remove from the documentation

                    //if (_keyValue.ReturnMe.Permissions != null && _keyValue.ReturnMe.Permissions.Required)
                    //{
                    //    var permissionProcess = new ProcessPermission(_keyValue, _permissionService,
                    //        _mciRequestService, _logger, _nameAndAddress);
                    //    output[_processedObject] = permissionProcess.ProcessPermissionFromKeyValue();
                    //    _processedObject++;
                    //}

                    if (_keyValue.ReturnMe.Membership != null && _keyValue.ReturnMe.Membership.Required)
                    {
                        var membershipProcess = new MembershipProcess(_keyValue, _membershipService,
                                                                      _mciRequestService, _logger);

                        var memberObj = membershipProcess.ProcessMembershipWithKeyValue();

                        if (!membershipProcess.CustomerFound)
                        {
                            output[processedObject] = HttpStatusCode.NotFound;
                        }
                        else
                        {
                            output[processedObject] = memberObj;
                        }
                        processedObject++;
                        if (memberObj != null && (memberObj.GetType() != typeof(NoAccessToMembership)))
                        {
                            //need to resize the array to accommodate the membershipstatus, membershipCancelReason and MembershipStatusReason values
                            //that are retrieved from GMD to populate the frontend e.g AFE
                            Array.Resize(ref output, output.Length + 1);
                            // output[processedObject] = membershipProcess.GetMembershipOptionsData();

                            // GITCS-1 : Retire above membership process method
                            // _membershipOptionsReader =
                            //    _nameAndAddressReaders[NameAndAddressStrategyReaderImplementations.MembershipOptionsReaderPart];
                            output[processedObject] = _membershipOptionsReader.Process(_nameAndAddress, null);

                            processedObject++;
                        }
                    }

                    if (_keyValue.ReturnMe.CustomerDetails != null && _keyValue.ReturnMe.CustomerDetails.Required)
                    {
                        CustomerInfo info = new CustomerInfo();

                        // var customerDetails = new CustomerDetailsProcess(_keyValue, _customerDetailsService, _logger);
                        info.CustomerDetails = _customerDetailsProcess.Process(_keyValue);
                        // AE : 15 Feb 18 : Call process interface from DI container

                        if (info.CustomerDetails == null)
                        {
                            output[processedObject] = HttpStatusCode.NotFound;
                        }
                        else
                        {
                            output[processedObject] = info;
                        }
                        processedObject++;
                    }

                    if (_keyValue.ReturnMe.TravelSummary != null && _keyValue.ReturnMe.TravelSummary.Required)
                    {
                        var travelSummary = new CustomerMatchProcess(_nameAndAddress, _customerMatchService, _travelSummaryService, _logger);
                        output[processedObject] = travelSummary.TravelSummaryProcess(int.Parse(_keyValue.KeyValue.Value));
                        processedObject++;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("KeyValuePairStrategy: " + "ErrorTag: " + ErrorTagProvider.ErrorTag + " -- " + ex.Message, ex);
                throw new Exception(ex.Message);
            }

            return(output);
        }
 public object[] Execute(KeyValueParameter keyValue)
 {
     throw new NotSupportedException("Key value calls not supported on NameAndAddressStrategy");
 }
        public object Process(KeyValueParameter keyValueParameter)
        {
            var customerIndexList = new List <CustomerIndexResult>();

            string        messageSet          = string.Empty;
            bool          setHasPartialResult = false;
            CustomerKeys  customerKeys        = new CustomerKeys();
            List <string> emptyList           = new List <string>();

            if (keyValueParameter.ReturnMe.CustomerKeys.SequenceEqual(emptyList))
            {
                NoAccessToCusotmerKeys message = new NoAccessToCusotmerKeys();
                message.Message = null;
                return(message);
            }
            if (keyValueParameter.AccessControl.CustomerKeyAccess.Count > 0 && keyValueParameter.AccessControl.CustomerKeyAccess.Find(x => x.HasAccess) == null)
            {
                NoAccessToCusotmerKeys message = new NoAccessToCusotmerKeys();
                message.Message = "You dont' have access CustomerKeys data.";
                return(message);
            }

            try
            {
                foreach (var code in keyValueParameter.AccessControl.CustomerKeyAccess)
                {
                    if (code.HasAccess)
                    {
                        var output = _mciRequestService.GetCustomerAllIndexKeys(keyValueParameter.KeyValue.Key,
                                                                                keyValueParameter.KeyValue.Value, code.Key.ToString());

                        if ((output != null) && output.Count > 0)
                        {
                            if ((output as List <CustomerIndexResult>)[0].CustomerFound == false)
                            {
                                CustomerFound = false;
                                return(HttpStatusCode.NotFound);
                            }
                        }

                        if (customerIndexList.Count > 0)
                        {
                            customerIndexList.AddRange(output);
                        }
                        else
                        {
                            customerIndexList = output;
                        }
                    }
                    else
                    {
                        setHasPartialResult = customerIndexList.Count > 0;
                        messageSet          = string.Format(ErrorMessages.DontHavePermission, code.Key);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("CustomerKeyProcess: " + "ErrorTag: " + ErrorTagProvider.ErrorTag + " -- " + ex.Message, ex);
                throw new Exception(ex.Message);
            }
            List <string> invalidValues = new List <string>();

            foreach (var key in keyValueParameter.ReturnMe.CustomerKeys)
            {
                if (keyValueParameter.AccessControl.CustomerKeyAccess.Exists(x => x.HasAccess == false && x.Key.ToString() == key))
                {
                    invalidValues.Add(key);
                }


                GroupCode code;
                var       isValidCode = Enum.TryParse(key, true, out code);

                if (!isValidCode)
                {
                    invalidValues.Add(key);
                }
            }



            if (invalidValues.Count > 0)
            {
                if (string.IsNullOrEmpty(messageSet))
                {
                    messageSet =
                        $"Provided CustomerKey request has invalid value/s '{string.Join(",", invalidValues.ToArray())}'";
                }
                setHasPartialResult = true;
            }


            customerKeys.Keys.Message          = messageSet;
            customerKeys.Keys.HasPartialResult = setHasPartialResult;
            customerKeys.Keys.KeysList         = customerIndexList;

            return(customerKeys);
        }