142 lines
3.7 KiB
TypeScript
142 lines
3.7 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 '../../common/service/http-wrapper';
|
|
import { DataInterface } from 'common/utils';
|
|
import { BddService } from './bdd';
|
|
import { TypeCheck } from 'common/utils/dataInterface';
|
|
|
|
@Injectable()
|
|
export class SeasonService {
|
|
private serviceName:string = 'season';
|
|
|
|
constructor(private http: HttpWrapperService,
|
|
private bdd: BddService) {
|
|
console.log('Start SeasonService');
|
|
}
|
|
|
|
|
|
get(id:number):any {
|
|
let self = this;
|
|
return new Promise((resolve, reject) => {
|
|
self.bdd.getSeason()
|
|
.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);
|
|
}).catch((response) => {
|
|
reject(response);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get all the video for a specific season
|
|
* @param id - Id of the season.
|
|
* @returns a promise on the list of season elements
|
|
*/
|
|
getVideo(id:number):any {
|
|
let self = this;
|
|
return new Promise((resolve, reject) => {
|
|
self.bdd.getVideo()
|
|
.then((response: DataInterface) => {
|
|
// let data = response.getsWhere([["==", "seasonId", id]], ["id", "name", "episode"], ["episode", "name"])
|
|
let data = response.getsWhere([
|
|
{
|
|
check: TypeCheck.EQUAL,
|
|
key: 'seasonId',
|
|
value: id,
|
|
},
|
|
],
|
|
[ 'episode', 'name' ]);
|
|
resolve(data);
|
|
}).catch((response) => {
|
|
reject(response);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get the number of video in this saison ID
|
|
* @param id - Id of the season.
|
|
* @returns The number of element present in this saison
|
|
*/
|
|
countVideo(id:number):any {
|
|
let self = this;
|
|
return new Promise((resolve, reject) => {
|
|
self.bdd.getVideo()
|
|
.then((response: DataInterface) => {
|
|
// let data = response.getsWhere([["==", "seasonId", _id]], ["id", "name", "episode"], ["episode", "name"])
|
|
let data = response.getsWhere([
|
|
{
|
|
check: TypeCheck.EQUAL,
|
|
key: 'seasonId',
|
|
value: id,
|
|
} ] );
|
|
resolve(data.length);
|
|
}).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);
|
|
}
|
|
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);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|