0% found this document useful (0 votes)
17 views46 pages

Train Controller

.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views46 pages

Train Controller

.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 46

24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)

Enric Jimenez <[email protected]>

(sin asunto)
Enric Jimenez <[email protected]> 24 de octubre de 2024, 15:23
Borrador

using HappyTren.Core.Model.Trace;
using HappyTren.Core.Model.Train;
using HappyTren.ERP.BModel;
//using HappyTren.Insurance.IntermundialConnector.Internals;
//using HappyTren.Insurance.IntermundialConnector.Internals.Model.Response;
using HappyTren.Train.Aggregator.Interfaces;
using HappyTren.WebApi.Helpers;
using HappyTren.WebApi.Models;
using HappyTren.WebApi.Models.Generic;
using HappyTren.WebApi.Models.Train;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using Newtonsoft.Json;
using Microsoft.AspNetCore.Mvc;
using AutoMapper;
using System.Web.Http.Results;
using static HappyTren.WebApi.Models.Generic.ApiPlaces;
using HappyTren.WebApi.Helpers.DI;
using HappyTren.WebApi.App_Start;
using HappyTren.Train.Aggregator.Internals;
using AppConfig;

namespace HappyTren.WebApi.Controllers
{
public class TrainController : ControllerBase
{
private readonly AppSettings _appSettings;

/// <summary>
/// private int productId = App_Start.AppSettings.productId;
/// </summary>

private readonly ERPHelperDI _eRPHelperDI;


private readonly RequestHelperDI _requestHelperDI;
private readonly TrainMgr _trainMgr;

public TrainController(ERPHelperDI eRPHelperDI, AppSettings appSettings, RequestHelperDI requestHelperDI,


TrainMgr trainMgr)
{
_eRPHelperDI = eRPHelperDI;
_appSettings = appSettings;
_requestHelperDI = requestHelperDI;
_trainMgr = trainMgr;
}

[HttpPost]
//[ActionName("GetStationByPDI")]
[Route("api/Train/GetStationByPDI")]
public IActionResult GetStationByPDI(SationsSearch pRequest)
{
var valid = ValidoGetStationByPDI(pRequest);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 1/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
if (valid != null)
{
return BadRequest(valid);
}
GetStationRs rs = null;
try
{

GetStationRq stationRq = _requestHelperDI.GenerateGetStationByPDIRequest(pRequest);

rs = _trainMgr.GetStationByPDI(stationRq);
}
catch (Exception ex)
{

}
finally
{
}

return Ok(rs);

[HttpGet]
[Route("api/HealthCheck")]
public IActionResult HealthCheck(SationsSearch pRequest)
{
return Ok("OK");
}

[HttpPost]
//[ActionName("GetStationByStationCode")]
[Route("api/Train/GetStationByStationCode")]
public IActionResult GetStationByStationCode(SationsSearch pRequest)
{
var valid = ValidoGetStationByStationCode(pRequest);
if (valid != null)
{
return BadRequest(valid);
}
GetStationRs rs = null;
try
{
GetStationRq stationRq = _requestHelperDI.GenerateGetStationByCode(pRequest);

rs = _trainMgr.GetStationByStationCode(stationRq);
}
catch (Exception ex)
{

}
finally
{
}

return Ok(rs);

[HttpPost]
[Route("api/Train/GetTrains")]
//[ActionName("GetTrains")]
public IActionResult GetTrains(TrainSearch pRequest)
{
var valid = ValidoGetTrains(pRequest);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 2/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
if (valid != null)
{
return BadRequest(valid);
}

GetTrainsRs rs = new GetTrainsRs();


ERPUser user;

try
{
user = _eRPHelperDI.GetUserByToken(pRequest.token);
string commisionGroupId = null;
int travelAgencyId = 0;
if (user.ERP_TRAVEL_AGENCY != null && user.ERP_TRAVEL_AGENCY.FirstOrDefault() != null)
{
travelAgencyId = user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID;
if (user.ERP_TRAVEL_AGENCY.First().ERP_COMMISION_GROUP_TRAVEL_AGENCY != null
&& user.ERP_TRAVEL_AGENCY.First().ERP_COMMISION_GROUP_TRAVEL_
AGENCY.FirstOrDefault() != null)
{
if (user.ERP_TRAVEL_AGENCY.First().ERP_COMMISION_GROUP_TRAVEL_AGENCY.Where(x =>
x.DATE_FROM <= DateTime.Now && x.DATE_TO >= DateTime.Now).FirstOrDefault() != null)
{
commisionGroupId = user.ERP_TRAVEL_AGENCY.First().ERP_COMMISION_GROUP_TRAVEL_
AGENCY.Where(x => x.DATE_FROM <= DateTime.Now && x.DATE_TO >= DateTime.Now).FirstOrDefault()
.COMMISION_GROUP_ID;
}
}
}
var trainRq = _requestHelperDI.GenerateGetTrainRequest(pRequest, _appSettings.ProductId,
travelAgencyId, commisionGroupId);

rs = _trainMgr.GetTrains(trainRq);

//Limpiar la rs
if (rs.OutwardTrains != null)
{
rs.OutwardTrains.All(x => x.Classes.All(x1 => x1.SalesGroups.All(x2 => x2.Cabins.All(x3 =>
x3.Paxes.All(x4 => x4.Fares.All(c => { c.SaleCurrency = "EUR"; return true; }))))));
if (rs.ReturnTrains != null)
{
rs.ReturnTrains.All(x => x.Classes.All(x1 => x1.SalesGroups.All(x2 => x2.Cabins.All(x3 =>
x3.Paxes.All(x4 => x4.Fares.All(c => { c.SaleCurrency = "EUR"; return true; }))))));
}
rs.ApiSession = Guid.NewGuid().ToString();
CacheHelper.Add("ResultadoTrenes" + rs.ApiSession, rs);
CacheHelper.Add("BusquedaTrenes" + rs.ApiSession, pRequest);
CacheHelper.Add("Usuario" + rs.ApiSession, user);
}
}
catch (Exception ex)
{

ErrorModel em = new ErrorModel();


em.Code = ErrorCode.ERRORINTERNO;
em.Reason = ex.Message;
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
finally
{

try
{

string host = "";


string ip = "";
if (user != null && !string.IsNullOrEmpty(user.EMAIL))

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 3/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
ip = user.EMAIL;
}

string u = pRequest.token;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "GetTrains", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(rs);
LogHelper.SaveLogLogin(host, ip, "GetTrains", u, operacion, txt);

}
catch (Exception ex)
{
}

return Ok(rs);

[HttpPost]
[Route("api/Train/CancelProvisionalBooking")]
//[ActionName("GetTrains")]
public IActionResult CancelProvisionalBooking([FromBody] CancelBookRq pRequest)
{
var rs = new CancelBookRs();

pRequest.isProvisional = true;
rs = _trainMgr.CancelBook(pRequest);

return Ok(rs);
}

[HttpPost]
[Route("api/Train/BookTrains")]
//[ActionName("GetTrains")]
public IActionResult BookTrains([FromBody] TrainBook pRequest)
{

ERPUser u2 = null;

var valid = ValidoBookTrains(pRequest);

if (valid != null)
{
return BadRequest(valid);
}

if (pRequest.fee == null) { pRequest.fee = "0"; }


if (pRequest.markup == null) { pRequest.markup = "0"; }

TrainSearch searchParameters = CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) as


TrainSearch;
CacheHelper.Add("TrainBookRequest" + pRequest.apiSession, pRequest);
if (searchParameters != null)
{
TrainBookResponse response = new TrainBookResponse();
response.ApiSession = pRequest.apiSession;
try
{

//Get searchResult from session

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 4/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
GetTrainsRs UITrainsResult = CacheHelper.Get("ResultadoTrenes" + pRequest.apiSession) as
GetTrainsRs;

TrainCls outwardTrain = UITrainsResult.OutwardTrains.Where(o => o.TrainTypeDescription +


o.TrainNumber == pRequest.outwardId).FirstOrDefault();
if (outwardTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de ida {0} no fue encontrado", pRequest.outwardId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (outwardTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de ida no fue encontrada",
pRequest.classCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes = new List<ClassCls>(outwardTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeOutward).ToList());
if (outwardTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de ida no fue encontrado",
pRequest.classSalesGroupCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(outwardTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeOutward));
}
}
TrainCls returnTrain = null;
if (!string.IsNullOrEmpty(pRequest.retId))
{
returnTrain = UITrainsResult.ReturnTrains.Where(o => o.TrainTypeDescription + o.TrainNumber ==
pRequest.retId).FirstOrDefault();
if (returnTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de vuelta {0} no fue encontrado", pRequest.retId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (returnTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de vuelta no fue encontrada",
pRequest.classCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes = new List<ClassCls>(returnTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeReturn).ToList());
if (returnTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 5/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
classSalesGroupCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de vuelta no fue
encontrado", pRequest.classSalesGroupCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(returnTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeReturn));
}
}
}

// 1 CheckPrices
ERPUser user = CacheHelper.Get("Usuario" + pRequest.apiSession) as ERPUser;
u2 = user;
var tempCommisionGroupNow = user.ERP_TRAVEL_AGENCY.First()
.ERP_COMMISION_GROUP_TRAVEL_AGENCY != null ? user.ERP_TRAVEL_AGENCY.First()
.ERP_COMMISION_GROUP_TRAVEL_AGENCY.Where(x => x.DATE_FROM <= DateTime.Now && x.DATE_TO >=
DateTime.Now).FirstOrDefault() : null;

CheckPriceRq cpRq = _requestHelperDI.GenerateRequestCheckPrices(outwardTrain, returnTrain,


_appSettings.ProductId, user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID, tempCommisionGroupNow !=
null ? tempCommisionGroupNow.COMMISION_GROUP_ID : string.Empty);

CheckPriceRs cpRs = _trainMgr.CheckPrices(cpRq);

// Tratamiento de errores
if (cpRs.Errors != null && cpRs.Errors.Count > 0)
{
foreach (var error in cpRs.Errors)
{
response.AddError(error.Text);
}
}

BookSeatsRs bsRs = null;


if (response.Errors == null)
{
// 2 Book Seats
BookSeatsRq bsRq = _requestHelperDI.GenerateRequestBookSeats(outwardTrain, returnTrain,
_appSettings.ProductId, pRequest.travelAloneOutward, pRequest.travelAloneReturn, pRequest.silentCarOutward,
pRequest.silentCarReturn);

bsRs = _trainMgr.BookSeats(bsRq);

CacheHelper.Add("BookSeatsRq" + pRequest.apiSession, bsRq);


CacheHelper.Add("BookSeatsRs" + pRequest.apiSession, bsRs);

if (bsRs.Errors != null && bsRs.Errors.Count > 0)


{
foreach (var error in bsRs.Errors)
{
response.AddError(error.Text);
}
}

ConfirmBookRs cbRs = null;


if (response.Errors == null)
{
// 3 Confirm Book Seats
ConfirmBookRq cbRq = _requestHelperDI.GenerateRequestConfirmBookSeat
s(bsRs.BookSeatsID);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 6/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
cbRs = _trainMgr.ConfirmBook(cbRq);

response.BookId = bsRs.BookSeatsID;

if (cbRs.Errors != null && cbRs.Errors.Count > 0)


{
foreach (var error in cbRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
CacheHelper.Add("ConfirmBookSeatsRs" + pRequest.apiSession, cbRs);
response.LimitDate = cbRs.LimitReleaseDate;

response.Passengers = new List<Passenger>();


foreach (ClassCls trainClass in bsRq.Trains[0].Classes)
{
foreach (SalesGroupCls saleGroup in trainClass.SalesGroups)
{
foreach (PaxesCls pax in saleGroup.Paxes.OrderBy(p => p.PaxType))
{
for (int i = 0; i < pax.PaxNumber; i++)
{
Passenger trnPas = new Passenger();
trnPas.PaxType = pax.PaxType;
trnPas.Name = "";
trnPas.FirstSurname = "";
trnPas.SecondSurname = "";
if (response.Passengers.Count == 0)
{
trnPas.Email = "";
}
if (pax.PaxType == "TJO" || pax.PaxType == "TDO")
{
trnPas.Document = "";
}
trnPas.Index = response.Passengers.Count + 1;
response.Passengers.Add(trnPas);
}
}
}
}
}
}
}

if (response.Errors == null || response.Errors.Count == 0)


{
//Informamos precios para verlos en checkout
var cantAdultos = 0;
var cantChilds = 0;
var cantInfants = 0;
var cantPlus50 = 0;
var cantGolden = 0;

var paxes = outwardTrain.Classes.First().SalesGroups.First().Paxes;


cantAdultos = paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().PaxNumber : 0;
cantChilds = paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().PaxNumber : 0;
cantInfants = paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null ?
paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().PaxNumber : 0;
cantPlus50 = paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().PaxNumber : 0;
cantGolden = paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().PaxNumber : 0;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 7/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
var totalPaxes = cantAdultos + cantChilds + cantInfants + cantPlus50 + cantGolden;

decimal priceAdultos = 0;
decimal priceChilds = 0;
decimal priceInfants = 0;
decimal pricePlus50 = 0;
decimal priceGolden = 0;
priceAdultos = paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantAdultos + (decimal.Parse(pRequest.fee) / totalPaxes) * cantAdultos : 0;
priceChilds = paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantChilds + (decimal.Parse(pRequest.fee) / totalPaxes) * cantChilds : 0;
priceInfants = paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantInfants + (decimal.Parse(pRequest.fee) / totalPaxes) * cantInfants : 0;
pricePlus50 = paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantPlus50 + (decimal.Parse(pRequest.fee) / totalPaxes) * cantPlus50 : 0;
priceGolden = paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantGolden + (decimal.Parse(pRequest.fee) / totalPaxes) * cantGolden : 0;

decimal amount = 0;
var pasajeros = outwardTrain.Classes.First().SalesGroups.First().Paxes;
amount = pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() != null
? pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Fares[0].CurNetTa * cantAdultos : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Fares[0].CurNetTa * cantChilds : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null
? pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Fares[0].CurNetTa * cantInfants : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Fares[0].CurNetTa * cantPlus50 : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Fares[0].CurNetTa * cantGolden :
0;

if (returnTrain != null)
{
paxes = returnTrain.Classes.First().SalesGroups.First().Paxes;
priceAdultos += paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantAdultos : 0;
priceChilds += paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantChilds : 0;
priceInfants += paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantInfants : 0;
pricePlus50 += paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantPlus50 : 0;
priceGolden += paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault()
!= null ? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantGolden : 0;

pasajeros = returnTrain.Classes.First().SalesGroups.First().Paxes;
amount += pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Fares[0].CurNetTa * cantAdultos :
0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Fares[0].CurNetTa * cantChilds : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Fares[0].CurNetTa * cantInfants : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Fares[0].CurNetTa * cantPlus50 : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Fares[0].CurNetTa * cantGolden :
0;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 8/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)

priceAdultos = Math.Round(priceAdultos, 2);


priceChilds = Math.Round(priceChilds, 2);
priceInfants = Math.Round(priceInfants, 2);
pricePlus50 = Math.Round(pricePlus50, 2);
priceGolden = Math.Round(priceGolden, 2);

response.AmountToPay = amount;
response.Amount = Math.Round((1 + decimal.Parse(pRequest.markup) / 100) * amount +
decimal.Parse(pRequest.fee), 2);

//if (user.ERP_COMPANY1.FirstOrDefault() != null)


//{
// if (user.ERP_COMPANY1.FirstOrDefault().CREDIT_TYPE_ID == "PRE")
// {
// response.CreditCards = ERPHelper.GetCreditCardListItems(user.UserId);
// }
//}
//else
//{
// response.CreditCards = ERPHelper.GetCreditCardListItems(user.UserId);
//}

//Guardo la respuesta para obtener los montos al comprar


CacheHelper.Add("RespuestaBook" + pRequest.apiSession, response);

//var insurances = InsuranceHelper.GetCancelInsurance(searchParameters,


response.AmountToPay.Value);
//if (insurances != null)
//{
// response.InsurancePrice = insurances.First().Price;
// CacheHelper.Add("SegurosCancelacion" + pRequest.apiSession, insurances);
//}
//else
//{
// response.InsurancePrice = -1;
//}
}
}

catch (Exception ex)


{
response.AddError(ex.Message);
}

try
{

string host = "";


string ip = "";
if (u2 != null && !string.IsNullOrEmpty(u2.EMAIL))
{
ip = u2.EMAIL;
}

string u = pRequest.apiSession;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "BookTrains", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(response);
LogHelper.SaveLogLogin(host, ip, "BookTrains", u, operacion, txt);

}
catch (Exception ex)
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23ms… 9/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}

//Navigate to Checkout Page


return Ok(response);
}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.EXPIRADO;
em.Reason = "Vuelva a realizar la búsqueda";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}

[HttpPost]
[Route("api/Train/BookTrainsGraph")]
//[ActionName("BookTrainsGraph")]
public IActionResult BookTrainsGraph(TrainBook pRequest)
{

ERPUser u2 = null;

var valid = ValidoBookTrains(pRequest);


if (valid != null)
{
return BadRequest(valid);
}
TrainSearch searchParameters = CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) as
TrainSearch;
CacheHelper.Add("TrainBookRequest" + pRequest.apiSession, pRequest);
if (searchParameters != null)
{
TrainBookResponse response = new TrainBookResponse();
response.ApiSession = pRequest.apiSession;
try
{

//Get searchResult from session


GetTrainsRs UITrainsResult = CacheHelper.Get("ResultadoTrenes" + pRequest.apiSession) as
GetTrainsRs;

TrainCls outwardTrain = UITrainsResult.OutwardTrains.Where(o => o.TrainTypeDescription +


o.TrainNumber == pRequest.outwardId).FirstOrDefault();
if (outwardTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de ida {0} no fue encontrado", pRequest.outwardId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (outwardTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de ida no fue encontrada",
pRequest.classCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes = new List<ClassCls>(outwardTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeOutward).ToList());
if (outwardTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 10/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de ida no fue encontrado",
pRequest.classSalesGroupCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(outwardTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeOutward));
}
}
TrainCls returnTrain = null;
if (!string.IsNullOrEmpty(pRequest.retId))
{
returnTrain = UITrainsResult.ReturnTrains.Where(o => o.TrainTypeDescription + o.TrainNumber ==
pRequest.retId).FirstOrDefault();
if (returnTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de vuelta {0} no fue encontrado", pRequest.retId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (returnTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de vuelta no fue encontrada",
pRequest.classCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes = new List<ClassCls>(returnTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeReturn).ToList());
if (returnTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de vuelta no fue
encontrado", pRequest.classSalesGroupCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(returnTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeReturn));
}
}
}

