/// <summary>
            /// Retrieves terminal and device association information data from headquarters.
            /// </summary>
            /// <param name="request">The request message.</param>
            /// <returns>The response message.</returns>
            private static EntityDataServiceResponse <TerminalInfo> GetTerminalInfo(GetTerminalInfoRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <TerminalInfo> terminalInfo = transactionService.GetTerminalInfo(request.OrgUnitNumber, request.DeviceType, request.QueryResultSettings);

                return(new EntityDataServiceResponse <TerminalInfo>(terminalInfo));
            }
            /// <summary>
            /// Retrieves number sequence seed data from headquarters.
            /// </summary>
            /// <param name="request">The request message.</param>
            /// <returns>The response message.</returns>
            private static GetNumberSequenceSeedDataRealtimeResponse GetNumberSequenceFromHeadquarters(GetNumberSequenceSeedDataRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <NumberSequenceSeedData> seedData = transactionService.GetNumberSequenceSeedData(request.TerminalId);

                return(new GetNumberSequenceSeedDataRealtimeResponse(seedData));
            }
            /// <summary>
            /// Looks up for shipments in AX.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The collection of <see cref="Shipment"/> items.</returns>
            private static EntityDataServiceResponse <Shipment> GetShipments(GetShipmentsRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <Shipment> shipmentInfo = transactionClient.GetShipments(request.SalesId, request.ShipmentId);

                return(new EntityDataServiceResponse <Shipment>(shipmentInfo));
            }
            /// <summary>
            /// Commits stock count journals in AX.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The <see cref="StockCountJournal"/> journal.</returns>
            private static SingleEntityDataServiceResponse <StockCountJournal> CommitStockCountJournal(CommitStockCountJournalRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
                StockCountJournal stockCountJournal = transactionClient.CommitStockCounts(request.Journal);

                return(new SingleEntityDataServiceResponse <StockCountJournal>(stockCountJournal));
            }
            /// <summary>
            /// Creates stock count journal in AX by location id and description.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The collection of <see cref="StockCountJournal"/> items.</returns>
            private static EntityDataServiceResponse <StockCountJournal> CreateStockCountJournal(CreateStockCountJournalRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <StockCountJournal> stockCountJournals = transactionClient.CreateStockCountJournal(request.LocationId, request.Description);

                return(new EntityDataServiceResponse <StockCountJournal>(stockCountJournals));
            }
            /// <summary>
            /// Updates the application version for current device.
            /// </summary>
            /// <param name="request">The application version service request.</param>
            /// <returns>The empty response.</returns>
            private static NullResponse UpdateApplicationVersion(UpdateApplicationVersionRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionService.UpdateApplicationVersion(request.AppVersion);
                return(new NullResponse());
            }
            /// <summary>
            /// Retrieves devices available for activation from headquarters.
            /// </summary>
            /// <param name="request">The request message.</param>
            /// <returns>The response message.</returns>
            private static EntityDataServiceResponse <Device> GetAvailableDevices(GetAvailableDevicesRealtimeRequest request)
            {
                var transactionService       = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <Device> devices = transactionService.GetAvailableDevices(request.DeviceType, request.QueryResultSettings);

                return(new EntityDataServiceResponse <Device>(devices));
            }
 /// <summary>
 /// Get channel merchant payment provider data.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns>The response.</returns>
 private GetOnlineChannelMerchantPaymentProviderDataRealtimeResponse GetChannelMerchantPaymentProviderData(GetOnlineChannelMerchantPaymentProviderDataRealtimeRequest request)
 {
     var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
     var merchantData = transactionClient.GetMerchantPaymentProviderDataForOnlineStore(request.ChannelId);
     var response = new GetOnlineChannelMerchantPaymentProviderDataRealtimeResponse(merchantData);
     return response;
 }
            /// <summary>
            /// Gets stock count journals in AX by location id.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The collection of <see cref="StockCountJournal"/> items.</returns>
            private static EntityDataServiceResponse <StockCountJournal> GetStockCountJournals(GetStockCountJournalsRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
                PagedResult <StockCountJournal> stockCountJournals = transactionClient.GetStockCountJournals(request.LocationId);

                return(new EntityDataServiceResponse <StockCountJournal>(stockCountJournals));
            }
            /// <summary>
            /// Executes transaction service health check.
            /// </summary>
            /// <param name="request">Service Request.</param>
            /// <returns>Service Response.</returns>
            private static RunHealthCheckRealtimeResponse RunHealthCheckRequest(RunHealthCheckRealtimeRequest request)
            {
                var  transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
                bool result             = transactionService.IsAlive();

                return(new RunHealthCheckRealtimeResponse(result));
            }
            /// <summary>
            /// Authenticate the user.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static UserLogOnRenewalRealtimeResponse LogOnUserRenewal(UserLogOnRenewalRealtimeRequest request)
            {
                var      transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
                Employee employee           = transactionService.RetailServerStaffLogOnRenewal(request.StaffId);

                return(new UserLogOnRenewalRealtimeResponse(employee));
            }
         /// <summary>
         /// Updates the publishing status and message for the given channel in AX.
         /// </summary>
         /// <param name="request">The request.</param>
         /// <returns>The null response.</returns>
         private NullResponse UpdateChannelPublishingStatus(UpdateChannelPublishingStatusRealtimeRequest request)
         {
             var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);
             transactionClient.UpdateChannelPublishingStatus(request.ChannelId, request.PublishStatus, request.PublishStatusMessage);
 
             return new NullResponse();
         }
            /// <summary>
            /// Change password for the user.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static StaffChangePasswordRealtimeResponse ChangePassword(UserChangePasswordRealtimeRequest request)
            {
                string staffId = request.StaffId;

                if (string.IsNullOrWhiteSpace(staffId))
                {
                    throw new UserAuthorizationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_ChangePasswordFailed, "Staff Id is not valid.");
                }

                TransactionService.TransactionServiceClient transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                string                  newPasswordHash;
                string                  newPasswordSalt;
                string                  newPasswordHashAlgorithm;
                DateTimeOffset          newPasswordLastChangedDateTime;
                AuthenticationOperation newPasswordLastUpdatedOperation;

                transactionService.StaffChangePassword(
                    staffId,
                    request.OldPassword,
                    request.NewPassword,
                    changePassword: false,
                    newPasswordHash: out newPasswordHash,
                    newPasswordSalt: out newPasswordSalt,
                    newPasswordHashAlgorithm: out newPasswordHashAlgorithm,
                    newPasswordLastChangedDateTime: out newPasswordLastChangedDateTime,
                    newPasswordLastUpdatedOperation: out newPasswordLastUpdatedOperation);

                return(new StaffChangePasswordRealtimeResponse(newPasswordHash, newPasswordSalt, newPasswordHashAlgorithm, newPasswordLastChangedDateTime, newPasswordLastUpdatedOperation));
            }
            /// <summary>
            /// Deletes stock count journal in AX.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The <see cref="NullResponse"/> response.</returns>
            private static NullResponse DeleteStockCountJournal(DeleteStockCountJournalRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionClient.DeleteStockJournal(request.JournalId);

                return(new NullResponse());
            }
Example #15
0
            /// <summary>
            /// Issue credit memo.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The <see cref="SingleEntityDataServiceResponse{T}"/> response that contains memo id.</returns>
            private static SingleEntityDataServiceResponse <string> IssueCreditMemo(IssueCreditMemoRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                string memoId = transactionClient.IssueCreditMemo(request.StoreId, request.TerminalId, request.StaffId, request.TransactionId, request.ReceiptId, request.CurrencyCode, request.Amount);

                return(new SingleEntityDataServiceResponse <string>(memoId));
            }
Example #16
0
            /// <summary>
            /// Removes reservation of the credit memo from a given terminal so it can be used on other terminals.
            /// </summary>
            /// <param name="request">The <see cref="UnlockCreditMemoRealtimeRequest"/> request.</param>
            /// <returns>The <see cref="NullResponse"/> response.</returns>
            private static NullResponse UnlockCreditMemo(UnlockCreditMemoRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionClient.UnlockCreditMemo(request.CreditMemoId, request.StoreId, request.TerminalId);

                return(new NullResponse());
            }
            /// <summary>
            /// Voids gift card.
            /// </summary>
            /// <param name="request">The <see cref="VoidGiftCardRealtimeRequest"/> request.</param>
            /// <returns>The <see cref="NullResponse"/> response.</returns>
            private static NullResponse VoidGiftCard(VoidGiftCardRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionClient.VoidGiftCard(request.GiftCardId);

                return(new NullResponse());
            }
            /// <summary>
            /// Validates the staff password.
            /// </summary>
            /// <param name="request">The validate staff request.</param>
            /// <returns>The validate staff response.</returns>
            private static NullResponse ValidateStaffPassword(ValidateStaffPasswordRealtimeRequest request)
            {
                TransactionService.TransactionServiceClient transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionService.RetailServerStaffIsPasswordValidForStaff(request.StaffId, request.Password);

                return(new NullResponse());
            }
            /// <summary>
            /// Voids gift card payment.
            /// </summary>
            /// <param name="request">The <see cref="VoidGiftCardRealtimeRequest"/> request.</param>
            /// <returns>The <see cref="NullResponse"/> response.</returns>
            private static NullResponse VoidGiftCardPayment(VoidGiftCardPaymentRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionClient.VoidGiftCardPayment(request.GiftCardId, request.ChannelId, request.TerminalId);

                return(new NullResponse());
            }
