public async Task <object> AddOrEditAsync(string schemaName, string tableName, [FromBody] JArray form) { var meta = form[0].ToObject <EntityView>(); var item = this.GetPostedData(meta, form[1].ToObject <Dictionary <string, object> >()); var customFields = form[2].ToObject <List <CustomField> >(JsonHelper.GetJsonSerializer()); if (item == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.MethodNotAllowed)); } try { var repository = new FormRepository(schemaName, tableName, this.AppUser.Tenant, this.AppUser.LoginId, this.AppUser.UserId); return(await repository.AddOrEditAsync(item, customFields).ConfigureAwait(false)); } catch (UnauthorizedException) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden)); } catch (DataAccessException ex) { throw new HttpResponseException ( new HttpResponseMessage { Content = new StringContent(ex.Message), StatusCode = HttpStatusCode.InternalServerError }); } #if !DEBUG catch { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } #endif }