// 1 CheckPrices
ERPUser user = CacheHelper.Get("Usuario" + pRequest.apiSession) as ERPUser;
u2 = user;
var tempCommisionGroupNow = user.ERP_TRAVEL_AGENCY.First()
.ERP_COMMISION_GROUP_TRAVEL_AGENCY != null ? user.ERP_TRAVEL_AGENCY.First()
.ERP_COMMISION_GROUP_TRAVEL_AGENCY.Where(x => x.DATE_FROM <= DateTime.Now && x.DATE_TO >=
DateTime.Now).FirstOrDefault() : null;

CheckPriceRq cpRq = _requestHelperDI.GenerateRequestCheckPrices(outwardTrain, returnTrain,


_appSettings.ProductId, user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID, tempCommisionGroupNow !=
null ? tempCommisionGroupNow.COMMISION_GROUP_ID : string.Empty);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 11/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
CheckPriceRs cpRs = _trainMgr.CheckPrices(cpRq);

// Tratamiento de errores
if (cpRs.Errors != null && cpRs.Errors.Count > 0)
{
foreach (var error in cpRs.Errors)
{
response.AddError(error.Text);
}
}

BookSeatsGraphRs bsRs = null;


if (response.Errors == null)
{
// 2 Book Seats
BookSeatsGraphRq bsRq = _requestHelperDI.GenerateRequestBookSeatsGraph(outwardTrain,
returnTrain, _appSettings.ProductId, pRequest);

bsRs = _trainMgr.BookSeatsGraph(bsRq);
bsRs.ApiSession = pRequest.apiSession;

CacheHelper.Add("BookSeatsRq" + pRequest.apiSession, bsRq);


CacheHelper.Add("BookSeatsRs" + pRequest.apiSession, bsRs);

if (bsRs.Errors != null && bsRs.Errors.Count > 0)


{
foreach (var error in bsRs.Errors)
{
response.AddError(error.Text);
}
}

ConfirmBookRs cbRs = null;


if (response.Errors == null)
{
// 3 Confirm Book Seats
ConfirmBookRq cbRq = _requestHelperDI.GenerateRequestConfirmBookSeat
s(bsRs.BookSeatsID);

cbRs = _trainMgr.ConfirmBook(cbRq);

if (cbRs.Errors != null && cbRs.Errors.Count > 0)


{
foreach (var error in cbRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
CacheHelper.Add("ConfirmBookSeatsRs" + pRequest.apiSession, cbRs);
response.LimitDate = cbRs.LimitReleaseDate;

response.Passengers = new List<Passenger>();


foreach (ClassCls trainClass in bsRq.Trains[0].Classes)
{
foreach (SalesGroupCls saleGroup in trainClass.SalesGroups)
{
foreach (PaxesCls pax in saleGroup.Paxes.OrderBy(p => p.PaxType))
{
for (int i = 0; i < pax.PaxNumber; i++)
{
Passenger trnPas = new Passenger();
trnPas.PaxType = pax.PaxType;
trnPas.Name = "";
trnPas.FirstSurname = "";
trnPas.SecondSurname = "";
if (response.Passengers.Count == 0)
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 12/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
trnPas.Email = "";
}
if (pax.PaxType == "TJO" || pax.PaxType == "TDO")
{
trnPas.Document = "";
}
trnPas.Index = response.Passengers.Count + 1;
response.Passengers.Add(trnPas);
}
}
}
}
}
}
}

