WCF Service

NET-WS-LoginLDAP

WCF service for LDAP-based user authentication against Active Directory

10
Endpoints
3
Internal Funcs
12
SQL Statements

Last commit: 2025-10-29

🔗 Cross-service similarity detected

⚠ Similar operations in other services:
ObtenerCentro also in → NET-WS-HL7Broker, NET-WS-Informes
Login also in → NET-CUNApp
ObtenerCentro also in → NET-WS-Informes
🔁 Similar SQL queries found in other services:
select SG02CODWINDOWS…
→ also in NET-WS-Informes
🗄 Shared DB tables with other services:
SG0200

📋 Endpoints Overview (10)

Operation ⇅Verb Returns ⇅Parameters SQLs ⇅DescriptionFlags
Login SOAP RespLoginEntity usuario, password 1 🔁
GetRolesByUsuario SOAP RespListRol usuario 1
GetRolesByCodigoUsuario SOAP RespListRol codUsuario 1
GetGrupoByUsuario SOAP RespGrupo usuario 1
ObtenerUsuarioIntranet SOAP RespUsuarioIntranet usuario 1
PerteneceCentroCancer SOAP RespBool usuario 1
ObtenerCategoriaProfesional SOAP RespCategoria codUsuario 1
ObtenerAreas SOAP RespListArea codUsuario 1
ObtenerCentro SOAP RespCentro codUsuario 1 🔁
ObtenerUsuarioIntranetCSV SOAP RespUsuarioIntranetCSV 2

🔌 Endpoint Details

Login

📋 COPY-PASTE 85% SOAP
⚠ Similar operation Login exists in: NET-CUNApp
📋 Copy-paste candidate — extract to shared library
Structural match: 85%  ·  Same code found in 11 other service(s): NET-WS-DestinoPaciente NET-WS-Farmacia NET-WS-FormacionCUN NET-WS-FuncionesGenerales NET-WS-HL7Broker NET-WS-Informes
Suggested library: cysnet.cun.core

📥 Input Parameters

Stringusuario
Stringpassword

📤 Return Type

RespLoginEntity
SG0200

🗄 SQL Queries (1)

SELECT SG02NOM, SG02APE1, SG02APE2, SG02COD FROM SG0200 WHERE UPPER(SG02CODWINDOWS) = UPPER(:usuario)
SG0200

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Authenticates login
/// </summary>
/// <param name="usuario">TODO: describe usuario</param>
/// <param name="password">TODO: describe password</param>
/// <returns>RespLoginEntity</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_Login_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var usuario = "test_value";
            var password = "test_value";

            // Act
            var result = client.Login(usuario, password);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_Login_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var usuario = null;
            var password = null;

            // Act
            var result = client.Login(usuario, password);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

GetRolesByUsuario

📋 COPY-PASTE 85% SOAP
📋 Copy-paste candidate — extract to shared library
Structural match: 85%  ·  Same code found in 11 other service(s): NET-WS-DestinoPaciente NET-WS-Farmacia NET-WS-FormacionCUN NET-WS-FuncionesGenerales NET-WS-HL7Broker NET-WS-Informes
Suggested library: cysnet.cun.core

📥 Input Parameters

Stringusuario

📤 Return Type

RespListRol
SG0200 SG0600

🗄 SQL Queries (1)

