SAS.BduApiClient
Introducción
En el presente documento se presenta la librería SAS.BduApiClient, componente .NET Standar 2.0, para el acceso a datos de BDU.
Esta librería permite el acceso a los datos de BDU utilizando dos implementaciones diferentes: una que utiliza internamente el servicio web de BDU y otra que utiliza réplica de BBDD.
La versión actual de la librería , en su versión acceso a réplica de BBDD, solo dispone de métodos para acceso a la información de mutuas, decretos y los datos principales de usuarios de BDU.
Dependencias
Nombre del componente | Versión | Descripción |
---|
System.ServiceModel.Duplex | 4.5.3 | Proporciona clases para consumir y comunicarse con servicios Dúplex |
System.ServiceModel.Http | 4.5.3 | Gestiona solicitudes realizadas a través del protocolo HTTP |
System.ServiceModel.NetTcp | 4.5.3 | Genera de forma predeterminada una pila de comunicación en tiempo de ejecución, que utiliza la seguridad de transporte, TCP para la entrega de mensajes |
System.ServiceModel.Security | 4.5.3 | Se encarga de temas generales relacionados con la seguridad |
SAS.Common.Core | 1.1.0 | Componente .NET común con clases e interfaces core de aplicaciones |
SAS.Common.Kernel | 1.1.0 | Componente .NET kernel de aplicaciones, como interfaz mapper o diversas utilidades linq |
SAS.MacoApiClient | 2.4.3 | Componente MacoApiClient |
SASUtils.Parse | 1.0.0 | Componente utilidad para la conversión entre tipos |
SASUtils.Xml | 1.0.1 | Componente .NET común para el tratamiento de XMLs |
SAS.Common.OracleProvider | 1.3.3 | Componente .NET común para la configuración del proveedor de BBDD Oracle |
EntityFramework | 6.2.0 | ORM de Microsoft para .NET |
Oracle.ManagedDataAccess | 19.6.0 | Proveedor de acceso a datos de Oracle para .NET |
Oracle.ManagedDataAccess.EntityFramework | 19.6.0 | ORM de Oracle para .NET |
Errores conocidos
- Bug al obtener texto de un nodo XML.
Corregido desde de la version 1.0.1
Historial de cambios
Histórico de cambios realizados en la librería
- 1.0.0 - Versión inicial .NET Standard 2.0.
Proyecto SAS.BduApiClient.Core- Boundary/Contracts/Services
- IBduSearch: Interfaz del servicio de búsqueda de BDU
//Búsqueda de usuarios, pasando como argumento información del usuario peticionario de la consulta y
// criterio de búsqueda
List<BduUser> FindUsers(IGenericAuthContext<T> petitionerUser, QuerysBduUserSearchDto querysBduUserSearchDto);
- Entity/dto
- QuerysBduUserSearchDto: Entidad para definir el criterio de la consulta de usuarios de BDU
public List<string> Nuhsas { get; set; } //Código nuhsas
public string SocialSecurityNumber { get; set; } // Número de seguridad social
public string AffiliationNumber { get; set; } // Número de afiliación
public string NUHSA { get; set; }// Código NUHSA
public string CodSns { get; set; } // Código SNS
public string BirthDateYear { get; set; } //Fecha de nacimiento
public bool FarmaciaInfo { get; set; } //True si la consulta devolverá información de farmacia
public bool FullAddress { get; set; } //True si la consulta devolverá información de la dirección completa del usuario
public string DocumentIdType { get; set; } // Tipo del identificador del documento
public string DocumentType { get; set; } // Tipo de documento
public string DocumentId { get; set; } //Identificador del documento
public string Name { get; set; } //Nombre del usuario
public string Surname { get; set; } //Primer apellido del usuario
public string SecondSurname { get; set; } // segundo apellido del usuario
public string ProvinceId { get; set; } //identificador de la provincia
public bool DetailedInfo { get; set; } // True si se desea mostrar información detallada
- Entity
- Address: Dirección del usuario
- Adscription: Adscripción
- BduDisplacement: Desplazamiento BDU. Deriva de la clase Displacement
- BduUser: Usuario BDU
- Displacement: Desplazamiento
- NursingAdscription: Adscripción de Enfermería
- TeamAdscription: Equipo de Adscripción
Proyecto BduApiClient
- api/boundary
- BduSearch: Mecanismos de obtención de información referente a los usuarios mediante el servicio web de BDU
- api/control/messages
- BduMessage: Clase abstracta que deriva de la clase SAS.MacoApiClient.Api.Control.Messages.Message, de la librería MacoApiClient
- ConsultaCortaUsuariosMessage: Resultado de la consulta corta de usuario. Deriva de ConsultaUsuariosMessage
- ConsultaDetalladaUsuariosMessage: Resultado de la consulta detallada de usuario. Deriva de ConsultaUsuariosMessage
- ConsultaUsuariosMessage: Clase abstracta que deriva de BduMessage y utilizada para formar el XML de respuesta de la consulta
- api/control
- BduExceptionManager: Clase que implementa la interfaz IBduExceptionManager. Lanza una excepción en caso de que haya algún error en la respuesta del servicio web de bdu
- BduUserManager: Implementa la interfaz IBduUserManager. Encargada de procesar la respuesta xml del servicio web de bdu y obtener el listado de usuarios resultantes.
- IBduExceptionManager: Interfaz para controlar si hay algún error presente en la respuesta del servicio web de BDU, bien de tipo xml o string.
void ThrowIfErrorIsPresent(XmlDocument response);
void ThrowIfErrorIsPresent(string response);
- IBduUserManager: Interfaz para procesar la respuesta xml del servicio web de BDU
List<BduUser> ProccessBduUsersResponse(string responseXml); //procesa la respuesta BDU y devuelve listado de usuarios consultados
- entity/config
- BduApiConfig: Clase de configuración de la api, para acceder a los servicios Web de BDU. Implementa la interfaz IBduApiConfig
- IBduApiConfig : Interfaz configuración de la api de BDU que accede a servicios Web de BDU
string GetEndPoint(Type bduMessageType); //Obtiene el endpoint del tipo que se pasa por parámetro
string GetModuleCode(); //Obtiene el código del módulo
void SetModuleCode(string moduleCode); // establece el código del módulo
- entity/exceptions
- BduBusinessException. Excepción de negocio de BDU.
- BduException. Clase específica de excepción de BDU. Deriva de Exception
- InvalidXmlException: Clase de tipo BduException por XML inválido
- LockedUserException: Clase de tipo BduException por usuario bloqueado
- MalformedXmlException: Clase de tipo BduException por xml mal formado
- entity/
- EndPointType: Enumerado con los tipos de endpoint del servicio de BDU. Por ahora, únicamente 'Solicitud'.
- util/
- BduFactory. Factoría utilidad para la API
- BduParseUtils: Clase Utilidad para el parseo entre tipos: string a long, string a DateTime. Internamente utiliza la clase Parse del componente común SASUtils
- BduXmlUtils: Clase utilidad para el tratamiento de XMLs. Internamente utiliza la clase Xml del componente común SASUtil
- IBduFactory: Interfaz de la clase factoría de BDU
IWsBduManager WsBduManager { get; set; }
IBduUserManager BduUserManager { get; set; }
IBduExceptionManager BduExceptionManager { get; set; }
- WebService/Boundary
- IWsBduManager. Interfaz manejadora de las peticiones al servicio web de BDU
string Solicitud(BduMessage message); // Dado un objeto mensaje de BDU, construye el mensaje XML , se lo envía al servicio web de BDU que corresponda, según tipo del mensaje y devuelve resultado string de BDU
- WsBduManager. Clase que implementa la interfaz IWsBduManager, encargada de llamar al servicio web de BDU correspondiente, según tipo del mensaje
- WebService/Control
- clsPasarelaSoapPort. Clase proxy para la comunicación con el servicio web de BDU
- 1.0.1 - Corregido error al obtener texto del nodo XML
Se actualiza la versión del componente SASUtils.Xml por la v1.0.1, debido a un error en el método obtener texto del nodo XML - 1.0.2 Corregido error en el mapeo de los datos de ContactInformation
Actualizada versión de la librería de MacoApiClient a v2.0.1 - 1.0.3 Actualizada la versión del componente MacoApiClient a la v2.4.1, y la versión de oracle a la v19.6
- 1.1.0 Añadido dos nuevos servicios para consultar, vía réplica de BBDD, usuarios y mutuas. Los cambios han sido los siguientes:
Proyecto SAS.BduApiClient.Core- Boundary/Contracts/Repositories
- IMutualidadRepository: Interfaz de mecanismos de obtención de información referente a mutuas utilizando la réplica de BBDD.
//Mecanismo de obtención de información de todas las mutuas.
IList<MutualInsurance> GetMutualInsurance();
/// Mecanismo de obtencion de información de todas las mutuas que cumplen con el criterio.
IList<MutualInsurance> FindMutualInsurances(QuerysMutualInsuranceDto criteria);
- IUserRepository: Mecanismos de obtención de información referente a usuarios utilizando la réplica de BBDD.
//Mecanismo de obtención de información referente un usuario.
IList<BduUser> FindUserWithDetailed(QuerysBduUserSearchDto criteria);
// Mecanismo de obtencion de información de Bdu de solicitudes decreto. Devuelve valores de CONVENIO_AP, SITUACION_ACTUAL, CLAVE_MEDICA, VALIDADO, ESPECIALIDAD_CM de la tabla de BDU por nuhsa.
BduDecreeRequest FindBduElementsDecreeRequest(QuerysBduUserSearchDto criteria);
- Boundary/Contracts/Services
- IMutualInsuranceService: Mecanismos de obtención de información referente a las mutuas vía réplica de BBDD.
//Mecanismo de obtención de información de todas las mutuas.
IList<MutualInsurance> GetMutualInsurance(IGenericAuthContext<object> petitionerMutua);
// Mecanismo de obtencion de información de todas las mutuas que cumplen con el criterio.
IList<MutualInsurance> FindMutualInsurances(IGenericAuthContext<object> petitionerMutua, QuerysMutualInsuranceDto criteria);
- Entity/dto
- QuerysMutualInsuranceDto**: Entidad para definir el criterio de búsqueda de mutuas
public decimal? Id { get; set; } // Identificador numérico de la mutua
- Entity
- MutualInsurance: Compañía de seguros
Proyecto BduApiClient
- api/boundary
- BduUserService: Mecanismos de obtención de información referente a los usuarios mediante réplicas de BBDD
- MutualInsuranceService: Mecanismos de obtención de información referente a las mutuas utilizando la implementación de réplicas de BBDD.
Proyecto SAS.BduApiClient.ManagedDataAccess.Oracle
Componente utilizado internamente por las clases servicios que se conenectan a BDU vía réplica.
- Boundary
- ConfigContextApiBduConnection. Configuración de conexiones a la réplica de BBDD de BDU
- ManagedConfigBduConnection. Entidad de conexión a contexto
- MutualidadRepository. Mecanismos de obtención de información referente a mutuas vía réplica de BBDD
- UserRepository. Mecanismos de obtención de información referente a los usuarios vía réplica de BBDD
- Control/Mapper
- MutualidadesMapper. Clase para realizar el mapeo de las entidades relacionadas con la Mutualidad.
- MutualidadMapper. Clase para realizar el mapeo de las entidades relacionadas con la Mutualidad.
- UsuarioBduMapper. Clase para realizar el mapeo de las entidades relacionadas con usuario BDU.
- UsuarioBduSolicitudDecretoMapper. Clase para realizar el mapeo de las entidades relacionadas con la solicitud de decreto de usuario BDU.
- UsuariosBduMapper. Clase para realizar el mapeo de las entidades relacionadas con usuarios BDU.
- Entity
- BduSolicitudDecreto. Entidad solicitud decreto de BDU.
- Mutualidad. Entidad de mutualidad.
- UsuarioBdu. Entidad usuario BDU.
- Entity/EntityFramework/Bdu
- BduConexion. Contexto de conexión a la replica de BDU.
- BduEntity. Entidad de BDU.
- BduManejadoConnect. Clase para utilizar la conexión de BDU en un contexto manejado
- CausasPasivoEntity. Entidad de las causas pasivo.
- ComunidadEntity. Entidad de comunidad.
- FarmaciaTipoAportacionEntity. Entidad de farmacia tipo aportacion.
- FinanciacionEntity. Entidad financiación.
- LocalidadEntity. Entidad de localidad.
- MutualidadEntity. Entidad de mutualidad.
- PaisEntity. Entidad de pais.
- SexoEntity. Entidad de sexo.
- SituacionActualEntity. Entidad de la situación actual.
- TipoViaEntity. Entidad de tipo via.
- Entity/EntityFramework/Exception
- ContextException. Contexto para la excepciones producidas en la conexión a la réplica de BBDD de BDU
- Entity/EntityFramework/Projection
- BduProjection. Proyección de BDU.
- CausasPasivoProjection. Proyección de las causas pasivo.
- ComunidadProjection. Proyección de la comunidad.
- FarmaciaTipoAportacionProjection. Proyección farmacia tipo aportacion.
- FinanciacionProjection. Proyección financiación.
- LocalidadProjection. Proyección de la localidad.
- MutualidadProjection. Proyección de la mutualidad.
- PaisProjection. Proyección del pais.
- SexoProjection. Proyección del sexo.
- SituacionActualProjection. Proyección de la situacion actual.
- TipoViaProjection. Proyección del tipo de via.
- 1.2.0 Añadido posibilidad de definir el endpoint del servicio web de BDU por configuración
- Permitir llamadas al servicio web de BDU vía HTTPS
- Corregido minúsculas en el espacio de nombre api.boundary. Se ha cambiado a Api.Boundary.
- Actualizada versión de MacoApiClient a la v2.4.3, la cual permite llamadas a su servicio web vía HTTPS
- 1.3.0 Añadido consulta para obtener las solicitudes de decreto, en el que se filtra por NUHSA. Los cambios han sido los siguientes:
Proyecto SAS.BduApiClient.Core- Boundary/Contracts/Repositories
- IUserRepository: Mecanismos de obtención de información referente a usuarios utilizando la réplica de BBDD. Se ha añadido el siguiente método:
// Mecanismo de obtencion de información de Bdu de solicitudes decreto. Devuelve valores de CONVENIO_AP, SITUACION_ACTUAL, CLAVE_MEDICA, VALIDADO, ESPECIALIDAD_CM de la tabla de BDU por nuhsa.
BduDecreeRequest FindBduElementsDecreeRequest(QuerysBduUserSearchDto criteria);
- Boundary/Contracts/Services
- IBduDecreeRequestService: Mecanismos de obtención de información referente a las solicitudes de decreto vía réplica de BBDD.
//Mecanismo de obtencion de información de Bdu de solicitudes decreto.
BduDecreeRequest FindBduElementsDecreeRequest(IGenericAuthContext<object> petitionerBdu, QuerysBduUserSearchDto criteria);
- Entity
- BduDecreeRequest: Petición de decreto
Proyecto BduApiClient
- api/boundary
- BduDecreeRequestService: Mecanismos de obtención de información de bdu referente a una solicitud decreto de un usuario. Implementa la interfaz IBduDecreeRequestService
Proyecto SAS.BduApiClient.ManagedDataAccess.Oracle
Componente utilizado internamente por las clases servicios que se conenectan a BDU vía réplica. Se ha añadido lo siguiente:
Integración de la librería
Acceder a nuget e instalar la librería SAS.BduApiClient.
Configuración
La configuración de la API depende del tipo de implementación de servicios que se vaya a utilizar, según se acceda a los datos mediante el Servicio Web de BDU o mediante réplicas de BBDD. Veamos cada una de ellas:
La siguiente configuración de ejemplo se añadiría en clase Startup de un proyecto ASP .NET MVC.
Primero, en el fichero Startup.cs, método ConfigureServices, inicializamos el contenedor de inyección de dependencia:
public void ConfigureServices(IServiceCollection services)
{
...
ContainerDI.SetAsyncScopedLifestyle(); // establecer estilo de vida por defecto del contenedor de inyección. Permite procesar tanto operaciones asíncronas como síncronas
ContainerDI.RegisterServices(ref services);
...
}
ContainerDI, clase del componente común SAS.Util.Injection, el cual permite el registro por inyección de dependencia de los diferentes servicios y tipos utilizados en el sistema.
- Configuración de la API para acceder al Servicio Web de BDU
En el fichero appsettings.json se define una sección en la que se establece el código del módulo en MACO y en otra sección, el endpoint del servicio web de BDU.
(1) "MacoApiClient": {
"MacoModule": "XXX" // el código concreto hay que solicitarlo a la OTI
},
(2) "WebServiceLocator": {
"ServiceAddressBdu": "https://servicios.pre.sas.junta-andalucia.es/",
"EndPointAddressBduSolicitud": "/usuario/wsBDU.ashx"
}
(1) Configuración del módulo en MACO, indicado por la OTI.
(2) Configuración de la dirección URL del servicio web de BDU. En el ejemplo se hace referencia a la URL de PRE.
A continuación, en el fichero Startup.cs, método InitializeContainer() se registra, por inyección de dependencia, los diferentes servicios utilizados de la API.
private void InitializeContainer()
{
...
#region Registrar BDU
(3) ContainerDI.Register<IBduSearch<MacoUser>, BduSearch>(ContainerDI.LifeStyleContainer.Transient);
(4) var bduApiConfig = new BduApiConfig(Configuration.GetSection("WebServiceLocator:ServiceAddressBdu").Value, Configuration.GetSection("MacoApiClient:MacoModule").Value){
};
(5) bduApiConfig.EndPoints = new Dictionary<BduApiClient.Api.Entity.EndPointType, string>
{
{ SAS.BduApiClient.Api.Entity.EndPointType.Solicitud, Configuration.GetSection("WebServiceLocator:EndPointAddressBduSolicitud").Value }
};
(6) ContainerDI.Register<IBduApiConfig>(() => bduApiConfig, ContainerDI.LifeStyleContainer.Transient);
(7) ContainerDI.Register<IBduUserManager, BduUserManager>(ContainerDI.LifeStyleContainer.Transient);
(8) ContainerDI.Register<IBduExceptionManager, BduExceptionManager>(ContainerDI.LifeStyleContainer.Transient);
(9) ContainerDI.Register<IWsBduManager, WsBduManager>(ContainerDI.LifeStyleContainer.Transient);
#endregion
...
}
(3) Configuración del servicio de búsqueda de BDU que utiliza internamente el servicio web de BDU
(4) Configuración de la API de BDU, indicando url de BDU y código de la aplicación en MACO
(5) Configuración el endpoint del Servicio web de BDU
(6) Registro del tipo BDUApiConfig que implementa la interfaz de configuración de BDU, IBduApiConfig
(7) Registro del tipo BduUserManager, que implementa la interfaz IBduUserManager
(8) Registro del tipo BduExceptionManager, que implementa la interfaz IBduExceptionManager
(9) Registro del tipo WsBdumanager, que implementa la interfaz IWsBduManager
- Configuración de la API versión Réplica de BBDD
private void InitializeContainer()
{
...
#region Registrar BDU
(10) ContainerDI.Register<IBduSearch<object>, BduUserService>(ContainerDI.LifeStyleContainer.Transient);
(11) ContainerDI.Register<IMutualInsuranceService<object>, MutualInsuranceService>(ContainerDI.LifeStyleContainer.Transient);
(12) ContainerDI.Register<IBduDecreeRequestService<object>, BduDecreeRequestService>(ContainerDI.LifeStyleContainer.Transient);
(13) ContainerDI.Register<IUserRepository, UserRepository>(ContainerDI.LifeStyleContainer.Transient);
(14) ContainerDI.Register<IMutualidadRepository, MutualidadRepository>(ContainerDI.LifeStyleContainer.Transient);
(15) // Conexion a la réplica de BDU
ContainerDI.Register<IConfigContextApiConnection<SchemaType>>(() =>
new ConfigContextApiBduConnection(new ManagedConfigConnectionBase<SchemaType>[]
{
new ManagedConfigConnectionBase<SchemaType>(ConfigurationManager.ConnectionStrings["BDUConnection"].ConnectionString, SchemaType.Bdu, "NOMBRE DEL ESQUEMA")
})
, ContainerDI.LifeStyleContainer.Transient);
#endregion
...
}
(10) Registro del servicio BduUserService, que implemeneta la interfaz IBduSearch. Permite el acceso a datos de usuario vía réplica de BBDD.
(11) Registro del servicio MutualInsuranceService, que implemeneta la interfaz IMutualInsuranceService, para el acceso a datos de mutuas vía réplica.
(12) Registro del servicio BduDecreeRequestService, que implemeneta la interfaz IBduDecreeRequestService, para el acceso a datos de decretos vía réplica.
(13) Registro del tipo UserRepository que implementa la interfaz IUserRepository
(14) Registro del tipo MutualidadRepository que implementa la interfaz IUseIMutualidadRepository
(15) Configuración del contexto de BBDD con el tipo concreto ConfigContextApiBduConnection. Recibe como parámetros la cadena de conexión de la réplica de BDU, tipo de esquema Bdu y nombre del esquema de la BBDD.
Criterios
El objeto QuerysBduUserSearchDto, es la representación de los criterios de búsqueda que son soportados por la API client. Dicho objeto permite los siguientes valores:
- Flags, estos son los modificadores soportados:
- DetailedInfo: Booleano indicando si se desea la información detallada (true) o resumida (false). Valor por defecto: False
NOTA: Actualmente, en la versión réplica de la API sólo se permite la consulta detallada. - FarmaciaInfo: Booleano indicando si se desea la información detallada sobre farmacia. Valor por defecto: False
- FullAddress: Booleano indicando si se desea la información detallada del domicilio del paciente. Valor por defecto: False.
- Identificadores de usuario único
-- NUHSA: Alfanumérico.
- CodSns: Alfanumérico.
- SocialSecurityNumber: Alfanumérico.
- AffiliationNumber: Alfanumérico
- Nuhsas: Lista de códigos NUHSA
- DocumentIdType + DocumentType + DocumentId: permite identificar un paciente por el identificador definido.
- Filtros de búsqueda
- BirthDateYear: Alfanumérico.
- Name: Nombre del paciente
- Surname: Primer apellido del paciente
- SecondSurname: Segundo apellido del paciente
Antes de realizar la búsqueda de usuarios, vía servicio web o réplica de BBDD, se valida que el objeto criterio de búsqueda QuerysBduUserSearchDto cumpla las siguientes condiciones:
- El objeto QuerysBduUserSearchDto no puede ser nulo
- No pueden ser nulo los siguientes atributos: SocialSecurityNumber, AffiliationNumber, NUHSA, CodSns, DocumentId
- Almenos se deben de especificar dos campos de entre: Name, Surname, SecondSurname
Métodos de servicio
Los métodos de servicio que la API proporciona son los siguientes:
- Búsqueda de usuarios (consula detallada/corta)
La búsqueda de usuarios se realizará mediante los métodos "findUsers" que soportan el criteria descrito anteriormente.
NOTA: Actualmente en la versión réplica sólo se permite la consulta detallada - Búsqueda información de mutuas (sólo modo réplica de BBDD)
- Listado de mutualidades
- Listado de mutualidades que cumplen con un criterio - Búsqueda información de decretos (sólo modo réplica de BBDD)
- Búsqueda de información de solicitud de decreto que cumple un criterio
Uso
A continuación se describe el uso de la librería.
Funcionalidades utilizando Servicio Web de BDU
Una vez realizada la configuración de la API, se siguen los siguientes pasos para realizar una búsqueda de usuarios utilizando el servicio Web de BDU.
1. En la clase donde se va a añadir esta funcional, BduService en el ejemplo, añadir al constructor un objeto de tipo IBduSearch: IBduSearch<MacoUser> bduSearch.
2. Añadir un método, FindUsers en el ejemplo, con los siguientes parámetros: IGenericAuthContext<MacoUser> petitionerUser y QuerysBduUserSearchDto querysBduUserSearchDto. El primero hace referencia al usuario Maco peticionario de la llamada y el segundo los criterial de la query que se va a realizar.
3. Llamar al método FindUsers del servicio de BDU, _bduSearch en el ejemplo, pasando como parámetro el usuario peticionario y la query, petitionerUser y queryBduUserSearchDto en el ejemplo.
4. Por último, se hace el mapping entre el tipo usuario BDU devuelto por la API y el propio del sistema que realiza la llamada.
Ejemplo:
...
using SAS.MacoApiClient.User.Entity;
using SAS.Common.Core.Boundary.Contracts;
using SAS.BduApiClient.Core.Entity.dto;
using SAS.BduApiClient.Core.Boundary.Contracts.Services;
...
public class BduService: IBduService
{
private IBduSearch<MacoUser> _bduSearch;
public BduService(IBduSearch<MacoUser> bduSearch)
{
_bduSearch = bduSearch;
}
public List<BduUser> FindUsers(IGenericAuthContext<MacoUser> petitionerUser, QuerysBduUserSearchDto querysBduUserSearchDto)
{
List<BduUser> resultFindUsers = new List<BduUser>();
var result = _bduSearch.FindUsers(petitionerUser, querysBduUserSearchDto);
foreach (SAS.BduApiClient.Core.Entity.BduUser bduUser in result)
{
var bduUserLocal = new BduUser();
bduUserLocal.Name = bduUser.Name;
bduUserLocal.FirstSurname = bduUser.FirstSurname;
bduUserLocal.SecondSurname = bduUser.SecondSurname;
//en unmapping hacer resto de campos
resultFindUsers.Add(bduUserLocal);
}
return resultFindUsers;
}
}
}
5. La clase que se haya creado para añadir la funcionalidad de búsqueda de usuarios se debe registrar en la clase Startup.cs, método InitializeContainer(), al igual que el resto de servicio y tipos. Continuando con el ejemplo:
ContainerDI.Register<IBduService, BduService>(ContainerDI.LifeStyleContainer.Transient);
Funcionalidades utilizando la réplica de BDU
- Búsqueda de usuarios
La búsquea de usuarios se realiza del mismo modo que se explica en el punto anterior. Únicamente hay que tener encuenta que el servicio que implementa la interfaz IBduSearch es, en este caso, SAS.BduApiClient.Api.Boundary.BduUserService (ver Configuración de la API versión Réplica de BBDD) y que en modo réplica, y en la versión actual de la librería, sólo se puede especificar la consulta detallada.
- Información de Mutuas
Para consultar información de mutuas, se realiza los siguientes pasos:
- En el constructor de la clase donde vamos a utilizar la funcionalidad de mutuas, se añade un objeto de tipo IMutualInsuranceService: IMutualInsuranceService<object> servicioMutua;
- Listado de mutuas
A continuación se llama al método GetMutualInsurance del servicio, pasando como parámetro peticionario un null: servicioMutua.GetMutualInsurance(null);
NOTA: El parámetro peticionario es null debido a que en la réplica no se registra peticionario de la consulta. En un futuro servicio web de mutuas sí podría ser necesario el parámetro peticionario definido en la interfaz para su registro.
- Búsqueda de mutuas que cumplen una determinada condición
En este caso se llamaría al método FindMutualInsurances, que recibe como parámetros el peticionario y el criterio de búsqueda:
FindMutualInsurances(IGenericAuthContext<object> petitionerMutua, QuerysMutualInsuranceDto criteria);
En el atributo petitionerMutua se le pasaría un null y en criteria el id de la mútua a buscar.
Para consultar información de decretos, realizamos los siguientes pasos:
- En el constructor de la clase donde vamos a utilizar la funcionalidad de decretos, se añade un objeto de tipo IBduDecreeRequestService: IBduDecreeRequestService<object> servicioDecretos;
- Búsqueda de decretos que cumplen una determinada condición
En este caso se llamaría al método FindBduElementsDecreeRequest(IGenericAuthContext<object> petitionerBdu, QuerysBduUserSearchDto criteria), que recibe como parámetros el peticionario y el criterio de búsqueda:
En el atributo peticionario se le pasaría un null y en criteria el criterio de búsqueda QuerysBduUserSearchDto.