208 lines
5.5 KiB
TypeScript

/** @file
* @author Edouard DUPIN
* @copyright 2018, Edouard DUPIN, all right reserved
* @license PROPRIETARY (see license file)
*/
import { Injectable } from '@angular/core';
import { HttpWrapperService } from './http-wrapper';
import { DataInterface } from './dataInterface';
import { BddService } from './bdd';
@Injectable()
export class SeriesService {
// 0: Not hide password; 1 hide password;
private identificationVersion: number = 1;
private serviceName:string = 'series';
constructor(private http: HttpWrapperService,
private bdd: BddService) {
console.log('Start SeriesService');
}
get(id:number):any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getSeries()
.then((response:DataInterface) => {
let data = response.get(id);
if(data === null || data === undefined) {
reject('Data does not exist in the local BDD');
return;
}
resolve(data);
return;
}).catch((response) => {
reject(response);
});
});
}
getData():any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getSeries()
.then((response:DataInterface) => {
let data = response.gets();
resolve(data);
}).catch((response) => {
console.log(`[E] ${ self.constructor.name }: can not retrive BDD values`);
reject(response);
});
});
}
getOrder():any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getSeries()
.then((response:DataInterface) => {
let data = response.getsWhere([ [ '!=', 'id', null ] ], [ 'id', 'name' ], [ 'name', 'id' ]);
resolve(data);
}).catch((response) => {
console.log(`[E] ${ self.constructor.name }: can not retrive BDD values`);
reject(response);
});
});
}
getVideoAll(id:number):any {
// this.checkLocalBdd();
}
getVideo(id:number):any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getVideo()
.then((response:DataInterface) => {
let data = response.getsWhere([ [ '==', 'seriesId', id ], [ '==', 'seasonId', null ] ], undefined, [ 'episode', 'name' ]);
resolve(data);
}).catch((response) => {
reject(response);
});
});
}
countVideo(id:number):any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getVideo()
.then((response:DataInterface) => {
let data = response.getsWhere([ [ '==', 'seriesId', id ] ], undefined, undefined);
resolve(data.length);
}).catch((response) => {
reject(response);
});
});
}
/**
* Get all the season of a specific series
* @param id - ID of the series
* @param select - Selection filter
* @returns the required List.
*/
getSeason(id:number, select:string[] = []):any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getSeason()
.then((response:DataInterface) => {
let data = response.getsWhere([ [ '==', 'parentId', id ] ], [ 'id' ], [ 'number' ]);
if(select.length === 0) {
resolve(data);
return;
}
if(select[0] === '*') {
let data2 = response.getsWhere([ [ '==', 'id', data ] ], undefined, [ 'number' ]);
resolve(data2);
return;
}
let data3 = response.getsWhere([ [ '==', 'id', data ] ], select, [ 'number' ]);
resolve(data3);
return;
}).catch((response) => {
reject(response);
});
});
}
put(id:number, data:any):any {
let ret = this.http.putSpecific(this.serviceName, id, data);
return this.bdd.setAfterPut(this.serviceName, id, ret);
}
delete(id:number):any {
let ret = this.http.deleteSpecific(this.serviceName, id);
return this.bdd.delete(this.serviceName, id, ret);
}
getCoverUrl(coverId:number):any {
return this.http.createRESTCall(`data/${ coverId}`);
}
getCoverThumbnailUrl(coverId:number):any {
return this.http.createRESTCall(`data/thumbnail/${ coverId}`);
}
getLike(nameSeries:string):any {
let self = this;
return new Promise((resolve, reject) => {
self.bdd.getSeries()
.then((response:DataInterface) => {
let data = response.getNameLike(nameSeries);
if(data === null || data === undefined || data.length === 0) {
reject('Data does not exist in the local BDD');
return;
}
resolve(data);
return;
}).catch((response) => {
reject(response);
});
});
}
deleteCover(nodeId:number,
coverId:number) {
let self = this;
return new Promise((resolve, reject) => {
self.http.getSpecific(`${this.serviceName }/${ nodeId }/rm_cover`, coverId)
.then((response) => {
let data = response;
if(data === null || data === undefined) {
reject('error retrive data from server');
return;
}
self.bdd.asyncSetInDB(self.serviceName, nodeId, data);
resolve(data);
}).catch((response) => {
reject(response);
});
});
}
uploadCover(file:File,
nodeId:number,
progress:any = null) {
const formData = new FormData();
formData.append('fileName', file.name);
formData.append('nodeId', nodeId.toString());
formData.append('file', file);
let self = this;
return new Promise((resolve, reject) => {
self.http.uploadMultipart(`${this.serviceName }/${ nodeId }/add_cover/`, formData, progress)
.then((response) => {
let data = response;
if(data === null || data === undefined) {
reject('error retrive data from server');
return;
}
self.bdd.asyncSetInDB(self.serviceName, nodeId, data);
resolve(data);
}).catch((response) => {
reject(response);
});
});
}
}