/// <summary> /// Entirely handles request to table. This method will extract all needed data from ControllerContext. Not needed additional information. /// </summary> /// <param name="source">Source data set</param> /// <param name="context">Controller context</param> /// <returns>ActionResult that should be sent to client</returns> public ActionResult Handle(IQueryable <TSourceData> source, ControllerContext context) { try { PowerTableRequest request = _queryHandler.ExtractRequest(context); ICommandHandler commandHandler = ResolveCommandHandler(request.Command); if (!request.IsDeferred && commandHandler.IsDeferable) { request.IsDeferred = true; var token = TokenStorage.StoreRequest(request); return(new ContentResult() { Content = TokenStorage.TokenPrefix + token, ContentEncoding = Encoding.UTF8, ContentType = "lattice/service" }); } var data = ProduceData(source, request); return(commandHandler.Handle(data, this)); } catch (Exception ex) { return(ProduceError(ex)); } }