if (response.Errors == null || response.Errors.Count == 0)


{
//Informamos precios para verlos en checkout
var cantAdultos = 0;
var cantChilds = 0;
var cantInfants = 0;
var cantPlus50 = 0;
var cantGolden = 0;

var paxes = outwardTrain.Classes.First().SalesGroups.First().Paxes;


cantAdultos = paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().PaxNumber : 0;
cantChilds = paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().PaxNumber : 0;
cantInfants = paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null ?
paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().PaxNumber : 0;
cantPlus50 = paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().PaxNumber : 0;
cantGolden = paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().PaxNumber : 0;

var totalPaxes = cantAdultos + cantChilds + cantInfants + cantPlus50 + cantGolden;

decimal priceAdultos = 0;
decimal priceChilds = 0;
decimal priceInfants = 0;
decimal pricePlus50 = 0;
decimal priceGolden = 0;
priceAdultos = paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantAdultos + (decimal.Parse(pRequest.fee) / totalPaxes) * cantAdultos : 0;
priceChilds = paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantChilds + (decimal.Parse(pRequest.fee) / totalPaxes) * cantChilds : 0;
priceInfants = paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantInfants + (decimal.Parse(pRequest.fee) / totalPaxes) * cantInfants : 0;
pricePlus50 = paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() != null
? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantPlus50 + (decimal.Parse(pRequest.fee) / totalPaxes) * cantPlus50 : 0;
priceGolden = paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantGolden + (decimal.Parse(pRequest.fee) / totalPaxes) * cantGolden : 0;

decimal amount = 0;
var pasajeros = outwardTrain.Classes.First().SalesGroups.First().Paxes;
amount = pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() != null
? pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Fares[0].CurNetTa * cantAdultos : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Fares[0].CurNetTa * cantChilds : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() != null
? pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Fares[0].CurNetTa * cantInfants : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 13/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
null ? pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Fares[0].CurNetTa * cantPlus50 : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Fares[0].CurNetTa * cantGolden :
0;

if (returnTrain != null)
{
paxes = returnTrain.Classes.First().SalesGroups.First().Paxes;
priceAdultos += paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantAdultos : 0;
priceChilds += paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantChilds : 0;
priceInfants += paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantInfants : 0;
pricePlus50 += paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=
null ? paxes.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantPlus50 : 0;
priceGolden += paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault()
!= null ? paxes.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Price * (1 +
decimal.Parse(pRequest.markup) / 100) * cantGolden : 0;

pasajeros = returnTrain.Classes.First().SalesGroups.First().Paxes;
amount += pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.ADT.ToString()).First().Fares[0].CurNetTa * cantAdultos :
0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.CHD.ToString()).First().Fares[0].CurNetTa * cantChilds : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.INF.ToString()).First().Fares[0].CurNetTa * cantInfants : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TJO.ToString()).First().Fares[0].CurNetTa * cantPlus50 : 0;
amount += pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).FirstOrDefault() !=
null ? pasajeros.Where(x => x.PaxType == PassengerType.TDO.ToString()).First().Fares[0].CurNetTa * cantGolden :
0;

priceAdultos = Math.Round(priceAdultos, 2);


priceChilds = Math.Round(priceChilds, 2);
priceInfants = Math.Round(priceInfants, 2);
pricePlus50 = Math.Round(pricePlus50, 2);
priceGolden = Math.Round(priceGolden, 2);

response.AmountToPay = amount;
response.Amount = Math.Round((1 + decimal.Parse(pRequest.markup) / 100) * amount +
decimal.Parse(pRequest.fee), 2);

//Guardo la respuesta para obtener los montos al comprar


CacheHelper.Add("RespuestaBook" + pRequest.apiSession, response);

//var insurances = InsuranceHelper.GetCancelInsurance(searchParameters,


response.AmountToPay.Value);
//if (insurances != null)
//{
// response.InsurancePrice = insurances.First().Price;
// CacheHelper.Add("SegurosCancelacion" + pRequest.apiSession, insurances);
//}
//else
//{
// response.InsurancePrice = -1;
//}
}
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 14/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
catch (Exception ex)
{
response.AddError(ex.Message);
}

try
{

string host = "";


string ip = "";
if (u2 != null && !string.IsNullOrEmpty(u2.EMAIL))
{
ip = u2.EMAIL;
}

string u = pRequest.apiSession;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "BookTrains", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(response);
LogHelper.SaveLogLogin(host, ip, "BookTrains", u, operacion, txt);

}
catch (Exception ex)
{
}

//Navigate to Checkout Page


return Ok(response);
}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.EXPIRADO;
em.Reason = "Vuelva a realizar la búsqueda";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}

