Skip to content
Snippets Groups Projects
api.service.ts 2.95 KiB
Newer Older
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, of } from 'rxjs';
Isaac Evavold's avatar
Isaac Evavold committed
import { DegreePrograms } 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/audit';
Paulina Nogal's avatar
Paulina Nogal committed
import { CourseBase } from '@app/core/models/course';
import { delay } from 'rxjs/operators';
Isaac Evavold's avatar
Isaac Evavold committed
const auditResponse: Audit = require('../../../assets/mock-data/audit-response.json');
const degreeProgramsResponse: DegreePrograms = require('../../../assets/mock-data/degreeprograms-response.json');
const auditMetadata: AuditMetadata[] = require('../../../assets/mock-data/auditmetadata.json');
const studentplans: StudentDegreeProgram[] = require('../../../assets/mock-data/studentplans.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.
   *
   */
Isaac Evavold's avatar
Isaac Evavold committed
  public getStaticData(): Observable<DegreePrograms> {
Paulina Nogal's avatar
Paulina Nogal committed
    // Prevents errors locally
    if (environment.production) {
      const url =
        'http://dev-enroll-app-data.s3-website-us-east-1.amazonaws.com/degreeprograms.json';
Isaac Evavold's avatar
Isaac Evavold committed
      return this.http.get<DegreePrograms>(url, HTTP_OPTIONS);
Paulina Nogal's avatar
Paulina Nogal committed
    } else {
      return of(degreeProgramsResponse);
    }
Paulina Nogal's avatar
Paulina Nogal committed
   *
   * Get courses
   */
  public getAllCourses(
    roadmapId: number,
  ): Observable<{ termCode: string; courses: CourseBase[] }[]> {
    return this.http.get<{ termCode: string; courses: CourseBase[] }[]>(
      `${environment.apiPlannerUrl}/degreePlan/${roadmapId}/courses`,
      HTTP_OPTIONS,
    );
  }

  /**
   * Get students degree programs.
  public getStudentDegreePrograms(): Observable<StudentDegreeProgram[]> {
    const url = `${environment.apiDarsUrl}/studentplans`;
    return this.http.get<StudentDegreeProgram[]>(url, HTTP_OPTIONS);
  }

  /**
   * Get audit metadata for all audits a user has.
   */
  public getAudits(): Observable<AuditMetadata[]> {
    const url = `${environment.apiDarsUrl}/auditmetadata`;
    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(
    darsInstitutionCode: string,
    darsDegreeProgramCode: string,
  ): Observable<AuditMetadata> {
    const url = `${environment.apiDarsUrl}/single-audit-requests`;
    return this.http.post<AuditMetadata>(
      url,
      { darsInstitutionCode, darsDegreeProgramCode },
      HTTP_OPTIONS,
    );