private static Equipos AgregarEquipo(Estaciones estacionBD, EquipoLogico equipo, bool generarNuevosIds) { Equipos equipoBD = new Equipos(); if (generarNuevosIds) equipoBD.Id = Guid.NewGuid(); else equipoBD.Id = equipo.Id; equipoBD.Nombre = equipo.Nombre; equipoBD.TipoDeEquipo = (int)equipo.TipoDeEquipo; equipoBD.IdEstacion = estacionBD.Id; equipoBD.X = equipo.X; equipoBD.Y = equipo.Y; estacionBD.AgregarEquipo(equipoBD); return equipoBD; }
private static Estaciones LlenarEstacion(EstacionModelo estacion, byte[] bitmapData, bool generarNuevosIds) { Estaciones estacionBD = new Estaciones(); if (generarNuevosIds) estacionBD.Id = Guid.NewGuid(); else estacionBD.Id = estacion.Id; estacionBD.Nombre = estacion.Nombre; estacionBD.Descripcion = estacion.Descripcion; estacionBD.Foto = new System.Data.Linq.Binary(bitmapData); estacionBD.Fecha = DateTime.Now; Dictionary<Guid, Guid> puertosMappingAntiguoNuevo = new Dictionary<Guid, Guid>(); foreach (KeyValuePair<Guid, ComputadorLogico> pc in estacion.Computadores) { Equipos equipoBD = AgregarEquipo(estacionBD, pc.Value, generarNuevosIds); Computadores pcBD = new Computadores(); pcBD.Id = equipoBD.Id; pcBD.DefaultGateWay = pc.Value.DefaultGateWay; equipoBD.Computadores = pcBD; pcBD.Equipos = equipoBD; Guid idPuerto = AgregarPuerto(equipoBD, pc.Value.PuertoEthernet, generarNuevosIds); puertosMappingAntiguoNuevo.Add(pc.Value.PuertoEthernet.Id, idPuerto); } foreach (KeyValuePair<Guid, HUBLogico> hub in estacion.HUBS) { Equipos equipoBD = AgregarEquipo(estacionBD, hub.Value, generarNuevosIds); foreach (PuertoEthernetLogicoBase puerto in hub.Value.PuertosEthernet) { Guid idPuerto = AgregarPuerto(equipoBD, puerto, generarNuevosIds); puertosMappingAntiguoNuevo.Add(puerto.Id, idPuerto); } } foreach (KeyValuePair<Guid, SwitchLogico> swi in estacion.Switches) { Equipos equipoBD = AgregarEquipo(estacionBD, swi.Value, generarNuevosIds); foreach (PuertoEthernetLogicoBase puerto in swi.Value.PuertosEthernet) { Guid idPuerto = AgregarPuerto(equipoBD, puerto, generarNuevosIds); puertosMappingAntiguoNuevo.Add(puerto.Id, idPuerto); } } foreach (KeyValuePair<Guid, SwitchVLAN> swi in estacion.SwitchesVLan) { Equipos equipoBD = AgregarEquipo(estacionBD, swi.Value, generarNuevosIds); Switch swiBD = new Switch(); swiBD.Id = equipoBD.Id; equipoBD.Switch = swiBD; swiBD.Equipos = equipoBD; foreach (PuertoEthernetLogicoBase puerto in swi.Value.PuertosEthernet) { Guid idPuerto = AgregarPuerto(equipoBD, puerto, generarNuevosIds); puertosMappingAntiguoNuevo.Add(puerto.Id, idPuerto); } foreach (VLan vLan in swi.Value.VLans) { VLans vLanBD = new VLans(); if (generarNuevosIds) vLanBD.Id = Guid.NewGuid(); else vLanBD.Id = vLan.Id; vLanBD.Nombre = vLan.Nombre; vLanBD.IdSwitch = equipoBD.Id; swiBD.VLans.Add(vLanBD); vLanBD.Switch = swiBD; foreach (PuertoEthernetLogicoBase puertoDeVLan in vLan.Puertos) { AsociacionesPuertosVLans asoc = new AsociacionesPuertosVLans(); asoc.Id = Guid.NewGuid(); asoc.IdPuerto = puertosMappingAntiguoNuevo[puertoDeVLan.Id]; asoc.IdVLan = vLanBD.Id; asoc.VLans = vLanBD; vLanBD.AsociacionesPuertosVLans.Add(asoc); } } } foreach (KeyValuePair<Guid, RouterLogico> rou in estacion.Routers) { Equipos equipoBD = AgregarEquipo(estacionBD, rou.Value, generarNuevosIds); Routers routerBD = new Routers(); routerBD.Id = equipoBD.Id; equipoBD.Routers = routerBD; routerBD.Equipos = equipoBD; foreach (PuertoEthernetLogicoBase puerto in rou.Value.PuertosEthernet) { Guid idPuerto = AgregarPuerto(equipoBD, puerto, generarNuevosIds); puertosMappingAntiguoNuevo.Add(puerto.Id, idPuerto); } foreach (RutaSOA entrada in rou.Value.TablaDeRutas.GetRutasEstaticas()) { Rutas ruta = new Rutas(); if (generarNuevosIds) ruta.Id = Guid.NewGuid(); else ruta.Id = entrada.Id; ruta.IdPuerto = puertosMappingAntiguoNuevo[entrada.IdPuerto]; ruta.IdRouter = equipoBD.Id; ruta.NextHopIP = entrada.NextHopIP; ruta.Mascara = entrada.Mask; ruta.Red = IPAddressFactory.GetValor(entrada.Red); routerBD.Rutas.Add(ruta); } } foreach (KeyValuePair<Guid, CableDeRedLogico> par in estacion.Cables) { CableDeRedLogico cableLogico = par.Value; Cables cableBD = new Cables(); if (generarNuevosIds) cableBD.Id = Guid.NewGuid(); else cableBD.Id = cableLogico.Id; cableBD.IdPuerto1 = puertosMappingAntiguoNuevo[cableLogico.Puerto1.Id]; cableBD.IdPuerto2 = puertosMappingAntiguoNuevo[cableLogico.Puerto2.Id]; estacionBD.AgregarCable(cableBD); } return estacionBD; }
partial void DeleteEstaciones(Estaciones instance);
private static void CrearEquipos(EstacionModelo estacionLogica, Estaciones estacionBD) { foreach (Equipos equipoBD in estacionBD.EquiposBD) { switch ((TipoDeEquipo)equipoBD.TipoDeEquipo) { case TipoDeEquipo.Ninguno: throw new Exception(); case TipoDeEquipo.Computador: ComputadorLogico pc = new ComputadorLogico(equipoBD.Id, equipoBD.X, equipoBD.Y, equipoBD.Nombre, equipoBD.Computadores.DefaultGateWay); PuertosCompletos puertoCompleto = equipoBD.Puertos[0].PuertosCompletos; pc.AgregarPuerto(puertoCompleto.Id, puertoCompleto.Puertos.Nombre, puertoCompleto.DireccionMAC, puertoCompleto.DireccionIP, puertoCompleto.Mascara, puertoCompleto.Puertos.Habilitado); estacionLogica.CrearComputador(pc); break; case TipoDeEquipo.HUB: HUBLogico hub = new HUBLogico(equipoBD.Id, equipoBD.X, equipoBD.Y, equipoBD.Nombre); foreach (Puertos puertoBD in equipoBD.PuertosBD) { hub.AgregarPuerto(puertoBD.Id, puertoBD.Nombre, puertoBD.Habilitado); } estacionLogica.CrearHUB(hub); break; case TipoDeEquipo.Switch: SwitchLogico swi = new SwitchLogico(equipoBD.Id, equipoBD.X, equipoBD.Y, equipoBD.Nombre); foreach (Puertos puertoBD in equipoBD.PuertosBD) { swi.AgregarPuerto(puertoBD.Id, puertoBD.Nombre, puertoBD.Habilitado); } estacionLogica.CrearSwitch(swi); break; case TipoDeEquipo.SwitchVLan: SwitchVLAN swiVLan = new SwitchVLAN(equipoBD.Id, equipoBD.X, equipoBD.Y, equipoBD.Nombre); foreach (Puertos puertoBD in equipoBD.PuertosBD) { swiVLan.AgregarPuerto(puertoBD.Id, puertoBD.Nombre, puertoBD.Habilitado); } List<VLanSOA> vLansSOA = new List<VLanSOA>(); foreach (VLans vLanBD in equipoBD.Switch.VLans) { VLanSOA vLan = new VLanSOA(vLanBD.Id, vLanBD.Nombre); foreach (AsociacionesPuertosVLans asoc in vLanBD.AsociacionesPuertosVLans) { vLan.IdPuertos.Add(asoc.IdPuerto); } vLansSOA.Add(vLan); } swiVLan.ActualizarVLans(vLansSOA); estacionLogica.CrearSwitchVLan(swiVLan); break; case TipoDeEquipo.Router: RouterLogico rou = new RouterLogico(equipoBD.Id, equipoBD.X, equipoBD.Y, equipoBD.Nombre); foreach (Puertos puertoBD in equipoBD.PuertosBD) { PuertosCompletos puertoFull = puertoBD.PuertosCompletos; rou.AgregarPuerto(puertoFull.Id, puertoFull.Puertos.Nombre, puertoFull.DireccionMAC, puertoFull.DireccionIP, puertoFull.Mascara, puertoFull.Puertos.Habilitado); } foreach (Rutas ruta in equipoBD.Routers.Rutas) { rou.CrearNuevaRuta(ruta.Id, ruta.IdPuerto, IPAddressFactory.GetIpRep((uint)ruta.Red), ruta.Mascara, ruta.NextHopIP); } estacionLogica.CrearRouter(rou); break; default: throw new Exception(); } } }
partial void UpdateEstaciones(Estaciones instance);
partial void InsertEstaciones(Estaciones instance);
public static void ActualizarEstacion(Estaciones estacion) { _db = GetNewBD(); OperacionDelete(estacion.Id); _db.SubmitChanges(); OperacionGuardarNuevaEstacion(estacion); _db.SubmitChanges(); }
public static void GuardarNuevaEstacion(Estaciones estacionBD) { _db = GetNewBD(); OperacionGuardarNuevaEstacion(estacionBD); _db.SubmitChanges(); }
private static void OperacionGuardarNuevaEstacion(Estaciones estacion) { _db.Estaciones.InsertOnSubmit(estacion); foreach (Equipos equipo in estacion.EquiposBD) { _db.Equipos.InsertOnSubmit(equipo); if (equipo.Computadores != null) { _db.Computadores.InsertOnSubmit(equipo.Computadores); } if (equipo.Routers != null) { _db.Routers.InsertOnSubmit(equipo.Routers); foreach (Rutas ruta in equipo.Routers.Rutas) { _db.Rutas.InsertOnSubmit(ruta); } } if (equipo.Switch != null) { _db.Switch.InsertOnSubmit(equipo.Switch); foreach (VLans vLan in equipo.Switch.VLans) { _db.VLans.InsertOnSubmit(vLan); foreach (AsociacionesPuertosVLans asoc in vLan.AsociacionesPuertosVLans) { _db.AsociacionesPuertosVLans.InsertOnSubmit(asoc); } } } foreach (Puertos puerto in equipo.PuertosBD) { _db.Puertos.InsertOnSubmit(puerto); if (puerto.PuertosCompletos != null) { _db.PuertosCompletos.InsertOnSubmit(puerto.PuertosCompletos); } } } foreach (Cables cable in estacion.Cables) { _db.Cables.InsertOnSubmit(cable); } }