Example #20
0
            /// <summary>
            /// Pay by credit memo.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The <see cref="NullResponse"/> response.</returns>
            private static NullResponse PayCreditMemo(PayCreditMemoRealtimeRequest request)
            {
                var transactionClient = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionClient.PayCreditMemo(request.CreditMemoId, request.StoreId, request.TerminalId, request.StaffId, request.TransactionId, request.ReceiptId, request.CurrencyCode, request.Amount);

                return(new NullResponse());
            }
            /// <summary>
            /// Invokes the transaction service to get the media storage SAS key.
            /// </summary>
            /// <param name="context">Request context <see cref="RequestContext" />.</param>
            /// <returns>The media storage SAS key.</returns>
            private string GetMediaStorageSasKey(RequestContext context)
            {
                ThrowIf.Null(context, "context");

                var transactionService        = new TransactionService.TransactionServiceClient(context);
                MediaStorageSasDetails sasKey = transactionService.GetMediaStorageSasKeyDetails();

                return(sasKey.SasKey);
            }
            /// <summary>
            /// Authenticates the device.
            /// </summary>
            /// <param name="request">The device authentication request.</param>
            /// <returns>The response.</returns>
            private static AuthenticateDeviceRealtimeResponse AuthenticateDevice(AuthenticateDeviceRealtimeRequest request)
            {
                ThrowIf.Null(request.Device, "request.Device");

                var    transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
                Device device             = transactionService.AuthenticateDevice(request.Device.DeviceNumber, request.Device.TokenData);

                return(new AuthenticateDeviceRealtimeResponse(device));
            }
Example #23
0
 public PingPongProcessor(string party, string ledgerId, Channel channel, Identifier pingIdentifier, Identifier pongIdentifier)
 {
     _party              = party;
     _ledgerId           = ledgerId;
     _transactionService = new TransactionService.TransactionServiceClient(channel);
     _submissionService  = new CommandSubmissionService.CommandSubmissionServiceClient(channel);
     _pingIdentifier     = pingIdentifier;
     _pongIdentifier     = pongIdentifier;
 }
            /// <summary>
            /// Activates the device.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static ActivateDeviceRealtimeResponse ActivateDevice(ActivateDeviceRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                // Call transaction service to activate the device.
                var activationResult = transactionService.ActivateDevice(request.DeviceNumber, request.TerminalId, request.StaffId, request.DeviceId, request.ForceActivation, request.DeviceType);
                var response         = new ActivateDeviceRealtimeResponse(activationResult);

                return(response);
            }
            /// <summary>
            /// Gets the employee identity given the external identity.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static Response GetEmployeeIdentityByExternalIdentity(GetEmployeeIdentityByExternalIdentityRealtimeRequest request)
            {
                TransactionService.TransactionServiceClient transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                Employee employee = transactionService.GetRetailServerStaffByExternalIdentity(request.ExternalIdentityId, request.ExternalIdentitySubId);

                var employeeIdentity = new CommerceIdentity(employee, null);

                return(new GetEmployeeIdentityByExternalIdentityRealtimeResponse(employeeIdentity));
            }
 /// <summary>
 /// Enrolls user credentials.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns>The response.</returns>
 private static EnrollUserCredentialsRealtimeResponse EnrollUserCredentials(EnrollUserCredentialsRealtimeRequest request)
 {
     TransactionService.TransactionServiceClient transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);
     return(new EnrollUserCredentialsRealtimeResponse(
                transactionService.EnrollUserCredentials(
                    request.UserId,
                    request.GrantType,
                    request.CredentialId,
                    request.Credential,
                    request.AdditionalAuticationData)));
 }
            /// <summary>
            /// Posts loyalty card reward point transaction in AX.
            /// </summary>
            /// <param name="request">The post loyalty card reward point transaction request.</param>
            /// <returns>A loyalty card reward point transaction response.</returns>
            private static NullResponse PostLoyaltyCardRewardPointTransaction(PostLoyaltyCardRewardPointRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                transactionService.PostLoyaltyCardRewardPointTrans(
                    request.Transaction,
                    request.EntryType,
                    request.RequestContext.GetChannelConfiguration());

                return(new NullResponse());
            }
            /// <summary>
            /// Issues loyalty card from AX.
            /// </summary>
            /// <param name="request">The issue loyalty card request.</param>
            /// <returns>The issue loyalty card response.</returns>
            private static IssueLoyaltyCardRealtimeResponse IssueLoyaltyCard(IssueLoyaltyCardRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                LoyaltyCard loyaltyCard = transactionService.IssueLoyaltyCard(
                    request.LoyaltyCardNumber,
                    request.LoyaltyCardTenderType,
                    request.PartyRecordId,
                    request.ChannelId);

                return(new IssueLoyaltyCardRealtimeResponse(loyaltyCard));
            }
            /// <summary>
            /// Gets loyalty card transactions from AX.
            /// </summary>
            /// <param name="request">The get loyalty card transactions request.</param>
            /// <returns>The get loyalty card transactions response.</returns>
            private static GetLoyaltyCardTransactionsRealtimeResponse GetLoyaltyCard(GetLoyaltyCardTransactionsRealtimeRequest request)
            {
                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                PagedResult <LoyaltyCardTransaction> transactions = transactionService.GetLoyaltyCardTransactions(
                    request.LoyaltyCardNumber,
                    request.RewardPointId,
                    request.QueryResultSettings.Paging.Top,
                    request.QueryResultSettings.Paging.Skip,
                    request.QueryResultSettings.Paging.CalculateRecordCount);

                return(new GetLoyaltyCardTransactionsRealtimeResponse(transactions));
            }
            /// <summary>
            /// Authenticate the user.
            /// </summary>
            /// <param name="request">The device activation request.</param>
            /// <returns>The device activation response.</returns>
            private static StaffLogOnRealtimeResponse LogOnUser(StaffLogOnRealtimeRequest request)
            {
                Employee employee;

                var transactionService = new TransactionService.TransactionServiceClient(request.RequestContext);

                long channelId                = request.ChannelId.GetValueOrDefault(0);
                long terminalId               = request.TerminalRecordId.GetValueOrDefault(0);
                bool logOntoStore             = request.ChannelId.HasValue;
                bool skipPasswordVerification = string.IsNullOrWhiteSpace(request.StaffPassword);

                employee = transactionService.RetailServerStaffLogOn(request.StaffId, channelId, terminalId, request.StaffPassword, logOntoStore, skipPasswordVerification);
                return(new StaffLogOnRealtimeResponse(employee));
            }