public static IActionResult CreateResult<T, TViewModel>( this Controller @this, Result<T> result, Action<ActionResultOptions<T, TViewModel>> options) { ActionResultOptions<T, TViewModel> o = new ActionResultOptions<T, TViewModel>(@this); options(o); return @this.CreateResult(result, o); }
public static IActionResult CreateResult<T, TViewModel>( this Controller @this, Result<T> result, ActionResultOptions<T, TViewModel> options) { object value; if (!result.HasError && options.ToViewModel != null) value = options.ToViewModel(result.Content); else if (!result.HasError) value = result.Content; else value = result.ErrorMessage; if (result.Status == Status.Ok) return @this.Ok(value); if (result.Status == Status.NotFound) return @this.NotFound(value); if (result.Status == Status.BadRequest) return @this.BadRequest(value); if (result.Status == Status.Created) { return @this.CreatedAtRoute(options.RouteName, options.RouteValues(result.Content), value); } throw new ArgumentException("Unknown status.", nameof(result)); }