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([ [ '==', 'series_id', id ], [ '==', 'season_id', 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([ [ '==', 'series_id', 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([ [ '==', 'parent_id', 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('file_name', file.name); formData.append('node_id', 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); }); }); } }