/// <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(NameAndAddressParameter nameAndAddress) { int processedObject = 0; _nameAndAddress = nameAndAddress; object[] output = new object[_nameAndAddress.ResponseRequestedItems.Count]; try { foreach (var item in _nameAndAddress.ResponseRequestedItems) { switch (item) { case ReturnMeTypeConstant.CustomerKeys: //CustomerKeyProcess customerKeyProcess = new CustomerKeyProcess(_keyValue, // _mciRequestService, _clientScopeService, _logger, _nameAndAddress); //output[processedObject] = customerKeyProcess.ProcessForNameAndAddress( _nameAndAddress, _keyValue ); // output[processedObject] = _customerKeyProcess.ProcessForNameAndAddress(_nameAndAddress, _keyValue); // AE Feb 18 : Use process from DI container processedObject++; break; case ReturnMeTypeConstant.MailingHistory: MailingHistoryProcess mailingHistoryProcess = new MailingHistoryProcess(_nameAndAddress, _mailingHistoryService, _mciRequestService, _clientScopeService, _logger, _keyValue); output[processedObject] = mailingHistoryProcess.Process(); processedObject++; break; case ReturnMeTypeConstant.Permissions: var processPermission = new ProcessPermission(_keyValue, PermissionService, _mciRequestService, _logger, _nameAndAddress); output[processedObject] = processPermission.ProcessPermissionForNameAndAddress(); processedObject++; break; case ReturnMeTypeConstant.Membership: // GITCS-1 : Refactor to NameAndAddressStrategyMembershipReaderParts, in place of MembershipProcess class // var membershipDetailReader = _nameAndAddressReaders[ NameAndAddressStrategyReaderImplementations.MembershipDetailsReaderPart]; var memberObj = membershipDetailReader.Process(_nameAndAddress, _keyValue?.KeyValue.IntValue); /* * var membershipProcess = new MembershipProcess(_keyValue, _membershipService, * _mciRequestService, _logger, _nameAndAddress); * var memberObj = membershipProcess.GetMembershipFromNameAndAddress(); */ 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(); //var membershipOptionsReader = // _nameAndAddressReaders[ // NameAndAddressStrategyReaderImplementations.MembershipOptionsReaderPart ]; output[processedObject] = _membershipOptionsReader.Process(_nameAndAddress, null); processedObject++; } break; case ReturnMeTypeConstant.CustomerMatch: var customerMatch = new CustomerMatchProcess(_nameAndAddress, _customerMatchService, _travelSummaryService, _logger); var matchedCustomerDetails = customerMatch.Process(); output[processedObject] = matchedCustomerDetails; processedObject++; break; case ReturnMeTypeConstant.TravelSummary: var travelSummary = new CustomerMatchProcess(_nameAndAddress, _customerMatchService, _travelSummaryService, _logger); output[processedObject] = travelSummary.TravelSummaryProcess(0, _nameAndAddress.NameAndAddress); processedObject++; break; } } } catch (Exception ex) { _logger.Error( "NameAndAddressStrategy: " + "ErrorTag: " + ErrorTagProvider.ErrorTag + " -- " + ex.Message, ex); throw new Exception(ex.Message); } return(output); }