File: /var/dev/nowruzgan/admin/src/app/services/source.service.ts
import { Injectable } from '@angular/core';
import { GenericService } from './generic.service';
import { Batch, Source } from '../data.types';
import { environment } from '../../environments/environment';
@Injectable()
export class SourceService extends GenericService {
async list(sourcesBatch: Batch<Source>) {
sourcesBatch.meta.busy = true;
let more: string[] = [];
more.push(`skip=${sourcesBatch.offset || 0}`);
more.push(`limit=${sourcesBatch.limit || 30}`);
more.push(`sort=${sourcesBatch.sort}`);
more.push(sourcesBatch.filter ? `filter=${sourcesBatch.filter}` : '');
for(let key of Object.keys(sourcesBatch.constraints))
more.push(`${key}=${sourcesBatch.constraints[key]}`);
let response = await this.http
.get(`${environment.apiBase}/lexicon/source?${more.join('&')}`, this.headers)
.toPromise().catch(e => {
this.handleError(e);
return {sum: 0, limit: 0, list: []};
});
sourcesBatch.absorb(response);
sourcesBatch.meta.busy = false;
}
async create(source: Source): Promise<Source | null> {
source.meta.busySave = true;
source.meta.errorSave = false;
try {
let sourceData = await this.http
.post(`${environment.apiBase}/lexicon/source`, source.trans, this.headers)
.toPromise();
source.meta.busySave = false;
return new Source(sourceData);
}catch(e) {
this.handleError(e);
source.meta.busySave = false;
source.meta.errorSave = true;
return null;
}
}
async remove(source: Source): Promise<boolean> {
source.meta.busyDelete = true;
source.meta.errorDelete = false;
try {
let result: any = await this.http
.delete(`${environment.apiBase}/lexicon/source/${source.id}`, this.headers)
.toPromise();
source.meta.busyDelete = false;
return true;
}catch(e) {
this.handleError(e);
source.meta.busyDelete = false;
source.meta.errorDelete = true;
return false;
}
}
async search(term: string): Promise<Source[]> {
let response: any = await this.http
.get(`${environment.apiBase}/lexicon/source?filter=${term}`, this.headers)
.toPromise().catch(e => {this.handleError(e); return{list: []};});
return response.list.map((record: any) => new Source(record));
}
}