1313using BExIS . Dlm . Services . Meanings ;
1414using BExIS . Utils . NH . Querying ;
1515using System . Web . Mvc ;
16+ using BExIS . Dlm . Services . MetadataStructure ;
1617
1718namespace BExIS . Modules . Rpm . UI . Controllers
1819{
@@ -101,6 +102,7 @@ public JsonResult EditUnit(UnitListItem unitListItem)
101102 if ( validationResult . IsValid )
102103 {
103104 Unit unit = new Unit ( ) ;
105+ bool inUse = false ;
104106
105107 if ( unitListItem . Id == 0 )
106108 {
@@ -116,6 +118,7 @@ public JsonResult EditUnit(UnitListItem unitListItem)
116118 unit . Description = unitListItem . Description ;
117119 unit . Dimension = unitManager . DimensionRepo . Get ( unitListItem . Dimension . Id ) ;
118120 unit . MeasurementSystem = ( MeasurementSystem ) Enum . Parse ( typeof ( MeasurementSystem ) , unitListItem . MeasurementSystem ) ;
121+ inUse = unit . DataContainers . Any ( ) ;
119122 }
120123 if ( unitListItem . Datatypes . Count > 0 )
121124 {
@@ -130,7 +133,7 @@ public JsonResult EditUnit(UnitListItem unitListItem)
130133 unit . ExternalLink = null ;
131134 }
132135 unit = unitManager . Update ( unit ) ;
133- unitListItem = convertToUnitListItem ( unit ) ;
136+ unitListItem = convertToUnitListItem ( unit , true ) ;
134137 }
135138 result = new
136139 {
@@ -140,7 +143,7 @@ public JsonResult EditUnit(UnitListItem unitListItem)
140143 }
141144 }
142145 return Json ( result , JsonRequestBehavior . AllowGet ) ;
143- }
146+ }
144147
145148 [ JsonNetFilter ]
146149 [ HttpPost , CustomValidateAntiForgeryToken ]
@@ -250,22 +253,26 @@ private List<UnitListItem> convertToUnitListItem(List<Unit> units)
250253 {
251254 List < UnitListItem > unitListItems = new List < UnitListItem > ( ) ;
252255
253- foreach ( Unit unit in units )
256+ using ( var metadataAttributeManager = new MetadataAttributeManager ( ) )
257+ using ( var variableManager = new VariableManager ( ) )
254258 {
255- unitListItems . Add ( convertToUnitListItem ( unit ) ) ;
259+ foreach ( Unit unit in units )
260+ {
261+ bool inUse = false ;
262+ inUse = metadataAttributeManager . MetadataAttributeRepo . Query ( ) . Any ( ma => ma . Unit != null && ma . Unit . Id == unit . Id ) ;
263+ if ( ! inUse ) inUse = variableManager . VariableInstanceRepo . Query ( ) . Any ( v => v . Unit != null && v . Unit . Id == unit . Id ) ;
264+ if ( ! inUse ) inUse = variableManager . VariableTemplateRepo . Query ( ) . Any ( v => v . Unit != null && v . Unit . Id == unit . Id ) ;
265+
266+ unitListItems . Add ( convertToUnitListItem ( unit , inUse ) ) ;
267+ }
256268 }
257269 return unitListItems ;
258270 }
259271
260- private UnitListItem convertToUnitListItem ( Unit unit )
261- {
262- bool inuse = false ;
263272
264- if ( unit . DataContainers . Any ( ) )
265- inuse = true ;
266- else
267- inuse = false ;
268273
274+ private UnitListItem convertToUnitListItem ( Unit unit , bool inUse )
275+ {
269276 UnitListItem unitListItem = new UnitListItem
270277 {
271278 Id = unit . Id ,
@@ -275,7 +282,7 @@ private UnitListItem convertToUnitListItem(Unit unit)
275282 Dimension = convertToDimensionListItem ( unit . Dimension ) ,
276283 Datatypes = convertToDataTypeListItem ( unit . AssociatedDataTypes . ToList ( ) ) ,
277284 MeasurementSystem = unit . MeasurementSystem . ToString ( ) ,
278- InUse = inuse ,
285+ InUse = inUse ,
279286 Link = convertToLinkItem ( unit . ExternalLink ) ,
280287 } ;
281288 return unitListItem ;
0 commit comments