Iryo Connector MGR
Iryo Connector MGR
(sin asunto)
Enric Jimenez <[email protected]> 24 de octubre de 2024, 10:14
Borrador
using HappyTren.Core.Model.Train;
using HappyTren.Core.Model.Train.BusinessObjects;
using HappyTren.Core.Model.Train.BusinessObjects.Enum;
using HappyTren.Core.Multilingual;
using HappyTren.Train.Data;
using HappyTren.Train.Data.CacheManagers;
using HappyTren.Train.iryoConnector.Internals;
using HappyTren.Train.IryoConnector.Internals.Builders;
using HappyTren.Train.IryoConnector.Internals.Connector;
using HappyTren.Train.IryoConnector.Internals.Extensions;
using HappyTren.Train.IryoConnector.Internals.Helpers;
using HappyTren.Train.IryoConnector.Internals.Model.Request;
using HappyTren.Train.IryoConnector.Internals.Model.Response;
using HappyTren.Train.IryoConnector.IryoObjects;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Xml;
using HappyTren.Train.IryoConnector.Internals.Model;
using HappyTren.Train.RenfeConnector.Internals.Connector;
using HappyTren.Train.IryoConnector.Internals.Model.Entitys;
using System.Runtime.CompilerServices;
using HappyTren.Train.IryoConnector.Internals.Builders.CustomCache;
using AppConfig;
namespace HappyTren.Train.IryoConnector.Internals
{
public class _IryoConnectorMgr
{
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 1/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
_cacheEngine = cacheEngine;
_iryoGetTrainConn = iryoGetTrainConn;
_iryoBookSeatsConn = iryoBookSeatsConn;
_iryoBuyTicketsConn = iryoBuyTicketsConn;
_iryoCancelBookConn = iryoCancelBookConn;
_iryoCancelTicketsConn = iryoCancelTicketsConn;
_iryoConfirmTicketsConn = iryoConfirmTicketsConn;
_iryoGetAgencyTicketsSalesConn = iryoGetAgencyTicketsSalesConn;
_iryoPrintTicketsConn = iryoPrintTicketsConn;
_iryoGetRoutesConn = iryoGetRoutesConn;
_appSettings = appSettings;
}
/// <summary>
/// Starts the internal caches, ...
/// </summary>
public void StartApp()
{
// Start the caches
_cacheEngine.InitCaches();
_StartedApp = true;
}
/// <summary>
/// Get the trains
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public GetTrainsRs GetTrains(GetTrainsRq pRequest, bool AppliesBusinessRule)
{
return GetTrains(pRequest, true, AppliesBusinessRule);
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 2/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
}
return retorno;
}
public static bool IsHourBusinessReturnArrival(DateTime arrivalTime)
{
bool retorno = false;
return retorno;
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 3/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
{
retorno = true;
};
return retorno;
}
/// <summary>
/// Just for testing purposes. Don't use.
/// </summary>
/// <param name="pRequest"></param>
/// <param name="pProcessRenfeResponse"></param>
/// <param name="renfeResponse"></param>
/// <returns></returns>
public GetTrainsRs GetTrains(GetTrainsRq pRequest, bool pProcessRenfeResponse, bool AppliesBusinessRule
= false)
{
return GetTrains(pRequest, pProcessRenfeResponse, null, AppliesBusinessRule);
}
/// <summary>
/// Just for testing purposes. Don't use.
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 4/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
/// </summary>
/// <param name="pRequest"></param>
/// <param name="pProcessRenfeResponse"></param>
/// <param name="iryoResponse"></param>
/// <returns></returns>
public GetTrainsRs GetTrains(GetTrainsRq pRequest, bool pProcessRenfeResponse, XmlDocument
iryoResponse, bool AppliesBusinessRule = false)
{
GetTrainsRs response = new GetTrainsRs();
// Control de nulos
if (pRequest == null)
{
response.AddError("RQ is null");
return response;
}
if (pRequest.Paxes == null || pRequest.Paxes.Count() == 0)
{
response.AddError("RQ.Paxes is null");
return response;
}
// 0. Iniciamos el conector
// _IryoGetTrainConn connector = new _IryoGetTrainConn();
if (AppPath == null)
{
AppPath = _appSettings.AppPath;
};
_iryoGetTrainConn.ApplicationPhysicalPath = AppPath;
if (pRequest.DepartureStation == "MADRI")
pRequest.DepartureStation = "60000";
if (pRequest.ArrivalStation == "MADRI")
pRequest.ArrivalStation = "60000";
if (pRequest.DepartureStation == "BARCE")
pRequest.DepartureStation = "71801";
if (pRequest.ArrivalStation == "BARCE")
pRequest.ArrivalStation = "71801";
pRequest.DepartureStation = departure;
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 5/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
pRequest.ArrivalStation = arrival;
_iryoGetTrainConn.Connect();
if (infoTren == null)
{
return null;
// response.AddError("No existen trenes ");
}
else
{
response = ConvertToDomain(infoTren, pRequest, arrivalST, departureST, pProcessRenfeResponse,
AppliesBusinessRule);
response.AddInfo(departure + "-" + arrival);
}
return response;
}
response.RenfeResponse = infoTren.ToJson();
response.DestinationStation = arrivalST;
response.Filters = new TrainFilterCls();
bool theSameDay = IrYoExtension.TheSameDay(pRequest.OutwardDate, pRequest.ReturnDate);
// 1. Obtener los códigos de las estaciones
string arrival = arrivalST.StationCode;
string departure = departureST.StationCode;
if (pProcessRenfeResponse)
{
// Si está establecido la estación principal, usar esa
AvailabilityTypeEnum aType = AvailabilityTypeEnum.NORMAL;
if (!string.IsNullOrEmpty(arrivalST.MainStationCode))
{
arrival = arrivalST.MainStationCode;
aType = AvailabilityTypeEnum.MAINSTATION;
}
if (!string.IsNullOrEmpty(departureST.MainStationCode))
{
departure = departureST.MainStationCode;
aType = AvailabilityTypeEnum.MAINSTATION;
}
// Se inicializa el seleccionador de tipos de pasajero
// (será general para todo el proceso para optimizar el uso de su caché interna)
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 6/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
var viajeIda = infoTren.data.offer.travels.First(x => x.direction == "outbound");
var viajeVuelta = infoTren.data.offer.travels.FirstOrDefault(x => x.direction == "inbound");
// Ida
if (viajeIda != null)
{
var addOns = viajeIda.addons;
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 7/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
}
}
response.OutwardTrains.Add(tren);
// Se actualizan los filtros
response.Filters.AddTrainType(tren.TrainTypeDescription, tren.TrainTypeDescription);
string timeTableDescription = MultilingualModule.GetTimeTableDescription(tren.
TimeTableType.ToString(), tren.TimeTableType.ToString(), pRequest.LanguageID);
response.Filters.AddOutwardTimeTable(tren.TimeTableType, timeTableDescription);
response.Filters.AddOutwardStations(tren.ArrivalStation, tren.ArrivalStationName);
response.Filters.AddOutwardStations(tren.DepartureStation, tren.DepartureStationName);
tren.Classes.ForEach(clase => response.Filters.AddClass(clase.ClassCode, clase.ClassName,
"IRYO"));
}
}
}
if (viajeVuelta != null)
{
var addOns = viajeVuelta.addons;
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 8/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
//trainClaims.Add(new ClaimCls() { Text = "Business", Type =
ClaimTypeEnum.SMART_TRAIN });
tren.Claims.Add(new ClaimCls() { Text = "Negocio y Turismo", Type =
ClaimTypeEnum.SMART_TRAIN });
}
}
}
}
}
response.ReturnTrains.Add(tren);
// Se actualizan los filtros
response.Filters.AddTrainType(tren.TrainTypeDescription, tren.TrainTypeDescription);
string timeTableDescription = MultilingualModule.GetTimeTableDescription(tren.
TimeTableType.ToString(), tren.TimeTableType.ToString(), pRequest.LanguageID);
response.Filters.AddReturnTimeTables(tren.TimeTableType, timeTableDescription);
response.Filters.AddReturnStations(tren.ArrivalStation, tren.ArrivalStationName);
response.Filters.AddReturnStations(tren.DepartureStation, tren.DepartureStationName);
tren.Classes.ForEach(clase => response.Filters.AddClass(clase.ClassCode, clase.ClassName));
}
}
}
}
};
return response;
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23msg… 9/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
== product.productType).Value as ProducTypes;
price = comp.passenger_fares[0].price,
isRequired = false,
typeDescription = productType != null ? (!string.IsNullOrEmpty(productType.name) ?
productType.name : productType.description) : ""
};
//Hay complementos opcionales como ACERCA (AAyuda a discapacitados, que traen opciones)
compl.allowedSpecialRequests.Add(allowedSpecialRequests);
}
}
else //si ya está en diccionario es porque se tomó: no se debe hacer nada
{
}
}
else // si se puede seleccionar la cantidad
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = comp.max_quantity_option == "UN" ? 999 : comp.max_quantity;
compLeg.complements.Add(compl);
}
}
else
{
if (comp.sales_quantity_option != "SD")
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = 1;
//agregar el complemento al pax
compLeg.complements.Add(compl);
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 10/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
}
else
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = comp.max_quantity_option == "UN" ? 999 : comp.max_quantity;
//agregar el complemento al pax
compLeg.complements.Add(compl);
}
};
};
};
//Ordenar por typeDescription sólo los opcionales, dejamos para el final los requeridos
compLeg.complements = compLeg.complements.OrderBy(x => x.typeDescription).ToList();
price = comp.passenger_fares[0].price,
isRequired = false,
typeDescription = productType != null ? (!string.IsNullOrEmpty(productType.name) ?
productType.name : productType.description) : ""
};
//Hay complementos opcionales como ACERCA (AAyuda a discapacitados, que traen opciones)
if (product.allowedSpecialRequests != null && product.allowedSpecialRequests.Count() > 0)
{
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 11/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
//Recuperar los datos del complemento por su fare_id
var specialRequests = comp.GetSpecialRequests();
compl.allowedSpecialRequests = new List<AllowedSpecialRequests>();
compl.allowedSpecialRequests.Add(allowedSpecialRequests);
}
}
else //si ya está en diccionario es porque se tomó: no se debe hacer nada
{
}
}
else // si se puede seleccionar la cantidad
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = comp.max_quantity_option == "UN" ? 999 : comp.max_quantity;
compLeg.complements.Add(compl);
}
}
else
{
if (comp.sales_quantity_option != "SD")
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = 1;
//agregar el complemento al pax
compLeg.complements.Add(compl);
}
else
{
//ponerle la cantidad máxima a tomar
compl.max_to_select = comp.max_quantity_option == "UN" ? 999 : comp.max_quantity;
//agregar el complemento al pax
compLeg.complements.Add(compl);
}
};
};
};
//Ordenar por typeDescription sólo los opcionales, dejamos para el final los requeridos
compLeg.complements = compLeg.complements.OrderBy(x => x.typeDescription).ToList();
compLeg.complements.AddRange(reqComplements);
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 12/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
response.ComplmentosVuelta.Add(compLeg);
}
};
};
return response;
// Aqui falta hacer los mismo con el salespresentation y quantities que se hizo para los opcionales
foreach (var add in addOnsReq)
{
bool agregar = false;
if (add.passenger_fares != null && add.passenger_fares.Length > 0)
{
}
else //si ya está en diccionario es porque se tomó: no se debe hacer nada
{
}
}
else // si se puede seleccionar la cantidad
{
//ponerle la cantidad máxima a tomar
comp.max_to_select = add.max_quantity_option == "UN" ? 999 : add.max_quantity;
agregar = true;
//compLeg.complements.Add(compl);
}
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 13/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
else
{
if (add.sales_quantity_option != "SD")
{
//ponerle la cantidad máxima a tomar
comp.max_to_select = 1;
//agregar el complemento al pax
agregar = true;
//compLeg.complements.Add(compl);
}
else
{
//ponerle la cantidad máxima a tomar
comp.max_to_select = add.max_quantity_option == "UN" ? 999 : add.max_quantity;
//agregar el complemento al pax
agregar = true;
//compLeg.complements.Add(compl);
}
};
if (agregar)
{
//Recuperar los datos del complemento por su fare_id
var specialRequests = add.GetSpecialRequests();
comp.allowedSpecialRequests = new List<AllowedSpecialRequests>();
comp.allowedSpecialRequests.Add(allowedSpecialRequests);
}
result.Add(comp);
};
}
return result;
}
/// <summary>
/// Check the train prices/ Este metododo no tiene sentido en IRyo, se devuelve lo mismo
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public static CheckPriceRs CheckPrices(CheckPriceRq pRequest)
{
CheckPriceRs response = new CheckPriceRs();
response.Trains = pRequest.Trains;
return response;
}
/// <summary>
/// Book seats
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public CreateBookingRS BookSeats(CreateBookingRQ pRequest)
{
CreateBookingRS response;
// Si no está inicializada la app, inicializarla
if (!_StartedApp) StartApp();
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 14/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
// 0. Iniciamos el conector
// _IryoBookSeatsConn connector = new _IryoBookSeatsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoBookSeatsConn.ApplicationPhysicalPath = AppPath;
_iryoBookSeatsConn.Connect();
// 2. Llamar al metodo
response = _iryoBookSeatsConn.BookSeats(pRequest);
return response;
return retorno;
}
}
}
if (!retorno) break;
}
return retorno;
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 15/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
foreach (var paxesO in PaxesOutward)
{
foreach (var sgroup in SalesGroupReturn)
{
foreach (var paxesR in sgroup.Paxes)
{
if (!string.IsNullOrEmpty(retorno)) break;
}
if (!string.IsNullOrEmpty(retorno)) break;
}
return retorno;
}
/// <summary>
/// Get the nearest station
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public GetStationRs GetStationByPDI(GetStationRq pRequest)
{
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 16/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
poi.Y = pRequest.Y;
poi.Radius = pRequest.Km;
/// <summary>
/// Just for testing purposes. Don't use.
/// </summary>
/// <param name="pRequest"></param>
/// <param name="pProcessRenfeResponse"></param>
/// <param name="renfeResponse"></param>
/// <returns></returns>
public StationCls GetStation(string pStationCode, string pPlaceId, POICls pPOI, string pLanguageID)
{
return _StationMgr.Get(pStationCode, pPlaceId, pPOI, pLanguageID);
}
return _StationMgr.GetAll();
}
/// <summary>
/// Check the train prices
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public void CheckPrices(object pRequestObject)
{
/*
// Control de nulos
if (pRequestObject == null) return;
if (!(pRequestObject is CheckPriceConnRq)) return;
CheckPriceConnRq pRequest = (pRequestObject as CheckPriceConnRq);
CheckPriceConnRq pRequest2 = new CheckPriceConnRq();
//pRequest2 = (CheckPriceConnRq)pRequest.Clone();
// 0. Iniciamos el conector
_CheckPriceConn connector = new _CheckPriceConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 17/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
// 2. Llamar al metodo
response = connector.CheckPrices(pRequest, pRequest2);
}
else
{
// Si no hubo cambio de precio
response.NewPrice = null;
}
}
else
{
// Si no hubo cambio de precio
response.NewPriceVuelta = null;
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 18/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
pRequest.Fare.FareName = MultilingualModule.GetFareName(pRequest.Fare.FareCode,
pRequest.Fare.FareName, pRequest.LanguageID);
}
else
{
response.NewFare = string.Empty;
}
pRequest.Response = response;
*/
}
/*
/// <summary>
/// Book seats
/// </summary>
/// <param name="pRequest"></param>
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 19/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
/// <returns></returns>
public static BookSeatsConnRs BookSeats(BookSeatsConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
if (pRequest.Trains == null || pRequest.Trains.Count < 1) return response;
// 0. Iniciamos el conector
_BookSeatsConn connector = new _BookSeatsConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.BookSeats(pRequest);
return response;
}
*/
/// <summary>
/// Book seats
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
/*
public static ConfirmBookConnRs ConfirmBook(ConfirmBookConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_ConfirmBookConn connector = new _ConfirmBookConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.ConfirmBook(pRequest);
return response;
}
*/
/// <summary>
/// Cancel book
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 20/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
///
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
//_IryoCancelBookConn connector = new _IryoCancelBookConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoCancelBookConn.ApplicationPhysicalPath = AppPath;
_iryoCancelBookConn.Connect();
// 2. Llamar al metodo
response = _iryoCancelBookConn.CancelTickets(pRequest, twoStep);
return response;
/// <summary>
/// Buy tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
// 0. Iniciamos el conector
// _IryoBuyTicketsConn connector = new _IryoBuyTicketsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoBuyTicketsConn.ApplicationPhysicalPath = AppPath;
// 1. Conectar
_iryoBuyTicketsConn.Connect();
// 2. Llamar al metodo
pRequest.Item1.BookingNumber = pRequest.Item2;
pRequest.Item3.bookingNumber = pRequest.Item2;
if (voucher != null) // si viene un voucher, primero hay que pagar con el voucher
{
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 21/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
var query = new VoucherPaymentRQ
{
bookingNumber = pRequest.Item3.bookingNumber,
voucherCode = voucher
};
voucherPayment = _iryoBuyTicketsConn.VoucherPayment(query);
};
return response;
}
/// <summary>
/// Buy tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
// 0. Iniciamos el conector
// _IryoBuyTicketsConn connector = new _IryoBuyTicketsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoBuyTicketsConn.ApplicationPhysicalPath = AppPath;
_iryoBuyTicketsConn.Connect();
// 2. Llamar al metodo
if (voucher != null) // si viene un voucher, primero hay que pagar con el voucher
{
var query = new VoucherPaymentRQ
{
bookingNumber = pRequest.Item3.bookingNumber,
voucherCode = voucher
};
voucherPayment = _iryoBuyTicketsConn.VoucherPayment(query);
};
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 22/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
return response;
}
/// <summary>
/// Confirm tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// 0. Iniciamos el conector
// _IryoConfirmTicketsConn connector = new _IryoConfirmTicketsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoConfirmTicketsConn.ApplicationPhysicalPath = AppPath;
// 1. Conectar
_iryoConfirmTicketsConn.Connect();
// 2. Llamar al metodo
response = _iryoConfirmTicketsConn.ConfirmBooking(bookId);
return response;
/// <summary>
/// Print tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
if (pRequest == null) return response;
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 23/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
// 0. Iniciamos el conector
//_IryoPrintTicketsConn connector = new _IryoPrintTicketsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoPrintTicketsConn.ApplicationPhysicalPath = AppPath;
_iryoPrintTicketsConn.Connect();
// 2. Llamar al metodo
response = _iryoPrintTicketsConn.PrintTickets(pRequest);
return response;
}
/// <summary>
/// Cancel tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
//_IryoCancelTicketsConn connector = new _IryoCancelTicketsConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoCancelTicketsConn.ApplicationPhysicalPath = AppPath;
// 2. Llamar al metodo
response = _iryoCancelTicketsConn.CancelTickets(pRequest);
return response;
}
/// <summary>
/// Partial cancel tickets
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_IryoPartialCancelTicketsConn connector = new _IryoPartialCancelTicketsConn();
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 24/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
connector.ApplicationPhysicalPath = AppPath;
// 2. Llamar al metodo
response = connector.PartialCancelTickets(pRequest);
return response;
/// <summary>
/// Get cancel tickets price
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_GetCancelTicketsPriceConn connector = new _GetCancelTicketsPriceConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
connector.ApplicationPhysicalPath = AppPath;
// 2. Llamar al metodo
response = connector.GetCancelTicketsPrice(pRequest);
return response;
// <summary>
/// Get ticket info
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>.
///
/*
public static GetTicketInfoConnRs GetTicketInfo(GetTicketInfoConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_GetTicketInfoConn connector = new _GetTicketInfoConn();
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 25/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.GetTicketInfo(pRequest);
return response;
}
*/
// <summary>
/// Get Graph info to Select Seats
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
public GetGraphRs GetGraph(GetGraphRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
/*
// 0. Iniciamos el conector
_GetGraphConn connector = new _GetGraphConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.GetGraph(pRequest);
*/
return response;
/// <summary>
/// Check purchase
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
/*
public static CheckPurchaseConnRs CheckPurchase(CheckPurchaseConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_CheckPurchaseConn connector = new _CheckPurchaseConn();
connector.ApplicationPhysicalPath = AppPath;
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 26/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.CheckPurchase(pRequest);
return response;
}
*/
/// <summary>
/// Check purchase
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
//_IryoGetAgencyTicketsSalesConn connector = new _IryoGetAgencyTicketsSalesConn();
if (AppPath == null)
{
AppPath = ConfigurationManager.AppSettings["AppPath"];
};
_iryoGetAgencyTicketsSalesConn.ApplicationPhysicalPath = AppPath;
// 1. Conectar
_iryoGetAgencyTicketsSalesConn.Connect();
// 2. Llamar al metodo
response = _iryoGetAgencyTicketsSalesConn.GetAgencyTicketsSales(pRequest);
return response;
}
if (pRequest.ArrivalStation == "MADRI")
pRequest.ArrivalStation = "60000";
if (pRequest.DepartureStation == "BARCE")
pRequest.DepartureStation = "71801";
if (pRequest.ArrivalStation == "BARCE")
pRequest.ArrivalStation = "71801";
//_IryoGetRoutesConn connector = new _IryoGetRoutesConn();
_iryoGetRoutesConn.Connect();
var internalResult = _iryoGetRoutesConn.GetRoutes(pRequest.DepartureStation, pRequest.ArrivalStation);
return RoutesBuilder.ConvertToDomain(internalResult);
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 27/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
/// <summary>
/// Check purchase
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
/*
public static GetTrainComplementsConnRS GetTrainComplements(GetTrainComplementsConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
// 0. Iniciamos el conector
_GetTrainComplementsConn connector = new _GetTrainComplementsConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.GetTrainComplements(pRequest);
return response;
}
*/
/// <summary>
/// Book seats
/// </summary>
/// <param name="pRequest"></param>
/// <returns></returns>
///
/*
public static BookSeatsGraphConnRs BookSeatsGraph(BookSeatsGraphConnRq pRequest)
{
// Control de nulos
if (pRequest == null) return response;
if (pRequest.Trains == null || pRequest.Trains.Count < 1) return response;
// 0. Iniciamos el conector
_BookSeatsGraphConn connector = new _BookSeatsGraphConn();
connector.ApplicationPhysicalPath = AppPath;
// 1. Conectar
connector.Connect(pRequest.Credentials);
// 2. Llamar al metodo
response = connector.BookSeatsGraph(pRequest);
return response;
}
*/
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 28/29
24/10/24, 10:16 Correo de EMOVEERE CONSULTING - (sin asunto)
}
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r7863908847553903134&dsqt=1&simpl=%23ms… 29/29