public async Task ImportForeignGeneratorStages(WRLDCWarehouseDbContext _context, ILogger _log, string oracleConnStr, EntityWriteOption opt) { GeneratorStageExtract genStageExtract = new GeneratorStageExtract(); List <GeneratorStageForeign> genStagesForeign = genStageExtract.ExtractGeneratorStagesForeign(oracleConnStr); LoadGeneratorStage loadGenStage = new LoadGeneratorStage(); foreach (GeneratorStageForeign genStageForeign in genStagesForeign) { GeneratorStage insertedGenStage = await loadGenStage.LoadSingleAsync(_context, _log, genStageForeign, opt); } }
public async Task <GeneratorStage> LoadSingleAsync(WRLDCWarehouseDbContext _context, ILogger _log, GeneratorStageForeign genStageForeign, EntityWriteOption opt) { // check if entity already exists GeneratorStage existingGenStage = await _context.GeneratorStages.SingleOrDefaultAsync(r => r.WebUatId == genStageForeign.WebUatId); // check if we should not modify existing entities if (opt == EntityWriteOption.DontReplace && existingGenStage != null) { return(existingGenStage); } // find the GeneratingStation of the state via the region WebUatId int generatingStationWebUatId = genStageForeign.GeneratingStationWebUatId; GeneratingStation genStation = await _context.GeneratingStations.SingleOrDefaultAsync(r => r.WebUatId == generatingStationWebUatId); // if genStation doesnot exist, skip the import. Ideally, there should not be such case if (genStation == null) { _log.LogCritical($"Could not find GeneratingStation with WebUatId {generatingStationWebUatId} in warehouse while creating GeneratorStage with WebUat Id {genStageForeign.WebUatId} and name {genStageForeign.Name}"); return(null); } // check if we have to replace the entity completely if (opt == EntityWriteOption.Replace && existingGenStage != null) { _context.GeneratorStages.Remove(existingGenStage); } // if entity is not present, then insert or check if we have to replace the entity completely if (existingGenStage == null || (opt == EntityWriteOption.Replace && existingGenStage != null)) { GeneratorStage newGenStage = new GeneratorStage(); newGenStage.Name = genStageForeign.Name; newGenStage.GeneratingStationId = genStation.GeneratingStationId; newGenStage.WebUatId = genStageForeign.WebUatId; _context.GeneratorStages.Add(newGenStage); await _context.SaveChangesAsync(); return(newGenStage); } // check if we have to modify the entity if (opt == EntityWriteOption.Modify && existingGenStage != null) { existingGenStage.Name = genStageForeign.Name; existingGenStage.GeneratingStationId = genStation.GeneratingStationId; await _context.SaveChangesAsync(); return(existingGenStage); } return(null); }
public async Task <GeneratorUnit> LoadSingleAsync(WRLDCWarehouseDbContext _context, ILogger _log, GeneratorUnitForeign genUnitForeign, EntityWriteOption opt) { // check if entity already exists GeneratorUnit existingGenUnit = await _context.GeneratorUnits.SingleOrDefaultAsync(r => r.WebUatId == genUnitForeign.WebUatId); // check if we should not modify existing entities if (opt == EntityWriteOption.DontReplace && existingGenUnit != null) { return(existingGenUnit); } // find the GeneratingStation of the unit via the GeneratingStationWebUatId int generatingStationWebUatId = genUnitForeign.GeneratingStationWebUatId; GeneratingStation genStation = await _context.GeneratingStations.SingleOrDefaultAsync(r => r.WebUatId == generatingStationWebUatId); // if genStation doesnot exist, skip the import. Ideally, there should not be such case if (genStation == null) { _log.LogCritical($"Could not find GeneratingStation with WebUatId {generatingStationWebUatId} in warehouse while creating GeneratorUnit with WebUat Id {genUnitForeign.WebUatId} and name {genUnitForeign.Name}"); return(null); } // find the GeneratorStage of the unit via the GeneratingStationWebUatId int generatorStageWebUatId = genUnitForeign.GeneratorStageWebUatId; GeneratorStage genStage = await _context.GeneratorStages.SingleOrDefaultAsync(r => r.WebUatId == generatorStageWebUatId); // if genStage doesnot exist, skip the import. Ideally, there should not be such case if (genStage == null) { _log.LogCritical($"Could not find GeneratorStage with WebUatId {generatorStageWebUatId} in warehouse while creating GeneratorUnit with WebUat Id {genUnitForeign.WebUatId} and name {genUnitForeign.Name}"); return(null); } // check if we have to replace the entity completely if (opt == EntityWriteOption.Replace && existingGenUnit != null) { _context.GeneratorUnits.Remove(existingGenUnit); } // if entity is not present, then insert or check if we have to replace the entity completely if (existingGenUnit == null || (opt == EntityWriteOption.Replace && existingGenUnit != null)) { GeneratorUnit newGenUnit = new GeneratorUnit(); newGenUnit.Name = genUnitForeign.Name; newGenUnit.GeneratingStationId = genStation.GeneratingStationId; newGenUnit.GeneratorStageId = genStage.GeneratorStageId; newGenUnit.UnitNumber = genUnitForeign.UnitNumber.ToString(); newGenUnit.GenVoltageKV = genUnitForeign.GenVoltageKV; newGenUnit.GenHighVoltageKV = genUnitForeign.GenHighVoltageKV; newGenUnit.MvaCapacity = genUnitForeign.MvaCapacity; newGenUnit.InstalledCapacity = genUnitForeign.InstalledCapacity; newGenUnit.CodDateTime = genUnitForeign.CodDateTime; newGenUnit.CommDateTime = genUnitForeign.CommDateTime; newGenUnit.DeCommDateTime = genUnitForeign.DeCommDateTime; newGenUnit.WebUatId = genUnitForeign.WebUatId; _context.GeneratorUnits.Add(newGenUnit); await _context.SaveChangesAsync(); return(newGenUnit); } // check if we have to modify the entity if (opt == EntityWriteOption.Modify && existingGenUnit != null) { existingGenUnit.Name = genUnitForeign.Name; existingGenUnit.GeneratingStationId = genStation.GeneratingStationId; existingGenUnit.GeneratorStageId = genStage.GeneratorStageId; existingGenUnit.UnitNumber = genUnitForeign.UnitNumber.ToString(); existingGenUnit.GenVoltageKV = genUnitForeign.GenVoltageKV; existingGenUnit.GenHighVoltageKV = genUnitForeign.GenHighVoltageKV; existingGenUnit.MvaCapacity = genUnitForeign.MvaCapacity; existingGenUnit.InstalledCapacity = genUnitForeign.InstalledCapacity; existingGenUnit.CodDateTime = genUnitForeign.CodDateTime; existingGenUnit.CommDateTime = genUnitForeign.CommDateTime; existingGenUnit.DeCommDateTime = genUnitForeign.DeCommDateTime; await _context.SaveChangesAsync(); return(existingGenUnit); } return(null); }