From 9e5e0d0c7443d0474a45b9c07926f2bcf10494e6 Mon Sep 17 00:00:00 2001 From: ievavold <ievavold@wisc.edu> Date: Mon, 3 Jun 2019 13:44:57 -0500 Subject: [PATCH] ROENROLL-1779 add basic DARS API endpoints Co-authored-by: Scott Berg <saberg3@wisc.edu> --- src/app/dars/dars-view/dars-view.component.ts | 3 + src/app/dars/models/audit-metadata.ts | 15 +++++ src/app/dars/models/degree-program.ts | 6 ++ src/app/dars/models/honors-option.ts | 5 ++ src/app/dars/models/institution.ts | 4 ++ src/app/dars/models/student-degree-program.ts | 14 +++++ src/app/dars/services/api.service.ts | 61 +++++++++++++++++++ src/environments/environment.prod.ts | 1 + src/environments/environment.ts | 1 + 9 files changed, 110 insertions(+) create mode 100644 src/app/dars/models/audit-metadata.ts create mode 100644 src/app/dars/models/degree-program.ts create mode 100644 src/app/dars/models/honors-option.ts create mode 100644 src/app/dars/models/institution.ts create mode 100644 src/app/dars/models/student-degree-program.ts create mode 100644 src/app/dars/services/api.service.ts diff --git a/src/app/dars/dars-view/dars-view.component.ts b/src/app/dars/dars-view/dars-view.component.ts index 70942c9..4c4db3f 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 0000000..319442d --- /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 0000000..697bcad --- /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 0000000..0741ecc --- /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 0000000..e55a3c9 --- /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 0000000..2a88d0b --- /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 0000000..2db81d6 --- /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 3d43d85..188b244 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 1c8984d..e1812ea 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, }; -- GitLab