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))); } }
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))); } }
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; }
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); }
public string GetParameterValueByCode(string Code) { KeyValueParameter kvp = GetParameterByCode(Code); if (kvp != null) { return(kvp.Value); } return(string.Empty); }
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"]); }
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); }
/// <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); }
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(); }
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); }
/// <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); }