/// <summary> /// Send command for create resource. /// </summary> /// <typeparam name="TResponse">Type of command response. This response is used as id for response to the client.</typeparam> /// <param name="controller">Controller.</param> /// <param name="command">Create command.</param> /// <param name="actionName">Action name to specify URI at which the content has been created.</param> /// <returns><see cref="CreatedResult"/> with resource id and location.</returns> public static async Task <CreatedResult> SendCreateCommand <TResponse>( this ControllerBase controller, IRequest <TResponse> command, string actionName = null) { var ret = new { id = await controller.Mediator().Send(command) }; string url = actionName != null ? controller.Url.Link(actionName, ret) : string.Empty; return(controller.Created(url, ret)); }
/// <summary> /// Send <paramref name="request"/> through <see cref="IMediator"/>. /// </summary> /// <typeparam name="TResponse">Response type.</typeparam> /// <param name="controller">Controller.</param> /// <param name="request">Request.</param> /// <returns>Response from request.</returns> public static Task <TResponse> SendRequest <TResponse>( this ControllerBase controller, IRequest <TResponse> request) => controller.Mediator().Send(request);