import { Injectable } from '@nestjs/common';
import { HttpService } from '@nestjs/axios';
import { firstValueFrom } from 'rxjs';
import { EndpointsEnum } from './endpoints.enum';
import { IEventsByDateRangeCriteria, IEventsByCompetitorCriteria, IEventsByTournamentCriteria } from 'src/events/interfaces/events-criteria.interface';
import { IEvents365Response } from 'src/events/interfaces/sports-events-365-response.interface';
import { IOrderTicketsDetails, IOrdersStatuses } from 'src/events/interfaces/order.interface';
import { IEvents365OrderResponse } from 'src/events/interfaces/order-confirmation.interface';
@Injectable()
export class SportsEvents365Service {
private baseApiUrl: string = 'https://api.sportsevents365.com';
private sitekey: string = '0d244ef567f5410aa2ad0cd8ccc67a7e';
private user: string = 'RAZ';
private password: string = '2^APqH766*5H';
private responseMethod: string = 'json';
constructor(private readonly httpService: HttpService) {
}
public async orderTickets(orderTicketsDetails: IOrderTicketsDetails): Promise<IEvents365OrderResponse> {
try {
const response = await firstValueFrom(this.httpService.post(
`${this.baseApiUrl}/${EndpointsEnum.BOOKING}/`,
orderTicketsDetails,
{
params: {
sitekey: this.sitekey
}
}
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async getOrdersStatuses(ordersStatuses: IOrdersStatuses): Promise<any> {
const { fnc } = ordersStatuses || {};
try {
const response = await firstValueFrom(this.httpService.post(
`${this.baseApiUrl}/${EndpointsEnum.BOOKING}/`,
{
// source: this.user,
// site_key: this.sitekey,
// headers: { },
// // auth: {
// // username: this.user,
// // password: this.password
// // },
// params: {
// // res_method: this.responseMethod,
// source: this.user,
// site_key: this.sitekey,
// fnc: fnc
// }
},
{
params: {
source: this.user,
site_key: this.sitekey
}
}
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async searchEventsByDateRange(eventsCriteria: IEventsByDateRangeCriteria): Promise<IEvents365Response> {
const { country, city, fromDate, toDate, sportId, page } = eventsCriteria || {};
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: `lq,${country},${city},${sportId},CUSTOM,${fromDate},${toDate}`,
res_method: this.responseMethod,
page, sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async searchEventsByCompetitor(competitorId: number, eventsCriteria: IEventsByCompetitorCriteria): Promise<IEvents365Response> {
const { fromDate, toDate, sportId, page } = eventsCriteria || {};
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: `cq,${competitorId},${sportId},CUSTOM,${fromDate},${toDate}`,
res_method: this.responseMethod,
page, sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async searchEventsByTournament(tournamentId: number, eventsCriteria: IEventsByTournamentCriteria): Promise<IEvents365Response> {
const { fromDate, toDate, page } = eventsCriteria || {};
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: `tq,${tournamentId},CUSTOM,${fromDate},${toDate}`,
res_method: this.responseMethod,
page, sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async searchEventsByID(eventID: number): Promise<any> {
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: `eq,${eventID}`,
res_method: this.responseMethod,
sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async getSports(): Promise<any> {
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: "getSports",
res_method: this.responseMethod,
sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async getCountries(): Promise<any> {
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: "getCountries",
res_method: this.responseMethod,
sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
public async getCities(countryid: number): Promise<any> {
try {
const response = await firstValueFrom(this.httpService.get(
`${this.baseApiUrl}/${EndpointsEnum.SEARCH}/`,
{
headers: { },
auth: {
username: this.user,
password: this.password
},
params: {
q: "getCities",
countryid: countryid,
res_method: this.responseMethod,
sitekey: this.sitekey
}
},
));
return response.data;
}
catch(err) {
console.error(err);
}
}
}