public async Task Edit(SOS_Class_Code_SettingDto model) { var data = await _repoAccessor.SOSClassCodeSetting.FindAll(x => x.Class_Code == model.Class_Code.Trim()).FirstOrDefaultAsync(); if (data != null) { int oldPriority = data.Class_Code_Priority; int newPriority = model.Class_Code_Priority; // Update the class code with new info data.Class_Code_Priority = model.Class_Code_Priority; data.Update_By = "admin"; data.Update_Time = DateTime.Now; _repoAccessor.SOSClassCodeSetting.Update(data); // Get all other existing priorities var allClassCodes = await _repoAccessor.SOSClassCodeSetting.FindAll(x => x.Class_Code != model.Class_Code.Trim()).ToListAsync(); // Adjust priorities of the other class codes if (oldPriority != newPriority) { foreach (var classCode in allClassCodes) { if (oldPriority > newPriority && classCode.Class_Code_Priority >= newPriority && classCode.Class_Code_Priority < oldPriority) { classCode.Class_Code_Priority++; } else if (oldPriority < newPriority && classCode.Class_Code_Priority > oldPriority && classCode.Class_Code_Priority <= newPriority) { classCode.Class_Code_Priority--; } } // ToList forces enumeration and changes to happen now foreach (var classCode in allClassCodes) { _repoAccessor.SOSClassCodeSetting.Update(classCode); } } await _repoAccessor.Save(); return new OperationResult(true, "Edit Successfully"); } else { return new OperationResult(false, "Can't find this Class_Code"); } }