/// <summary> /// Invokes Business Logic's method by name /// </summary> /// <typeparam name="TResponse">Method responese</typeparam> /// <param name="methodArgs">Parameters's method</param> /// <returns>Response's method</returns> public async Task <BaseServicesResult> Execute <TResponse>(params object[] methodArgs) where TResponse : BaseResponse, new() { // Init base request data BaseRequest request = ToRequest <BaseRequest>(); // Init business logic and action meta data BusinessLogic = StartupExtensions.Resolve <TBusiness>(); // Init Meta data MetaData = new BaseActionMetaData <TBusiness>(this); // TODO: Create context and using all system Context = Context; // Custom init from action Init(); // Init action utilities and logger var statusUtility = new ActionStatusUtility(request); var actionUtility = new ActionExecutionUtility(request); // TODO: Start to write log // Init default response object (equal NULL) TResponse response; if (Validate()) { response = await OnExecute <TResponse>(methodArgs); } else { response = new TResponse { Errors = actionUtility.GetErrors(ValidateResult), Success = false }; } // Build and return service message var serviceResult = new BaseServicesResult { ReturnCode = statusUtility.GetStatusCode(response), ReturnData = new BaseResponseHttpActionResult <TResponse>() { Result = response, InternalCode = (int)statusUtility.GetInternalCode(response) } }; return(serviceResult); }
public HttpActionResult(BaseServicesResult result, HttpRequestMessage request) { _result = result; _request = request; }