Exemple #1
0
            /// <summary>
            /// Executes the workflow to deactivate a device.
            /// </summary>
            /// <param name="request">The deactivate device request.</param>
            /// <returns>The response.</returns>
            protected override NullResponse Process(DeactivateDeviceRequest request)
            {
                ThrowIf.Null(request, "request");

                GetCurrentTerminalIdDataRequest dataRequest = new GetCurrentTerminalIdDataRequest();
                string terminalId = this.Context.Execute <SingleEntityDataServiceResponse <string> >(dataRequest).Entity;

                // Slect all shifts.
                IList <Shift> shifts = ShiftDataDataServiceHelper.GetAllOpenedShiftsOnTerminal(this.Context, this.Context.GetPrincipal().ChannelId, terminalId, true);

                if (shifts.HasMultiple())
                {
                    throw new DataValidationException(DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_TerminalHasAnOpenShift);
                }

                var serviceRequest = new DeactivateDeviceServiceRequest(this.Context.GetPrincipal().DeviceNumber, terminalId, this.Context.GetPrincipal().UserId, this.Context.GetPrincipal().DeviceToken);

                DeactivateDeviceServiceResponse deactivationResponse = this.Context.Execute <DeactivateDeviceServiceResponse>(serviceRequest);

                if (!string.IsNullOrWhiteSpace(deactivationResponse.DeactivationResult.ErrorMessage))
                {
                    throw new DeviceAuthenticationException(SecurityErrors.Microsoft_Dynamics_Commerce_Runtime_DeviceDeactivationFailed, deactivationResponse.DeactivationResult.ErrorMessage);
                }

                // Log off the user.
                var userLogOffRequest = new UserLogOffRequest
                {
                    StaffId            = this.Context.GetPrincipal().UserId,
                    LogOnConfiguration = this.Context.GetPrincipal().LogOnConfiguration
                };

                AuthenticationHelper.LogOff(this.Context, userLogOffRequest);

                return(new NullResponse());
            }
Exemple #2
0
            /// <summary>
            /// Performs a user logs off.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="request">The request object.</param>
            internal static void LogOff(RequestContext context, UserLogOffRequest request)
            {
                ThrowIf.Null(context, "context");
                ThrowIf.Null(request, "request");

                var serviceRequest = new UserLogOffServiceRequest(request.LogOnConfiguration);

                context.Execute <Response>(serviceRequest);
            }