Exemplo n.º 1
0
        public async Task <object> AddAsync(string schemaName, string tableName, [FromBody] JArray form, bool skipPrimaryKey = true)
        {
            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.AddAsync(item, customFields, skipPrimaryKey).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
        }