SELECT SG06.SG03COD FROM SG0200 SG02 LEFT JOIN SG0600 SG06 ON SG06.SG01COD = SG02.SG01COD WHERE UPPER(SG02.SG02CODWINDOWS) = UPPER(:usuario)
SG0200 SG0600

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Retrieves get roles by usuario
/// </summary>
/// <param name="usuario">TODO: describe usuario</param>
/// <returns>RespListRol</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_GetRolesByUsuario_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var usuario = "test_value";

            // Act
            var result = client.GetRolesByUsuario(usuario);

            // Assert
            Assert.IsNotNull(result.Resultado);
        }

        [TestMethod]
        public void Test_GetRolesByUsuario_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var usuario = null;

            // Act
            var result = client.GetRolesByUsuario(usuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

GetRolesByCodigoUsuario

📋 COPY-PASTE 85% SOAP
📋 Copy-paste candidate — extract to shared library
Structural match: 85%  ·  Same code found in 11 other service(s): NET-WS-DestinoPaciente NET-WS-Farmacia NET-WS-FormacionCUN NET-WS-FuncionesGenerales NET-WS-HL7Broker NET-WS-Informes
Suggested library: cysnet.cun.core

📥 Input Parameters

StringcodUsuario

📤 Return Type

RespListRol
SG0200

🗄 SQL Queries (1)

SELECT SG06.SG03COD FROM SG0200 SG02
SG0200

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Retrieves get roles by codigo usuario
/// </summary>
/// <param name="codUsuario">TODO: describe codUsuario</param>
/// <returns>RespListRol</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_GetRolesByCodigoUsuario_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var codUsuario = "test_value";

            // Act
            var result = client.GetRolesByCodigoUsuario(codUsuario);

            // Assert
            Assert.IsNotNull(result.Resultado);
        }

        [TestMethod]
        public void Test_GetRolesByCodigoUsuario_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var codUsuario = null;

            // Act
            var result = client.GetRolesByCodigoUsuario(codUsuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

GetGrupoByUsuario

📋 COPY-PASTE 85% SOAP
📋 Copy-paste candidate — extract to shared library
Structural match: 85%  ·  Same code found in 11 other service(s): NET-WS-DestinoPaciente NET-WS-Farmacia NET-WS-FormacionCUN NET-WS-FuncionesGenerales NET-WS-HL7Broker NET-WS-Informes
Suggested library: cysnet.cun.core

📥 Input Parameters

Stringusuario

📤 Return Type

RespGrupo
SG0200

🗄 SQL Queries (1)

SELECT SG0100.SG01COD, SG0100.SG01DES FROM SG0200
SG0200

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Retrieves get grupo by usuario
/// </summary>
/// <param name="usuario">TODO: describe usuario</param>
/// <returns>RespGrupo</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_GetGrupoByUsuario_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var usuario = "test_value";

            // Act
            var result = client.GetGrupoByUsuario(usuario);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_GetGrupoByUsuario_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var usuario = null;

            // Act
            var result = client.GetGrupoByUsuario(usuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

ObtenerUsuarioIntranet

📋 COPY-PASTE 85% SOAP
📋 Copy-paste candidate — extract to shared library
Structural match: 85%  ·  Same code found in 11 other service(s): NET-WS-DestinoPaciente NET-WS-Farmacia NET-WS-FormacionCUN NET-WS-FuncionesGenerales NET-WS-HL7Broker NET-WS-Informes
Suggested library: cysnet.cun.core

📥 Input Parameters

Stringusuario

📤 Return Type

RespUsuarioIntranet
SG0200

🗄 SQL Queries (1)

SELECT SG02NOM, SG02APE1, SG02APE2, SG02COD FROM SG0200
SG0200

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Obtiene obtener usuario intranet
/// </summary>
/// <param name="usuario">TODO: describe usuario</param>
/// <returns>RespUsuarioIntranet</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_ObtenerUsuarioIntranet_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var usuario = "test_value";

            // Act
            var result = client.ObtenerUsuarioIntranet(usuario);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_ObtenerUsuarioIntranet_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var usuario = null;

            // Act
            var result = client.ObtenerUsuarioIntranet(usuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

PerteneceCentroCancer

SOAP

📥 Input Parameters

Stringusuario

📤 Return Type

RespBool

🗄 SQL Queries (1)

SELECT MIN(adaa00.adaadesarea) KEEP (DENSE_RANK FIRST ORDER BY adaa00.adaafecadd NULLS LAST) AS area, MIN(ag3900.ag39desgrupo) KEEP (DENSE_RANK FIRST ORDER BY ag4000.ag40fecadd NULLS LAST) AS grupo,

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

El usuario pertenece al Centro de Cáncer
El usuario no pertenece al Centro de Cáncer
📝 Suggested XML doc comment
/// <summary>
/// Executes pertenece centro cancer
/// </summary>
/// <param name="usuario">TODO: describe usuario</param>
/// <returns>RespBool</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_PerteneceCentroCancer_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var usuario = "test_value";

            // Act
            var result = client.PerteneceCentroCancer(usuario);

            // Assert
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_PerteneceCentroCancer_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var usuario = null;

            // Act
            var result = client.PerteneceCentroCancer(usuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

ObtenerCategoriaProfesional

SOAP

📥 Input Parameters

StringcodUsuario

📤 Return Type

RespCategoria

🗄 SQL Queries (1)

SELECT DISTINCT SG0200.SG02COD, TR1100.TR11CODPERSONAL,

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Obtiene obtener categoria profesional
/// </summary>
/// <param name="codUsuario">TODO: describe codUsuario</param>
/// <returns>RespCategoria</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_ObtenerCategoriaProfesional_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var codUsuario = "test_value";

            // Act
            var result = client.ObtenerCategoriaProfesional(codUsuario);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_ObtenerCategoriaProfesional_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var codUsuario = null;

            // Act
            var result = client.ObtenerCategoriaProfesional(codUsuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

ObtenerAreas

SOAP

📥 Input Parameters

StringcodUsuario

📤 Return Type

RespListArea

🗄 SQL Queries (1)

SELECT adaa00.ADAADESAREA area, gcfn10(ag4000.SG02COD) usuario, sg0200.SG02COD, adaa00.ADAACODAREA, adaa00.ADAADESAREA, adaa00.AG39CODGRUPO, adaa00.PR16CODGRUPO, adaa00.AD47CODTIPOCODI_CIE, adaa00.AD47CODTIPOCODI_OMS, adaa00.AD47CODTIPOCODI_MORF, adaa00.PR98NUMCUEST_CORE, adaa00.PR98NUMCUEST_ESP, adaa00.PR16CODGRUPO_CITA

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Obtiene obtener areas
/// </summary>
/// <param name="codUsuario">TODO: describe codUsuario</param>
/// <returns>RespListArea</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_ObtenerAreas_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var codUsuario = "test_value";

            // Act
            var result = client.ObtenerAreas(codUsuario);

            // Assert
            Assert.IsNotNull(result.Resultado);
        }

        [TestMethod]
        public void Test_ObtenerAreas_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var codUsuario = null;

            // Act
            var result = client.ObtenerAreas(codUsuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

ObtenerCentro

SOAP
⚠ Similar operation ObtenerCentro exists in: NET-WS-HL7Broker, NET-WS-Informes  |  ⚠ Similar operation ObtenerCentro exists in: NET-WS-Informes

📥 Input Parameters

StringcodUsuario

📤 Return Type

RespCentro

🗄 SQL Queries (1)

SELECT GCB100.GCB1CODPERSONAL, GCB100.GCB1FECINICONTRA, GCB100.GCB1FECFINCONTRA, GCB100.AD74CODCENTRO, GCB100.GCB1FECANTIG, GCB100.CI30CODSEXO ,AD7400.AD74DESLOCALID,  (AD7400.AD74DESPROVI)

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

No comments
📝 Suggested XML doc comment
/// <summary>
/// Obtiene obtener centro
/// </summary>
/// <param name="codUsuario">TODO: describe codUsuario</param>
/// <returns>RespCentro</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_ObtenerCentro_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();
            var codUsuario = "test_value";

            // Act
            var result = client.ObtenerCentro(codUsuario);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_ObtenerCentro_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();
            var codUsuario = null;

            // Act
            var result = client.ObtenerCentro(codUsuario);

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

ObtenerUsuarioIntranetCSV

SOAP

📥 Input Parameters

📤 Return Type

RespUsuarioIntranetCSV

🗄 SQL Queries (2)

SELECT sg0200.SG02CODWINDOWS,
select distinct sg02cod,  sg02nom, sg02ape1, sg02ape2, sg02email, sg02codwindows, ad7400.ad74deslocalid,

🔗 External Calls / Used By

Oracle DB

💬 Logic / Comments

cargamos un array con los usuarios de centro del cancer.
creamos un array con los usuarios de CCancer.
📝 Suggested XML doc comment
/// <summary>
/// Obtiene obtener usuario intranet c s v
/// </summary>
/// <returns>RespUsuarioIntranetCSV</returns>
🧪 Suggested unit test stubs (MSTest)
[TestMethod]
        public void Test_ObtenerUsuarioIntranetCSV_ReturnsSuccess()
        {
            // Arrange
            // NOTE: requires Oracle DB connection — configure App.config or mock OracleConnection
            // NOTE: external dependency detected — consider mocking: Oracle DB
            var client = new WSLoginLDAP();


            // Act
            var result = client.ObtenerUsuarioIntranetCSV();

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.Exito);
        }

        [TestMethod]
        public void Test_ObtenerUsuarioIntranetCSV_WithInvalidInput_ReturnsFailure()
        {
            // Arrange
            var client = new WSLoginLDAP();


            // Act
            var result = client.ObtenerUsuarioIntranetCSV();

            // Assert
            Assert.IsFalse(result?.Exito ?? true);
        }

⚙ Internal Functions (3)

Helper methods inside the service implementation — not part of the public contract.

Public (1)

publicvoidDoWork()

Private / Protected (2)

privatestringdameArea(int codArea)
privateboolPerteneceAGrupo(String codUsuario, String codGrupo)

🗄 All SQL Queries (12)

FileQueryTables
WSLoginLDAP.svc.cs
SELECT SG02NOM, SG02APE1, SG02APE2, SG02COD FROM SG0200 WHERE UPPER(SG02CODWINDOWS) = UPPER(:usuario)
SG0200
WSLoginLDAP.svc.cs
SELECT SG06.SG03COD FROM SG0200 SG02 LEFT JOIN SG0600 SG06 ON SG06.SG01COD = SG02.SG01COD WHERE UPPER(SG02.SG02CODWINDOWS) = UPPER(:usuario)
SG0200 SG0600
WSLoginLDAP.svc.cs
SELECT SG06.SG03COD FROM SG0200 SG02
SG0200
WSLoginLDAP.svc.cs
SELECT SG0100.SG01COD, SG0100.SG01DES FROM SG0200
SG0200
WSLoginLDAP.svc.cs
SELECT SG02NOM, SG02APE1, SG02APE2, SG02COD FROM SG0200
SG0200
WSLoginLDAP.svc.cs
SELECT MIN(adaa00.adaadesarea) KEEP (DENSE_RANK FIRST ORDER BY adaa00.adaafecadd NULLS LAST) AS area, MIN(ag3900.ag39desgrupo) KEEP (DENSE_RANK FIRST ORDER BY ag4000.ag40fecadd NULLS LAST) AS grupo,
WSLoginLDAP.svc.cs
SELECT DISTINCT SG0200.SG02COD, TR1100.TR11CODPERSONAL,
WSLoginLDAP.svc.cs
SELECT adaa00.ADAADESAREA area, gcfn10(ag4000.SG02COD) usuario, sg0200.SG02COD, adaa00.ADAACODAREA, adaa00.ADAADESAREA, adaa00.AG39CODGRUPO, adaa00.PR16CODGRUPO, adaa00.AD47CODTIPOCODI_CIE, adaa00.AD47CODTIPOCODI_OMS, adaa00.AD47CODTIPOCODI_MORF, adaa00.PR98NUMCUEST_CORE, adaa00.PR98NUMCUEST_ESP, adaa00.PR16CODGRUPO_CITA
WSLoginLDAP.svc.cs
SELECT GCB100.GCB1CODPERSONAL, GCB100.GCB1FECINICONTRA, GCB100.GCB1FECFINCONTRA, GCB100.AD74CODCENTRO, GCB100.GCB1FECANTIG, GCB100.CI30CODSEXO ,AD7400.AD74DESLOCALID,  (AD7400.AD74DESPROVI)
WSLoginLDAP.svc.cs
SELECT sg0200.SG02CODWINDOWS,
WSLoginLDAP.svc.cs
select distinct sg02cod,  sg02nom, sg02ape1, sg02ape2, sg02email, sg02codwindows, ad7400.ad74deslocalid,
WSLoginLDAP.svc.cs
SELECT 1 FROM ag4000 WHERE ag4000.ag39codgrupo = :codGrupo AND ag4000.SG02COD = UPPER(:codUsuario)
ag4000

🧪 Tests

No formal unit tests found. Test project uses console-based manual invocation of each operation. See Suggested Test Stubs in each endpoint card above.