[HttpPost]
[Route("api/Train/BuyTrains")]
//[ActionName("GetTrains")]
public IActionResult BuyTrains([FromBody] TrainBuy pRequest)
{
var valid = ValidoTrainBuy(pRequest);
if (valid != null)
{
return BadRequest(valid);
};

if (pRequest.voucher != null && pRequest.voucher.Trim() == "")


{
pRequest.voucher = null;
};

TrainBuyResponse response = new TrainBuyResponse();


BL_Response cncPayment;

var cbRs = CacheHelper.Get("ConfirmBookSeatsRs" + pRequest.apiSession) as ConfirmBookRs;


var bsRs = CacheHelper.Get("BookSeatsRs" + pRequest.apiSession) as BookSeatsRs;
var bsRs1 = CacheHelper.Get("BookSeatsRs" + pRequest.apiSession) as BookSeatsGraphRs;
if (bsRs1 != null)
{
bsRs = new BookSeatsRs();
bsRs.ApiSession = bsRs1.ApiSession;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 15/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
bsRs.BookSeatsID = bsRs1.BookSeatsID;
bsRs.Trains = bsRs1.Trains;
}
var user = CacheHelper.Get("Usuario" + pRequest.apiSession) as ERPUser;
var trainBook = CacheHelper.Get("TrainBookRequest" + pRequest.apiSession) as TrainBook;

var fileResponse = _eRPHelperDI.SaveFileERP(pRequest.apiSession, cbRs, bsRs,


decimal.Parse(trainBook.fee), decimal.Parse(trainBook.markup), user.UserId, pRequest.passengers.First(),
pRequest.BookingReferenceTA);
if (fileResponse.ok)
{
BookSeatsRq bsRq = CacheHelper.Get("BookSeatsRq" + pRequest.apiSession) as BookSeatsRq;
BookSeatsGraphRq bsRq1 = CacheHelper.Get("BookSeatsRq" + pRequest.apiSession) as
BookSeatsGraphRq;
if (bsRq1 != null)
{
bsRq = new BookSeatsRq();
bsRq.DirectionPreferences = bsRq1.DirectionPreferences;
bsRq.GroupPreferences = bsRq1.GroupPreferences;
bsRq.SeatPreferences = bsRq1.SeatPreferences;

bsRq.Trains = bsRq1.Trains;
}
BuyTicketsRq btRq = _requestHelperDI.GenerateRequestBuyTickets(pRequest.passengers, bsRq, bsRs,
pRequest.BookingReferenceTA, pRequest.voucher);

var serviceResponse = _eRPHelperDI.SaveFileService(bsRs, fileResponse.newEntityId,


pRequest.passengers, btRq);

var monto = (CacheHelper.Get("RespuestaBook" + pRequest.apiSession) as TrainBookResponse).


AmountToPay;
//var seguros = CacheHelper.Get("SegurosCancelacion" + pRequest.apiSession) as
List<PricingInsuranceRs>;
//BL_Response serviceInsuranceResponse = null;

//if (bool.Parse(pRequest.seguroCancelacion))
//{

// //guardo datos del seguro de cancelacion


// serviceInsuranceResponse = ERPHelper.SaveFileServiceInsurance(seguros.First(),
fileResponse.newEntityId, fileResponse.extraObject as ERPFile, pRequest.passengers);
// monto += seguros.First().CurNetTa;
// ERPHelper.UpdateAmountFile(fileResponse.newEntityId, seguros.First());
//}

BL_Response paymentResponse = new BL_Response();


if (user.ERP_COMPANY1.FirstOrDefault() != null)
{
// LC25.09.21 - se quita el control de crédito para trenes por ByTour, pero se quita para todos.
if (user.ERP_COMPANY1.FirstOrDefault().CREDIT_TYPE_ID != "QUITAR PARA BYTOUR")
//if (user.ERP_COMPANY1.FirstOrDefault().CREDIT_TYPE_ID == "CRE")
{
paymentResponse.ok = true;
}
else
{
var ccs = _eRPHelperDI.GetCreditCardListItems(user.UserId);
if (ccs == null || ccs.Count == 0)
{
paymentResponse.ok = false;
paymentResponse.Error = "No tiene tarjeta de crédito tokenizada.";
}
else
{
paymentResponse = _eRPHelperDI.DoPayment("EUR", ccs.First().Id, monto.Value, user.UserId,
fileResponse.newEntityId);
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 16/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}
else
{
var ccs = _eRPHelperDI.GetCreditCardListItems(user.UserId);
if (ccs == null || ccs.Count == 0)
{
paymentResponse.ok = false;
paymentResponse.Error = "No tiene tarjeta de crédito tokenizada.";
}
else
{
paymentResponse = _eRPHelperDI.DoPayment("EUR", ccs.First().Id, monto.Value, user.UserId,
fileResponse.newEntityId);
}
}

if (paymentResponse.ok)
{
try
{
//Comienzo contratacion de seguro en paralelo
var fileRef = (fileResponse.extraObject as ERPFile).BOOKING_REFERENCE;
//var insuranceTask = Task<string>.Factory.StartNew(() => HireInsurances(seguros, pRequest, fileRef,
bsRs, serviceInsuranceResponse));

// 1 Buy Tickets
BuyTicketsRs btRs = _trainMgr.BuyTickets(btRq);

if (btRs.Errors != null && btRs.Errors.Count > 0)


{
foreach (var error in btRs.Errors)
{
response.AddError(error.Text);
}
if (paymentResponse.newEntityId != 0)
{
cncPayment = _eRPHelperDI.DoCancelPayment(paymentResponse.newEntityId);
if (!cncPayment.ok)
{
response.AddError("Ocurrió error cancelando el pago: " + cncPayment.Error);
}
}
_eRPHelperDI.UpdateFailBooking(serviceResponse.newEntityId);
}

if (response.Errors == null)
{
/* Caltulo el importe total */
decimal iTotal = 0;
foreach (TicketCls tk in btRs.OutwardTickets)
{
iTotal = iTotal + tk.TicketPrice;
if (tk.Complements != null)
{
foreach (BuyComplements co in tk.Complements)
{
iTotal = iTotal + co.complement_price;
}
}
}

foreach (TicketCls tk in btRs.ReturnTickets)


{
iTotal = iTotal + tk.TicketPrice;
if (tk.Complements != null)
{
foreach (BuyComplements co in tk.Complements)
{
iTotal = iTotal + co.complement_price;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 17/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}
}
}

response.TotalAmount = iTotal;
_eRPHelperDI.UpdateAmountFile(fileResponse.newEntityId, iTotal);

response.RenfeLocalizador = btRs.TicketID;
// 2 Confirm Tickets
ConfirmTicketsRq ctRq = _requestHelperDI.GenerateRequestConfirmTickets(btRs.TicketID);
ConfirmTicketsRs ctRs = _trainMgr.ConfirmTickets(ctRq);

if (ctRs.Errors != null && ctRs.Errors.Count > 0)


{
foreach (var error in ctRs.Errors)
{
response.AddError(error.Text);
}
if (paymentResponse.newEntityId != 0)
{
cncPayment = _eRPHelperDI.DoCancelPayment(paymentResponse.newEntityId);
if (!cncPayment.ok)
{
response.AddError("Ocurrió un error cancelando el pago: " + cncPayment.Error);
}
}
_eRPHelperDI.UpdateFailBooking(serviceResponse.newEntityId);
}

if (response.Errors == null)
{
_eRPHelperDI.UpdateService(serviceResponse.newEntityId, btRs);
_eRPHelperDI.UpdateFileServiceLine(serviceResponse.newEntityId, btRs);

// (25.03.2019) Tendria que recuperar todos los numeros de billete a Pedido de Triporate.
response.OutwardTickets = btRs.OutwardTickets;
response.ReturnTickets = btRs.ReturnTickets;

}
//Task.WhenAll(insuranceTask);
//if (!string.IsNullOrEmpty(insuranceTask.Result))
//{
// ERPHelper.UpdateFileStatus(insuranceTask.Result.Split('|')[0], insuranceTask.Result.Split('|')[1],
fileResponse.newEntityId);
//}

response.Status = "OK";
response.ApiSession = pRequest.apiSession;
response.Id = fileRef;
response.FileId = fileResponse.newEntityId;

/*Agrego un control de errores para evitar problemas con el envio de los emails*/
try
{
string toAddress = user.EMAIL;
string subject = "VENTAAPI-TREN-ID:" + response.FileId + "-AG:" +
user.ERP_TRAVEL_AGENCY.First().NAME;

string body = bsRs.Trains[0].DepartureStationName + "-" + bsRs.Trains[0].ArrivalStationName +


"-" + bsRs.Trains[0].DepartureTime.ToString();

MailHelper.SendMail(toAddress, subject, body);


}
catch (Exception ex) { response.AddError(ex.Message); };

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 18/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}
catch (Exception ex)
{
response.AddError(ex.Message);
}
}
else
{
response.AddError("Ocurrió un error procesando el pago. ERROR: " + paymentResponse.Error);
}
}
else
{
response.AddError("Error al grabar el FILE");
}

try
{

string host = "";


string ip = "";
if (user != null && !string.IsNullOrEmpty(user.EMAIL))
{
ip = user.EMAIL;
}

string u = pRequest.apiSession;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "BuyTrains", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(response);
LogHelper.SaveLogLogin(host, ip, "BuyTrains", u, operacion, txt);

}
catch (Exception ex)
{
}
return Ok(response);
}

