public static bool setConfiguracionClienteXML(clsConfiguracion _config, ref string mensaje)
        {
            bool valido = false;

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path + "info.xml");
                XmlNode node = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio");
                //Sitio
                node["id_Sitio"].InnerText    = _config.id_Sitio.ToString();
                node["claveSitio"].InnerText  = _config.vchClaveSitio;
                node["claveSitio"].InnerText  = _config.vchClaveSitio;
                node["NombreSitio"].InnerText = _config.vchNombreSitio;
                node["AETitle"].InnerText     = _config.vchAETitle;
                node["Activo"].InnerText      = "1";
                XmlNode nodeL = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio/hostLocal");
                nodeL["ip"].InnerText     = _config.vchIPCliente;
                nodeL["mask"].InnerText   = _config.vchMaskCliente;
                nodeL["puerto"].InnerText = _config.intPuertoCliente.ToString();
                doc.Save(path + "info.xml");
                valido = true;
            }
            catch (Exception esC)
            {
                valido  = false;
                mensaje = esC.Message;
                Log.EscribeLog("Existe un error al actualizar los datos de configuración. " + esC.Message);
            }
            return(valido);
        }
        public static bool setConfiguracionUsuarioXML(clsConfiguracion _config, ref string mensaje)
        {
            bool valido = false;

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path + "info.xml");
                //Usuario
                XmlNode nodeUser = doc.DocumentElement.SelectSingleNode("/Configuraciones/User");
                nodeUser["tipoUsuario"].InnerText = _config.intTipoUsuario.ToString();
                nodeUser["NombreUser"].InnerText  = _config.vchNombreUsuario;
                nodeUser["usuario"].InnerText     = _config.vchUsuario;
                nodeUser["Pass"].InnerText        = _config.vchPassword;
                doc.Save(path + "info.xml");
                valido = true;
            }
            catch (Exception esC)
            {
                valido  = false;
                mensaje = esC.Message;
                Log.EscribeLog("Existe un error al actualizar los datos de configuración. " + esC.Message);
            }
            return(valido);
        }
        public static clsConfiguracion getXMLfile()
        {
            clsConfiguracion _config = new clsConfiguracion();

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path + "info.xml");

                XmlNode node = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio");
                //Sitio
                _config.id_Sitio       = node["id_Sitio"]?.InnerText != "" ? Convert.ToInt32(node["id_Sitio"]?.InnerText.ToString()) : 0;
                _config.vchClaveSitio  = node["claveSitio"]?.InnerText;
                _config.vchNombreSitio = node["NombreSitio"]?.InnerText;
                _config.vchAETitle     = node["AETitle"]?.InnerText;
                _config.vchPathLocal   = node["vchPathLocal"].InnerText;
                _config.bitActivo      = node["Activo"]?.InnerText == "1" ? true : false;
                //Local
                XmlNode nodeL = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio/hostLocal");
                _config.vchIPCliente     = nodeL["ip"]?.InnerText;
                _config.vchMaskCliente   = nodeL["mask"]?.InnerText;
                _config.intPuertoCliente = nodeL["puerto"]?.InnerText != "" ? Convert.ToInt32(nodeL["puerto"]?.InnerText) : 0;

                //Server
                XmlNode nodeS = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio/hostServer");
                _config.vchIPServidor   = nodeS["ip"]?.InnerText;
                _config.intPuertoServer = nodeS["puerto"]?.InnerText != "" ? Convert.ToInt32(nodeS["puerto"]?.InnerText) : 0;

                //Usuario
                XmlNode nodeUser = doc.DocumentElement.SelectSingleNode("/Configuraciones/User");
                _config.intTipoUsuario   = nodeUser["tipoUsuario"]?.InnerText != "" ? Convert.ToInt32(nodeUser["tipoUsuario"]?.InnerText) : 0;
                _config.vchNombreUsuario = nodeUser["NombreUser"]?.InnerText;
                _config.vchUsuario       = nodeUser["usuario"]?.InnerText;
                _config.vchPassword      = nodeUser["Pass"]?.InnerText;
            }
            catch (Exception eXMLC)
            {
                Log.EscribeLog("Existe un error al obtener los valores de configuración: " + eXMLC.Message);
            }
            return(_config);
        }
        public static bool setConfiguracionServerXML(clsConfiguracion _config, ref string mensaje)
        {
            bool valido = false;

            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path + "info.xml");
                //Server
                XmlNode nodeS = doc.DocumentElement.SelectSingleNode("/Configuraciones/sitio/hostServer");
                nodeS["ip"].InnerText     = _config.vchIPServidor;
                nodeS["puerto"].InnerText = _config.intPuertoServer.ToString();
                doc.Save(path + "info.xml");
                valido = true;
            }
            catch (Exception esC)
            {
                valido  = false;
                mensaje = esC.Message;
                Log.EscribeLog("Existe un error al actualizar los datos de configuración. " + esC.Message);
            }
            return(valido);
        }
        private void cargarServicio()
        {
            try
            {
                string path = "";
                try
                {
                    path = ConfigurationManager.AppSettings["ConfigDirectory"] != null ? ConfigurationManager.AppSettings["ConfigDirectory"].ToString() : "";
                }
                catch (Exception ePath)
                {
                    path = "";
                    Log.EscribeLog("Error al obtener el path desde appSettings: " + ePath.Message);
                }
                string PathDestino = "";
                try
                {
                    PathDestino = ConfigurationManager.AppSettings["PathDes"].ToString();
                    //Verificar Folder
                    if (!Directory.Exists(PathDestino))
                    {
                        Directory.CreateDirectory(PathDestino);
                    }
                }
                catch (Exception ePATHDES)
                {
                    Log.EscribeLog("Existe un error al leer el path de destino: " + ePATHDES.Message);
                }

                ClienteF2CResponse mdl = new ClienteF2CResponse();
                if (File.Exists(path + "info.xml"))
                {
                    _conf         = XMLConfigurator.getXMLfile();
                    id_Servicio   = _conf.id_Sitio;
                    AETitle       = _conf.vchAETitle;
                    vchPathRep    = _conf.vchPathLocal;
                    vchClaveSitio = _conf.vchClaveSitio;

                    if (id_Servicio > 0 && vchClaveSitio != "")
                    {
                        Token = Security.Encrypt(id_Servicio + "|" + vchClaveSitio);
                    }
                }
                Log.EscribeLog("Sitio: " + vchClaveSitio);
                if (vchClaveSitio != "")
                {
                    mdl = ConfigDataAccess.getConeccion(vchClaveSitio, id_Servicio);
                    if (mdl != null || _conf != null)
                    {
                        if (!(id_Servicio > 0))
                        {
                            id_Servicio = mdl.id_Sitio;
                        }

                        if (vchClaveSitio == "")
                        {
                            vchClaveSitio = mdl.ConfigSitio.vchClaveSitio;
                        }
                        if (AETitle == "")
                        {
                            AETitle = mdl.ConfigSitio.vchAETitle;
                        }
                        if (Token != "")
                        {
                            Token = Security.Encrypt(id_Servicio + "|" + vchClaveSitio);
                        }
                        Log.EscribeLog("Inicio de CargarServicio SCP");
                        // preload dictionary to prevent timeouts
                        var dict = DicomDictionary.Default;
                        int port = 0;

                        Log.EscribeLog("Puerto: " + (mdl.ConfigSitio == null ? _conf.intPuertoCliente : mdl.ConfigSitio.intPuertoCliente));
                        Log.EscribeLog("AETitle: " + AETitle);
                        // start DICOM server on port from command line argument or 11112
                        try
                        {
                            if (_conf.intPuertoCliente > 0)
                            {
                                port = _conf.intPuertoCliente;
                            }
                            else
                            {
                                if (mdl.ConfigSitio.intPuertoCliente > 0)
                                {
                                    port = (int)mdl.ConfigSitio.intPuertoCliente;
                                }
                                else
                                {
                                    port = Convert.ToInt32(ConfigurationManager.AppSettings["Puerto"].ToString());
                                }
                            }
                        }
                        catch (Exception ePuerto)
                        {
                            Console.WriteLine("No se pudo leer el puerto especificado, favor de verificar.: " + ePuerto.Message);
                            Log.EscribeLog("No se pudo leer el puerto especificado, favor de verificar.: " + ePuerto.Message);
                        }
                        if (port > 0)
                        {
                            Console.WriteLine($"Iniciando Servidor C-Store SCP en el  puerto {port}");

                            var server = DicomServer.Create <CStoreSCP>(port);
                            Log.EscribeLog($"Iniciando Servidor C-Store SCP en el  puerto {port}");

                            ConfigDataAccess.setService(id_Servicio, vchClaveSitio);
                            // end process
                            Console.WriteLine("Oprimir <return> para finalizar...");
                            Console.ReadLine();
                        }
                        else
                        {
                            Console.WriteLine("No se pudo leer el puerto especificado, favor de verificar.");
                            Log.EscribeLog("No se pudo leer el puerto especificado, favor de verificar.");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No se pudo encontrar los datos para la búsqueda de sitio. En espera de los datos de configuración.");
                    Log.EscribeLog("No se pudo encontrar los datos para la búsqueda de sitio. En espera de los datos de configuración.");
                }
            }
            catch (Exception eLoadService)
            {
                Log.EscribeLog("Error al cargar el servicio: " + eLoadService.Message);
            }
        }