Skip to content

Commit a44a640

Browse files
committed
#2312 improve loading time by units
1 parent b48ed6f commit a44a640

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

Console/BExIS.Web.Shell/Areas/RPM/BExIS.Modules.Rpm.UI/Controllers/UnitController.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using BExIS.Dlm.Services.Meanings;
1414
using BExIS.Utils.NH.Querying;
1515
using System.Web.Mvc;
16+
using BExIS.Dlm.Services.MetadataStructure;
1617

1718
namespace 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

Comments
 (0)