public async Task <IActionResult> Post([FromBody] CreateDataformRequest dataform) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (string.IsNullOrWhiteSpace(dataform.DataSourceId) && string.IsNullOrWhiteSpace(dataform.NewDataSourceName)) { return(BadRequest("Expected entityName value or newDataSourceName.")); } var entity = await _dataFormsProvider.CreateDataFormAsync(Tenant, dataform); return(CreatedAtRoute("DataFormDesigner", new { id = entity.Id }, entity)); }
public async Task <CreateDataFormReturn> CreateDataFormAsync(string tenant, CreateDataformRequest dataform) { var entity = new DataForm { Description = dataform.Description, Title = dataform.Title, Fields = dataform.Fields.Project().To <FieldConfiguration>().ToList(), Plugins = dataform.Plugins, AuthorizedClaims = dataform.AuthorizedClaims as string[], DataSourceId = dataform.DataSourceId, RestrictDataAccessByOwner = dataform.RestrictDataAccessByOwner }; using (var session = _documentStore.OpenAsyncSession(tenant)) { try { if (!string.IsNullOrWhiteSpace(dataform.NewDataSourceName)) { var factory = new DataSourceFactory(session); entity.DataSourceId = (await factory.CreateDataSourceAsync(dataform.NewDataSourceName)).Id; } await session.StoreAsync(entity); await session.SaveChangesAsync(); return(entity.Map().To <CreateDataFormReturn>()); } catch (Exception) { session.Dispose(); throw; } } }