[HttpPost]
[Route("api/Train/PrintTickets")]
//[ActionName("GetTrains")]
public IActionResult PrintTickets([FromForm] TicketsPrint pRequest)
{
var valid = ValidoPrintTickets(pRequest);
if (valid != null)
{
return BadRequest(valid);
}
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
TrainPrintResponse response = new TrainPrintResponse();

var file = _eRPHelperDI.GetFileForId(int.Parse(pRequest.fileId));


if (file == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILENOENCONTRADO;
em.Reason = "No existe el fileId ingresado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
if (user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID == file.TRAVEL_AGENCY_ID)
{
var service = file.ERP_SERVICE.FirstOrDefault(s => s.SERVICE_TYPE_ID == "TRA");

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 19/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
if (service != null)
{
if (service.ERP_VOUCHER == null || service.ERP_VOUCHER.Count() == 0)
{
PrintTicketsRq ptRq = _requestHelperDI.GenerateRequestPrintTickets(
service.BOOKING_REFERENCE);
PrintTicketsRs ptRs = _trainMgr.PrintTickets(ptRq);

if (ptRs.Errors != null && ptRs.Errors.Count > 0)


{
foreach (var error in ptRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
_eRPHelperDI.UpdateFileServiceLineVoucher(service, ptRs);
response.TicketTrain = ptRs.TicketUrl;
}
}
else
{
response.TicketTrain = service.ERP_VOUCHER.First().TRAIN_URL_BILLETE;
}
}

//var serviceIns = file.ERP_SERVICE.FirstOrDefault(s => s.SERVICE_TYPE_ID == "INS");


//if (serviceIns != null)
//{
// if (serviceIns.ERP_VOUCHER == null || serviceIns.ERP_VOUCHER.Count() == 0)
// {
// _ConnectorMgr connector = new _ConnectorMgr();
// var printCancelInsResponse = connector.GetInsuarancePrint(serviceIns.BOOKING_REFERENCE,
false);
// if (printCancelInsResponse != null)
// {
// ERPHelper.UpdateVoucherServiceInsurance(serviceIns, printCancelInsResponse);
// response.TicketInsurance = printCancelInsResponse;
// }
// }
// else
// {
// response.TicketInsurance = serviceIns.ERP_VOUCHER.First().TRAIN_URL_BILLETE;
// }
//}
}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILEOTRAAGENCIA;
em.Reason = "El usuario no pertenece a la agencia que hizo esa venta";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}
return Ok(response);

[HttpPost]
[Route("api/Train/CancelTicketsPrice")]
//[ActionName("CancelTicketsPrice")]
public IActionResult CancelTicketsPrice([FromBody] CancelTicketsPrice pRequest)
{
var valid = ValidoCancelTicketsPrice(pRequest);
if (valid != null)
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 20/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
return BadRequest(valid);
}
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
TrainCancelTicketsPrice response = new TrainCancelTicketsPrice();

var file = _eRPHelperDI.GetFileForId(int.Parse(pRequest.fileId));


if (file == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILENOENCONTRADO;
em.Reason = "FILENOENCONTRADO - No existe el fileId ingresado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
/*Valido que el usuario sea de la agencia*/
if (user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID == file.TRAVEL_AGENCY_ID)
{
var service = file.ERP_SERVICE.FirstOrDefault(s => s.BOOKING_REFERENCE ==
pRequest.RenfeLocalizador);
if (service != null)
{
/*Acá va el codigo de la cancelación*/
GetCancelTicketsPriceRq ptRq = _requestHelperDI.GenerateRequestCancelTicketsPr
ice(service.BOOKING_REFERENCE);
GetCancelTicketsPriceRs ptRs = _trainMgr.GetCancelTicketsPrice(ptRq);

if (ptRs.Errors != null && ptRs.Errors.Count > 0)


{
foreach (var error in ptRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
response.fileId = pRequest.fileId;
response.RenfeLocalizador = pRequest.RenfeLocalizador;
response.token = pRequest.token;
response.OutwardTickets = new List<CancelTicketPriceCls>();
response.OutwardTickets = ptRs.OutwardTickets;
response.ReturnTickets = new List<CancelTicketPriceCls>();
response.ReturnTickets = ptRs.ReturnTickets;
response.Ok = "OK";
if (ptRs.Errors != null && ptRs.Errors.Count() > 0)
{
response.Ok = "KO";

foreach (HappyTren.Core.Model.General.MessageCls m in ptRs.Messages)


{
response.Errors.Add(m.Text);
}

}
}
}
else
{
/* Error en caso de que no exista el localizador.*/
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.ERRORLOCALIZADOR;
em.Reason = "ERRORLOCALIZADOR- Localizador no encontrado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 21/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILEOTRAAGENCIA;
em.Reason = "FILEOTRAAGENCIA - El usuario no pertenece a la agencia que hizo esa venta";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}
return Ok(response);

[HttpPost]
[Route("api/Train/CancelTicketsPartial")]
//[ActionName("CancelTicketsPartial")]
public IActionResult CancelTicketsPartial([FromBody] CancelTicketsPartial pRequest)
{
var valid = ValidoCancelTicketsPartial(pRequest);
if (valid != null)
{
return BadRequest(valid);
}
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
TrainCancelTicketsPartial response = new TrainCancelTicketsPartial();

var file = _eRPHelperDI.GetFileForId(int.Parse(pRequest.fileId));


if (file == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILENOENCONTRADO;
em.Reason = "FILENOENCONTRADO - No existe el fileId ingresado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
/*Valido que el usuario sea de la agencia*/
if (user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID == file.TRAVEL_AGENCY_ID)
{
var service = file.ERP_SERVICE.FirstOrDefault(s => s.BOOKING_REFERENCE ==
pRequest.RenfeLocalizador);
if (service != null)
{
/*Acá va el codigo de la cancelación*/
PartialCancelTicketsRq ptRq = _requestHelperDI.GenerateRequestCancelTicketsPartial(pRequest);
PartialCancelTicketsRs ptRs = _trainMgr.PartialCancelTickets(ptRq);

if (ptRs.Errors != null && ptRs.Errors.Count > 0)


{
foreach (var error in ptRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
response.fileId = pRequest.fileId;
response.RenfeLocalizador = pRequest.RenfeLocalizador;
response.token = pRequest.token;
response.Ok = "OK";
if (ptRs.Errors != null && ptRs.Errors.Count() > 0)
{
response.Ok = "KO";

foreach (HappyTren.Core.Model.General.MessageCls m in ptRs.Messages)


{
response.Errors.Add(m.Text);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 22/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}

}
}
}
else
{
/* Error en caso de que no exista el localizador.*/
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.ERRORLOCALIZADOR;
em.Reason = "ERRORLOCALIZADOR- Localizador no encontrado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILEOTRAAGENCIA;
em.Reason = "FILEOTRAAGENCIA - El usuario no pertenece a la agencia que hizo esa venta";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}
return Ok(response);

[HttpPost]
[Route("api/Train/CancelTickets")]
//[ActionName("CancelTickets")]
public IActionResult CancelTickets([FromBody] CancelTickets pRequest)
{
var valid = ValidoCancelTickets(pRequest);
if (valid != null)
{
return BadRequest(valid);
}
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
TrainCancelTickets response = new TrainCancelTickets();

var file = _eRPHelperDI.GetFileForId(int.Parse(pRequest.fileId));


if (file == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILENOENCONTRADO;
em.Reason = "FILENOENCONTRADO - No existe el fileId ingresado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
/*Valido que el usuario sea de la agencia*/
if (user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID == file.TRAVEL_AGENCY_ID)
{
var service = file.ERP_SERVICE.FirstOrDefault(s => s.BOOKING_REFERENCE ==
pRequest.RenfeLocalizador);
if (service != null)
{
/*Acá va el codigo de la cancelación*/
CancelTicketsRq ptRq = _requestHelperDI.GenerateRequestCancelTickets(pRequest);
CancelTicketsRs ptRs = _trainMgr.CancelTickets(ptRq);

if (ptRs.Errors != null && ptRs.Errors.Count > 0)


{
foreach (var error in ptRs.Errors)

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 23/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
response.AddError(error.Text);
}
}
else
{

/*LC . 11/10/19 - Se debe cambiar el estado del servicio y del expediente en caso de que la
cancelacion vaya bien*/
_eRPHelperDI.UpdateFileStatus("CAN", "CAN", Convert.ToInt32(pRequest.fileId));

response.fileId = pRequest.fileId;
response.RenfeLocalizador = pRequest.RenfeLocalizador;
response.token = pRequest.token;
response.Ok = "OK";
if (ptRs.Errors != null && ptRs.Errors.Count() > 0)
{
response.Ok = "KO";

foreach (HappyTren.Core.Model.General.MessageCls m in ptRs.Messages)


{
response.Errors.Add(m.Text);
}

}
}
}
else
{
/* Error en caso de que no exista el localizador.*/
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.ERRORLOCALIZADOR;
em.Reason = "ERRORLOCALIZADOR- Localizador no encontrado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILEOTRAAGENCIA;
em.Reason = "FILEOTRAAGENCIA - El usuario no pertenece a la agencia que hizo esa venta";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}
return Ok(response);

[HttpPost]
[Route("api/Train/GetTicketsList")]
//[ActionName("GetTicketsList")]
public IActionResult GetTicketsList(GetTickets pRequest)
{
var valid = ValidoGetTickets(pRequest);
if (valid != null)
{
return BadRequest(valid);
}
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
TrainGetTicket response = new TrainGetTicket();

var file = _eRPHelperDI.GetFileForId(int.Parse(pRequest.fileId));


if (file == null)

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 24/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILENOENCONTRADO;
em.Reason = "FILENOENCONTRADO - No existe el fileId ingresado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
/*Valido que el usuario sea de la agencia*/
if (user.ERP_TRAVEL_AGENCY.First().TRAVEL_AGENCY_ID == file.TRAVEL_AGENCY_ID)
{
var service = file.ERP_SERVICE.FirstOrDefault(s => s.BOOKING_REFERENCE ==
pRequest.RenfeLocalizador);
if (service != null)
{
/*Acá va el codigo de la cancelación*/
GetAgencyTicketsSalesRq ptRq = _requestHelperDI.GenerateRequestGetTicket(pRequest);
GetAgencyTicketsSalesRs ptRs = _trainMgr.GetAgencyTicketsSales(ptRq);

if (ptRs.Errors != null && ptRs.Errors.Count > 0)


{
foreach (var error in ptRs.Errors)
{
response.AddError(error.Text);
}
}
else
{
response.fileId = pRequest.fileId;
response.token = pRequest.token;
var billete = ptRs.AgencyTickets.FirstOrDefault(a => a.Localizador.Replace(" ", "") ==
pRequest.RenfeLocalizador);
if (billete != null)
{
response.RenfeLocalizador = billete.Localizador.Replace(" ", "");
response.amount = billete.Importe;
response.agencyId = billete.IdAgencia;
response.status = billete.Estado;
}
else
{
/* Error en caso de que no se haya encontrado un localizador.*/
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.ERRORLOCALIZADOR;
em.Reason = "ERRORLOCALIZADOR- Localizador no encontrado en la lista de reservas del
proveedor";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.
Unauthorized, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);

}
response.Ok = "OK";
if (ptRs.Errors != null && ptRs.Errors.Count() > 0)
{
response.Ok = "KO";

foreach (HappyTren.Core.Model.General.MessageCls m in ptRs.Messages)


{
response.Errors.Add(m.Text);
}

}
}
}
else
{
/* Error en caso de que no exista el localizador.*/
ErrorModel em = new ErrorModel();

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 25/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Code = ErrorCode.ERRORLOCALIZADOR;
em.Reason = "ERRORLOCALIZADOR- Localizador no encontrado";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FILEOTRAAGENCIA;
em.Reason = "FILEOTRAAGENCIA - El usuario no pertenece a la agencia que hizo esa venta";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}
return Ok(response);

[HttpPost]
[Route("api/Train/GetTrainsComplements")]
//[ActionName("GetTrainsComplements")]
public IActionResult GetTrainsComplements([FromBody] GetTrainsComplements pRequest)
{

ERPUser u2 = null;

var valid = ValidoGetTrainsComplements(pRequest);


if (valid != null)
{
return BadRequest(valid);
}
TrainSearch searchParameters = CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) as
TrainSearch;
CacheHelper.Add("GetTrainsComplementsRequest" + pRequest.apiSession, pRequest);
if (searchParameters != null)
{
GetTrainsComplementsResponse response = new GetTrainsComplementsResponse();
response.ApiSession = pRequest.apiSession;
try
{

//Get searchResult from session


GetTrainsRs UITrainsResult = new GetTrainsRs();
UITrainsResult = CacheHelper.Get("ResultadoTrenes" + pRequest.apiSession) as GetTrainsRs;

TrainCls outwardTrain = UITrainsResult.OutwardTrains.Where(o => o.TrainTypeDescription +


o.TrainNumber == pRequest.outwardId).FirstOrDefault();
TrainCls outwardTrain1 = new TrainCls();

if (outwardTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de ida {0} no fue encontrado", pRequest.outwardId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (outwardTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de ida no fue encontrada",
pRequest.classCodeOutward);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 26/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
//outwardTrain.Classes = new List<ClassCls>(outwardTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeOutward).ToList());
//if (outwardTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeOutward) == 0)
if (outwardTrain.Classes.FindAll(cl => cl.ClassCode == pRequest.classCodeOutward).
First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de ida no fue encontrado",
pRequest.classSalesGroupCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
//outwardTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(
outwardTrain.Classes.First().SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeOutward));
}
}
TrainCls returnTrain = null;
if (!string.IsNullOrEmpty(pRequest.retId))
{
returnTrain = UITrainsResult.ReturnTrains.Where(o => o.TrainTypeDescription + o.TrainNumber ==
pRequest.retId).FirstOrDefault();
if (returnTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de vuelta {0} no fue encontrado", pRequest.retId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (returnTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de vuelta no fue encontrada",
pRequest.classCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
//returnTrain.Classes = new List<ClassCls>(returnTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeReturn).ToList());
//if (returnTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeReturn) == 0)
if (returnTrain.Classes.FindAll(cl => cl.ClassCode == pRequest.classCodeReturn).
First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de vuelta no fue
encontrado", pRequest.classSalesGroupCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
//returnTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(returnTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeReturn));

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 27/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}
}
}

// Armamos la llamada del GetTrainsComplements


////////////////////--------------------------------------------------/////////////////////
GetTrainComplementsRq rq = new GetTrainComplementsRq();
//GetTrainLegComplements rq.ida;
rq.ida = new List<GetTrainLegComplements>();
GetTrainLegComplements iida = new GetTrainLegComplements();
iida.from_station = outwardTrain.DepartureStation;
iida.to_station = outwardTrain.ArrivalStation;
iida.train_class = pRequest.classCodeOutward;
iida.train_number = outwardTrain.TrainNumber;
iida.travel_date = outwardTrain.TravelDate;
iida.paxs = new List<GetTrainComplementsPaxsC>();

// foreach ( PaxesCls p in outwardTrain.Classes.Find(a => a.ClassCode ==


pRequest.classCodeOutward).Paxes)
foreach (PaxesCls p in outwardTrain.Classes.Find(a => a.ClassCode == pRequest.classCodeOutward).
SalesGroups.Find(b => b.SalesGroupCode == pRequest.classSalesGroupCodeOutward).Paxes)
{
GetTrainComplementsPaxsC ppax = new GetTrainComplementsPaxsC();
ppax.pax_type = p.PaxType;
ppax.pax_type = "A";
if (p.PaxType == "CHD")
{
ppax.pax_type = "P";
}
else if (p.PaxType == "INF")
{
ppax.pax_type = "I";
};
ppax.train_fare = p.Fares.FirstOrDefault().FareCode;//"N1321|CL09VCO|C09";
iida.paxs.Add(ppax);
}
rq.ida.Add(iida);

// Armamos la llamada del GetTrainsComplements - VUELTA


////////////////////--------------------------------------------------/////////////////////
if (returnTrain != null)
{

rq.vuelta = new List<GetTrainLegComplements>();


GetTrainLegComplements vvuelta = new GetTrainLegComplements();
vvuelta.from_station = returnTrain.DepartureStation;
vvuelta.to_station = returnTrain.ArrivalStation;
vvuelta.train_class = pRequest.classCodeReturn;
vvuelta.train_number = returnTrain.TrainNumber;
vvuelta.travel_date = returnTrain.TravelDate;
vvuelta.paxs = new List<GetTrainComplementsPaxsC>();

//foreach (PaxesCls p in returnTrain.Classes.Find(a => a.ClassCode == pRequest.classCodeReturn).


Paxes)
foreach (PaxesCls p in returnTrain.Classes.Find(a => a.ClassCode == pRequest.classCodeReturn).
SalesGroups.Find(b => b.SalesGroupCode == pRequest.classSalesGroupCodeReturn).Paxes)
{
GetTrainComplementsPaxsC ppax = new GetTrainComplementsPaxsC();
ppax.pax_type = p.PaxType;
ppax.pax_type = "A";
if (p.PaxType == "CHD")
{
ppax.pax_type = "P";
}
else if (p.PaxType == "INF")
{
ppax.pax_type = "I";
};

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 28/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
ppax.train_fare = p.Fares.FirstOrDefault().FareCode;//"N1321|CL09VCO|C09";
vvuelta.paxs.Add(ppax);
}
rq.vuelta.Add(vvuelta);
}
// Obtenemos el agregador

GetTrainComplementsRS rs = _trainMgr.GetTrainComplements(rq);
response.ComplementosIda = rs.ComplmentosIda;
response.ComplementosVuelta = rs.ComplmentosVuelta;

}
catch (Exception ex)
{
response.AddError(ex.Message);
}

try
{

string host = "";


string ip = "";
if (u2 != null && !string.IsNullOrEmpty(u2.EMAIL))
{
ip = u2.EMAIL;
}

string u = pRequest.apiSession;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "GetTrainComplements", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(response);
LogHelper.SaveLogLogin(host, ip, "GetTrainComplements", u, operacion, txt);

}
catch (Exception ex)
{
}

//Navigate to Checkout Page


return Ok(response);
}
else
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.EXPIRADO;
em.Reason = "Vuelva a realizar la búsqueda";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
}

[HttpPost]
[Route("api/Train/GetGraph")]
//[ActionName("GetGraph")]
public IActionResult GetGraph(GetGraph pRequest)
{

ERPUser u2 = null;

HttpResponseMessage valid = ValidoGetGraph(pRequest);


if (valid != null)
{
return BadRequest(valid);
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 29/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
else
{
GetGraphRsApi response = new GetGraphRsApi();
response.ApiSession = pRequest.apiSession;
try
{

GetGraphRq rq = new GetGraphRq();

// Obtenemos el agregador

//---------------------------------------------------
TrainSearch searchParameters = CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) as
TrainSearch;
// CacheHelper.Add("TrainBookRequest" + pRequest.apiSession, pRequest);
GetTrainsRs UITrainsResult = CacheHelper.Get("ResultadoTrenes" + pRequest.apiSession) as
GetTrainsRs;

if (UITrainsResult == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de ida {0} no fue encontrado", pRequest.outwardId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

TrainCls outwardTrain = UITrainsResult.OutwardTrains.Where(o => o.TrainTypeDescription +


o.TrainNumber == pRequest.outwardId).FirstOrDefault();
if (outwardTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de ida {0} no fue encontrado", pRequest.outwardId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (outwardTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de ida no fue encontrada",
pRequest.classCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes = new List<ClassCls>(outwardTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeOutward).ToList());
if (outwardTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeOutward) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de ida no fue encontrado",
pRequest.classSalesGroupCodeOutward);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
outwardTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(outwardTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeOutward));
}
}
TrainCls returnTrain = null;
if (!string.IsNullOrEmpty(pRequest.retId))

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 30/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
returnTrain = UITrainsResult.ReturnTrains.Where(o => o.TrainTypeDescription + o.TrainNumber ==
pRequest.retId).FirstOrDefault();
if (returnTrain == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TRENNOENCONTRADO;
em.Reason = string.Format("El tren de vuelta {0} no fue encontrado", pRequest.retId);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
if (returnTrain.Classes.Count(cl => cl.ClassCode == pRequest.classCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.CLASENOENCONTRADA;
em.Reason = string.Format("La clase {0} del tren de vuelta no fue encontrada",
pRequest.classCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes = new List<ClassCls>(returnTrain.Classes.Where(cl => cl.ClassCode ==
pRequest.classCodeReturn).ToList());
if (returnTrain.Classes.First().SalesGroups.Count(sg => sg.SalesGroupCode == pRequest.
classSalesGroupCodeReturn) == 0)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.GRUPOVENTANOENCONTRADO;
em.Reason = string.Format("El grupo de venta {0} de la clase del tren de vuelta no fue
encontrado", pRequest.classSalesGroupCodeReturn);
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone,
em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}
else
{
returnTrain.Classes.First().SalesGroups = new List<SalesGroupCls>(returnTrain.Classes.First().
SalesGroups.Where(sg => sg.SalesGroupCode == pRequest.classSalesGroupCodeReturn));
}
}
}

//---------------------------------------------------

// Solicitamos el mapa para la ida


rq = _requestHelperDI.GenerateRequestGetGraph(pRequest, outwardTrain);
response.ida = _trainMgr.GetGraph(rq);

// Solicitamos el mapa para la vuelta


response.vuelta = new GetGraphRs();
if (returnTrain != null)
{
rq = _requestHelperDI.GenerateRequestGetGraph(pRequest, returnTrain);
response.vuelta = _trainMgr.GetGraph(rq);
}

catch (Exception ex)


{
response.AddError(ex.Message);
}

try
{

string host = "";

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 31/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
string ip = "";
if (u2 != null && !string.IsNullOrEmpty(u2.EMAIL))
{
ip = u2.EMAIL;
}

string u = pRequest.apiSession;
string operacion = "RQ";
string txt = JsonConvert.SerializeObject(pRequest);
LogHelper.SaveLogLogin(host, ip, "GetTrainComplements", u, operacion, txt);

operacion = "RS";
txt = JsonConvert.SerializeObject(response);
LogHelper.SaveLogLogin(host, ip, "GetTrainComplements", u, operacion, txt);

}
catch (Exception ex)
{
}

//Navigate to Checkout Page


return Ok(response);
}
}

[HttpGet]
[Route("api/Train/ValidarTarjetaDorada")]
//[ActionName("ValidarTarjetaDorada")]
public IActionResult ValidarTarjetaDorada(ValidarTarjetaDorada pRequest)
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO - Invalid Token";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

/*Pido la Dispo*/
var trainRq = _requestHelperDI.GenerateGetTrainRequestTDO();
GetTrainsRs rsGetTrains = _trainMgr.GetTrains(trainRq);

/*Reservo*/

// 2 Book Seats
BookSeatsRq bsRq = _requestHelperDI.GenerateRequestBookSeats(rsGetTrains.OutwardTrains.First(), null,
1, false, false, false, false);

BookSeatsRs bsRs = _trainMgr.BookSeats(bsRq);

ConfirmBookRs cbRs = null;


// 3 Confirm Book Seats
ConfirmBookRq cbRq = _requestHelperDI.GenerateRequestConfirmBookSeats(bsRs.BookSeatsID);

cbRs = _trainMgr.ConfirmBook(cbRq);

// 4 Compra (sin confirmacion)

List<Passenger> passengers = new List<Passenger>();


passengers.Add(new Passenger());
passengers.First().Email = "[email protected]";
passengers.First().Document = pRequest.tarjetaDorada;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 32/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
passengers.First().FirstSurname = "Juan";
passengers.First().Name = "Juan";
passengers.First().PaxType = "TDO";

BuyTicketsRq btRq = _requestHelperDI.GenerateRequestBuyTickets(passengers, bsRq, bsRs, "dummie");

BuyTicketsRs btRs = _trainMgr.BuyTickets(btRq);

RSValidarTarjetaDorada response = new RSValidarTarjetaDorada();

response.tarjetaDorada = pRequest.tarjetaDorada;
response.token = pRequest.token;
if (btRs.Errors == null)
{
response.Ok = "OK";
}
else
{
response.Ok = "KO";
}

response.Errors.Add(btRs.Errors.First().Text);

return Ok(response);

[HttpGet]
[Route("api/Train/Routes")]
public IActionResult Routes(RoutesGet pRequest)
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO - Invalid Token";
HttpResponseMessage msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.NotFound, em);
return this.StatusCode((int)HttpStatusCode.InternalServerError, em);
}

/*Pido las rutas*/


var trainRq = _requestHelperDI.GenarateGetRoutesRq(pRequest);
var btRs = _trainMgr.GetRoutes(trainRq);
return Ok(btRs);

//private string HireInsurances(List<PricingInsuranceRs> cancelInsurances, TrainBuy trainBuy, string fileRef,


BookSeatsRs bsRs, BL_Response cancelService)
//{
// string retorno = "";
// if (bool.Parse(trainBuy.seguroCancelacion) && cancelService != null)
// {
// _ConnectorMgr connector = new _ConnectorMgr();

// var hasta = (bsRs.Trains.Count > 1) ? bsRs.Trains[1].TravelDate : bsRs.Trains[0].TravelDate;


// InsuranceRq cancelInsRq = _requestHelperDI.GenerateRequestHireInsurance(cancelInsurances.First(),
trainBuy.passengers, fileRef, bsRs.Trains[0].TravelDate, hasta);
// var cancelInsuranceResponse = connector.HireInsurance(cancelInsRq);
// if (cancelInsuranceResponse == null)
// {
// retorno = "OK|KOB";

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 33/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
// }
// else
// {
// InsuranceIssueRs ins = connector.GetInsuarance(cancelInsuranceResponse.id, true);
// if (ins != null)
// {
// ERPHelper.UpdateServiceInsurance(cancelService.newEntityId, cancelInsuranceResponse.id, ins);
// retorno = "OK|OKB";
// //var printCancelInsResponse = connector.GetInsuarancePrint(cancelInsuranceResponse.id, false);
// //if (printCancelInsResponse != null)
// //{
// // ERPFileHelper.UpdateVoucherServiceInsurance(guid, cancelServiceId,
printCancelInsResponse);
// //}
// }
// }
// }
// else
// {
// retorno = "OK|OKB";
// }
// return retorno;
//}

