public async Task ImportForeignHvdcPoles(WRLDCWarehouseDbContext _context, ILogger _log, string oracleConnStr, EntityWriteOption opt) { HvdcPoleExtract hvdcPoleExtract = new HvdcPoleExtract(); List <HvdcPoleForeign> hvdcPoleForeignList = hvdcPoleExtract.ExtractHvdcPoleForeign(oracleConnStr); LoadHvdcPole loadHvdcPole = new LoadHvdcPole(); foreach (HvdcPoleForeign lineForeign in hvdcPoleForeignList) { HvdcPole insertedPole = await loadHvdcPole.LoadSingleAsync(_context, _log, lineForeign, opt); } }
public async Task <HvdcPoleOwner> LoadSingleAsync(WRLDCWarehouseDbContext _context, ILogger _log, HvdcPoleOwnerForeign poleOwnerForeign, EntityWriteOption opt) { // check if entity already exists HvdcPoleOwner existingPoleOwner = await _context.HvdcPoleOwners.SingleOrDefaultAsync(cO => cO.WebUatId == poleOwnerForeign.WebUatId); // check if we should not modify existing entities if (opt == EntityWriteOption.DontReplace && existingPoleOwner != null) { return(existingPoleOwner); } // find the HvdcPole via the HvdcPole WebUatId int poleWebUatId = poleOwnerForeign.HvdcPoleWebUatId; HvdcPole pole = await _context.HvdcPoles.SingleOrDefaultAsync(c => c.WebUatId == poleWebUatId); // if HvdcPole doesnot exist, skip the import. Ideally, there should not be such case if (pole == null) { _log.LogCritical($"Unable to find HvdcPole with webUatId {poleWebUatId} while inserting HvdcPoleOwner with webUatId {poleOwnerForeign.WebUatId}"); return(null); } // find the Owner of the Pole via the Owner WebUatId int ownerWebUatId = poleOwnerForeign.OwnerWebUatId; Owner owner = await _context.Owners.SingleOrDefaultAsync(o => o.WebUatId == ownerWebUatId); // if owner doesnot exist, skip the import. Ideally, there should not be such case if (owner == null) { _log.LogCritical($"Unable to find Owner with webUatId {ownerWebUatId} while inserting HvdcPoleOwner with webUatId {poleOwnerForeign.WebUatId}"); return(null); } try { // check if we have to replace the entity completely if (opt == EntityWriteOption.Replace && existingPoleOwner != null) { _context.HvdcPoleOwners.Remove(existingPoleOwner); } // if entity is not present, then insert or check if we have to replace the entity completely if (existingPoleOwner == null || (opt == EntityWriteOption.Replace && existingPoleOwner != null)) { HvdcPoleOwner newPoleOwner = new HvdcPoleOwner(); newPoleOwner.OwnerId = owner.OwnerId; newPoleOwner.HvdcPoleId = pole.HvdcPoleId; newPoleOwner.WebUatId = poleOwnerForeign.WebUatId; _context.HvdcPoleOwners.Add(newPoleOwner); await _context.SaveChangesAsync(); return(newPoleOwner); } // check if we have to modify the entity if (opt == EntityWriteOption.Modify && existingPoleOwner != null) { existingPoleOwner.OwnerId = owner.OwnerId; existingPoleOwner.HvdcPoleId = pole.HvdcPoleId; await _context.SaveChangesAsync(); return(existingPoleOwner); } } catch (DbUpdateException e) { _log.LogCritical($"Error occured while inserting HvdcPoleOwner with webUatId {poleOwnerForeign.WebUatId}, owner id {owner.OwnerId} and poleId {pole.HvdcPoleId}"); _log.LogCritical($"EntityWriteOption = {opt.ToString()}"); _log.LogCritical($"{e.Message}"); return(null); } return(null); }
public async Task <HvdcPole> LoadSingleAsync(WRLDCWarehouseDbContext _context, ILogger _log, HvdcPoleForeign hvdcPoleForeign, EntityWriteOption opt) { // check if entity already exists HvdcPole existingHvdcPole = await _context.HvdcPoles.SingleOrDefaultAsync(lr => lr.WebUatId == hvdcPoleForeign.WebUatId); // check if we should not modify existing entities if (opt == EntityWriteOption.DontReplace && existingHvdcPole != null) { return(existingHvdcPole); } // find the Substation via the SubstationWebUatId int substationWebUatId = hvdcPoleForeign.SubstationWebUatId; Substation substation = await _context.Substations.SingleOrDefaultAsync(ss => ss.WebUatId == substationWebUatId); // if Substation doesnot exist, skip the import. Ideally, there should not be such case if (substation == null) { _log.LogCritical($"Unable to find Substation with webUatId {substationWebUatId} while inserting HvdcPole with webUatId {hvdcPoleForeign.WebUatId} and name {hvdcPoleForeign.Name}"); return(null); } // find the State via the State WebUatId int stateWebUatId = hvdcPoleForeign.StateWebUatId; State state = await _context.States.SingleOrDefaultAsync(s => s.WebUatId == stateWebUatId); // if state doesnot exist, skip the import. Ideally, there should not be such case if (state == null) { _log.LogCritical($"Unable to find state with webUatId {stateWebUatId} while inserting HvdcPole with webUatId {hvdcPoleForeign.WebUatId} and name {hvdcPoleForeign.Name}"); return(null); } int voltLevelWebUatId = hvdcPoleForeign.VoltLevelWebUatId; VoltLevel voltLevel = await _context.VoltLevels.SingleOrDefaultAsync(v => v.WebUatId == voltLevelWebUatId); // if voltLevel doesnot exist, skip the import. Ideally, there should not be such case if (voltLevel == null) { _log.LogCritical($"Unable to find VoltLevel with webUatId {voltLevelWebUatId} while inserting HvdcPole with webUatId {hvdcPoleForeign.WebUatId} and name {hvdcPoleForeign.Name}"); return(null); } // check if we have to replace the entity completely if (opt == EntityWriteOption.Replace && existingHvdcPole != null) { _context.HvdcPoles.Remove(existingHvdcPole); } // if entity is not present, then insert or check if we have to replace the entity completely if (existingHvdcPole == null || (opt == EntityWriteOption.Replace && existingHvdcPole != null)) { HvdcPole newHvdcPole = new HvdcPole(); newHvdcPole.Name = hvdcPoleForeign.Name; newHvdcPole.PoleNumber = hvdcPoleForeign.PoleNumber.ToString(); newHvdcPole.SubstationId = substation.SubstationId; newHvdcPole.StateId = state.StateId; newHvdcPole.VoltLevelId = voltLevel.VoltLevelId; newHvdcPole.PoleType = hvdcPoleForeign.PoleType; newHvdcPole.MaxFiringAngleDegrees = hvdcPoleForeign.MaxFiringAngleDegrees; newHvdcPole.MinFiringAngleDegrees = hvdcPoleForeign.MinFiringAngleDegrees; newHvdcPole.ThermalLimitMVA = hvdcPoleForeign.ThermalLimitMVA; newHvdcPole.CommDate = hvdcPoleForeign.CommDate; newHvdcPole.CodDate = hvdcPoleForeign.CodDate; newHvdcPole.DeCommDate = hvdcPoleForeign.DeCommDate; newHvdcPole.WebUatId = hvdcPoleForeign.WebUatId; _context.HvdcPoles.Add(newHvdcPole); await _context.SaveChangesAsync(); return(newHvdcPole); } // check if we have to modify the entity if (opt == EntityWriteOption.Modify && existingHvdcPole != null) { existingHvdcPole.Name = hvdcPoleForeign.Name; existingHvdcPole.PoleNumber = hvdcPoleForeign.PoleNumber.ToString(); existingHvdcPole.SubstationId = substation.SubstationId; existingHvdcPole.StateId = state.StateId; existingHvdcPole.VoltLevelId = voltLevel.VoltLevelId; existingHvdcPole.PoleType = hvdcPoleForeign.PoleType; existingHvdcPole.MaxFiringAngleDegrees = hvdcPoleForeign.MaxFiringAngleDegrees; existingHvdcPole.MinFiringAngleDegrees = hvdcPoleForeign.MinFiringAngleDegrees; existingHvdcPole.ThermalLimitMVA = hvdcPoleForeign.ThermalLimitMVA; existingHvdcPole.CommDate = hvdcPoleForeign.CommDate; existingHvdcPole.CodDate = hvdcPoleForeign.CodDate; existingHvdcPole.DeCommDate = hvdcPoleForeign.DeCommDate; await _context.SaveChangesAsync(); return(existingHvdcPole); } return(null); }