// Methods internal Task <AuthenticateResult> SignInAsync(AuthenticateCommand command) { #region Contracts if (command == null) { throw new ArgumentException(); } #endregion // Execute return(command.ExecuteAsync().ContinueWith <AuthenticateResult>((executeTask) => { // Result var executeResult = executeTask.Result; if (executeResult == null) { throw new InvalidOperationException(); } if (executeResult.Succeeded == false) { return executeResult; } // Ticket var currentTicket = executeResult.Ticket; if (currentTicket == null) { throw new InvalidOperationException(); } if (currentTicket.ExpireTime < DateTime.Now) { throw new InvalidOperationException(); } // Save _ticketRepository.SetTicket(currentTicket); // Return return executeResult; })); }