示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }