HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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));
  }
}