/** @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); }); }); } }