public async Task <List <Equipment> > GetEquipmentEntityAsync(List <long> equipmentIds) { var equipmentAccessClient = EquipmentAccessClient.CreateClient(); List <long> equipmentIdsNotFoundInDb = new List <long>(); List <Equipment> equipmentList = new List <Equipment>(); foreach (long equipmentId in equipmentIds) { Equipment equipmentDbEntity = equipmentAccessClient.GetEquipment(equipmentId).Result; if (equipmentDbEntity == null) { equipmentIdsNotFoundInDb.Add(equipmentId); } else { equipmentList.Add(equipmentDbEntity); } } if (equipmentIdsNotFoundInDb.Count > 0) { List <Equipment> createdEquipments = await CreateEquipmentEntitiesFromNmsDataAsync(equipmentIdsNotFoundInDb); var equipmentAccess = EquipmentAccessClient.CreateClient(); List <Task> addingEquipmentTasks = new List <Task>(); foreach (var createdEquipment in createdEquipments) { addingEquipmentTasks.Add(Task.Run(() => equipmentAccess.AddEquipment(createdEquipment))); } Task.WaitAll(addingEquipmentTasks.ToArray()); equipmentList.AddRange(createdEquipments); } return(equipmentList); }
private async Task SetDefaultIsolationPoints(OutageEntity outageEntity, IsolationAlgorithm algorithm) { var algorithmBaseLogString = $"{baseLogString} [HeadBreakerGid: 0x{algorithm.HeadBreakerGid:X16}]"; var equipmentAccessClient = EquipmentAccessClient.CreateClient(); Equipment headBreakerEquipment = await equipmentAccessClient.GetEquipment(algorithm.HeadBreakerGid); Equipment recloserEquipment = await equipmentAccessClient.GetEquipment(algorithm.RecloserGid); if (headBreakerEquipment == null || recloserEquipment == null) { string message = $"{algorithmBaseLogString} SetDefaultIsolationPoints => Recloser [0x{algorithm.HeadBreakerGid:X16}] or HeadBreaker [0x{algorithm.RecloserGid:X16}] were not found in database"; Logger.LogError(message); throw new Exception(message); } outageEntity.DefaultIsolationPoints = new List <Equipment>() { headBreakerEquipment, recloserEquipment }; Logger.LogInformation($"{algorithmBaseLogString} SetDefaultIsolationPoints => Optimum points 0x{headBreakerEquipment:X16} and 0x{recloserEquipment:X16}"); }