Train Controller
Train Controller
(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>
[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
{
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);
}
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)
{
try
{
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;
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=%23ms… 4/46
24/10/24, 15:23 Correo de EMOVEERE CONSULTING - (sin asunto)
GetTrainsRs UITrainsResult = CacheHelper.Get("ResultadoTrenes" + pRequest.apiSession) as
GetTrainsRs;
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;
// Tratamiento de errores
if (cpRs.Errors != null && cpRs.Errors.Count > 0)
{
foreach (var error in cpRs.Errors)
{
response.AddError(error.Text);
}
}
bsRs = _trainMgr.BookSeats(bsRq);
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;
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)
response.AmountToPay = amount;
response.Amount = Math.Round((1 + decimal.Parse(pRequest.markup) / 100) * amount +
decimal.Parse(pRequest.fee), 2);
try
{
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)
}
[HttpPost]
[Route("api/Train/BookTrainsGraph")]
//[ActionName("BookTrainsGraph")]
public IActionResult BookTrainsGraph(TrainBook pRequest)
{
ERPUser u2 = null;
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;
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);
}
}
bsRs = _trainMgr.BookSeatsGraph(bsRq);
bsRs.ApiSession = pRequest.apiSession;
cbRs = _trainMgr.ConfirmBook(cbRq);
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);
}
}
}
}
}
}
}
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;
response.AmountToPay = amount;
response.Amount = Math.Round((1 + decimal.Parse(pRequest.markup) / 100) * amount +
decimal.Parse(pRequest.fee), 2);
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 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)
{
}
[HttpPost]
[Route("api/Train/BuyTrains")]
//[ActionName("GetTrains")]
public IActionResult BuyTrains([FromBody] TrainBuy pRequest)
{
var valid = ValidoTrainBuy(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… 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;
bsRq.Trains = bsRq1.Trains;
}
BuyTicketsRq btRq = _requestHelperDI.GenerateRequestBuyTickets(pRequest.passengers, bsRq, bsRs,
pRequest.BookingReferenceTA, pRequest.voucher);
//if (bool.Parse(pRequest.seguroCancelacion))
//{
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 (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;
}
}
}
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 (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;
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 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();
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);
[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();
}
}
}
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();
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();
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";
}
}
}
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();
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);
}
response.Ok = "OK";
if (ptRs.Errors != null && ptRs.Errors.Count() > 0)
{
response.Ok = "KO";
}
}
}
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;
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)
}
}
}
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 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)
{
}
[HttpPost]
[Route("api/Train/GetGraph")]
//[ActionName("GetGraph")]
public IActionResult GetGraph(GetGraph pRequest)
{
ERPUser u2 = null;
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
{
// 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);
}
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));
}
}
}
//---------------------------------------------------
try
{
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)
{
}
[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);
cbRs = _trainMgr.ConfirmBook(cbRq);
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";
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);
}
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;
//}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
}
}
https://mail.google.com/mail/u/0/?ik=008608e040&view=pt&search=drafts&permmsgid=msg-a:r-5328399784908636742&dsqt=1&simpl=%23m… 46/46