/// <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); }
/// <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())); }