public async Task <int> AddDataModelProperty(int dataModelId, string name, string label, string dataType, string controlType, bool isRequired, int?relatedDataModelId, string relationalType, bool?isManaged, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); var dataModel = await _dataModelRepository.GetById(dataModelId, cancellationToken); if (dataModel == null) { throw new ProjectDataModelNotFoundException(dataModelId); } var projectDataModelPropertyByProjectSpec = new ProjectDataModelPropertyFilterSpecification(name, dataModelId); if (await _dataModelPropertyRepository.CountBySpec(projectDataModelPropertyByProjectSpec, cancellationToken) > 0) { throw new DuplicateProjectDataModelPropertyException(name); } var newDataModelProperty = new ProjectDataModelProperty { ProjectDataModelId = dataModelId, Name = name, Label = string.IsNullOrEmpty(label) ? TextHelper.SplitTextOnCapitalLetters(name) : label, DataType = dataType, ControlType = controlType, RelatedProjectDataModelId = relatedDataModelId, RelationalType = relationalType, IsRequired = isRequired, IsManaged = isManaged }; return(await _dataModelPropertyRepository.Create(newDataModelProperty, cancellationToken)); }
public async Task UpdateDataModelProperty(ProjectDataModelProperty editedProperty, CancellationToken cancellationToken = default(CancellationToken)) { cancellationToken.ThrowIfCancellationRequested(); var propertyByNameSpec = new ProjectDataModelPropertyFilterSpecification(editedProperty.Name, editedProperty.ProjectDataModelId, editedProperty.Id); if (await _dataModelPropertyRepository.CountBySpec(propertyByNameSpec, cancellationToken) > 0) { throw new DuplicateProjectDataModelPropertyException(editedProperty.Name); } var property = await _dataModelPropertyRepository.GetById(editedProperty.Id, cancellationToken); if (property != null) { property.Name = editedProperty.Name; property.DataType = editedProperty.DataType; property.Label = editedProperty.Label; property.IsRequired = editedProperty.IsRequired; property.ControlType = editedProperty.ControlType; property.RelatedProjectDataModelId = editedProperty.RelatedProjectDataModelId; property.RelationalType = editedProperty.RelationalType; property.IsManaged = editedProperty.IsManaged; await _dataModelPropertyRepository.Update(property, cancellationToken); } }