public async Task <UpdateSeoSettingsCommand> ExecuteAsync(GetPatchableCommandQuery <UpdateSeoSettingsCommand> query, IExecutionContext executionContext) { var settings = await _queryExecutor.ExecuteAsync(new GetSettingsQuery <SeoSettings>(), executionContext); return(new UpdateSeoSettingsCommand() { HumansTxt = settings.HumansTxt, RobotsTxt = settings.RobotsTxt }); }
/// <summary> /// Patches a command to modify the current state and then executes it. /// </summary> /// <typeparam name="TCommand">Type of command to patch and execute.</typeparam> /// <param name="commandPatcher"> /// An action to configure or "patch" a command that's been initialized /// with existing data. /// </param> public static async Task PatchCommandAsync <TCommand>(this IDomainRepository repository, Action <TCommand> commandPatcher) where TCommand : IPatchableCommand { var query = new GetPatchableCommandQuery <TCommand>(); var command = await repository.ExecuteQueryAsync(query); commandPatcher(command); await repository.ExecuteCommandAsync(command); }
public async Task <UpdateGeneralSiteSettingsCommand> ExecuteAsync(GetPatchableCommandQuery <UpdateGeneralSiteSettingsCommand> query, IExecutionContext executionContext) { var settings = await _queryExecutor.ExecuteAsync(new GetSettingsQuery <GeneralSiteSettings>(), executionContext); return(new UpdateGeneralSiteSettingsCommand() { AllowAutomaticUpdates = settings.AllowAutomaticUpdates, ApplicationName = settings.ApplicationName }); }
public async Task <JsonResult> RunCommandAsync <TCommand>(IDelta <TCommand> delta) where TCommand : class, IPatchableCommand { var query = new GetPatchableCommandQuery <TCommand>(); var command = await _queryExecutor.ExecuteAsync(query); if (delta != null) { delta.Patch(command); } return(await RunCommandAsync(command)); }
public async Task <UpdateCurrentUserCommand> ExecuteAsync(GetPatchableCommandQuery <UpdateCurrentUserCommand> query, IExecutionContext executionContext) { if (!executionContext.UserContext.UserId.HasValue) { return(null); } var user = await _dbContext .Users .AsNoTracking() .FilterCanSignIn() .FilterById(executionContext.UserContext.UserId.Value) .Select(u => new UpdateCurrentUserCommand() { Email = u.Email, FirstName = u.FirstName, LastName = u.LastName }) .SingleOrDefaultAsync(); return(user); }