Skip to content
Snippets Groups Projects
api.service.ts 2.09 KiB
Newer Older
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { DegreeProgram } from '../models/degree-program';
import { AuditMetadata } from '../models/audit-metadata';
import { StudentDegreeProgram } from '../models/student-degree-program';
import { environment } from './../../../environments/environment';
import { Audit } from '../models/audit';
Isaac Evavold's avatar
Isaac Evavold committed
import { map } from 'rxjs/operators';
const auditResponse: any = require('../../../assets/mock-data/audit-response.json');

const HTTP_OPTIONS = {
  headers: new HttpHeaders({
    'Content-Type': 'applications/json',
  }),
};

@Injectable({ providedIn: 'root' })
export class DarsApiService {
  constructor(private http: HttpClient) {}

  /**
   * Get all degree programs, honors, and institution data.
   *
   * All the data for institutions, honors, and degree programs is static.
   * The backend is going to cache all this data in S3 and create a single
   * endpoint for us to hit and get all of it!
   */
  public getStaticData(): Observable<DegreeProgram[]> {
    return new Observable();
  }

  /**
   * Get a students degree programs.
   */
Isaac Evavold's avatar
Isaac Evavold committed
  public getStudentDegreePrograms(
    _emplid: number,
  ): Observable<StudentDegreeProgram[]> {
    const url = `${environment.apiDarsUrl}/studentplans`;
Isaac Evavold's avatar
Isaac Evavold committed
    return this.http.get<StudentDegreeProgram[]>(url, HTTP_OPTIONS);
  }

  /**
   * Get audit metadata for all audits a user has.
   */
  public getAudits(): Observable<AuditMetadata[]> {
Isaac Evavold's avatar
Isaac Evavold committed
    const url = `${environment.apiDarsUrl}/auditmetadata`;
Isaac Evavold's avatar
Isaac Evavold committed
    return this.http.get<AuditMetadata[]>(url, HTTP_OPTIONS);
  }

  /**
   * Get a single audit.
   */
  public getAudit(reportId: number): Observable<Audit> {
    // const url = `${environment.apiDarsUrl}/reports/${reportId}`;
    // return this.http.get<any>(url, HTTP_OPTIONS);
    return of(auditResponse);
  }

  /**
   * Request a new audit
   */
  public newAudit(): Observable<AuditMetadata> {
    const url = `${environment.apiDarsUrl}/single-audit-requests`;
    return this.http.post<AuditMetadata>(url, HTTP_OPTIONS);
  }
}