コード例 #1
0
            private NullResponse InsertLoyaltyCard(InsertLoyaltyCardDataRequest request)
            {
                ThrowIf.Null(request.LoyaltyCard, "loyaltyCard");

                using (DataTable loyaltyCardTable = new DataTable(LoyaltyCardTypeName))
                    using (DataTable loyaltyCardTierTable = new DataTable(LoyaltyCardTierTypeName))
                    {
                        // Prepare loyalty card data
                        AddLoyaltyCardTableTypeSchema(loyaltyCardTable);
                        loyaltyCardTable.Rows.Add(ConvertLoyaltyCardToDataRow(loyaltyCardTable, request.LoyaltyCard));

                        // Prepare loyalty card tier data
                        AddLoyaltyCardTierTableTypeSchema(loyaltyCardTierTable);
                        foreach (var cardLoyaltyGroup in request.LoyaltyCard.LoyaltyGroups)
                        {
                            foreach (var cardTier in cardLoyaltyGroup.LoyaltyCardTiers)
                            {
                                loyaltyCardTierTable.Rows.Add(ConvertLoyaltyCardTierToDataRow(loyaltyCardTierTable, request.LoyaltyCard, cardLoyaltyGroup, cardTier));
                            }
                        }

                        // Insert
                        var parameters = new ParameterSet();
                        parameters["@TVP_LOYALTYCARDTABLETYPE"]     = loyaltyCardTable;
                        parameters["@TVP_LOYALTYCARDTIERTABLETYPE"] = loyaltyCardTierTable;

                        int errorCode;
                        using (SqlServerDatabaseContext sqlServerDatabaseContext = new SqlServerDatabaseContext(request))
                        {
                            errorCode = sqlServerDatabaseContext.ExecuteStoredProcedureNonQuery(LoyaltySqlServerDataService.InsertLoyaltyCardSprocName, parameters);
                        }

                        if (errorCode != (int)DatabaseErrorCodes.Success)
                        {
                            throw new StorageException(StorageErrors.Microsoft_Dynamics_Commerce_Runtime_CriticalStorageError, errorCode, "Unable to save the loyalty card in the channel database.");
                        }
                    }

                return(new NullResponse());
            }
コード例 #2
0
            /// <summary>
            /// Gets the transactions for a loyalty card.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The response containing the loyalty card transactions.</returns>
            private static IssueLoyaltyCardServiceResponse IssueLoyaltyCard(IssueLoyaltyCardServiceRequest request)
            {
                var serviceRequest = new IssueLoyaltyCardRealtimeRequest(
                    request.LoyaltyCardNumber,
                    request.LoyaltyCardTenderType,
                    request.PartyRecordId,
                    request.ChannelId);

                IssueLoyaltyCardRealtimeResponse serviceResponse = request.RequestContext.Execute <IssueLoyaltyCardRealtimeResponse>(serviceRequest);
                LoyaltyCard loyaltyCard = serviceResponse.LoyaltyCard;

                if (loyaltyCard != null && loyaltyCard.PartyRecordId != 0)
                {
                    loyaltyCard.CustomerAccount = request.CustomerAccountNumber;
                }

                // Insert the issue loyalty card into the channel database
                var insertLoyaltyCardDataRequest = new InsertLoyaltyCardDataRequest(loyaltyCard);

                request.RequestContext.Execute <NullResponse>(insertLoyaltyCardDataRequest);

                return(new IssueLoyaltyCardServiceResponse(loyaltyCard));
            }