public static void GuardarNuevaEstacion(EstacionModelo estacion, byte[] bitmapData)
        {


            Estaciones estacionBD = LlenarEstacion(estacion, bitmapData);
            AccesoDatosBD.GuardarNuevaEstacion(estacionBD);
        }
        public MainFrame()
        {
            InitializeComponent();

            FormaEstacion formaEstacion = new FormaEstacion();
            formaEstacion.Show(_dockMain, DockState.Document);

            _formaPaletaHerramientas = new PaletaHerramienta();
            _formaPaletaHerramientas.CloseButton = false;

            _formaPaletaHerramientas.Show(_dockMain, DockState.DockLeft);
            _formaPaletaHerramientas.DockPanel.DockLeftPortion = 140;
            _formaPaletaHerramientas.AllowEndUserDocking = false;
            _formaPaletaHerramientas.AutoHidePortion = 140;
            UnificarPaleta();

            _estacionView = formaEstacion.EstacionView;
            _estacionModelo = new EstacionModelo(Guid.NewGuid());
            _esEstacionNueva = true;
            EstablecerToolBarInicial();
            _presenterLocal = new PresenterLocal(_estacionView);
            ModeloSnifferMaster modeloSniffer = new ModeloSnifferMaster();
            modeloSniffer.setEstacion(_estacionModelo);
            _presenterLocal.SetEstacion(_estacionModelo, modeloSniffer);
            _estacionView.Inicializar(_presenterLocal, _dockMain,this);

            _presenterLocal.ConectarCliente();





        }
        public void SetEstacion(EstacionModelo estacion,ModeloSnifferMaster modeloSnifferMaster)
        {


            foreach (KeyValuePair<Guid,ComputadorLogico> item in estacion.Computadores)
            {
                item.Value.InformarVistas(_vistas);

            }
            foreach (KeyValuePair<Guid, RouterLogico> item in estacion.Routers)
            {
                item.Value.InformarVistas(_vistas);

            }
            _estacion = estacion;
            _snifferMaster = modeloSnifferMaster;
        }
 private void ToolBarNewClick(object sender, EventArgs e)
 {
     _estacionModelo = new EstacionModelo(Guid.NewGuid());
     CrearNuevaEstacion();
 }
        private void ToolBarOpenClick(object sender, EventArgs e)
        {
            List<RedBrowserModel> redes = AccesoDatos.AlmacenadorInformacion.CargarEstaciones();

            using (RedBrowser forma = new RedBrowser(redes))
            {
                if (forma.ShowDialog() == DialogResult.OK)
                {
                    _estacionModelo = AccesoDatos.AlmacenadorInformacion.CargarEstacion(forma.Id);
                    CrearNuevaEstacion();
                    _toolBarDelete.Enabled = true;
                    _menuDelete.Enabled = true;
                    _esEstacionNueva = false;
                }
            }
        }
        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;
        }
        public static void ActualizarEstacion(EstacionModelo estacion, byte[] bitmapData)
        {

            Estaciones estacionBD = LlenarEstacion(estacion, bitmapData);
            AccesoDatosBD.ActualizarEstacion(estacionBD);
        }
 private static Estaciones LlenarEstacion(EstacionModelo estacion, byte[] bitmapData)
 {
     return LlenarEstacion(estacion, bitmapData, false);
 }
        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();
                }
            }
        }
        public static EstacionModelo CargarEstacion(Guid id)
        {
            Estaciones estacionBD = AccesoDatosBD.GetEstacionById(id);


            EstacionModelo estacionLogica = new EstacionModelo(estacionBD.Id);
            estacionLogica.Nombre = estacionBD.Nombre;
            estacionLogica.Descripcion = estacionBD.Descripcion;
            if (estacionBD.Foto != null)
                estacionLogica.Imagen = estacionBD.Foto.ToArray();

            CrearEquipos(estacionLogica, estacionBD);
            foreach (Cables cableBD in estacionBD.Cables)
            {
                estacionLogica.ConectarPuertos(cableBD.IdPuerto1, cableBD.IdPuerto2);
            }
            return estacionLogica;
        }
 public void setEstacion(EstacionModelo estacion)
 {
     _estacion = estacion;
 }