/// <summary>
            /// Registers the clock in/ clock out request from the employee.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="isClockIn">Whether this is a clockIn request (true) or clockOut (false).</param>
            /// <returns>Returns the activity DateTimeOffset in channel local time zone.</returns>
            private static DateTimeOffset RegisterClockInAndOut(RequestContext context, bool isClockIn)
            {
                ThrowIf.Null(context, "context");

                var request = new EmployeeClockInOutRealtimeRequest(
                    context.GetPrincipal().UserId,
                    context.GetTerminal().TerminalId,
                    isClockIn);

                return(context.Execute <SingleEntityDataServiceResponse <DateTimeOffset> >(request).Entity);
            }
Exemplo n.º 2
0
            /// <summary>
            /// Executes clock in / clock out requests.
            /// </summary>
            /// <param name="request">The service request.</param>
            /// <returns>The clock in / clock out response.</returns>
            private static SingleEntityDataServiceResponse <DateTimeOffset> EmployeeClockInOut(EmployeeClockInOutRealtimeRequest request)
            {
                var transactionService = new TransactionServiceClient(request.RequestContext);

                string methodName = request.IsClockIn
                                    ? TransactionServiceClient.ClockInMethodName
                                    : TransactionServiceClient.ClockOutMethodName;

                DateTimeOffset?currentActivityDateTimeOffset = transactionService.RegisterPunchInOut(request.UserId, request.TerminalId, methodName);

                // Convert the UTC date time offset to channel date time offset
                if (currentActivityDateTimeOffset.HasValue)
                {
                    currentActivityDateTimeOffset = request.RequestContext.ConvertDateTimeToChannelDate(currentActivityDateTimeOffset.Value);
                }

                return(new SingleEntityDataServiceResponse <DateTimeOffset>(currentActivityDateTimeOffset.GetValueOrDefault()));
            }