private List<DataType> updataAssociatedDataType(Unit unit, long[] newDataTypeIds)
{
if (unit != null)
{
DataTypeManager dataTypeManger = new DataTypeManager();
UnitManager unitManager = new UnitManager();
unit = unitManager.Repo.Get(unit.Id);
List<DataType> existingDataTypes = unit.AssociatedDataTypes.ToList();
List<DataType> newDataTypes = newDataTypeIds == null ? new List<DataType>() : dataTypeManger.Repo.Query().Where(p => newDataTypeIds.Contains(p.Id)).ToList();
List<DataType> tobeAddedDataTypes = newDataTypes.Except(existingDataTypes).ToList();
if (tobeAddedDataTypes != null && tobeAddedDataTypes.Count > 0)
unitManager.AddAssociatedDataType(unit, tobeAddedDataTypes);
unit = unitManager.Repo.Get(unit.Id);
existingDataTypes = unit.AssociatedDataTypes.ToList();
List<DataType> toBeRemoved = existingDataTypes.Except(newDataTypes).ToList();
if (toBeRemoved != null && toBeRemoved.Count() > 0)
unitManager.RemoveAssociatedDataType(unit, toBeRemoved);
unit = unitManager.Repo.Get(unit.Id);
return unit.AssociatedDataTypes.ToList();
}
return null;
}