protected bool Equals(DataTypePreValueDto other) { return(Id == other.Id); }
/// <summary> /// Creates a PreValue for a <see cref="IDataTypeDefinition"/> /// </summary> /// <param name="dataTypeDefinitionId"></param> /// <param name="value"></param> /// <param name="sortOrder"></param> /// <param name="alias"></param> public static void CreatePrevalueForDataTypeDefinition(int dataTypeDefinitionId, string value, int sortOrder, string alias) { var poco = new DataTypePreValueDto { Alias = alias, DataTypeNodeId = dataTypeDefinitionId, SortOrder = sortOrder, Value = value }; ApplicationContext.Current.DatabaseContext.Database.Insert(poco); }
/// <summary> /// Saves a list of PreValues for a given DataTypeDefinition /// </summary> /// <param name="id">Id of the DataTypeDefinition to save PreValues for</param> /// <param name="values">List of string values to save</param> public void SavePreValues(int id, IEnumerable<string> values) { using (new WriteLock(Locker)) { using (var uow = _uowProvider.GetUnitOfWork()) { var sortOrderObj = uow.Database.ExecuteScalar<object>( "SELECT max(sortorder) FROM cmsDataTypePreValues WHERE datatypeNodeId = @DataTypeId", new { DataTypeId = id }); int sortOrder; if (sortOrderObj == null || int.TryParse(sortOrderObj.ToString(), out sortOrder) == false) { sortOrder = 1; } using (var transaction = uow.Database.GetTransaction()) { foreach (var value in values) { var dto = new DataTypePreValueDto { DataTypeNodeId = id, Value = value, SortOrder = sortOrder }; uow.Database.Insert(dto); sortOrder++; } transaction.Complete(); } } } }
private void AddOrUpdatePreValues(int id, IDictionary<string, PreValue> preValueCollection, IDatabaseUnitOfWork uow) { //first just get all pre-values for this data type so we can compare them to see if we need to insert or update or replace var sql = new Sql().Select("*") .From<DataTypePreValueDto>() .Where<DataTypePreValueDto>(dto => dto.DataTypeNodeId == id) .OrderBy<DataTypePreValueDto>(dto => dto.SortOrder); var currentVals = uow.Database.Fetch<DataTypePreValueDto>(sql).ToArray(); //already existing, need to be updated var valueIds = preValueCollection.Where(x => x.Value.Id > 0).Select(x => x.Value.Id).ToArray(); var existingByIds = currentVals.Where(x => valueIds.Contains(x.Id)).ToArray(); //These ones need to be removed from the db, they no longer exist in the new values var deleteById = currentVals.Where(x => valueIds.Contains(x.Id) == false); foreach (var d in deleteById) { uow.Database.Execute( "DELETE FROM cmsDataTypePreValues WHERE datatypeNodeId = @DataTypeId AND id=@Id", new { DataTypeId = id, Id = d.Id }); } var sortOrder = 1; foreach (var pre in preValueCollection) { var existing = existingByIds.FirstOrDefault(valueDto => valueDto.Id == pre.Value.Id); if (existing != null) { existing.Value = pre.Value.Value; existing.SortOrder = sortOrder; uow.Database.Update(existing); } else { var dto = new DataTypePreValueDto { DataTypeNodeId = id, Value = pre.Value.Value, SortOrder = sortOrder, Alias = pre.Key }; uow.Database.Insert(dto); } sortOrder++; } }