private HttpResponseMessage ValidoTrainBuy(TrainBuy pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.apiSession))
{
em.Fields.Add("El campo apiSession es obligatorio");
}
if (pRequest.passengers == null)
{
em.Fields.Add("El campo passengers es obligatorio");
}
else
{
int index = 1;
foreach (var p in pRequest.passengers)
{
if (string.IsNullOrEmpty(p.Name))
{
em.Fields.Add("El campo Name del pasajero " + index.ToString() + " es obligatorio");
}
if (string.IsNullOrEmpty(p.FirstSurname))
{
em.Fields.Add("El campo FirstSurname del pasajero " + index.ToString() + " es obligatorio");
}
if (string.IsNullOrEmpty(p.Email))
{
em.Fields.Add("El campo Email del pasajero " + index.ToString() + " es obligatorio");
}
if (string.IsNullOrEmpty(p.phone))
{
em.Fields.Add("El campo Phone del pasajero " + index.ToString() + " es obligatorio");
}
else
{
if (p.phone.Length > 15)
{
em.Fields.Add("El campo Phone debe tener menos de 15 números");
}
}
if (string.IsNullOrEmpty(p.DocType))
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 34/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Fields.Add("El campo Tipo de Documento del pasajero " + index.ToString() + " es obligatorio");
}
else
{
if ((p.DocType != "0021") && (p.DocType != "0022") && (p.DocType != "0023"))
{
em.Fields.Add("El Valor del cammpo tipo de documento debe ser 0021-DNI 0022-PASS 0023-NIE");
}

if (string.IsNullOrEmpty(p.DocNumber))
{
em.Fields.Add("El campo Número de documento del pasajero " + index.ToString() + " es obligatorio");
}
switch (p.PaxType)
{
case "TDO":
case "TJO":
if (string.IsNullOrEmpty(p.Document))
{
em.Fields.Add("El campo Document del pasajero " + index.ToString() + " es obligatorio");
}
break;
case null:
case "":
em.Fields.Add("El campo PaxType del pasajero " + index.ToString() + " es obligatorio");
break;

index++;
}
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
bool aux;
if (!string.IsNullOrEmpty(pRequest.seguroCancelacion))
{
if (!bool.TryParse(pRequest.seguroCancelacion, out aux))
{
em.Fields.Add("El campo seguroCancelacion debe ser true/false");
}
}
else
{
pRequest.seguroCancelacion = "false";
}
int index = 1;
foreach (var p in pRequest.passengers)
{
if (!p.PaxType.Equals("ADT")
&& !p.PaxType.Equals("CHD")
&& !p.PaxType.Equals("INF")
&& !p.PaxType.Equals("TDO")
&& !p.PaxType.Equals("TJO"))
{
em.Fields.Add("El campo PaxType del pasajero " + index.ToString() + " debe ser ADT, CHD, INF, TDO
o TJO");
}
index++;
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 35/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
if (CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) == null)
{
em.Code = ErrorCode.EXPIRADO;
em.Reason = "Vuelva a realizar la búsqueda";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Gone, em);
}
else
{
TrainSearch searchParameters = CacheHelper.Get("BusquedaTrenes" + pRequest.apiSession) as
TrainSearch;
em.Code = ErrorCode.CANTPAXERRONEO;
em.Reason = "La cantidad pasajeros no coincide con la búsqueda realizada";
em.Fields = new List<string>();
if (pRequest.passengers.Count(p => p.PaxType == "ADT") != int.Parse(searchParameters.
numberOfAdults))
{
em.Fields.Add("La cantidad de pasajeros ADT es incorrecta");
}
if (pRequest.passengers.Count(p => p.PaxType == "CHD") != int.Parse(searchParameters.
numberOfOlderChildren))
{
em.Fields.Add("La cantidad de pasajeros CHD es incorrecta");
}
if (pRequest.passengers.Count(p => p.PaxType == "INF") != int.Parse(searchParameters.
numberOfChildrenUnder))
{
em.Fields.Add("La cantidad de pasajeros INF es incorrecta");
}
if (pRequest.passengers.Count(p => p.PaxType == "TDO") != int.Parse(searchParameters.
goldenCard))
{
em.Fields.Add("La cantidad de pasajeros TDO es incorrecta");
}
if (pRequest.passengers.Count(p => p.PaxType == "TJO") != int.Parse(searchParameters.
plus50Card))
{
em.Fields.Add("La cantidad de pasajeros TJO es incorrecta");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoGetStationByPDI(SationsSearch pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.X) || string.IsNullOrEmpty(pRequest.Y))
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.X))
{
em.Fields.Add("El campo X es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.Y))
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 36/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Fields.Add("El campo Y es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
decimal aux;
pRequest.X = pRequest.X.Replace(".", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.
NumberDecimalSeparator);
pRequest.X = pRequest.X.Replace(",", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.
NumberDecimalSeparator);
pRequest.Y = pRequest.Y.Replace(".", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.
NumberDecimalSeparator);
pRequest.Y = pRequest.Y.Replace(",", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.
NumberDecimalSeparator);
if (!decimal.TryParse(pRequest.X, out aux))
{
em.Fields.Add("El campo X debe ser decimal");
}
if (!decimal.TryParse(pRequest.Y, out aux))
{
em.Fields.Add("El campo Y debe ser decimal");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}

return msg;
}

private HttpResponseMessage ValidoGetStationByStationCode(SationsSearch pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.stationCode))
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
em.Fields.Add("El campo StationCode es obligatorio");
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
return msg;
}

private HttpResponseMessage ValidoGetTrains(TrainSearch pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 37/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Reason = "Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.to))
{
em.Fields.Add("El campo to es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.from))
{
em.Fields.Add("El campo from es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.departureDate))
{
em.Fields.Add("El campo departureDate es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.numberOfAdults) && string.IsNullOrEmpty(pRequest.
numberOfOlderChildren) && string.IsNullOrEmpty(pRequest.numberOfChildrenUnder)
&& string.IsNullOrEmpty(pRequest.plus50Card) && string.IsNullOrEmpty(pRequest.goldenCard))
{
em.Fields.Add("Alguno de los campos numberOfAdults, numberOfOlderChildren, plus50Card ó
goldenCard es obligatorio");
}
else
{
if (!string.IsNullOrEmpty(pRequest.numberOfChildrenUnder) && (string.IsNullOrEmpty(
pRequest.numberOfAdults) && string.IsNullOrEmpty(pRequest.plus50Card)
&& string.IsNullOrEmpty(pRequest.goldenCard)))
{
em.Fields.Add("Alguno de los campos numberOfAdults, plus50Card ó goldenCard es obligatorio");
}
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
DateTime aux;
if (!DateTime.TryParseExact(pRequest.departureDate, "yyyyMMdd", CultureInfo.InvariantCulture,
DateTimeStyles.None, out aux))
{
em.Fields.Add("El campo departureDate debe tener el formato 'yyyyMMdd'");
}
if (!string.IsNullOrEmpty(pRequest.returnDate) && !DateTime.TryParseExact(pRequest.departureDate,
"yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out aux))
{
em.Fields.Add("El campo returnDate debe tener el formato 'yyyyMMdd'");
}
int auxInt;
if (!string.IsNullOrEmpty(pRequest.numberOfAdults))
{
if (!int.TryParse(pRequest.numberOfAdults, out auxInt))
{
em.Fields.Add("El campo numberOfAdults debe ser numérico");
}
}
else
{
pRequest.numberOfAdults = "0";
}
if (!string.IsNullOrEmpty(pRequest.numberOfChildrenUnder))

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 38/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
if (!int.TryParse(pRequest.numberOfChildrenUnder, out auxInt))
{
em.Fields.Add("El campo numberOfChildrenUnder debe ser numérico");
}
}
else
{
pRequest.numberOfChildrenUnder = "0";
}
if (!string.IsNullOrEmpty(pRequest.numberOfOlderChildren))
{
if (!int.TryParse(pRequest.numberOfOlderChildren, out auxInt))
{
em.Fields.Add("El campo numberOfOlderChildren debe ser numérico");
}
}
else
{
pRequest.numberOfOlderChildren = "0";
}
if (!string.IsNullOrEmpty(pRequest.plus50Card))
{
if (!int.TryParse(pRequest.plus50Card, out auxInt))
{
em.Fields.Add("El campo plus50Card debe ser numérico");
}
}
else
{
pRequest.plus50Card = "0";
}
if (!string.IsNullOrEmpty(pRequest.goldenCard))
{
if (!int.TryParse(pRequest.goldenCard, out auxInt))
{
em.Fields.Add("El campo goldenCard debe ser numérico");
}
}
else
{
pRequest.goldenCard = "0";
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
if (int.Parse(pRequest.numberOfAdults)
+ int.Parse(pRequest.numberOfChildrenUnder)
+ int.Parse(pRequest.numberOfOlderChildren)
+ int.Parse(pRequest.goldenCard)
+ int.Parse(pRequest.plus50Card) == 0)
{
em.Code = ErrorCode.CANTPAXERRONEO;
em.Reason = "La cantidad de pasajeros tiene que ser mayor a 0";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
if (int.Parse(pRequest.numberOfChildrenUnder) > 0)
{
if (int.Parse(pRequest.numberOfAdults)
+ int.Parse(pRequest.goldenCard)
+ int.Parse(pRequest.plus50Card) == 0)
{
em.Code = ErrorCode.CANTPAXERRONEO;
em.Reason = "La cantidad de pasajeros adultos tiene que ser mayor a 0";

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 39/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoBookTrains(TrainBook pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.apiSession))
{
em.Fields.Add("El campo apiSession es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.outwardId))
{
em.Fields.Add("El campo outwardId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.classCodeOutward))
{
em.Fields.Add("El campo classCodeOutward es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.classSalesGroupCodeOutward))
{
em.Fields.Add("El campo classSalesGroupCodeOutward es obligatorio");
}
if (!string.IsNullOrEmpty(pRequest.retId))
{
if (string.IsNullOrEmpty(pRequest.classCodeReturn))
{
em.Fields.Add("El campo classCodeReturn es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.classSalesGroupCodeReturn))
{
em.Fields.Add("El campo classSalesGroupCodeReturn es obligatorio");
}
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
decimal aux;
if (!string.IsNullOrEmpty(pRequest.fee))
{
pRequest.fee = pRequest.fee.Replace(".", System.Globalization.CultureInfo.CurrentCulture.
NumberFormat.NumberDecimalSeparator);
pRequest.fee = pRequest.fee.Replace(",", System.Globalization.CultureInfo.CurrentCulture.
NumberFormat.NumberDecimalSeparator);
if (!decimal.TryParse(pRequest.fee, out aux))
{
em.Fields.Add("El campo fee debe ser decimal");
}
}
else
{
pRequest.fee = "0";

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 40/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
}
if (!string.IsNullOrEmpty(pRequest.markup))
{
pRequest.markup = pRequest.markup.Replace(".", System.Globalization.CultureInfo.CurrentCulture.
NumberFormat.NumberDecimalSeparator);
pRequest.markup = pRequest.markup.Replace(",", System.Globalization.CultureInfo.CurrentCulture.
NumberFormat.NumberDecimalSeparator);
if (!decimal.TryParse(pRequest.markup, out aux))
{
em.Fields.Add("El campo markup debe ser decimal");
}
}
else
{
pRequest.markup = "0";
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
return msg;
}

private HttpResponseMessage ValidoCancelTicketsPrice(CancelTicketsPrice pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO-Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.fileId))
{
em.Fields.Add("El campo fileId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.RenfeLocalizador))
{
em.Fields.Add("El campo RenfeLocalizador es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 41/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoGetTickets(GetTickets pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO-Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.fileId))
{
em.Fields.Add("El campo fileId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.RenfeLocalizador))
{
em.Fields.Add("El campo RenfeLocalizador es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoGetTrainsComplements(GetTrainsComplements pRequest)

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 42/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.apiSession))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el ApiSession de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
/* ERPUser user = ERPHelper.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO-Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
/*if (string.IsNullOrEmpty(pRequest.fileId))
{
em.Fields.Add("El campo fileId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.RenfeLocalizador))
{
em.Fields.Add("El campo RenfeLocalizador es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}

}*/
}
return msg;
}

private HttpResponseMessage ValidoGetGraph(GetGraph pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.apiSession))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el ApiSession de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
return msg;
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 43/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
private HttpResponseMessage ValidoCancelTicketsPartial(CancelTicketsPartial pRequest)
{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO-Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.fileId))
{
em.Fields.Add("El campo fileId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.RenfeLocalizador))
{
em.Fields.Add("El campo RenfeLocalizador es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoCancelTickets(CancelTickets pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "TOKENREQUERIDO - Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 44/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "TOKENINVALIDO-Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.fileId))
{
em.Fields.Add("El campo fileId es obligatorio");
}
if (string.IsNullOrEmpty(pRequest.RenfeLocalizador))
{
em.Fields.Add("El campo RenfeLocalizador es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

private HttpResponseMessage ValidoPrintTickets(TicketsPrint pRequest)


{
HttpResponseMessage msg = null;
ErrorModel em = new ErrorModel();
if (string.IsNullOrEmpty(pRequest.token))
{
em.Code = ErrorCode.TOKENREQUERIDO;
em.Reason = "Falta el token de autenticación";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
ERPUser user = _eRPHelperDI.GetUserByToken(pRequest.token);
if (user == null)
{
em.Code = ErrorCode.TOKENINVALIDO;
em.Reason = "Token inválido";
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.Unauthorized, em);
}
else
{
em.Code = ErrorCode.FALTANCAMPOS;
em.Reason = "Faltan datos obligatorios";
em.Fields = new List<string>();
if (string.IsNullOrEmpty(pRequest.fileId))
{

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 45/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
em.Fields.Add("El campo fileId es obligatorio");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
else
{
em.Code = ErrorCode.TIPODATOINVALIDO;
em.Reason = "Tipo de dato inválido";
em.Fields = new List<string>();
int aux;
if (!int.TryParse(pRequest.fileId, out aux))
{
em.Fields.Add("El campo fileId debe ser numérico");
}
if (em.Fields.Count > 0)
{
msg = Request.CreateResponse<ErrorModel>(HttpStatusCode.BadRequest, em);
}
}
}
}
return msg;
}

//private string GetClientIp(HttpRequestMessage request = null)


//{

// if (request!= null && request.Properties.ContainsKey("MS_HttpContext"))


// {
// return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
// }
// else if (HttpContext.Request != null)
// {
// return HttpContext.Connection.RemoteIpAddress.ToString();
// }
// else
// {
// return null;
// }
// return null;
//}

}
}

https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 46/46

You might also like