diff --git a/src/app/dars/dars-view/dars-view.component.ts b/src/app/dars/dars-view/dars-view.component.ts index 70942c93b8bd49ceeb0c407ae0b900a4d7c1bd04..4c4db3fee87f5b6be9e5ba4889825320f4f8f971 100644 --- a/src/app/dars/dars-view/dars-view.component.ts +++ b/src/app/dars/dars-view/dars-view.component.ts @@ -1,5 +1,6 @@ import { Component, ViewChild, ElementRef } from '@angular/core'; import { MatSidenav } from '@angular/material'; +import { DarsApiService } from '../services/api.service'; @Component({ selector: 'cse-dars-view', @@ -47,4 +48,6 @@ export class DARSViewComponent { plan: 12345, }, ]; + + constructor(private api: DarsApiService) {} } diff --git a/src/app/dars/models/audit-metadata.ts b/src/app/dars/models/audit-metadata.ts new file mode 100644 index 0000000000000000000000000000000000000000..319442d1b2f78f5d8ab1846bfc30b5f1c69e488d --- /dev/null +++ b/src/app/dars/models/audit-metadata.ts @@ -0,0 +1,15 @@ +export interface AuditMetadata { + darsJobId: string; + darsAuditRunDate: string; + sisEmplId: string; + darsInstitutionCode: string; + darsInstitutionCodeDescription: string; + darsDegreeProgramCode: string; + darsStatusOfDegreeAuditRequest: string; + darsHonorsOptionCode: string; + darsHonorsOptionDescription: string; + darsDegreeAuditReportId: number; + darsCatalogYearTerm: string; + whichEnrolledCoursesIncluded: string; + degreePlannerPlanName: string; +} diff --git a/src/app/dars/models/degree-program.ts b/src/app/dars/models/degree-program.ts new file mode 100644 index 0000000000000000000000000000000000000000..697bcadb13967278ffa3fb1263661a5ce8c75ab4 --- /dev/null +++ b/src/app/dars/models/degree-program.ts @@ -0,0 +1,6 @@ +export interface DegreeProgram { + darsDegreeProgramCode: string; + darsInstitutionCode: string; + darsInstitutionCodeDescription: string; + darsDegreeProgramDescription: string; +} diff --git a/src/app/dars/models/honors-option.ts b/src/app/dars/models/honors-option.ts new file mode 100644 index 0000000000000000000000000000000000000000..0741eccb5824b4f1faa3741af7b1df185e7137d4 --- /dev/null +++ b/src/app/dars/models/honors-option.ts @@ -0,0 +1,5 @@ +export interface HonorsOption { + darsInstitutionCode: string; + darsHonorsOptionCode: string; + darsHonorsOptionDescription: string; +} diff --git a/src/app/dars/models/institution.ts b/src/app/dars/models/institution.ts new file mode 100644 index 0000000000000000000000000000000000000000..e55a3c99f2fd8204f78556f42cdf2ca4dcdd72cb --- /dev/null +++ b/src/app/dars/models/institution.ts @@ -0,0 +1,4 @@ +export interface Institution { + darsInstitutionCode: string; + darsInstitutionCodeDescription: string; +} diff --git a/src/app/dars/models/student-degree-program.ts b/src/app/dars/models/student-degree-program.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a88d0bf97767e2ec07aec0c3b57ce3def05087a --- /dev/null +++ b/src/app/dars/models/student-degree-program.ts @@ -0,0 +1,14 @@ +import { AuditMetadata } from './audit-metadata'; + +export interface StudentDegreeProgram { + darsDegreeProgramCode: string; + darsInstitutionCode: string; + darsCatalogYearTerm: string; + darsAlternateCatalogYearTerm1: string; + sisAcademicPlanCode: string; + sisAcademicPlanDescription: string; + sisAcademicPlanDeclareDate: string; + sisAcademicSubPlanCode: string; + sisAcademicSubPlanDescription: string; + auditRequestBody: AuditMetadata; +} diff --git a/src/app/dars/services/api.service.ts b/src/app/dars/services/api.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2db81d6c9d44468f31d00ac3697e492395b6b8ee --- /dev/null +++ b/src/app/dars/services/api.service.ts @@ -0,0 +1,61 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Observable } 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'; + +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. + */ + public getStudentDegreePrograms(emplid: number) { + const url = `${environment.apiDarsUrl}/student-degree-programs/${emplid}`; + 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}/audit-metadata`; + return this.http.get<AuditMetadata[]>(url, HTTP_OPTIONS); + } + + /** + * Get a single audit. + */ + public getAudit(reportId: number): Observable<any> { + const url = `${environment.apiDarsUrl}/reports/${reportId}`; + return this.http.get<any>(url, HTTP_OPTIONS); + } + + /** + * Request a new audit + */ + public newAudit(): Observable<AuditMetadata> { + const url = `${environment.apiDarsUrl}/single-audit-requests`; + return this.http.post<AuditMetadata>(url, HTTP_OPTIONS); + } +} diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3d43d853c0196d77f3c8b682ce4cfad403600390..188b244d78642afd984c3a1bea9049644736a178 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -4,5 +4,6 @@ export const environment = { apiPlannerUrl: '/api/planner/v1', apiSearchUrl: '/api/search/v1', apiEnrollUrl: '/api/enroll/v1', + apiDarsUrl: '', snackbarDuration: 4000, }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 1c8984d83a18b6090acebd0e2110e0236398aa20..e1812ea97e287f039b77766cdedfda218cdc149e 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -9,6 +9,7 @@ export const environment = { apiPlannerUrl: '/api/planner/v1', apiSearchUrl: '/api/search/v1', apiEnrollUrl: '/api/enroll/v1', + apiDarsUrl: 'https://gateway.test.api.wisc.edu/v1/dars', snackbarDuration: 4000, useNewDARSView: true, };