private Customer GetCustomerById(string customerId) { var getCustomerRequest = new GetCustomersServiceRequest(QueryResultSettings.SingleRecord, customerId, SearchLocation.Local); var getCustomerResponse = this.Context.Execute <GetCustomersServiceResponse>(getCustomerRequest); return(getCustomerResponse.Customers.SingleOrDefault()); }
private Customer GetCustomer(string customerAccountNumber) { // No need to worry about the QueryResultSettings since we expect at most a single result. var serviceRequest = new GetCustomersServiceRequest(QueryResultSettings.SingleRecord, customerAccountNumber); var serviceResponse = this.Context.Execute <GetCustomersServiceResponse>(serviceRequest); return(serviceResponse.Customers.SingleOrDefault()); }
/// <summary> /// Check if an account number maps to an async customer. /// </summary> /// <param name="context">The request context.</param> /// <param name="customerAccountNumber">The customer account number.</param> /// <returns>A boolean indicating whether or not the customer is an async customer.</returns> private bool IsAsyncCustomer(RequestContext context, string customerAccountNumber) { if (!string.IsNullOrWhiteSpace(customerAccountNumber)) { var getCustomersServiceRequest = new GetCustomersServiceRequest(QueryResultSettings.SingleRecord, customerAccountNumber); var getCustomersServiceResponse = context.Execute <GetCustomersServiceResponse>(getCustomersServiceRequest); if (getCustomersServiceResponse.Customers.FirstOrDefault().IsAsyncCustomer) { return(true); } } return(false); }
/// <summary> /// Executes the workflow to issue a loyalty card. /// </summary> /// <param name="request">The request.</param> /// <returns>The response.</returns> protected override IssueLoyaltyCardResponse Process(IssueLoyaltyCardRequest request) { ThrowIf.Null(request, "request"); var validateCustomerAccountRequest = new GetValidatedCustomerAccountNumberServiceRequest(request.CustomerAccountNumber, throwOnValidationFailure: true); request.RequestContext.Execute <GetValidatedCustomerAccountNumberServiceResponse>(validateCustomerAccountRequest); // If the request contains a customer account number, find the party recid of the customer. long partyRecordId = 0; if (!string.IsNullOrWhiteSpace(request.CustomerAccountNumber)) { var getCustomerServiceRequest = new GetCustomersServiceRequest(QueryResultSettings.SingleRecord, request.CustomerAccountNumber); var getCustomerServiceResponse = this.Context.Execute <GetCustomersServiceResponse>(getCustomerServiceRequest); var customer = getCustomerServiceResponse.Customers.SingleOrDefault(); if (customer == null || customer.DirectoryPartyRecordId == 0) { throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerOrDirectoryPartyNotFound); } partyRecordId = customer.DirectoryPartyRecordId; } var issueLoyaltyCardRequest = new IssueLoyaltyCardServiceRequest( request.LoyaltyCardNumber, request.CardTenderType, request.CustomerAccountNumber, partyRecordId, this.Context.GetPrincipal().ChannelId); // Issue the loyalty card in HQ var serviceResponse = this.Context.Execute <IssueLoyaltyCardServiceResponse>(issueLoyaltyCardRequest); return(new IssueLoyaltyCardResponse(serviceResponse.LoyaltyCard)); }