{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/account/login/login.component.css","webpack:///./src/app/components/account/login/login.component.html","webpack:///./src/app/components/account/login/login.component.ts","webpack:///./src/app/components/account/logout/logout.component.css","webpack:///./src/app/components/account/logout/logout.component.html","webpack:///./src/app/components/account/logout/logout.component.ts","webpack:///./src/app/components/account/user-account/user-account.component.css","webpack:///./src/app/components/account/user-account/user-account.component.html","webpack:///./src/app/components/account/user-account/user-account.component.ts","webpack:///./src/app/components/admin/admin-dashboard/admin-dashboard.component.css","webpack:///./src/app/components/admin/admin-dashboard/admin-dashboard.component.html","webpack:///./src/app/components/admin/admin-dashboard/admin-dashboard.component.ts","webpack:///./src/app/components/core/add-students-to-class/add-students-to-class.component.css","webpack:///./src/app/components/core/add-students-to-class/add-students-to-class.component.html","webpack:///./src/app/components/core/add-students-to-class/add-students-to-class.component.ts","webpack:///./src/app/components/core/class-list/class-list.component.css","webpack:///./src/app/components/core/class-list/class-list.component.html","webpack:///./src/app/components/core/class-list/class-list.component.ts","webpack:///./src/app/components/core/class-overview/class-overview.component.css","webpack:///./src/app/components/core/class-overview/class-overview.component.html","webpack:///./src/app/components/core/class-overview/class-overview.component.ts","webpack:///./src/app/components/core/dashboard/dashboard.component.css","webpack:///./src/app/components/core/dashboard/dashboard.component.html","webpack:///./src/app/components/core/dashboard/dashboard.component.ts","webpack:///./src/app/components/core/help-page/help-page.component.css","webpack:///./src/app/components/core/help-page/help-page.component.html","webpack:///./src/app/components/core/help-page/help-page.component.ts","webpack:///./src/app/components/core/login-help/login-help.component.css","webpack:///./src/app/components/core/login-help/login-help.component.html","webpack:///./src/app/components/core/login-help/login-help.component.ts","webpack:///./src/app/components/core/manage-accounts/manage-accounts.component.css","webpack:///./src/app/components/core/manage-accounts/manage-accounts.component.html","webpack:///./src/app/components/core/manage-accounts/manage-accounts.component.ts","webpack:///./src/app/components/core/manage-class/manage-class.component.css","webpack:///./src/app/components/core/manage-class/manage-class.component.html","webpack:///./src/app/components/core/manage-class/manage-class.component.ts","webpack:///./src/app/components/core/manage-courses/manage-courses.component.css","webpack:///./src/app/components/core/manage-courses/manage-courses.component.html","webpack:///./src/app/components/core/manage-courses/manage-courses.component.ts","webpack:///./src/app/components/core/manage-lesson/manage-lesson.component.css","webpack:///./src/app/components/core/manage-lesson/manage-lesson.component.html","webpack:///./src/app/components/core/manage-lesson/manage-lesson.component.ts","webpack:///./src/app/components/core/manage-rooms/manage-rooms.component.css","webpack:///./src/app/components/core/manage-rooms/manage-rooms.component.html","webpack:///./src/app/components/core/manage-rooms/manage-rooms.component.ts","webpack:///./src/app/components/core/manage-school/manage-school.component.css","webpack:///./src/app/components/core/manage-school/manage-school.component.html","webpack:///./src/app/components/core/manage-school/manage-school.component.ts","webpack:///./src/app/components/core/manage-user/manage-user.component.css","webpack:///./src/app/components/core/manage-user/manage-user.component.html","webpack:///./src/app/components/core/manage-user/manage-user.component.ts","webpack:///./src/app/components/core/nav-bar/nav-bar.component.css","webpack:///./src/app/components/core/nav-bar/nav-bar.component.html","webpack:///./src/app/components/core/nav-bar/nav-bar.component.ts","webpack:///./src/app/components/core/school-dashboard/school-dashboard.component.css","webpack:///./src/app/components/core/school-dashboard/school-dashboard.component.html","webpack:///./src/app/components/core/school-dashboard/school-dashboard.component.ts","webpack:///./src/app/components/core/school-list/school-list.component.css","webpack:///./src/app/components/core/school-list/school-list.component.html","webpack:///./src/app/components/core/school-list/school-list.component.ts","webpack:///./src/app/components/core/side-menu/side-menu.component.css","webpack:///./src/app/components/core/side-menu/side-menu.component.html","webpack:///./src/app/components/core/side-menu/side-menu.component.ts","webpack:///./src/app/components/core/view-class/view-class.component.css","webpack:///./src/app/components/core/view-class/view-class.component.html","webpack:///./src/app/components/core/view-class/view-class.component.ts","webpack:///./src/app/components/core/view-test-summary/view-test-summary.component.css","webpack:///./src/app/components/core/view-test-summary/view-test-summary.component.html","webpack:///./src/app/components/core/view-test-summary/view-test-summary.component.ts","webpack:///./src/app/components/core/view-user/view-user.component.css","webpack:///./src/app/components/core/view-user/view-user.component.html","webpack:///./src/app/components/core/view-user/view-user.component.ts","webpack:///./src/app/components/student/teacher-dashboard/teacher-dashboard.component.css","webpack:///./src/app/components/student/teacher-dashboard/teacher-dashboard.component.html","webpack:///./src/app/components/student/teacher-dashboard/teacher-dashboard.component.ts","webpack:///./src/app/components/super-user/super-user-dashboard/super-user-dashboard.component.css","webpack:///./src/app/components/super-user/super-user-dashboard/super-user-dashboard.component.html","webpack:///./src/app/components/super-user/super-user-dashboard/super-user-dashboard.component.ts","webpack:///./src/app/model/Person.ts","webpack:///./src/app/model/class.ts","webpack:///./src/app/model/lesson.ts","webpack:///./src/app/model/role.ts","webpack:///./src/app/model/school.ts","webpack:///./src/app/services/main.service.ts","webpack:///./src/app/services/router-history.service.ts","webpack:///./src/app/services/school.service.ts","webpack:///./src/app/services/user.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { LoginComponent } from './components/account/login/login.component';\r\nimport { DashboardComponent } from './components/core/dashboard/dashboard.component';\r\nimport { UserAccountComponent } from './components/account/user-account/user-account.component';\r\nimport { AuthGuard } from './services/user.service';\r\nimport { LogoutComponent } from './components/account/logout/logout.component';\r\nimport { ManageAccountsComponent } from './components/core/manage-accounts/manage-accounts.component';\r\nimport { ClassOverviewComponent } from './components/core/class-overview/class-overview.component';\r\nimport { SchoolListComponent } from './components/core/school-list/school-list.component';\r\nimport { ClassListComponent } from './components/core/class-list/class-list.component';\r\nimport { ViewUserComponent } from './components/core/view-user/view-user.component';\r\nimport { ViewClassComponent } from './components/core/view-class/view-class.component';\r\nimport { HelpPageComponent } from './components/core/help-page/help-page.component';\r\nimport { SchoolDashboardComponent } from './components/core/school-dashboard/school-dashboard.component';\r\nimport { LoginHelpComponent } from './components/core/login-help/login-help.component';\r\nimport { RouterHistoryService } from './services/router-history.service';\r\n\r\nconst routes: Routes = [\r\n  { path: 'login', component: LoginComponent },\r\n  { path: 'logout', component: LogoutComponent },\r\n  { path: 'quick_guide', redirectTo: '../assets/QUICK_GUIDE.pdf'},\r\n  { path: 'login-help', component: LoginHelpComponent },\r\n  { path: 'account', component: UserAccountComponent, canActivate: [AuthGuard] },\r\n  { path: 'manage-accounts', component: ManageAccountsComponent, canActivate: [AuthGuard] },\r\n  { path: 'school-list', component: SchoolListComponent, canActivate: [AuthGuard] },\r\n  { path: 'class-overview', component: ClassOverviewComponent, canActivate: [AuthGuard] },\r\n  { path: 'class-list', component: ClassListComponent, canActivate: [AuthGuard] },\r\n  { path: 'view-user', component: ViewUserComponent, canActivate: [AuthGuard] },\r\n  { path: 'view-class', component: ViewClassComponent, canActivate: [AuthGuard] },\r\n  { path: 'help-page', component: HelpPageComponent, canActivate: [AuthGuard] },\r\n  { path: 'school-dashboard', component: SchoolDashboardComponent, canActivate: [AuthGuard] },\r\n  { path: 'main', component: DashboardComponent, canActivate: [AuthGuard] }\r\n\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forRoot(routes)],\r\n  exports: [RouterModule],\r\n  providers: [RouterHistoryService]\r\n})\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<app-nav-bar *ngIf=\\\"user.currentUser\\\"></app-nav-bar>\\r\\n\\r\\n<div class=\\\"row\\\" (window:resize)=\\\"onResize($event)\\\">\\r\\n\\t<app-side-menu *ngIf=\\\"user.currentUser\\\"></app-side-menu>\\r\\n\\t<router-outlet></router-outlet>\\r\\n</div>\\r\\n\"","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { UserService } from './services/user.service';\r\nimport { MainService } from './services/main.service';\r\n\r\n@Component({\r\n  selector: 'app-root',\r\n  templateUrl: './app.component.html',\r\n  styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n  title = 'ideal-industries';\r\n\r\n  constructor(public user: UserService, public main: MainService) {\r\n    // Same as the onResize event below, only it checks the initial state of the window\r\n    if (window.innerWidth < 750) {\r\n      this.main.isCollapsed = true;\r\n    }\r\n  }\r\n\r\n  ngOnInit()\r\n  {\r\n    console.log(\"Last Logged In: \"+localStorage.getItem(\"loggedInDate\"));\r\n  }\r\n \r\n  // Checks the current window width when resizing. If less than 750, collapse the side menu to save space.\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event) {\r\n    // console.log(event.target.innerWidth);\r\n    if (event.target.innerWidth < 750) {\r\n      this.main.isCollapsed = true;\r\n    }\r\n  }\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './components/account/login/login.component';\r\nimport { AdminDashboardComponent } from './components/admin/admin-dashboard/admin-dashboard.component';\r\nimport { SuperUserDashboardComponent } from './components/super-user/super-user-dashboard/super-user-dashboard.component';\r\nimport { TeacherDashboardComponent } from './components/student/teacher-dashboard/teacher-dashboard.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NavBarComponent } from './components/core/nav-bar/nav-bar.component';\r\nimport { DashboardComponent } from './components/core/dashboard/dashboard.component';\r\nimport { UserAccountComponent } from './components/account/user-account/user-account.component';\r\nimport { LogoutComponent } from './components/account/logout/logout.component';\r\nimport { ManageUserComponent } from './components/core/manage-user/manage-user.component';\r\nimport { ManageAccountsComponent } from './components/core/manage-accounts/manage-accounts.component';\r\nimport { SideMenuComponent } from './components/core/side-menu/side-menu.component';\r\nimport { SchoolListComponent } from './components/core/school-list/school-list.component';\r\nimport { ClassOverviewComponent } from './components/core/class-overview/class-overview.component';\r\nimport { ManageSchoolComponent } from './components/core/manage-school/manage-school.component';\r\nimport { ManageClassComponent } from './components/core/manage-class/manage-class.component';\r\nimport { ClassListComponent } from './components/core/class-list/class-list.component';\r\nimport { ViewClassComponent } from './components/core/view-class/view-class.component';\r\nimport { ViewUserComponent } from './components/core/view-user/view-user.component';\r\nimport { AddStudentsToClassComponent } from './components/core/add-students-to-class/add-students-to-class.component';\r\nimport { HelpPageComponent } from './components/core/help-page/help-page.component';\r\nimport { AngularFontAwesomeModule } from 'angular-font-awesome';\r\nimport { SchoolDashboardComponent } from './components/core/school-dashboard/school-dashboard.component';\r\n\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { ManageLessonComponent } from './components/core/manage-lesson/manage-lesson.component';\r\nimport { ManageRoomsComponent } from './components/core/manage-rooms/manage-rooms.component';\r\nimport { LoginHelpComponent } from './components/core/login-help/login-help.component';\r\nimport { ViewTestSummaryComponent } from './components/core/view-test-summary/view-test-summary.component';\r\nimport { ManageCoursesComponent } from './components/core/manage-courses/manage-courses.component';\r\nimport { RouterHistoryService } from './services/router-history.service';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    AppComponent,\r\n    LoginComponent,\r\n    AdminDashboardComponent,\r\n    SuperUserDashboardComponent,\r\n    TeacherDashboardComponent,\r\n    NavBarComponent,\r\n    DashboardComponent,\r\n    UserAccountComponent,\r\n    LogoutComponent,\r\n    ManageUserComponent,\r\n    ManageAccountsComponent,\r\n    SideMenuComponent,\r\n    SchoolListComponent,\r\n    ClassOverviewComponent,\r\n    ManageSchoolComponent,\r\n    ManageClassComponent,\r\n    ClassListComponent,\r\n    ViewClassComponent,\r\n    ViewUserComponent,\r\n    AddStudentsToClassComponent,\r\n    HelpPageComponent,\r\n    SchoolDashboardComponent,\r\n    ManageLessonComponent,\r\n    ManageRoomsComponent,\r\n    LoginHelpComponent,\r\n    ViewTestSummaryComponent,\r\n    ManageCoursesComponent\r\n  ],\r\n  imports: [\r\n    BrowserModule,\r\n    FormsModule,\r\n    AppRoutingModule,\r\n    BrowserAnimationsModule,\r\n    HttpClientModule,\r\n    AngularFontAwesomeModule,\r\n    AgGridModule.withComponents([])\r\n  ],\r\n  providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}],\r\n  bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n  constructor(private routerHistory: RouterHistoryService)\r\n  { }\r\n}\r\n","module.exports = \".forgot-password\\r\\n{\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.forgot-password:hover\\r\\n{\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9hY2NvdW50L2xvZ2luL2xvZ2luLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUMsZUFBZTtBQUNoQjs7QUFFQTs7Q0FFQyxpQkFBaUI7QUFDbEIiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL2FjY291bnQvbG9naW4vbG9naW4uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3Jnb3QtcGFzc3dvcmRcclxue1xyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcmdvdC1wYXNzd29yZDpob3ZlclxyXG57XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn0iXX0= */\"","module.exports = \"<div id=\\\"login-container\\\">\\r\\n  <div class=\\\"card\\\">\\r\\n    <div class=\\\"card-header curiouser-card-title\\\">\\r\\n      <img class=\\\"login-logo mb-2\\\" style=\\\"margin: auto;\\\" alt=\\\"Ideal Industries logo\\\" src=\\\"assets/img/logo.png\\\">\\r\\n      <h4>VET Portal</h4>\\r\\n    </div>\\r\\n    <div class=\\\"card-body\\\">\\r\\n      <div class=\\\"mb-2\\\">\\r\\n        <div class=\\\"text-center\\\" [innerHTML]=\\\"user.notifications\\\"></div>\\r\\n      </div>\\r\\n\\r\\n      <form (submit)=\\\"user.login(username.value, password.value, keepLoggedIn.checked)\\\" action=\\\"#\\\">\\r\\n      \\r\\n      <p>Username</p>\\r\\n      <input type=\\\"text\\\" class=\\\"form-control mb-2\\\" #username required autofocus>\\r\\n      <p>Password</p>\\r\\n      <input type=\\\"password\\\" class=\\\"form-control mb-2\\\" #password required>\\r\\n      \\r\\n        <button class=\\\"btn btn-lg btn-primary btn-block mb-1\\\" type=\\\"submit\\\">Log In</button>\\r\\n      \\r\\n      <div class=\\\"keep-logged\\\">\\r\\n        <input type=\\\"checkbox\\\" #keepLoggedIn /> keep me logged in\\r\\n      </div>\\r\\n      <div class=\\\"card-footer\\\">\\r\\n        <a class=\\\"forgot-password\\\" (click)=\\\"forgotPassword()\\\">Forgot password?</a>  \\r\\n      </div>\\r\\n    </form>\\r\\n\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'app-login',\r\n  templateUrl: './login.component.html',\r\n  styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n  constructor(public user: UserService, public router: Router) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  forgotPassword() {\r\n    this.user.notifications = \"\";\r\n    this.router.navigateByUrl('login-help');\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWNjb3VudC9sb2dvdXQvbG9nb3V0LmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"container pt-3\\\">\\r\\n  <div class=\\\"row justify-content-sm-center\\\">\\r\\n    <div class=\\\"col-sm-12 col-md-8\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n        You have been successfully logged out. Click <a href=\\\"/login\\\">Login</a> to log back in to the application.\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\n\r\n@Component({\r\n  selector: 'app-logout',\r\n  templateUrl: './logout.component.html',\r\n  styleUrls: ['./logout.component.css']\r\n})\r\nexport class LogoutComponent implements OnInit {\r\n\r\n  constructor(public user: UserService) { }\r\n\r\n  ngOnInit() {\r\n    this.user.logout();\r\n  }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWNjb3VudC91c2VyLWFjY291bnQvdXNlci1hY2NvdW50LmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"container pt-3\\\">\\r\\n  <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n    <fa name=\\\"fas fa-times-circle\\\"><i aria-hidden=\\\"true\\\" class=\\\"fa fa-fas fa-times-circle\\\"></i></fa>\\r\\n  </button>\\r\\n  <div class=\\\"row justify-content-sm-center\\\">\\r\\n    <div class=\\\"col-sm-12 col-md-8\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n        <div class=\\\"card-header mt-3\\\">\\r\\n          <h4>Account Details</h4>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"ml-4 mr-4\\\" *ngIf=\\\"!notificationForPassword\\\">\\r\\n          <div class=\\\"text-center\\\" [innerHTML]=\\\"user.notifications\\\"></div>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"card-body\\\" style=\\\"margin-top: 0px !important;\\\">\\r\\n\\r\\n          <b style=\\\"font-weight:500;\\\">Username: &nbsp;</b> {{ userDetails.username }}\\r\\n\\r\\n          <div>\\r\\n            <b style=\\\"font-weight:500;\\\">Account Confirmed:</b> \\r\\n            <span class=\\\"ml-2\\\" [ngClass]=\\\" userDetails.confirmed == '1' ? 'text-success' : 'text-danger'\\\">\\r\\n              {{ userDetails.confirmed ? 'Confirmed':'Not Confirmed' }}\\r\\n            </span> \\r\\n\\r\\n            <button class=\\\"btn btn-sm btn-primary ml-4\\\" *ngIf=\\\"userDetails.confirmed == '0' && !confirmationEmailSent\\\" (click)=\\\"sendConfirmationEmail()\\\">Send Confirmation Email</button>\\r\\n\\r\\n            <span *ngIf=\\\"confirmationEmailSent && userDetails.confirmed == '0'\\\" class=\\\"form-inline\\\">\\r\\n              <label >Enter your token here: </label>\\r\\n              <input type=\\\"text\\\" class=\\\"form-control ml-2\\\" placeholder=\\\"Confirmation token\\\" #token (keyup.enter)=\\\"confirmToken(token.vlaue)\\\">\\r\\n              <button class=\\\"btn btn-primary ml-1\\\" (click)=\\\"confirmToken(token.value)\\\">Confirm</button>\\r\\n            </span>\\r\\n          </div>\\r\\n\\r\\n          <br>\\r\\n          <div>\\r\\n            Modify your account details using the form below:\\r\\n          </div>\\r\\n          <p>\\r\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"First Name\\\" required autofocus [(ngModel)]=\\\"userDetails.firstname\\\">\\r\\n          </p>\\r\\n          <p>\\r\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Last Name\\\" required [(ngModel)]=\\\"userDetails.lastname\\\">\\r\\n          </p>\\r\\n          <p>\\r\\n            <input type=\\\"email\\\" class=\\\"form-control\\\" placeholder=\\\"Email Address\\\" required [(ngModel)]=\\\"userDetails.email\\\">\\r\\n          </p>\\r\\n          <p>\\r\\n            <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"updateAccount()\\\">Update</button>\\r\\n            &nbsp;\\r\\n            <button class=\\\"btn btn-lg btn-warning\\\" (click)=\\\"cancelUpdate()\\\">Cancel</button>\\r\\n          <hr>\\r\\n          <div class=\\\"m-4\\\" *ngIf=\\\"notificationForPassword\\\">\\r\\n            <div class=\\\"text-center\\\" [innerHTML]=\\\"user.notifications\\\"></div>\\r\\n          </div>\\r\\n          <div>\\r\\n            <h4>Change your password</h4>\\r\\n          </div>\\r\\n          <br>\\r\\n          <div>Enter your current password:</div>\\r\\n          <p>\\r\\n            <input type=\\\"password\\\" class=\\\"form-control\\\" placeholder=\\\"Current Password\\\" #currentPassword>\\r\\n          </p>\\r\\n          <br>\\r\\n          <div>Enter your new password:</div>\\r\\n          <p>\\r\\n            <input type=\\\"password\\\" class=\\\"form-control\\\" placeholder=\\\"Password\\\" #password>\\r\\n          </p>\\r\\n          <p>\\r\\n            <input type=\\\"password\\\" class=\\\"form-control\\\" placeholder=\\\"Verify Password\\\" #confirmPassword>\\r\\n          </p>\\r\\n          <p>\\r\\n            <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"updatePassword(currentPassword.value, password.value, confirmPassword.value)\\\">Change Password</button>\\r\\n          </p>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Person } from 'src/app/model/Person';\r\nimport { Router } from '@angular/router';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\n\r\n@Component({\r\n  selector: 'app-user-account',\r\n  templateUrl: './user-account.component.html',\r\n  styleUrls: ['./user-account.component.css']\r\n})\r\nexport class UserAccountComponent implements OnInit {\r\n\r\n  public userDetails: Person;\r\n  public confirmationEmailSent: boolean = false;\r\n  public notificationForPassword: boolean = false;\r\n \r\n  constructor(public user: UserService, public router: Router, public school: SchoolService) { }\r\n\r\n  ngOnInit() {\r\n    this.userDetails = this.user.currentUser;\r\n  }\r\n\r\n  updateAccount() {\r\n    this.user.updateCurrentUser().subscribe((data) => {\r\n      console.log(data);\r\n      // TODO: Show a message confirming the update.\r\n      if(data.status == \"Success\")\r\n      {\r\n        setTimeout(()=>{\r\n          this.user.notifications = \"\";\r\n        }, 2000);\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.router.navigateByUrl('school-dashboard');\r\n  }\r\n\r\n  updatePassword(currentPassword, newPassword, confirmPassword) {\r\n\r\n    this.user.notifications = \"\";\r\n    this.notificationForPassword = true;\r\n\r\n    if(newPassword != confirmPassword)\r\n    {\r\n      this.user.showAlert(\"Failed\", \"Make sure your new passwords match.\", true);\r\n      return;\r\n    }\r\n\r\n    if(newPassword.length < 8)\r\n    {\r\n      this.user.showAlert(\"Failed\", \"Make sure your new password is at least 8 characters.\", true);\r\n      return;\r\n    }\r\n\r\n    this.user.updatePassword(currentPassword, newPassword).subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        setTimeout(()=>{\r\n          this.user.notifications = \"\";\r\n        }, 2000);\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  sendConfirmationEmail()\r\n  {\r\n    this.notificationForPassword = false;\r\n    this.user.sendConfirmationEmail().subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        this.confirmationEmailSent = true;\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  confirmToken(token)\r\n  {\r\n    this.notificationForPassword = false;\r\n    this.user.notifications = \"\";\r\n\r\n    this.user.confirmAccount(token).subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        this.userDetails.confirmed = '1';\r\n        setTimeout(()=>{\r\n          this.user.notifications = \"\";\r\n        }, 2000)\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYWRtaW4vYWRtaW4tZGFzaGJvYXJkL2FkbWluLWRhc2hib2FyZC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<p>\\r\\n  admin-dashboard works!\\r\\n</p>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-admin-dashboard',\r\n  templateUrl: './admin-dashboard.component.html',\r\n  styleUrls: ['./admin-dashboard.component.css']\r\n})\r\nexport class AdminDashboardComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","module.exports = \".student\\r\\n{\\r\\n\\tborder-bottom: 1px solid #e0e0e0;\\r\\n}\\r\\n\\r\\n.student:hover\\r\\n{\\r\\n\\tbackground-color:#f7f7f7;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jb3JlL2FkZC1zdHVkZW50cy10by1jbGFzcy9hZGQtc3R1ZGVudHMtdG8tY2xhc3MuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxnQ0FBZ0M7QUFDakM7O0FBRUE7O0NBRUMsd0JBQXdCO0FBQ3pCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jb3JlL2FkZC1zdHVkZW50cy10by1jbGFzcy9hZGQtc3R1ZGVudHMtdG8tY2xhc3MuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zdHVkZW50XHJcbntcclxuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnN0dWRlbnQ6aG92ZXJcclxue1xyXG5cdGJhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztcclxufSJdfQ== */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Add Students</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelAdd()\\\"><fa name=\\\"fas fa-times-circle\\\"></fa></button>\\r\\n  </div>\\r\\n\\r\\n  <ng-container *ngIf=\\\"availableStudents; else noStudents\\\">\\r\\n    <div *ngFor=\\\"let u of availableStudents\\\" class=\\\"row p-1 pt-2 student\\\">\\r\\n      <div class=\\\"col-5\\\" *ngIf=\\\"u.firstname != ''\\\">{{ u.firstname }} {{ u.lastname }}</div>\\r\\n      <div class=\\\"col-5\\\" *ngIf=\\\"u.firstname == ''\\\">{{ school.removeDomain(u.username) }}</div>\\r\\n      <div class=\\\"col-5\\\">{{ u.email }}</div>\\r\\n      <div class=\\\"col-1 text-right\\\" style=\\\"white-space:nowrap;\\\">\\r\\n        <button class=\\\"btn btn-sm btn-primary\\\" (click)=\\\"enrollStudent(u)\\\"><i class=\\\"fas fa-plus\\\"></i> Add</button>\\r\\n      </div>\\r\\n    </div>\\r\\n  </ng-container>\\r\\n  <ng-template #noStudents>\\r\\n    <h6 class=\\\"text-center mt-2\\\">No students available to be enrolled.</h6>\\r\\n  </ng-template>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Enrolled Students</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelAdd()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n  \\r\\n  <ng-container *ngIf=\\\"school.loadedStudentsByClass; else noStudents2\\\">\\r\\n    <div *ngFor=\\\"let s of school.loadedStudentsByClass\\\" class=\\\"row student p-2\\\" (click)=\\\"viewUser(s.id)\\\">\\r\\n      <div class=\\\"col-9\\\">\\r\\n        <a *ngIf=\\\"s.name != ' '\\\">{{ s.name }}</a>\\r\\n        <div class=\\\"col-5\\\" *ngIf=\\\"s.name == ' '\\\">{{ school.removeDomain(s.username) }}</div>\\r\\n      </div>\\r\\n      <div class=\\\"col-3\\\" style=\\\"white-space:nowrap; cursor: pointer;\\\">\\r\\n        <a (click)=\\\"unenrollStudent(s)\\\"><i class=\\\"fas fa-minus\\\"></i> Remove Student</a>\\r\\n      </div>\\r\\n    </div>\\r\\n  </ng-container>\\r\\n  <ng-template #noStudents2>\\r\\n    <h6 class=\\\"text-center mt-2\\\">No students currently enrolled.</h6>\\r\\n  </ng-template>\\r\\n</div>\\r\\n  \"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { Person } from 'src/app/model/Person';\r\n\r\n@Component({\r\n  selector: 'app-add-students-to-class',\r\n  templateUrl: './add-students-to-class.component.html',\r\n  styleUrls: ['./add-students-to-class.component.css']\r\n})\r\nexport class AddStudentsToClassComponent implements OnInit {\r\n\r\n  constructor(public school: SchoolService) { }\r\n\r\n  availableStudents: Person[] = [];\r\n\r\n  ngOnInit() {\r\n    this.availableStudents = Object.assign([], this.school.loadedStudents);\r\n    if (this.school.loadedStudentsByClass) {\r\n      for (let s of this.school.loadedStudentsByClass) {\r\n        for (let a of this.availableStudents) {\r\n          if (s.id == a.id) {\r\n            let index = this.availableStudents.indexOf(a);\r\n            this.availableStudents.splice(index, 1);\r\n            console.log(this.availableStudents);\r\n          }\r\n        }\r\n\r\n      }\r\n    }\r\n    console.log(\"Available: \"+JSON.stringify(this.availableStudents));\r\n  }\r\n\r\n  cancelAdd() {\r\n    this.school.viewAddStudentToClassPopup = false;\r\n  }\r\n\r\n  enrollStudent(student: Person) {\r\n    this.school.enrollStudent(student.id, this.school.selectedClass.id);\r\n    this.availableStudents.splice(this.availableStudents.indexOf(student), 1);\r\n  }\r\n\r\n  unenrollStudent(student: Person) {\r\n    this.school.unenrollStudent(student.id, this.school.selectedClass.id);\r\n\r\n    let i = this.school.loadedStudents.findIndex(item=>item.id == student.id);\r\n    this.availableStudents.push(this.school.loadedStudents[i]);\r\n\r\n  }\r\n}\r\n ","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9jbGFzcy1saXN0L2NsYXNzLWxpc3QuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<div class=\\\"container-fluid page-heading\\\">\\r\\n  <h2>\\r\\n    {{ school.currentUserSchool.name }} |&nbsp;&nbsp;{{ school.currentUserSchool.phone }}\\r\\n  </h2>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"ml-4\\\">\\r\\n  Total Seats: {{ school.currentUserSchool.total_seats }}\\r\\n  <br>\\r\\n  Active Seats: {{ school.currentUserSchool.active_seats }}\\r\\n  <br>\\r\\n  Instructors: 0\\r\\n  <br>\\r\\n  Students: 0\\r\\n  <br>\\r\\n  Available Classrooms:\\r\\n  <span *ngFor=\\\"let r of school.loadedRooms\\\" class=\\\"col\\\">\\r\\n    {{ r.room_number }}&nbsp;\\r\\n  </span>\\r\\n</div>\\r\\n\\r\\n<br>\\r\\n<br>\\r\\n<br>\\r\\n\\r\\n<div class=\\\"table-section\\\">\\r\\n  <div class=\\\"row table-header\\\">\\r\\n    <div class=\\\"col\\\">\\r\\n      <h5>Classes <span\\r\\n          class=\\\"badge badge-secondary\\\">{{ school.currentUserSchool.classes ? school.currentUserSchool.classes.length : 0 }}</span>\\r\\n      </h5>\\r\\n    </div>\\r\\n    <div class=\\\"col\\\"></div>\\r\\n    <div class=\\\"col text-right\\\">\\r\\n      <button *ngIf=\\\"user.currentUser.role.id < 4\\\" class=\\\"btn btn-sm btn-secondary m-1\\\" (click)=\\\"addRooms()\\\"><i\\r\\n          class=\\\"fas fa-plus\\\"></i> Rooms</button>\\r\\n\\r\\n      <button *ngIf=\\\"user.currentUser.role.id < 4\\\" class=\\\"btn btn-sm btn-secondary m-1\\\" (click)=\\\"addClass()\\\"><i\\r\\n        class=\\\"fas fa-plus\\\"></i> Class</button>\\r\\n\\r\\n      <button *ngIf=\\\"user.currentUser.role.id < 4\\\" class=\\\"btn btn-sm btn-secondary m-1\\\" (click)=\\\"addCourse()\\\"><i\\r\\n            class=\\\"fas fa-cog\\\"></i> Courses</button>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <div *ngIf=\\\"school.currentUserSchool.classes\\\">\\r\\n    <div *ngFor=\\\"let c of school.currentUserSchool.classes\\\" class=\\\"row\\\" style=\\\"background-color: red !important;\\\">\\r\\n      <!-- <div class=\\\"col-1\\\">{{ c.id }}</div> -->\\r\\n      <div class=\\\"col-4\\\" (click)=\\\"viewClass(c)\\\" style=\\\"cursor: pointer;\\\">{{ c.name }}</div>\\r\\n      <div class=\\\"col-4\\\">{{ c.instructor }}</div>\\r\\n      <div class=\\\"col-4 text-right\\\">\\r\\n        <span class=\\\"room-number\\\">rm: {{ c.room }}</span>\\r\\n        &nbsp;\\r\\n        <span class=\\\"enrolled\\\"><i class=\\\"fas fa-users\\\"></i> {{ c.enrolled }}</span>\\r\\n        &nbsp;\\r\\n        <span class=\\\"view-class-button\\\"><button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"viewClass(c)\\\"><i class=\\\"fas fa-book\\\"></i></button></span>\\r\\n        &nbsp;\\r\\n        <span class=\\\"manage-class-button\\\"><button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"school.editClass(c)\\\"><i class=\\\"fas fa-cog\\\"></i></button></span>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\\r\\n\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageClassPopup\\\" class=\\\"popup\\\">\\r\\n  <app-manage-class></app-manage-class>\\r\\n</div>\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageRoomsPopup\\\" class=\\\"popup\\\">\\r\\n  <app-manage-rooms></app-manage-rooms>\\r\\n</div>\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageCoursePopup\\\" class=\\\"popup\\\">\\r\\n  <app-manage-courses></app-manage-courses>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { IdealClass } from 'src/app/model/class';\r\nimport { Router } from '@angular/router';\r\nimport { UserService } from 'src/app/services/user.service';\r\n\r\n@Component({\r\n  selector: 'app-class-list',\r\n  templateUrl: './class-list.component.html',\r\n  styleUrls: ['./class-list.component.css']\r\n})\r\nexport class ClassListComponent implements OnInit {\r\n\r\n\tviewCourses : boolean = false;\r\n\r\n  constructor(public school: SchoolService, public router: Router, public user: UserService) { }\r\n\r\n  ngOnInit() {\r\n    this.school.getClassesBySchoolId(this.school.currentUserSchool.id);\r\n    this.school.loadUsersBySchool(this.school.currentUserSchool.id);\r\n  }\r\n\r\n  toggleViewCourses()\r\n  {\r\n    this.viewCourses = !this.viewCourses;\r\n    console.log(\"Toggled: \"+ this.viewCourses);\r\n  }\r\n\r\n  addRooms() {\r\n    this.school.viewManageRoomsPopup = true;\r\n  }\r\n\r\n  addClass() {\r\n    this.school.editClass(null);\r\n  }\r\n\r\n  addCourse() {\r\n    this.school.editCourse(null);\r\n  }\r\n\r\n  viewClass(cls: IdealClass) {\r\n    this.school.selectedClass = cls;\r\n    console.log(this.school.selectedClass);\r\n    this.router.navigateByUrl('/view-class');\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9jbGFzcy1vdmVydmlldy9jbGFzcy1vdmVydmlldy5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<p>\\r\\n  class-overview works!\\r\\n</p>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-class-overview',\r\n  templateUrl: './class-overview.component.html',\r\n  styleUrls: ['./class-overview.component.css']\r\n})\r\nexport class ClassOverviewComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"row\\\">\\r\\n  \\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'app-dashboard',\r\n  templateUrl: './dashboard.component.html',\r\n  styleUrls: ['./dashboard.component.css']\r\n})\r\nexport class DashboardComponent implements OnInit {\r\n\r\n  constructor(public user: UserService, public route: Router) { }\r\n\r\n  ngOnInit() {\r\n    //this.user.testRead();\r\n  }\r\n\r\n  showManageAccounts() {\r\n    this.route.navigateByUrl('/manage-accounts')\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9oZWxwLXBhZ2UvaGVscC1wYWdlLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<p>\\r\\n  help-page works!\\r\\n</p>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-help-page',\r\n  templateUrl: './help-page.component.html',\r\n  styleUrls: ['./help-page.component.css']\r\n})\r\nexport class HelpPageComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","module.exports = \".container-fluid\\r\\n{\\r\\n\\twidth: 100vw;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jb3JlL2xvZ2luLWhlbHAvbG9naW4taGVscC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztDQUVDLFlBQVk7QUFDYiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9sb2dpbi1oZWxwL2xvZ2luLWhlbHAuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXItZmx1aWRcclxue1xyXG5cdHdpZHRoOiAxMDB2dztcclxufSJdfQ== */\"","module.exports = \"<div class=\\\"container-fluid\\\">\\r\\n  <div class=\\\"row m-5\\\">\\r\\n\\r\\n    <div class=\\\"text-left\\\">\\r\\n      <button class=\\\"btn btn-primary btn-small\\\" (click)=\\\"goBack()\\\">\\r\\n        << Back</button>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"col-lg-6 offset-3\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n\\r\\n        <div class=\\\"ml-4 mr-4 mt-3\\\">\\r\\n          <div class=\\\"text-center\\\" [innerHTML]=\\\"user.notifications\\\"></div>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"card-header\\\">\\r\\n          <h3>Forgot Password/Username</h3>\\r\\n        </div>\\r\\n        \\r\\n        <div class=\\\"card-body\\\">\\r\\n          \\r\\n          <div *ngIf=\\\"!emailExists\\\">\\r\\n            <div>\\r\\n              Enter the email address associated with your account:\\r\\n            </div>\\r\\n            <br>\\r\\n            <input type=\\\"email\\\" class=\\\"form-control\\\" placeholder=\\\"Email Address\\\" #email (keyup.enter)=\\\"submitEmail(email.value)\\\">\\r\\n            <br>\\r\\n            <button class=\\\" btn btn-lg btn-primary\\\" (click)=\\\"submitEmail(email.value)\\\">Send Email</button>\\r\\n          </div>\\r\\n\\r\\n          <div *ngIf=\\\"emailExists && validToken == ''\\\">\\r\\n\\r\\n            <div>\\r\\n              Enter the token you recieved in your email below:\\r\\n            </div>\\r\\n            <br>\\r\\n            <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Temporary Token\\\" #token (keyup.enter)=\\\"submitToken(token.vlaue)\\\">\\r\\n            <br>\\r\\n            <button class=\\\" btn btn-lg btn-primary\\\" (click)=\\\"submitToken(token.value)\\\">Confirm Token</button>\\r\\n\\r\\n          </div>\\r\\n\\r\\n          <div *ngIf=\\\"token == validToken\\\">\\r\\n\\r\\n            <div>\\r\\n              Enter your new password and confirm it below:\\r\\n            </div>\\r\\n            <br>\\r\\n            <input type=\\\"password\\\" class=\\\"form-control\\\" placeholder=\\\"New Password\\\" #password (keyup.enter)=\\\"resetPassword(password.value, confirmPassword.value)\\\">\\r\\n            <br>\\r\\n            <input type=\\\"password\\\" class=\\\"form-control\\\" placeholder=\\\"Confirm Password\\\" #confirmPassword (keyup.enter)=\\\"resetPassword(password.value, confirmPassword.value)\\\">\\r\\n            <br>\\r\\n            <button class=\\\" btn btn-lg btn-primary\\\" (click)=\\\"resetPassword(password.value, confirmPassword.value)\\\">Reset Password</button>\\r\\n          </div>\\r\\n\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UserService } from 'src/app/services/user.service';\r\n\r\n@Component({\r\n  selector: 'app-login-help',\r\n  templateUrl: './login-help.component.html',\r\n  styleUrls: ['./login-help.component.css']\r\n})\r\nexport class LoginHelpComponent implements OnInit {\r\n\r\n  emailExists: boolean = false;\r\n  token: string = null;\r\n  validToken: string = \"\";\r\n\r\n  constructor(public user: UserService, private router: Router) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  submitEmail(email: string)\r\n  {\r\n    this.user.notifications = \"\";\r\n\r\n    //send email to backend, check if email exists, if does then send the email reset link\r\n    this.user.sendPasswordResetEmail(email).subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        this.emailExists = true;\r\n        console.log(\"Email Exists!\");\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  submitToken(token)\r\n  {\r\n    this.user.notifications = \"\";\r\n\r\n    this.token = token;\r\n\r\n    this.user.checkToken(token).subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        this.validToken = data.token;\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  resetPassword(password, confirmPassword)\r\n  {\r\n    this.user.notifications = \"\";\r\n\r\n    if(password != confirmPassword)\r\n    {\r\n      this.user.showAlert(\"Failed\", \"Make sure your passwords match.\", true);\r\n      return;\r\n    }\r\n\r\n    if(password.length < 8)\r\n    {\r\n      this.user.showAlert(\"Failed\", \"Make sure your password is at least 8 characters.\", true);\r\n      return;\r\n    }\r\n    \r\n    this.user.resetPassword(password, this.validToken).subscribe((data)=>{\r\n      console.log(data);\r\n      if(data.status == \"Success\")\r\n      {\r\n        setTimeout(()=>{\r\n          this.router.navigateByUrl('/login');\r\n        }, 1000)\r\n      }\r\n      this.user.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  goBack()\r\n  {\r\n    this.user.notifications = \"\";\r\n    this.router.navigateByUrl('/login');\r\n  }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2UtYWNjb3VudHMvbWFuYWdlLWFjY291bnRzLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"container-fluid page-heading\\\">\\r\\n  <h2>{{ school.currentUserSchool.name }} |&nbsp;&nbsp;{{ school.currentUserSchool.phone }}</h2>\\r\\n</div>\\r\\n\\r\\n<!-- <div class=\\\"row\\\">\\r\\n  <button (click)=\\\"addUserRow()\\\">Add Row</button>\\r\\n</div> -->\\r\\n\\r\\n<div>\\r\\n  <div class=\\\"row\\\">\\r\\n    \\r\\n    <div class=\\\"col-10\\\">\\r\\n      <div class=\\\"search-bar text-white\\\">\\r\\n        <div class=\\\"col\\\">\\r\\n          <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Search by email address\\\"\\r\\n            [(ngModel)]=\\\"school.searchExistingEmail\\\" (keyup)=\\\"school.filterUserlist()\\\">\\r\\n          <div *ngFor=\\\"let u of school.filteredUsers\\\">\\r\\n            <small>{{ u.firstname }} {{ u.lastname }} {{ u.email }}</small>\\r\\n            <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"editUser(u)\\\"><i class=\\\"fas fa-cog\\\"></i></button>\\r\\n            &nbsp;\\r\\n            <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"viewUser(u)\\\"><i class=\\\"fas fa-user\\\"></i></button>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n    \\r\\n    <div class=\\\"col-2 mt-4\\\" *ngIf=\\\"user.currentUser.role.id <= 2\\\">\\r\\n      <button *ngIf=\\\"viewActive\\\" class=\\\"btn btn-sm btn-primary m-2\\\" (click)=\\\"showInactiveUsers()\\\">View Inactive Users</button>\\r\\n      <button *ngIf=\\\"viewInactive\\\" class=\\\"btn btn-sm btn-primary m-2\\\" (click)=\\\"showActiveUsers()\\\">View Active Users</button>\\r\\n    </div>\\r\\n\\r\\n  </div>\\r\\n\\r\\n  <br>\\r\\n\\r\\n  <div *ngIf=\\\"viewActive\\\">\\r\\n\\r\\n    <div class=\\\"table-section\\\">\\r\\n      <div class=\\\"row table-header\\\">\\r\\n        <div class=\\\"col\\\">\\r\\n          <h5>School Administrators <span class=\\\"badge badge-secondary\\\">{{ school.loadedSchoolAdmins.length }}</span>\\r\\n          </h5>\\r\\n        </div>\\r\\n        <div class=\\\"col\\\"></div>\\r\\n        <div class=\\\"col\\\">\\r\\n          <button *ngIf=\\\"user.currentUser.role.id == 1\\\" class=\\\"btn btn-sm btn-secondary\\\" (click)=\\\"addAdmin()\\\">\\r\\n            <i class=\\\"fas fa-plus\\\"></i> Admin\\r\\n          </button></div>\\r\\n      </div>\\r\\n\\r\\n      <div *ngFor=\\\"let u of school.loadedSchoolAdmins\\\" class=\\\"row\\\">\\r\\n        <div class=\\\"col-3\\\" (click)=\\\"viewUser(u)\\\" style=\\\"cursor: pointer;\\\">{{ u.firstname }} {{ u.lastname }}</div>\\r\\n        <div class=\\\"col-3\\\">{{ u.phone1 }}</div>\\r\\n        <div class=\\\"col-3\\\">{{ u.email }}</div>\\r\\n        <div class=\\\"col-3\\\" style=\\\"white-space:nowrap;\\\">\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" *ngIf=\\\"user.currentUser.role.id == 1\\\" (click)=\\\"editUser(u)\\\"><i\\r\\n              class=\\\"fas fa-edit\\\"></i></button>\\r\\n          &nbsp;\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"viewUser(u)\\\"><i class=\\\"fas fa-user\\\"></i></button>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"table-section\\\">\\r\\n      <div class=\\\"row table-header\\\">\\r\\n        <div class=\\\"col\\\">\\r\\n          <h5>Instructors <span class=\\\"badge badge-secondary\\\">{{ school.loadedInstructors.length }}</span></h5>\\r\\n        </div>\\r\\n        <div class=\\\"col\\\"></div>\\r\\n        <div class=\\\"col \\\"><button *ngIf=\\\"user.currentUser.role.id <= 2\\\" class=\\\"btn btn-sm btn-secondary\\\"\\r\\n            (click)=\\\"addInstructor()\\\">\\r\\n            <i class=\\\"fas fa-plus\\\"></i> Instructor\\r\\n          </button></div>\\r\\n      </div>\\r\\n\\r\\n      <div *ngFor=\\\"let u of school.loadedInstructors\\\" class=\\\"row\\\">\\r\\n        <div class=\\\"col-3\\\" (click)=\\\"viewUser(u)\\\" style=\\\"cursor: pointer;\\\">{{ u.firstname }} {{ u.lastname }}</div>\\r\\n        <div class=\\\"col-3\\\">{{ u.phone1 }}</div>\\r\\n        <div class=\\\"col-3\\\">{{ u.email }}</div>\\r\\n        <div class=\\\"col-3\\\">\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" *ngIf=\\\"user.currentUser.role.id <= 2\\\" (click)=\\\"editUser(u)\\\"><i\\r\\n              class=\\\"fas fa-edit\\\"></i></button>\\r\\n          &nbsp;\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"viewUser(u)\\\"><i class=\\\"fas fa-user\\\"></i></button>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"table-section\\\">\\r\\n      <div class=\\\"row table-header\\\">\\r\\n        <div class=\\\"col\\\">\\r\\n          <h5>Students <span class=\\\"badge badge-secondary\\\">{{ school.loadedStudents.length }}</span></h5>\\r\\n        </div>\\r\\n        <div class=\\\"col\\\"></div>\\r\\n        <div class=\\\"col \\\">\\r\\n          <button *ngIf=\\\"user.currentUser.role.id <= 3 && school.selectedSchool.scorm == '1' && school.loadedStudents.length > 0\\\" class=\\\"btn btn-sm btn-light m-1 mr-2\\\" (click)=\\\"confirmRemoveAllStudents()\\\">\\r\\n            <i class=\\\"fas fa-times\\\"></i> Remove All Students\\r\\n          </button>\\r\\n          <button *ngIf=\\\"user.currentUser.role.id <= 3\\\" class=\\\"btn btn-sm btn-secondary m-1\\\"\\r\\n            (click)=\\\"addStudent()\\\">\\r\\n            <i class=\\\"fas fa-plus\\\"></i> Student\\r\\n          </button>\\r\\n        </div>\\r\\n      </div>\\r\\n\\r\\n      <div *ngFor=\\\"let u of school.loadedStudents\\\" class=\\\"row\\\">\\r\\n        <div class=\\\"col-3\\\" (click)=\\\"viewUser(u)\\\" style=\\\"cursor: pointer;\\\">\\r\\n          <ng-container *ngIf=\\\"u.firstname; else showUsername\\\">\\r\\n            {{ u.firstname }} {{ u.lastname }}\\r\\n          </ng-container>\\r\\n          <ng-template #showUsername>\\r\\n            {{ u.username }}\\r\\n          </ng-template>\\r\\n        </div>\\r\\n        <div class=\\\"col-3\\\">{{ u.phone1 }}</div>\\r\\n        <div class=\\\"col-3\\\">{{ u.email }}</div>\\r\\n        <div class=\\\"col-3\\\">\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" *ngIf=\\\"user.currentUser.role.id <= 3\\\" (click)=\\\"editUser(u)\\\"><i\\r\\n              class=\\\"fas fa-edit\\\"></i></button>\\r\\n          &nbsp;\\r\\n          <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"viewUser(u)\\\"><i class=\\\"fas fa-user\\\"></i></button>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <div *ngIf=\\\"viewInactive\\\">\\r\\n    <h4>Inactive Users</h4>\\r\\n\\r\\n    Click the Undelete button below to reinstate inactive users to the current school at their previous role. <br>\\r\\n\\r\\n    <div *ngFor=\\\"let u of school.loadedUsers_Inactive\\\" class=\\\"row m-1\\\">\\r\\n      <div class=\\\"col\\\">{{ u.firstname }} {{ u.lastname }}</div>\\r\\n      <div class=\\\"col\\\">{{ u.phone1 }}</div>\\r\\n      <div class=\\\"col\\\">{{ u.email }}</div>\\r\\n      <div class=\\\"col\\\">{{ u.role_name }}</div>\\r\\n      <div class=\\\"col\\\"><button class=\\\"btn btn-secondary\\\" (click)=\\\"unDeleteUser(u)\\\">Undelete</button></div>\\r\\n    </div>\\r\\n\\r\\n  </div>\\r\\n</div>\\r\\n\\r\\n<br>\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageAccountPopup\\\" class=\\\"popup\\\">\\r\\n  <app-manage-user></app-manage-user>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { Person } from 'src/app/model/Person';\r\nimport { Router } from '@angular/router';\r\nimport * as lessonModel from 'src/app/model/lesson';\r\n\r\n@Component({\r\n  selector: 'app-manage-accounts',\r\n  templateUrl: './manage-accounts.component.html',\r\n  styleUrls: ['./manage-accounts.component.css']\r\n})\r\nexport class ManageAccountsComponent implements OnInit {\r\n\r\n  viewInactive = false;\r\n  viewActive = true;\r\n\r\n  public rowData: any;\r\n\r\n  constructor(public user: UserService, public school: SchoolService, public router: Router) {\r\n    this.school.loadedUsers = null;\r\n    this.school.loadedStudents = null;\r\n   }\r\n\r\n  ngOnInit() {\r\n    this.school.loadUsersBySchool(this.school.currentUserSchool.id);\r\n    this.loadQuizzes();\r\n  }\r\n\r\n  addAdmin() {\r\n    this.school.createSchoolAdmin();\r\n  }\r\n\r\n  addInstructor() {\r\n    this.school.createInstructor();\r\n  }\r\n\r\n  addStudent() {\r\n    this.school.createStudent();\r\n  }\r\n\r\n  viewUser(u: Person) {\r\n    // console.log(JSON.stringify(u));\r\n    this.school.viewUser = u;\r\n    this.router.navigateByUrl('/view-user');\r\n  }\r\n\r\n  editUser(u: Person) {\r\n    this.school.selectedUser = u;\r\n    this.school.editUser(u);\r\n  }\r\n\r\n  unDeleteUser(u: Person) {\r\n    this.user.unDeleteUser(u.id).subscribe(data => {\r\n      console.log(data);\r\n      this.school.loadUsersBySchool(this.school.currentUserSchool.id);\r\n      this.showActiveUsers();\r\n    })\r\n  }\r\n\r\n  showActiveUsers() {\r\n    this.viewActive = true;\r\n    this.viewInactive = false;\r\n  }\r\n\r\n  showInactiveUsers() {\r\n    this.viewActive = false;\r\n    this.viewInactive = true;\r\n  }\r\n\r\n  confirmRemoveAllStudents()\r\n  {\r\n    if (confirm(\"Are you sure you want to remove all students? This cannot be undone! This is not a soft removal. Students will be deleted.\")) {\r\n      //proceed\r\n      console.log(\"Removing all students...\");\r\n      this.removeAllStudents();\r\n    } else {\r\n      //don't proceed\r\n      console.log(\"Cancelling...\");\r\n    }\r\n  }\r\n\r\n  removeAllStudents()\r\n  {\r\n    this.school.removeAllStudents();\r\n  }\r\n\r\n  //testing only\r\n  addUserRow()\r\n  {\r\n    let user  = new Person();\r\n    user.firstname = \"test\";\r\n    user.lastname = \"test\";\r\n    this.school.addUserToListGroup(user, 2);\r\n  }\r\n\r\n  loadQuizzes() {\r\n    this.school.getAllQuizzes(this.school.currentUserSchool.id).subscribe(data => {\r\n\r\n      this.school.allQuizzes = [];\r\n      this.school.allQuizzesFlat = [];\r\n\r\n      // skip if there are no tests yet in this school\r\n      if (!data || !data.courses || data.status == \"Failed\")\r\n      {\r\n        this.rowData = this.school.allQuizzes;\r\n        return;\r\n      }\r\n\r\n      for (let c of data.courses) {\r\n        //console.log(c);\r\n        if (c) {\r\n          for (let l of c.lessons) {\r\n            //console.log(l)\r\n            if (l) {\r\n              for (let t of l.test_attempts) {\r\n                //console.log(t);\r\n                if (t) {\r\n                  //if student, only display the students tests\r\n                  // console.log('RoleID:'+this.user.currentUser.role.id);\r\n                  if (this.user.currentUser.role.id == 4 && t.student_id != this.user.currentUser.id) \r\n                    continue;\r\n\r\n                    // console.log(t);\r\n\r\n                  let q = new lessonModel.IdealQuizFlat();\r\n                  q.course_id = c.course_id;\r\n                  q.class_id = t.class_id;\r\n                  q.lesson_id = l.lesson_id;\r\n                  q.test_id = t.test_id;\r\n                  q.test_type =  lessonModel.LessonTypes[t.test_type],\r\n                  q.student_id = t.student_id;\r\n                  q.student_name = this.school.removeDomain(t.student_name);\r\n                  q.start_time = new Date(t.start_time * 1000);\r\n                  q.end_time = new Date(t.end_time * 1000);\r\n                  q.elapsed_time = this.school.getElapsedTimeInMinutes(t.elapsed_time);\r\n                  q.score = t.score;\r\n                  q.violations = t.violations; \r\n                  q.school_id = t.school_id; \r\n                  q.lessonName = l.lesson_name;\r\n\r\n                  this.school.allQuizzesFlat.push(q);\r\n                  this.school.allQuizzes.push(q.convertToIdealQuiz());\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      this.rowData = this.school.allQuizzes;\r\n    });\r\n  }\r\n}","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2UtY2xhc3MvbWFuYWdlLWNsYXNzLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Manage Class</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"><i aria-hidden=\\\"true\\\" class=\\\"fa fa-fas fa-times-circle\\\"></i></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n  <div>\\r\\n    <small>Create or update a class.</small>\\r\\n    <p>Name:</p>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Class Name\\\" required autofocus\\r\\n      [(ngModel)]=\\\"school.selectedClass.name\\\">\\r\\n    <div class=\\\"alert alert-danger\\\" *ngIf=\\\"validator.name_required\\\"></div>\\r\\n\\r\\n    <p>Course:</p>\\r\\n    <select class=\\\"form-control\\\" (change)=\\\"selectCourse()\\\" [(ngModel)]=\\\"course_id\\\">\\r\\n      <option [value]=\\\"0\\\">Select a course...</option>\\r\\n      <option *ngFor=\\\"let c of school.loadedCourses\\\" [value]=\\\"c.id\\\">{{ c.name }}</option>\\r\\n    </select>\\r\\n\\r\\n    <p>Room:</p>\\r\\n    <select class=\\\"form-control\\\" (change)=\\\"selectRoom()\\\" [(ngModel)]=\\\"classroom_id\\\">\\r\\n      <option [value]=\\\"0\\\">Select a classroom...</option>\\r\\n      <option *ngFor=\\\"let r of school.loadedRooms\\\" [value]=\\\"r.id\\\">{{ r.room_number }}</option>\\r\\n    </select>\\r\\n\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col\\\">\\r\\n        <p>Start Date:</p>\\r\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Start Date\\\" required\\r\\n          [(ngModel)]=\\\"school.selectedClass.start_date\\\">\\r\\n      </div>\\r\\n      <div class=\\\"col\\\">\\r\\n        <p>End Date:</p>\\r\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"End Date\\\" required\\r\\n          [(ngModel)]=\\\"school.selectedClass.end_date\\\">\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n\\r\\n    <div class=\\\"row\\\">\\r\\n      <div class=\\\"col\\\">\\r\\n        <p>Start Time:</p>\\r\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Start Time\\\" required\\r\\n          [(ngModel)]=\\\"school.selectedClass.start_time\\\">\\r\\n      </div>\\r\\n\\r\\n      <div class=\\\"col\\\">\\r\\n        <p>End Time:</p>\\r\\n        <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"End Time\\\" required\\r\\n          [(ngModel)]=\\\"school.selectedClass.end_time\\\">\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n    Days:\\r\\n    <table>\\r\\n      <tr>\\r\\n        <td>\\r\\n          <input type=\\\"checkbox\\\" [(ngModel)]=\\\"school.selectedClass.monday\\\" /> Mo&nbsp;\\r\\n        </td>\\r\\n        <td>\\r\\n          <input type=\\\"checkbox\\\" [(ngModel)]=\\\"school.selectedClass.tuesday\\\" /> Tu&nbsp;\\r\\n        </td>\\r\\n        <td>\\r\\n          <input type=\\\"checkbox\\\" [(ngModel)]=\\\"school.selectedClass.wednesday\\\" /> We&nbsp;\\r\\n        </td>\\r\\n        <td>\\r\\n          <input type=\\\"checkbox\\\" [(ngModel)]=\\\"school.selectedClass.thursday\\\" /> Th&nbsp;\\r\\n        </td>\\r\\n        <td>\\r\\n          <input type=\\\"checkbox\\\" [(ngModel)]=\\\"school.selectedClass.friday\\\" /> Fr&nbsp;\\r\\n        </td>\\r\\n      </tr>\\r\\n    </table>\\r\\n\\r\\n    <p>Instructor:</p>\\r\\n    <select class=\\\"form-control\\\" (change)=\\\"selectInstructor()\\\" [(ngModel)]=\\\"selectedInstructor\\\">\\r\\n      <option [value]=\\\"0\\\">Select an instructor...</option>\\r\\n      <option *ngFor=\\\"let u of school.loadedInstructors\\\" [value]=\\\"u.id\\\">{{ u.lastname }}</option>\\r\\n    </select>\\r\\n\\r\\n    <!-- <button (click)=\\\"test()\\\">test</button> -->\\r\\n\\r\\n    <div class=\\\"popup-footer\\\">\\r\\n      <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"school.saveSelectedClass()\\\">Submit</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-lg btn-warning\\\" (click)=\\\"cancelUpdate()\\\">Cancel</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-info\\\" (click)=\\\"createMockClass()\\\">Mock Class</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-danger\\\" (click)=\\\"removeClass()\\\">Remove</button>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { SchoolUtil } from 'src/app/model/school';\r\nimport { Person } from 'src/app/model/Person';\r\nimport { validateConfig } from '@angular/router/src/config';\r\n\r\n@Component({\r\n  selector: 'app-manage-class',\r\n  templateUrl: './manage-class.component.html',\r\n  styleUrls: ['./manage-class.component.css']\r\n})\r\nexport class ManageClassComponent implements OnInit {\r\n\r\n  public selectedInstructor = 0;\r\n  // public classroom_id = 0;\r\n  public classroom_id : any;\r\n  public course_id = 0;\r\n  public class_id : number;\r\n\r\n  public validator: CourseValidator = new CourseValidator();\r\n\r\n  constructor(public school: SchoolService) {\r\n\r\n    this.school.loadAllCourses();\r\n    this.course_id = this.school.selectedClass.course_id;\r\n    this.classroom_id = this.school.selectedClass.classroom_id;\r\n    this.class_id = this.school.selectedClass.id;\r\n\r\n    console.log(\"class id: \"+this.class_id);\r\n   }\r\n\r\n  ngOnInit() {\r\n    //console.log(this.school.selectedClass);\r\n    if (this.school.selectedClass.instructor_id) { \r\n      this.selectedInstructor = this.school.selectedClass.instructor_id;\r\n    }\r\n    if (this.school.selectedClass.classroom_id) {\r\n      this.classroom_id = Number(this.school.selectedClass.classroom_id);\r\n    }\r\n  }\r\n\r\n  test()\r\n  {\r\n    this.course_id = 10;\r\n    this.classroom_id = 0;\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewManageClassPopup = false;\r\n  }\r\n\r\n  createMockClass() {\r\n    this.school.selectedClass = new SchoolUtil().createMockClass();\r\n  }\r\n\r\n  selectRoom() {\r\n    this.school.selectedClass.classroom_id = this.classroom_id;\r\n    console.log(\"Selected room: \"+this.classroom_id);\r\n  }\r\n\r\n  selectCourse() {\r\n    console.log(\"[ManageClassComponent] Pre selectCourse\");\r\n    this.school.selectedClass.course_id = this.course_id;\r\n    console.log(\"[ManageClassComponent] Post selectCourse\");\r\n  }\r\n\r\n  selectInstructor() {\r\n    this.school.selectedClass.instructor_id = this.selectedInstructor;\r\n    console.log(this.selectedInstructor);\r\n  }\r\n\r\n  saveClass() {\r\n    \r\n    if (this.validator.isValid()) {\r\n      this.school.saveSelectedClass();\r\n    }\r\n  }\r\n\r\n  removeClass()\r\n  {\r\n    this.school.deleteClass(this.class_id);\r\n    this.school.viewManageClassPopup = false;\r\n  }\r\n}\r\n\r\nexport class CourseValidator {\r\n  name_required = false;\r\n  startDate_required = false;\r\n  instructor_required = false;\r\n  classroom_required = false;\r\n\r\n  isValid(): boolean {\r\n    let valid = false;\r\n\r\n    if (!this.name_required &&\r\n      !this.startDate_required &&\r\n      !this.classroom_required &&\r\n      !this.instructor_required) {\r\n        valid = true;\r\n      }\r\n\r\n    return valid;\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2UtY291cnNlcy9tYW5hZ2UtY291cnNlcy5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n\\t<div class=\\\"col-12\\\" [innerHTML]=\\\"school.notifications\\\"></div>\\r\\n\\r\\n\\t<div class=\\\"popup-header\\\">\\r\\n\\t\\t<h5>Manage Courses</h5>\\r\\n\\t\\t<button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n\\t\\t\\t<fa name=\\\"fas fa-times-circle\\\"><i aria-hidden=\\\"true\\\" class=\\\"fa fa-fas fa-times-circle\\\"></i></fa>\\r\\n\\t\\t</button>\\r\\n\\t</div>\\r\\n\\t<div>\\r\\n\\t\\t<small>Create or update a course.</small>\\r\\n\\r\\n\\t\\t<div class=\\\"row mb-3\\\">\\r\\n\\t\\t\\t<div class=\\\"col-10\\\">\\r\\n\\t\\t\\t\\t<p> Select a Course to Edit: </p>\\r\\n\\t\\t\\t\\t<select class=\\\"form-control\\\" (change)=\\\"selectCourse()\\\" [(ngModel)]=\\\"course_id\\\">\\r\\n\\t\\t\\t\\t\\t<option [value]=\\\"0\\\">Select a course...</option>\\r\\n\\t\\t\\t\\t\\t<option *ngFor=\\\"let c of school.loadedCourses\\\" [value]=\\\"c.id\\\">{{ c.name }}</option>\\r\\n\\t\\t\\t\\t</select>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t<div class=\\\"col-2 text-left\\\">\\r\\n\\t\\t\\t\\t<button class=\\\"btn btn btn-secondary\\\" style=\\\"margin-top: 35px; width: 100%;\\\" (click)=\\\"clearCourseSelection()\\\">\\r\\n\\t\\t\\t\\t\\t<i class=\\\"fas fa-times\\\"></i> Clear\\r\\n\\t\\t\\t\\t</button>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t</div>\\r\\n\\r\\n\\t\\t<hr>\\r\\n\\r\\n\\t\\t<div class=\\\"row\\\">\\r\\n\\t\\t\\t<div class=\\\"col-12 mb-3\\\">\\r\\n\\t\\t\\t\\t<p>Course Details:</p>\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t<p>Name:</p>\\r\\n\\t\\t\\t\\t<input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Course Name\\\" required autofocus [(ngModel)]=\\\"school.selectedCourse.name\\\">\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t<p>Description:</p>\\r\\n\\t\\t\\t\\t<input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Course Description\\\" required autofocus [(ngModel)]=\\\"school.selectedCourse.description\\\">\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t<p>Is this course active?</p>\\r\\n\\t\\t\\t\\t<input class=\\\"ml-3\\\" type=\\\"checkbox\\\" [(ngModel)]=\\\"course_active\\\"/> Yes this course is active\\r\\n\\r\\n\\t\\t\\t\\t<div class=\\\"col-12 text-right\\\">\\r\\n\\t\\t\\t\\t\\t<button class=\\\"btn btn-sm btn-primary m-1 text-right\\\" (click)=\\\"saveCourse()\\\">{{ school.selectedCourse.id ? 'Update' : 'Add' }} Course</button>\\r\\n\\t\\t\\t\\t\\t<button class=\\\"btn btn-sm btn-danger m-1 text-right\\\" (click)=\\\"removeCourse()\\\">Remove Course</button>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t</div>\\r\\n\\t\\t\\r\\n\\t\\t<div class=\\\"row\\\" *ngIf=\\\"school.selectedCourse.id\\\">\\r\\n\\r\\n\\t\\t\\t<div class=\\\"col-12\\\">\\r\\n\\t\\t\\t\\t<hr>\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t<p>Assigned Course Lessons:</p>\\r\\n\\t\\t\\t\\t<br>\\r\\n\\t\\t\\t\\t<div class=\\\"row\\\">\\r\\n\\t\\t\\t\\t\\t<div class=\\\"col-6\\\">\\r\\n\\t\\t\\t\\t\\t\\t<div *ngIf=\\\"school.loadedLessonsByCourse.length > 0\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<div *ngFor=\\\"let l of school.loadedLessonsByCourse\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"card\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"card-body list-group-item-action d-flex w-100 justify-content-between\\\" style=\\\"cursor: pointer;\\\" (click)=\\\"selectLesson(l.lesson_id)\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span>{{ l.title }}</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<a class=\\\"\\\"><i class=\\\"fas fa-cog\\\"></i></a>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t<div *ngIf=\\\"school.loadedLessonsByCourse.length == 0\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<p>No lessons for this course...</p>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t<div class=\\\"col-6 mb-4 form\\\">\\r\\n\\t\\t\\t\\t\\t\\t<div class=\\\"col-12 text-right\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<button class=\\\"btn btn-sm btn-secondary\\\" (click)=\\\"clearLessonSelection()\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fas fa-times\\\"></i> Clear Selection\\r\\n\\t\\t\\t\\t\\t\\t\\t</button>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<div class=\\\"form-row\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"form-group col-lg-6 col-sm-12\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>Name:</p>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Lesson Name\\\" required autofocus\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[(ngModel)]=\\\"school.selectedLesson.title\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"form-group col-lg-6 col-sm-12\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<p>Sequence Order:</p>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<input type=\\\"number\\\" class=\\\"form-control\\\" placeholder=\\\"0\\\" required autofocus\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t[(ngModel)]=\\\"school.selectedLesson.sequence_number\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\t\\t<div class=\\\"form-group\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<p>Lesson Description:</p>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Lesson Description\\\" required autofocus\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t[(ngModel)]=\\\"school.selectedLesson.description\\\">\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<br>\\r\\n\\t\\t\\t\\t\\t\\t<div class=\\\"col-12 text-right\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<button class=\\\"btn btn-sm btn-primary m-1 text-right\\\" (click)=\\\"saveLesson()\\\">{{ school.selectedLesson.lesson_id ? 'Update' : 'Add' }} Lesson</button>\\r\\n\\t\\t\\t\\t\\t\\t\\t<button class=\\\"btn btn-sm btn-danger m-1 text-right\\\" (click)=\\\"deleteLesson()\\\">Remove Lesson</button>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t</div>\\r\\n\\r\\n\\t\\t<hr>\\r\\n\\r\\n\\t\\t<div class=\\\"popup-footer\\\">\\r\\n\\t\\t\\t<button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"cancelUpdate()\\\">Close</button>\\r\\n\\t\\t</div>\\r\\n\\t</div>\\r\\n</div>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { SchoolUtil } from 'src/app/model/school';\r\nimport { IdealCourse } from 'src/app/model/class';\r\nimport { IdealLesson } from 'src/app/model/lesson';\r\n\r\n@Component({\r\n  selector: 'app-manage-courses',\r\n  templateUrl: './manage-courses.component.html',\r\n  styleUrls: ['./manage-courses.component.css']\r\n})\r\n\r\nexport class ManageCoursesComponent implements OnInit {\r\n\r\n  public course_id = 0;\r\n  public course_active: boolean = false;\r\n  public lesson_id : number;\r\n\r\n  constructor(public school: SchoolService) {\r\n\r\n    this.school.loadAllCourses();\r\n    this.school.selectedLesson = new IdealLesson();\r\n   }\r\n\r\n  ngOnInit() {\r\n    // this.school.showAlert(\"\")\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewManageCoursePopup = false;\r\n  }\r\n\r\n  selectCourse() {\r\n\r\n    if(this.course_id == 0)\r\n    {\r\n      this.school.selectedCourse = new IdealCourse();\r\n      return;\r\n    }\r\n\r\n    //get the index of the course_id from the currenty loaded courses\r\n    let i =this.school.loadedCourses.findIndex(item=>item.id == this.course_id);\r\n\r\n    this.school.selectedCourse = this.school.loadedCourses[i];\r\n    this.school.getLessonsByCourse(this.course_id);\r\n\r\n    if(this.school.selectedCourse.active == \"Y\" || this.school.selectedCourse.active == \"1\")\r\n      this.course_active = true;\r\n    else \r\n      this.course_active = false;\r\n  }\r\n\r\n  selectLesson(lessonID)\r\n  {\r\n    console.log(\"LessonID: \"+lessonID);\r\n    //Get the index of the lesson by the lesson ID\r\n    let i =this.school.loadedLessonsByCourse.findIndex(item=>item.lesson_id == lessonID);\r\n\r\n    this.school.selectedLesson = this.school.loadedLessonsByCourse[i];\r\n\r\n    console.log(\"Lesson: \"+JSON.stringify(this.school.selectedLesson));\r\n  }\r\n\r\n  saveCourse()\r\n  {\r\n    this.school.selectedCourse.active = this.course_active ? \"Y\":\"N\";\r\n\r\n    if(this.school.selectedCourse.id)\r\n    {\r\n      console.log(\"Updating course\");\r\n      this.updateCourse();\r\n    }\r\n    else\r\n    {\r\n      console.log(\"Adding new course\");\r\n      this.addCourse();\r\n    }\r\n  }\r\n\r\n  addCourse() {\r\n    this.school.addSelectedCourse();\r\n  }\r\n\r\n  updateCourse()\r\n  {\r\n    this.school.saveSelectedCourse();\r\n  }\r\n\r\n  saveLesson()\r\n  {\r\n    if(this.school.selectedLesson.lesson_id)\r\n    {\r\n      console.log(\"Updating lesson\");\r\n      this.updateLesson();\r\n    }\r\n    else\r\n    {\r\n      console.log(\"Adding new lesson\");\r\n      this.addLesson();\r\n    }\r\n  }\r\n\r\n  addLesson()\r\n  {\r\n    if(this.school.selectedCourse == null)\r\n    {\r\n      console.log(\"You must have a course selected first.\");\r\n      return;\r\n    }\r\n\r\n    this.school.addSelectedLesson();\r\n    this.school.selectedLesson = new IdealLesson();\r\n  }\r\n\r\n  updateLesson()\r\n  {\r\n    if(this.school.selectedCourse == null)\r\n    {\r\n      console.log(\"You must have a course selected first.\");\r\n      return;\r\n    }\r\n\r\n    this.school.saveSelectedLesson();\r\n  }\r\n\r\n  clearCourseSelection()\r\n  {\r\n    this.school.selectedCourse = new IdealCourse();\r\n    this.school.selectedLesson = new IdealLesson();\r\n    this.course_id = 0;\r\n    this.course_active = false;\r\n  }\r\n\r\n  clearLessonSelection()\r\n  {\r\n    this.school.selectedLesson = new IdealLesson();\r\n  }\r\n\r\n  removeCourse()\r\n  {\r\n    console.log(\"Deleting course...\");\r\n    this.school.deleteCourse(this.school.selectedCourse.id);\r\n    this.course_active = false;\r\n  }\r\n\r\n  deleteLesson()\r\n  {\r\n    if(!this.school.selectedCourse && !this.school.selectedLesson)\r\n      return;\r\n\r\n    console.log(\"Deleting lesson...\");\r\n    this.school.deleteLesson(this.school.selectedLesson.lesson_id);\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2UtbGVzc29uL21hbmFnZS1sZXNzb24uY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<div class=\\\"row pt-2\\\" style=\\\"background-color: steelblue; color: white;\\\">\\r\\n  <div class=\\\"col-10\\\">\\r\\n    <h5>Manage Lesson</h5>\\r\\n  </div>\\r\\n  <div class=\\\"col-2\\\">\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n</div>\\r\\n\\r\\n<div class=\\\"m-2\\\">\\r\\n  <div class=\\\"mb-4\\\">For class: <b>{{ school.selectedClass.name }}</b></div>  \\r\\n\\r\\n  <div class=\\\"mb-4\\\">\\r\\n    Title:\\r\\n    <br>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control mb-2\\\" placeholder=\\\"Lesson Name\\\" required autofocus\\r\\n      [(ngModel)]=\\\"school.selectedLesson.title\\\">\\r\\n\\r\\n    Description:\\r\\n    <br>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control mb-2\\\" placeholder=\\\"Description\\\">\\r\\n\\r\\n    Sequence:\\r\\n    <br>\\r\\n    <input type=\\\"number\\\" class=\\\"form-control mb-2\\\" placeholder=\\\"Sequence\\\" required\\r\\n      [(ngModel)]=\\\"school.selectedLesson.sequence_number\\\">\\r\\n  </div>\\r\\n\\r\\n  <button class=\\\"btn btn-lg btn-primary mb-1\\\" (click)=\\\"updateLesson()\\\">Submit</button>\\r\\n  &nbsp;\\r\\n  <button class=\\\"btn btn-lg btn-warning mb-1\\\" (click)=\\\"cancelUpdate()\\\">Cancel</button>\\r\\n  &nbsp;\\r\\n  <button class=\\\"btn btn-lg btn-danger mb-1\\\">Delete</button>\\r\\n  \\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { UserService } from 'src/app/services/user.service';\r\n\r\n@Component({\r\n  selector: 'app-manage-lesson',\r\n  templateUrl: './manage-lesson.component.html',\r\n  styleUrls: ['./manage-lesson.component.css']\r\n})\r\nexport class ManageLessonComponent implements OnInit {\r\n\r\n  constructor(public school: SchoolService, public user: UserService) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewManageLessonPopup = false;\r\n  }\r\n\r\n  updateLesson() {\r\n    \r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2Utcm9vbXMvbWFuYWdlLXJvb21zLmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Manage Rooms</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n\\r\\n  <div class=\\\"mb-4\\\">\\r\\n    Below are the rooms available for courses in this school. You must create the room before creating a class that\\r\\n    uses\\r\\n    that room.\\r\\n  </div>\\r\\n\\r\\n  <hr>\\r\\n\\r\\n  <div class=\\\"row mt-4 mb-3\\\">\\r\\n\\r\\n    <div class=\\\"col-lg-6 col-sm-12\\\">\\r\\n      <ng-container *ngIf=\\\"school.loadedRooms; else noRooms\\\">\\r\\n        <h4>Available Rooms</h4>\\r\\n        <div *ngIf=\\\"school.loadedRooms.length\\\">\\r\\n          <div *ngFor=\\\"let r of school.loadedRooms\\\">\\r\\n      \\r\\n            <!-- {{ r.room_number }}\\r\\n                &nbsp;\\r\\n                <button class=\\\"btn btn-sm btn-outline\\\" (click)=\\\"deleteRoom(r)\\\">\\r\\n                  <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n                </button> -->\\r\\n      \\r\\n            <div class=\\\"card\\\">\\r\\n              <div class=\\\"card-body list-group-item-action d-flex w-100 justify-content-between\\\">\\r\\n                <span>{{ r.room_number }}</span>\\r\\n                <!-- <a class=\\\"btn btn-light btn-sm\\\" style=\\\"border: 1px solid rgb(192, 192, 192);\\\" (click)=\\\"deleteRoom(r)\\\"><i class=\\\"fas fa-minus\\\"></i></a> -->\\r\\n              </div>\\r\\n            </div>\\r\\n      \\r\\n          </div>\\r\\n        </div>\\r\\n      </ng-container>\\r\\n      <ng-template #noRooms>\\r\\n        No rooms available.\\r\\n      </ng-template>\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"col-lg-6 col-sm-12\\\">\\r\\n      <p>Add New Room:</p>\\r\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Room Number\\\" required autofocus\\r\\n        [(ngModel)]=\\\"school.updateRoomNumber.room_number\\\">\\r\\n      <div class=\\\"text-right\\\">\\r\\n        <button class=\\\"btn btn-secondary mt-3\\\" (click)=\\\"updateRoom()\\\"><i class=\\\"fas fa-plus\\\"></i> Add Room</button>\\r\\n      </div>\\r\\n    </div>\\r\\n\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { IdealClassroom } from 'src/app/model/class';\r\n\r\n@Component({\r\n  selector: 'app-manage-rooms',\r\n  templateUrl: './manage-rooms.component.html',\r\n  styleUrls: ['./manage-rooms.component.css']\r\n})\r\nexport class ManageRoomsComponent implements OnInit {\r\n\r\n  constructor(public school: SchoolService) { }\r\n\r\n  ngOnInit() {\r\n    this.school.updateRoomNumber = new IdealClassroom();\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewManageRoomsPopup = false;\r\n  }\r\n\r\n  editRoom(room: IdealClassroom) {\r\n    this.school.updateRoomNumber = room;\r\n  }\r\n\r\n  updateRoom() {\r\n    this.school.addClassroom(this.school.updateRoomNumber.room_number, this.school.currentUserSchool.id, 0);\r\n    this.school.updateRoomNumber = new IdealClassroom();\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2Utc2Nob29sL21hbmFnZS1zY2hvb2wuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Manage School</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancel()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n  \\r\\n  <p>Name:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"School Name\\\" required autofocus\\r\\n    [(ngModel)]=\\\"school.selectedSchool.name\\\">\\r\\n\\r\\n  <div *ngIf=\\\"nameInvalid\\\" class=\\\"alert alert-danger\\\">\\r\\n    Name is required.\\r\\n  </div>\\r\\n\\r\\n  <p>Address 1:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Street Address Line 1\\\" required\\r\\n    [(ngModel)]=\\\"school.selectedSchool.address1\\\">\\r\\n\\r\\n  <p>Address 2:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Ste.\\\" required [(ngModel)]=\\\"school.selectedSchool.address2\\\">\\r\\n\\r\\n  <p>City:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"City\\\" required [(ngModel)]=\\\"school.selectedSchool.city\\\">\\r\\n\\r\\n  <p>State:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"State\\\" required [(ngModel)]=\\\"school.selectedSchool.state\\\">\\r\\n\\r\\n  <p>Zip Code:</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Zip Code\\\" required [(ngModel)]=\\\"school.selectedSchool.zipcode\\\">\\r\\n\\r\\n  <p>Email:</p>\\r\\n  <input type=\\\"email\\\" class=\\\"form-control\\\" placeholder=\\\"Email Address\\\" required\\r\\n    [(ngModel)]=\\\"school.selectedSchool.email\\\">\\r\\n\\r\\n  <p>Phone:</p>\\r\\n  <input type=\\\"email\\\" class=\\\"form-control\\\" placeholder=\\\"Phone\\\" required [(ngModel)]=\\\"school.selectedSchool.phone\\\">\\r\\n\\r\\n  <p>Total Seats:</p>\\r\\n  <input type=\\\"number\\\" class=\\\"form-control\\\" placeholder=\\\"0\\\" [(ngModel)]=\\\"school.selectedSchool.total_seats\\\">\\r\\n\\r\\n  <p>Admin Seats:</p>\\r\\n  <input type=\\\"number\\\" class=\\\"form-control\\\" placeholder=\\\"0\\\" [(ngModel)]=\\\"school.selectedSchool.admin_seats\\\">\\r\\n\\r\\n  <p>Teacher Seats:</p>\\r\\n  <input type=\\\"number\\\" class=\\\"form-control\\\" placeholder=\\\"0\\\" [(ngModel)]=\\\"school.selectedSchool.teacher_seats\\\">\\r\\n\\r\\n  <p>Student Seats:</p>\\r\\n  <input type=\\\"number\\\" class=\\\"form-control\\\" placeholder=\\\"0\\\" [(ngModel)]=\\\"school.selectedSchool.student_seats\\\">\\r\\n\\r\\n  <p>School Domain Name (Required for SCORM):</p>\\r\\n  <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"www.example.com\\\" [(ngModel)]=\\\"school.selectedSchool.domain\\\">\\r\\n  \\r\\n  <p>Scorm School:</p>\\r\\n  <input class=\\\"ml-3\\\" type=\\\"checkbox\\\" [(ngModel)]=\\\"isScorm\\\" /> Yes this is a scorm school\\r\\n\\r\\n  <div class=\\\"popup-footer\\\">\\r\\n    <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"submitSchool()\\\">Submit</button>\\r\\n    &nbsp;\\r\\n    <button class=\\\"btn btn-lg btn-warning\\\" (click)=\\\"cancel()\\\">Cancel</button>\\r\\n    &nbsp;\\r\\n    <button class=\\\"btn btn-primary\\\" (click)=\\\"school.createMockSchool()\\\">Mock</button>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\n\r\n@Component({\r\n  selector: 'app-manage-school',\r\n  templateUrl: './manage-school.component.html',\r\n  styleUrls: ['./manage-school.component.css']\r\n})\r\nexport class ManageSchoolComponent implements OnInit {\r\n\r\n  public validationMessage = '';\r\n  nameInvalid = false;\r\n  public isScorm: boolean = true;\r\n\r\n  constructor(public school: SchoolService) { }\r\n\r\n  ngOnInit() {\r\n    this.isScorm = this.school.selectedSchool.scorm == '1' ? true : false;\r\n  }\r\n\r\n  cancel() {\r\n    this.school.viewManageSchoolPopup = false;\r\n  }\r\n\r\n  submitSchool() {\r\n    this.school.selectedSchool.scorm = this.isScorm ? '1':'0';\r\n    \r\n    //remove https or http from domain\r\n\r\n    if(this.school.doSchoolCreate)\r\n    {\r\n      if(this.doValidation())\r\n      {\r\n        console.log(\"Adding School\");\r\n        this.school.addSchool();\r\n      }\r\n    }\r\n    else\r\n    {\r\n      if (this.doValidation()) {\r\n        console.log(\"updating School\");\r\n        this.school.saveSelectedSchool();\r\n        this.school.viewManageSchoolPopup = false;\r\n      }\r\n    }\r\n    \r\n  }\r\n\r\n  doValidation() {\r\n    let valid = true;\r\n\r\n    if (this.school.selectedSchool.name == '') {\r\n      valid = false;\r\n      this.nameInvalid = true;\r\n      \r\n    }\r\n\r\n    return valid;\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9tYW5hZ2UtdXNlci9tYW5hZ2UtdXNlci5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <div class=\\\"ml-4 mr-4 mt-2\\\">\\r\\n      <div class=\\\"text-center\\\" [innerHTML]=\\\"school.notifications\\\"></div>\\r\\n    </div>\\r\\n    <h5>Manage User - {{ school.manageUserType }}</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n\\r\\n  <div>\\r\\n    School: <b>{{ school.currentUserSchool.name }}</b>\\r\\n\\r\\n    <p>First Name:</p>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"First Name\\\" required autofocus\\r\\n      [(ngModel)]=\\\"school.selectedUser.firstname\\\">\\r\\n\\r\\n    <p>Last Name:</p>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Last Name\\\" required\\r\\n      [(ngModel)]=\\\"school.selectedUser.lastname\\\">\\r\\n\\r\\n    <p>Email:</p>\\r\\n    <input type=\\\"email\\\" class=\\\"form-control\\\" placeholder=\\\"Email Address\\\" required\\r\\n      [(ngModel)]=\\\"school.selectedUser.email\\\">\\r\\n\\r\\n    <p>Phone:</p>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Phone\\\" required [(ngModel)]=\\\"school.selectedUser.phone1\\\">\\r\\n\\r\\n    <p>Username:</p>\\r\\n    <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Username\\\" required [disabled]=\\\"school.doUserUpdate\\\"\\r\\n      [(ngModel)]=\\\"school.selectedUser.username\\\">\\r\\n\\r\\n    <div *ngIf=\\\"school.doUserCreate\\\">\\r\\n        <p>Initial Password:</p>\\r\\n      <input type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"Initial Password\\\" required\\r\\n        [(ngModel)]=\\\"school.selectedUser.password\\\">\\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"popup-footer\\\">\\r\\n      <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"updateAccount()\\\">Submit</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-lg btn-warning\\\" (click)=\\\"cancelUpdate()\\\">Cancel</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-lg btn-danger\\\" *ngIf=\\\"school.doUserUpdate\\\" (click)=\\\"deleteUser()\\\">Delete</button>\\r\\n      <br>\\r\\n      <button class=\\\"btn btn-sm btn-info\\\" (click)=\\\"createMockUser()\\\">Mock User</button>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { PersonUtil, Person } from 'src/app/model/Person';\r\nimport { IdealSchool } from 'src/app/model/school';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n  selector: 'app-manage-user',\r\n  templateUrl: './manage-user.component.html',\r\n  styleUrls: ['./manage-user.component.css']\r\n})\r\nexport class ManageUserComponent implements OnInit {\r\n\r\n  selectedSchool: IdealSchool;\r\n  createNew = true;\r\n  addExisting = false;\r\n  errorMessage = '';\r\n\r\n  constructor(public user: UserService, public school: SchoolService, public router: Router) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewManageAccountPopup = false;\r\n  }\r\n\r\n  updateAccount() \r\n  {\r\n    if (this.school.doUserCreate) \r\n    {\r\n      let roleId = this.school.manageAccountUserRole.id;\r\n      let schoolId = this.school.currentUserSchool.id;\r\n\r\n      this.school.addSelectedUser(roleId, schoolId).subscribe(data => \r\n      {\r\n        console.log(data);\r\n        this.school.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n        if (data.status == 'Failed') {\r\n          // Show error message\r\n          this.errorMessage = data.message;\r\n          return;\r\n        }\r\n\r\n        // console.log(\"Data:\"+JSON.stringify(data));\r\n\r\n        // this.school.selectedUser = data.person;\r\n        this.school.selectedUser = new Person();\r\n        this.school.selectedUser.id = data.person.p_id;\r\n        this.school.selectedUser.role = this.school.setUserRole(roleId);\r\n        this.school.selectedUser.username = data.person.UserName;\r\n        this.school.selectedUser.firstname = data.person.FirstName;\r\n        this.school.selectedUser.lastname = data.person.LastName;\r\n        this.school.selectedUser.email = data.person.Email;\r\n        this.school.selectedUser.phone1 = data.person.Phone1;\r\n        this.school.selectedUser.phone2 = data.person.Phone2;\r\n        this.school.selectedUser.isSuperUser = false;\r\n\r\n        this.school.updateUserRoleAndSchool(this.school.selectedUser.id, roleId, schoolId).subscribe((data) => \r\n        {\r\n          console.log(data);\r\n        });\r\n\r\n        // console.log(\"Selected User:\"+JSON.stringify(this.school.selectedUser));\r\n\r\n        this.school.addUserToListGroup(this.school.selectedUser, roleId);\r\n        this.school.viewManageAccountPopup = false;\r\n      });\r\n    }\r\n    else if (this.school.doUserUpdate) \r\n    {\r\n      this.school.updateSelectedUser().subscribe(data => \r\n      {\r\n        console.log(data);\r\n        this.school.viewManageAccountPopup = false;\r\n      });\r\n    }\r\n  }\r\n\r\n  createMockUser() {\r\n    this.school.selectedUser = new PersonUtil().getMockUser(3);\r\n  }\r\n\r\n  switchToNew() {\r\n    this.createNew = true;\r\n    this.addExisting = false;\r\n  }\r\n\r\n  switchToExisting() {\r\n    this.createNew = false;\r\n    this.addExisting = true;\r\n    this.school.loadAllUsers();\r\n  }\r\n\r\n  selectUser(person: Person) {\r\n    this.school.selectedUser = person;\r\n    \r\n    // Can't do this long term. Need to create a new UI for confirming that a selected user is being added to a school.\r\n    \r\n    this.switchToNew();\r\n  }\r\n\r\n  deleteUser() {\r\n    if (confirm('Are you sure you want to delete this user? They will be marked inactive, and can be restored from the Inactive Users list.')) {\r\n      this.user.deleteUser(this.school.selectedUser.id).subscribe(data => {\r\n        console.log(data);\r\n        this.school.loadUsersBySchool(this.school.currentUserSchool.id);\r\n        this.school.viewManageAccountPopup = false;  \r\n      });\r\n    }\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9uYXYtYmFyL25hdi1iYXIuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<nav class=\\\"navbar\\\">\\r\\n  <a class=\\\"navbar-brand\\\" routerLink=\\\"/school-dashboard\\\" (mouseenter)=\\\"hover(true)\\\" (mouseleave)=\\\"hover(false)\\\">\\r\\n    <img class=\\\"nav-logo\\\" alt=\\\"Ideal Industries logo\\\" src=\\\"assets/img/logo.png\\\"> <h1>VET Portal</h1>\\r\\n  </a>\\r\\n    <div *ngIf=\\\"user.isLoggedIn\\\" id=\\\"nav-account-details\\\">\\r\\n      <a routerLink=\\\"/account\\\">\\r\\n        Account (\\r\\n        <span *ngIf=\\\"user.currentUser.firstname != ''\\\">{{ user.currentUser.firstname }}</span>\\r\\n        <span *ngIf=\\\"user.currentUser.firstname == ''\\\">{{ school.removeDomain(user.currentUser.username) }}</span>\\r\\n        <span *ngIf=\\\"user.currentUser.role\\\">\\r\\n           - {{ user.currentUser.role.name }}\\r\\n        </span>)\\r\\n      </a>\\r\\n      &nbsp;&nbsp;\\r\\n      <a routerLink=\\\"/logout\\\">Logout</a>\\r\\n    </div>\\r\\n</nav>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { UserService } from 'src/app/services/user.service';\r\n\r\n@Component({\r\n  selector: 'app-nav-bar',\r\n  templateUrl: './nav-bar.component.html',\r\n  styleUrls: ['./nav-bar.component.css']\r\n})\r\nexport class NavBarComponent implements OnInit {\r\n\r\n  constructor(public user: UserService, public school: SchoolService) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  hover(state: boolean)\r\n  {\r\n    if(state)\r\n    {\r\n      localStorage.setItem(\"clearURL\", \"true\");\r\n    }\r\n    else\r\n    {\r\n      localStorage.setItem(\"clearURL\", \"false\");\r\n    }\r\n  }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9zY2hvb2wtZGFzaGJvYXJkL3NjaG9vbC1kYXNoYm9hcmQuY29tcG9uZW50LmNzcyJ9 */\"","module.exports = \"<div class=\\\"container-fluid page-heading\\\">\\r\\n  <h2>{{ school.currentUserSchool.name }} |&nbsp;&nbsp;{{ school.currentUserSchool.phone }}</h2>\\r\\n</div>\\r\\n\\r\\n\\r\\n<div class=\\\"row\\\">\\r\\n  <div class=\\\"col-4\\\">\\r\\n    <div class=\\\"card\\\">\\r\\n      <div class=\\\"card-body\\\">\\r\\n        <div class=\\\"card-text\\\">\\r\\n          <small>\\r\\n            {{ school.currentUserSchool.address1 }}<br>\\r\\n            {{ school.currentUserSchool.city }}, {{ school.currentUserSchool.state }} {{ school.currentUserSchool.zipcode }}<br>\\r\\n            {{ school.currentUserSchool.phone }}<br>\\r\\n            PoC details\\r\\n          </small>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>    \\r\\n  </div>\\r\\n\\r\\n  <div class=\\\"col-4\\\">\\r\\n    <div class=\\\"card\\\">\\r\\n      <div class=\\\"card-body\\\">\\r\\n        <div class=\\\"card-text\\\">\\r\\n          <small>\\r\\n            Total Seats: {{ school.currentUserSchool.total_seats }}\\r\\n            <br>\\r\\n            Admin Seats: {{ seats.admin }} / {{ school.currentUserSchool.admin_seats }}\\r\\n            <br>\\r\\n            Instructors Seats: {{ seats.teacher }} / {{ school.currentUserSchool.teacher_seats }}\\r\\n            <br>\\r\\n            Students Seats: {{ seats.student }} / {{ school.currentUserSchool.student_seats }}\\r\\n          </small>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>    \\r\\n  </div>\\r\\n\\r\\n  <div class=\\\"col-4\\\">\\r\\n    <div class=\\\"card\\\">\\r\\n      <div class=\\\"card-body\\\">\\r\\n        <div class=\\\"card-text\\\">\\r\\n          <small>\\r\\n            <strong>Today's Results</strong>\\r\\n            <br>\\r\\n            Tests taken: 0\\r\\n            <br>\\r\\n            Passed: 0\\r\\n            <br>\\r\\n            Violations: 0\\r\\n          </small>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>    \\r\\n  </div>\\r\\n</div>\\r\\n\\r\\n\\r\\n<br>\\r\\n\\r\\n<ag-grid-angular\\r\\n    style=\\\"height: 500px;\\\"\\r\\n    class=\\\"ag-theme-balham\\\"\\r\\n    [rowData]=\\\"rowData\\\"\\r\\n    [columnDefs]=\\\"columnDefs\\\"\\r\\n    (gridReady)=\\\"onGridReady($event)\\\"\\r\\n    [pagination]=\\\"true\\\" \\r\\n    [paginationPageSize]=\\\"20\\\"\\r\\n    >\\r\\n</ag-grid-angular>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Router } from '@angular/router';\r\nimport * as lessonModel from 'src/app/model/lesson';\r\n\r\n@Component({\r\n  selector: 'app-school-dashboard',\r\n  templateUrl: './school-dashboard.component.html',\r\n  styleUrls: ['./school-dashboard.component.css']\r\n})\r\nexport class SchoolDashboardComponent implements OnInit {\r\n\r\n  constructor(public school: SchoolService, public user: UserService, public router: Router) { }\r\n\r\n  columnDefs = [\r\n    {headerName: 'Student Name', field: 'studentName', sortable: true, filter: true, resizable: true, width: 150  },\r\n    {headerName: 'Student Id', field: 'studentId', sortable: true, filter: true, resizable: true, width: 100 },\r\n    {headerName: 'Type', field: 'test_type', sortable: true, filter: true, resizable: true, width: 80 },\r\n    //{headerName: 'Class Id', field: 'classId', sortable: true, filter: true, resizable: true, width: 50 },\r\n    //{headerName: 'Lesson Id', field: 'lessonId', sortable: true, filter: true, resizable: true, width: 50 },\r\n    {headerName: 'Lesson', field: 'lessonName', sortable: true, filter: true, resizable: true, width: 100 },\r\n    {headerName: 'Score', field: 'score', sortable: true, filter: true, resizable: true, width: 80  },\r\n    {headerName: 'Violations', field: 'violations', sortable: true, filter: true, resizable: true, width: 100  },\r\n    {headerName: 'Elapsed Time', field: 'elapsedTime', sortable: true, filter: true, resizable: true , width: 110 },\r\n    {headerName: 'Date', field: 'date', id:'date', sortable: true, filter: true, resizable: true, width: 200 },\r\n    {headerName: 'SchoolID', field: 'school_id', sortable: true, filter: true, resizable: true },\r\n  ];\r\n\r\n  public rowData: any;\r\n  private gridApi;\r\n  private gridColumnApi;\r\n\r\n  // userTests: lessonModel.IdealQuiz[] = [];\r\n\r\n  public seats;\r\n\r\n  ngOnInit() {\r\n    //console.log(this.school.currentUserSchool);\r\n    if (!this.school.currentUserSchool) {\r\n      this.router.navigateByUrl('/school-list');\r\n    }\r\n\r\n    // if(localStorage.getItem(\"currentURL\") !== null && localStorage.getItem(\"currentURL\") != \"\") {\r\n    //   console.log(\"CURRENT URL: \"+localStorage.getItem(\"currentURL\"))\r\n    //   this.router.navigateByUrl(localStorage.getItem(\"currentURL\"));\r\n    // }\r\n\r\n    // this.school.loadMockQuizzesForSchool();\r\n    // console.log(this.school.mockQuizzes_School);\r\n    // this.school.getAllQuizzes();\r\n    // console.log(this.school.allQuizzes);\r\n    this.loadQuizzes();\r\n    //this.rowData = this.school.mockQuizzes_School;\r\n    //this.rowData = this.school.allQuizzes;\r\n\r\n    this.seats = \r\n    {\r\n      admin: 0,\r\n      teacher: 0,\r\n      student: 0\r\n    };\r\n\r\n    // TODO: find a way to limit the update to when the values are different\r\n    this.updateSeatsCount(this.school.currentUserSchool.id);\r\n\r\n  }\r\n\r\n  onGridReady(params) {\r\n    this.gridApi = params.api;\r\n    this.gridColumnApi = params.columnApi;\r\n\r\n    this.gridApi.sizeColumnsToFit();\r\n\r\n    var sort = [\r\n      {\r\n        colId: \"date\",\r\n        sort: \"desc\"\r\n      }\r\n    ];\r\n  \r\n    this.gridApi.setSortModel(sort);\r\n  }\r\n\r\n\r\n\r\n\r\n  loadQuizzes() {\r\n    this.school.getAllQuizzes(this.school.currentUserSchool.id).subscribe(data => {\r\n      //console.log(JSON.stringify(data));  // Return the JSON object as a string, so it can be parsed online and mapped to an object\r\n      //console.log(JSON.parse(JSON.stringify(data)));\r\n      //console.log(data.courses[1]);\r\n      this.school.allQuizzes = [];\r\n      this.school.allQuizzesFlat = [];\r\n\r\n      // skip if there are no tests yet in this school\r\n      if (!data || !data.courses || data.status == \"Failed\")\r\n      {\r\n        this.rowData = this.school.allQuizzes;\r\n        return;\r\n      }\r\n\r\n      // for (let q of this.school.allQuizzes) {\r\n      //   // console.log(q);\r\n      //   if (q.studentId == this.school.viewUser.id) {\r\n      //     this.userTests.push(q);\r\n      //   }\r\n      // }\r\n\r\n      for (let c of data.courses) {\r\n        //console.log(c);\r\n        if (c) {\r\n          for (let l of c.lessons) {\r\n            //console.log(l)\r\n            if (l) {\r\n              for (let t of l.test_attempts) {\r\n                //console.log(t);\r\n                if (t) {\r\n                  //if student, only display the students tests\r\n                  // console.log('RoleID:'+this.user.currentUser.role.id);\r\n                  if (this.user.currentUser.role.id == 4 && t.student_id != this.user.currentUser.id) \r\n                    continue;\r\n\r\n                    // console.log(t);\r\n\r\n                  let q = new lessonModel.IdealQuizFlat();\r\n                  q.course_id = c.course_id;\r\n                  q.class_id = t.class_id;\r\n                  q.lesson_id = l.lesson_id;\r\n                  q.test_id = t.test_id;\r\n                  q.test_type =  lessonModel.LessonTypes[t.test_type],\r\n                  q.student_id = t.student_id;\r\n                  q.student_name = this.school.removeDomain(t.student_name);\r\n                  q.start_time = new Date(t.start_time * 1000);\r\n                  q.end_time = new Date(t.end_time * 1000);\r\n                  q.elapsed_time = this.school.getElapsedTimeInMinutes(t.elapsed_time);\r\n                  q.score = t.score;\r\n                  q.violations = t.violations; \r\n                  q.school_id = t.school_id; \r\n                  q.lessonName = l.lesson_name;\r\n\r\n                  this.school.allQuizzesFlat.push(q);\r\n                  this.school.allQuizzes.push(q.convertToIdealQuiz());\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      this.rowData = this.school.allQuizzes;\r\n    });\r\n  }\r\n\r\n  updateSeatsCount(id: number)\r\n  {\r\n    this.school.getSchoolActiveSeats(id).subscribe((data) => {\r\n      \r\n      if (!data || !data.seats)\r\n        return;\r\n\r\n      data.seats.forEach(role => {\r\n        \r\n        switch (role.role) {\r\n          case 2:\r\n            this.seats.admin = role.seats;\r\n            break;\r\n          case 3:\r\n            this.seats.teacher = role.seats;\r\n            break;\r\n          case 4:\r\n            this.seats.student = role.seats;\r\n            break;\r\n        \r\n          default:\r\n            break;\r\n        }\r\n\r\n      });\r\n\r\n    });\r\n\r\n  }\r\n}","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9zY2hvb2wtbGlzdC9zY2hvb2wtbGlzdC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<div>\\r\\n  <br>\\r\\n\\r\\n  <div class=\\\"row table-header\\\">\\r\\n    <div class=\\\"col\\\">\\r\\n      <h5>Schools <span *ngIf=\\\"school.loadedSchools\\\"\\r\\n          class=\\\"badge badge-secondary\\\">{{ school.loadedSchools.length }}</span></h5>\\r\\n    </div>\\r\\n    <div class=\\\"col\\\"></div>\\r\\n    <div class=\\\"col text-right\\\"><button *ngIf=\\\"user.currentUser.isSuperUser\\\" class=\\\"btn btn-info\\\"\\r\\n        (click)=\\\"addSchool()\\\"><i class=\\\"fas fa-plus\\\"></i> School</button></div>\\r\\n  </div>\\r\\n\\r\\n  <div class=\\\"spinner-border text-center\\\" role=\\\"status\\\" *ngIf=\\\"isLoading\\\">\\r\\n    <span class=\\\"sr-only\\\">Loading...</span>\\r\\n  </div>\\r\\n\\r\\n  <div class=\\\"row\\\">\\r\\n    <div *ngFor=\\\"let s of school.loadedSchools\\\" class=\\\"col-lg-6\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n        <div class=\\\"card-header\\\">\\r\\n          {{ s.name }}\\r\\n          <span>\\r\\n            <a *ngIf=\\\"user.userHasAccess(3)\\\" (click)=\\\"school.editSchool(s)\\\"><i class=\\\"fas fa-cog\\\"></i></a>\\r\\n          </span>\\r\\n        </div>\\r\\n        <div class=\\\"card-body\\\">\\r\\n          <div class=\\\"card-text\\\">\\r\\n            <div class=\\\"school-address\\\">\\r\\n              <small>\\r\\n                {{ s.address1 }}<br>\\r\\n                <div *ngIf=\\\"s.address2\\\">{{ s.address2 }}</div>\\r\\n                {{ s.city }}, {{ s.state }} {{ s.zipcode }}\\r\\n              </small>\\r\\n              <div>\\r\\n                <button class=\\\"btn btn-block btn-primary mt-2\\\" (click)=\\\"selectSchool(s)\\\">Select</button>\\r\\n              </div>\\r\\n            </div>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageSchoolPopup\\\" class=\\\"popup\\\" style=\\\"border: 2px solid darkgray !important;\\\">\\r\\n  <app-manage-school></app-manage-school>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { Router } from '@angular/router';\r\nimport { IdealSchool } from 'src/app/model/school';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { MainService } from 'src/app/services/main.service';\r\n\r\n@Component({\r\n  selector: 'app-school-list',\r\n  templateUrl: './school-list.component.html',\r\n  styleUrls: ['./school-list.component.css']\r\n})\r\nexport class SchoolListComponent implements OnInit {\r\n\r\n  isLoading = true;\r\n\r\n  constructor(public school: SchoolService, public route: Router, public user: UserService) {\r\n     \r\n    \r\n    if(localStorage.getItem(\"loggedInDate\") !== null)\r\n    {\r\n      if(localStorage.getItem(\"currentUserSchool\") !== null && localStorage.getItem(\"currentUserSchool\") != \"\") {\r\n\r\n        let savedSchool = JSON.parse(localStorage.getItem(\"currentUserSchool\"));\r\n\r\n        this.selectSchool(savedSchool);\r\n        // console.log(\"Saved School: \"+JSON.stringify(savedSchool));\r\n      }\r\n    }\r\n  }\r\n    \r\n\r\n  ngOnInit() {\r\n    // let url = window.location.href;\r\n    // console.log(url);\r\n    // if (url.includes('localhost')) {\r\n    //   console.log('Setting to dev environment.')\r\n    //   this.main.isDevelopment = true;\r\n    // }\r\n\r\n    //this.school.getSchoolById(19);\r\n    //console.log(this.user.currentUser);\r\n    // this.school.currentUserSchool = null;\r\n    this.getSchoolList();\r\n  }\r\n\r\n  getSchoolList() {\r\n    this.isLoading = true;\r\n    this.school.loadedSchools = [];\r\n    // console.log(this.user.currentUser);\r\n\r\n    this.school.getSchoolsByUser(this.user.currentUser.id).subscribe(data => {\r\n      // console.log(data);\r\n      this.school.loadedSchools = data.schools;\r\n      this.isLoading = false;\r\n    })\r\n  }\r\n\r\n  addSchool() {\r\n    this.school.editSchool(null);\r\n  }\r\n\r\n  selectSchool(school: IdealSchool) {\r\n    localStorage.setItem(\"currentUserSchool\", JSON.stringify(school));\r\n    this.school.selectSchool(school);\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS9zaWRlLW1lbnUvc2lkZS1tZW51LmNvbXBvbmVudC5jc3MifQ== */\"","module.exports = \"<!-- all buttons used to have btn-block -->\\r\\n\\r\\n<div [className]=\\\"main.isCollapsed ? 'collapsed' : 'expanded'\\\" (click)=\\\"closeViews()\\\" (mouseenter)=\\\"hover(true)\\\" (mouseleave)=\\\"hover(false)\\\">\\r\\n  <br>\\r\\n\\r\\n  <div *ngIf=\\\"school.currentUserSchool\\\">\\r\\n    <div>\\r\\n      <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showDashboard()\\\"><i class=\\\"fas fa-tachometer-alt\\\"></i> <span>Dashboard</span></button>\\r\\n    </div>\\r\\n    <div *ngIf=\\\"user.userHasAccess(3)\\\">\\r\\n      <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showManageAccounts()\\\"><i class=\\\"fas fa-users-cog\\\"></i> <span>Accounts</span></button>\\r\\n    </div>\\r\\n    <div *ngIf=\\\"user.userHasAccess(3)\\\">\\r\\n      <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showClassList()\\\"><i class=\\\"fas fa-school\\\"></i> <span>Class List</span></button>\\r\\n    </div>\\r\\n    <div>\\r\\n      <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showUserClasses()\\\"><i class=\\\"fas fa-hard-hat\\\"></i> <span>My Classes</span></button>\\r\\n    </div>  \\r\\n  </div>\\r\\n\\r\\n  <hr>\\r\\n  \\r\\n  <div *ngIf=\\\"user.userHasAccess(3)\\\">\\r\\n    <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showSchoolSettings()\\\">\\r\\n      <i class=\\\"fas fa-cog\\\"></i> \\r\\n      <span>School Settings</span>\\r\\n    </button>\\r\\n  </div>\\r\\n  <div *ngIf=\\\"school.currentUserSchool\\\">\\r\\n    <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showSchoolList()\\\"><i class=\\\"fas fa-undo-alt\\\"></i> <span>School List</span></button>\\r\\n  </div>\\r\\n  <div *ngIf=\\\"false\\\">\\r\\n    <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showHelpPage()\\\"><i class=\\\"fas fa-question-circle\\\"></i> <span>Help Page</span></button>\\r\\n  </div>\\r\\n  <div *ngIf=\\\"false\\\">\\r\\n    <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"showQuickGuide()\\\"><i class=\\\"fas fa-question-circle\\\"></i> <span>Quick Guide</span></button>\\r\\n  </div>\\r\\n  <div *ngIf=\\\"user.userHasAccess(3)\\\">\\r\\n    <button class=\\\"btn btn-sidemenu\\\" (click)=\\\"openGuide()\\\">\\r\\n      <i class=\\\"fas fa-question-circle\\\"></i>\\r\\n      <span>Quick Setup Guide</span>\\r\\n    </button>\\r\\n  </div>\\r\\n  \\r\\n  \\r\\n  <!-- <p>\\r\\n    <button class=\\\"btn btn-danger\\\" *ngIf=\\\"main.isDevelopment\\\" (click)=\\\"testAPI()\\\">Test API</button>\\r\\n  </p> -->\\r\\n  <p>\\r\\n    <button class=\\\"btn btn-collapse btn-warning\\\" (click)=\\\"main.toggleSideMenu()\\\">{{ main.isCollapsed ? \\\"&gt;\\\" : \\\"&lt;\\\" }}</button>\\r\\n  </p>\\r\\n\\r\\n</div>\\r\\n<!-- <div *ngIf=\\\"school.currentUserSchool\\\">\\r\\n  <app-manage-school></app-manage-school>\\r\\n</div> -->\\r\\n\\r\\n<div *ngIf=\\\"school.viewManageSchoolPopup && school.selectedSchool.id\\\" class=\\\"popup\\\" style=\\\"border: 2px solid darkgray !important;\\\">\\r\\n  <app-manage-school></app-manage-school>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { MainService } from 'src/app/services/main.service';\r\n\r\n@Component({\r\n  selector: 'app-side-menu',\r\n  templateUrl: './side-menu.component.html',\r\n  styleUrls: ['./side-menu.component.css']\r\n})\r\nexport class SideMenuComponent implements OnInit {\r\n\r\n  constructor(public user: UserService, public router: Router, public school: SchoolService, public main: MainService) { }\r\n\r\n  public showSchoolPopup : boolean = false;\r\n\r\n  ngOnInit() {\r\n    //this.user.testRead();\r\n  }\r\n\r\n  showManageAccounts() {\r\n    this.router.navigateByUrl('/manage-accounts');\r\n    this.closeViews();\r\n  }\r\n\r\n  showClassList() {\r\n    this.router.navigateByUrl('/class-list');\r\n    this.closeViews();\r\n  }\r\n\r\n  showHelpPage() {\r\n    this.router.navigateByUrl('/help-page');\r\n    this.closeViews();\r\n  }\r\n\r\n  showQuickGuide() {\r\n    this.router.navigateByUrl('/quick_guide');\r\n    this.closeViews();\r\n  }\r\n\r\n  showSchoolSettings()\r\n  {\r\n    if(this.school.viewManageSchoolPopup)\r\n    {\r\n      this.showSchoolPopup = false;\r\n      this.school.doSchoolUpdate = false;\r\n      this.school.doSchoolCreate = false;\r\n      this.school.viewManageSchoolPopup = false;\r\n    }\r\n    else\r\n    {\r\n      this.showSchoolPopup = true;\r\n      this.school.doSchoolUpdate = true;\r\n      this.school.doSchoolCreate = false;\r\n    }\r\n  }\r\n\r\n  showSchoolList() {\r\n    localStorage.setItem(\"currentUserSchool\", \"\");\r\n    localStorage.setItem(\"currentURL\", \"\");\r\n    this.router.navigateByUrl('/school-list');\r\n    this.closeViews();\r\n  }\r\n  \r\n  showDashboard() {\r\n    // if(localStorage.getItem(\"currentUserSchool\") === null || localStorage.getItem(\"currentUserSchool\") == \"\")\r\n    //   return;\r\n      \r\n    this.router.navigateByUrl('/school-dashboard');\r\n    this.closeViews();\r\n  }\r\n\r\n  showUserClasses() {\r\n    // if(localStorage.getItem(\"currentUserSchool\") === null || localStorage.getItem(\"currentUserSchool\") == \"\")\r\n    //   return;\r\n\r\n    this.school.viewUser = this.user.currentUser;\r\n    this.router.navigateByUrl('/view-user');\r\n    this.closeViews();\r\n  }\r\n\r\n  doDateConversion() {\r\n    let d = new Date(1579564479000);\r\n    console.log(d);\r\n    console.log(d.getHours());\r\n    console.log(d.getMinutes());\r\n  }\r\n\r\n  openGuide()\r\n  {\r\n    // this.router.navigateByUrl('https://www.fnfsandbox.com/ideal/QUICK_GUIDE.pdf');\r\n    window.open('https://www.fnfsandbox.com/ideal/QUICK_GUIDE.pdf', '_blank');\r\n  }\r\n\r\n  hover(state: boolean)\r\n  {\r\n    if(state)\r\n    {\r\n      localStorage.setItem(\"clearURL\", \"true\");\r\n    }\r\n    else\r\n    {\r\n      localStorage.setItem(\"clearURL\", \"false\");\r\n    }\r\n  }\r\n\r\n  closeViews()\r\n  {\r\n    \r\n    this.school.viewManageAccountPopup = false;\r\n    this.school.viewManageClassPopup = false;\r\n    this.school.viewManageCoursePopup = false;\r\n    this.school.viewManageLessonPopup = false;\r\n    this.school.viewManageRoomsPopup = false;\r\n    this.school.viewManageSchoolPopup = this.showSchoolPopup;\r\n    this.showSchoolPopup = false;\r\n    this.school.doSchoolUpdate = false;\r\n  }\r\n\r\n}\r\n","module.exports = \".student-holder\\r\\n{\\r\\n\\tborder-top: 1px solid #e0e0e0; \\r\\n\\tborder-bottom: 1px solid #e0e0e0; \\r\\n}\\r\\n\\r\\n.student\\r\\n{\\r\\n\\tborder-bottom: 1px solid #e0e0e0; \\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.student:hover\\r\\n{\\r\\n\\tbackground-color:#f7f7f7;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jb3JlL3ZpZXctY2xhc3Mvdmlldy1jbGFzcy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztDQUVDLDZCQUE2QjtDQUM3QixnQ0FBZ0M7QUFDakM7O0FBRUE7O0NBRUMsZ0NBQWdDO0NBQ2hDLGVBQWU7QUFDaEI7O0FBRUE7O0NBRUMsd0JBQXdCO0FBQ3pCIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jb3JlL3ZpZXctY2xhc3Mvdmlldy1jbGFzcy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnN0dWRlbnQtaG9sZGVyXHJcbntcclxuXHRib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDsgXHJcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7IFxyXG59XHJcblxyXG4uc3R1ZGVudFxyXG57XHJcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7IFxyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnN0dWRlbnQ6aG92ZXJcclxue1xyXG5cdGJhY2tncm91bmQtY29sb3I6I2Y3ZjdmNztcclxufSJdfQ== */\"","module.exports = \"<div class=\\\"container-fluid page-heading\\\">\\r\\n  <h2>{{ school.currentUserSchool.name }} |&nbsp;&nbsp;{{ school.currentUserSchool.phone }}</h2>\\r\\n</div>\\r\\n\\r\\n  <div class=\\\"container-fluid\\\">\\r\\n    <h5>{{ school.selectedClass.name }}</h5>\\r\\n    <div class=\\\"card\\\">\\r\\n      <div class=\\\"card-body\\\">\\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col\\\">\\r\\n            Class ID:  {{ school.selectedClass.id }}\\r\\n            <br>\\r\\n            Start Date: {{ school.selectedClass.start_date }}\\r\\n            <br>\\r\\n            End Date: {{ school.selectedClass.end_date }}\\r\\n          </div>\\r\\n          <div class=\\\"col\\\">\\r\\n            Start Time: {{ school.selectedClass.start_time }}\\r\\n            <br>\\r\\n            End Time: {{ school.selectedClass.end_time }}\\r\\n          </div>\\r\\n        </div>\\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col\\\">\\r\\n            Room: {{ school.selectedClass.room }}\\r\\n          </div>\\r\\n        </div>\\r\\n    \\r\\n        <div class=\\\"row\\\">\\r\\n          <div class=\\\"col\\\">\\r\\n            Instructor: {{school.selectedClass.instructor}}\\r\\n          </div>\\r\\n        </div>\\r\\n    \\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <br>\\r\\n\\r\\n  <div class=\\\"row\\\">\\r\\n    \\r\\n    <div class=\\\"col-6\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n        <div class=\\\"card-body\\\">\\r\\n          <div class=\\\"card-text\\\">\\r\\n            <div class=\\\"row\\\">\\r\\n              <div class=\\\"col\\\">\\r\\n                <h5>Lessons <span class=\\\"badge badge-secondary\\\"></span></h5></div>\\r\\n              <div class=\\\"col\\\"></div>\\r\\n              <div class=\\\"col\\\" *ngIf='false'><button *ngIf=\\\"user.currentUser.role.id < 4\\\" class=\\\"btn btn-sm btn-secondary\\\" (click)=\\\"addLesson()\\\"><i class=\\\"fas fa-plus\\\"></i> Lesson</button></div>\\r\\n            </div>\\r\\n            \\r\\n            <ng-container *ngIf=\\\"loadedLessonsByClass; else noLessons\\\">\\r\\n              <div *ngFor=\\\"let l of loadedLessonsByClass\\\" class=\\\"row\\\">\\r\\n                <div class=\\\"col-8\\\">{{ l.sequence_number }} - {{ l.title }}</div>\\r\\n                  <div class=\\\"col-4\\\">\\r\\n                    LessonID: &nbsp;{{ l.lesson_id }}\\r\\n                  </div>\\r\\n              </div>\\r\\n            </ng-container>\\r\\n\\r\\n            <ng-template #noLessons>\\r\\n              <h6 class=\\\"text-center mt-2\\\">No lessons for this class.</h6>\\r\\n            </ng-template>\\r\\n\\r\\n          </div>\\r\\n        </div>\\r\\n      </div> \\r\\n    </div>\\r\\n\\r\\n    <div class=\\\"col-6\\\">\\r\\n      <div class=\\\"card\\\">\\r\\n        <div class=\\\"card-body\\\">\\r\\n          <div class=\\\"card-text\\\">\\r\\n            <div class=\\\"row mb-2\\\">\\r\\n              <div class=\\\"col\\\">\\r\\n                <h5>Current Students <span class=\\\"badge badge-secondary\\\">{{ school.loadedStudentsByClass_Count }}</span></h5></div>\\r\\n              <!-- <div class=\\\"col\\\"></div> -->\\r\\n              <div class=\\\"col text-right\\\" *ngIf=\\\"user.userHasAccess(3)\\\"><button class=\\\"btn btn-sm btn-secondary\\\" (click)=\\\"addStudent()\\\"><i class=\\\"fas fa-cog\\\"></i> Manage Students</button></div>\\r\\n            </div>\\r\\n            \\r\\n            <ng-container *ngIf=\\\"school.loadedStudentsByClass; else noStudents\\\">\\r\\n              <div *ngFor=\\\"let s of school.loadedStudentsByClass\\\" class=\\\"row student p-2\\\" (click)=\\\"viewUser(s.id)\\\">\\r\\n                  <div class=\\\"col-9\\\">\\r\\n                    <a *ngIf=\\\"s.name != ' '\\\">{{ s.name }}</a>\\r\\n                    <a *ngIf=\\\"s.name == ' '\\\">{{ school.removeDomain(s.username) }}</a>\\r\\n                  </div>\\r\\n                  <div class=\\\"col-3\\\" style=\\\"white-space:nowrap;\\\">\\r\\n                    <a class=\\\"\\\">View Student</a>\\r\\n                  </div>\\r\\n              </div>\\r\\n            </ng-container>\\r\\n            <ng-template #noStudents>\\r\\n              <h6 class=\\\"text-center mt-2\\\">No students for this class.</h6>\\r\\n            </ng-template>\\r\\n          </div>\\r\\n        </div>\\r\\n      </div>    \\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <br>\\r\\n\\r\\n  <ag-grid-angular\\r\\n      style=\\\"height: 500px;\\\"\\r\\n      class=\\\"ag-theme-balham\\\"\\r\\n      [rowData]=\\\"rowData\\\"\\r\\n      [columnDefs]=\\\"columnDefs\\\"\\r\\n      (rowClicked)='onRowClicked($event)'\\r\\n      (gridReady)=\\\"onGridReady($event)\\\"\\r\\n      >\\r\\n  </ag-grid-angular>\\r\\n\\r\\n  <br><br><br><br>\\r\\n\\r\\n\\r\\n<div *ngIf=\\\"school.viewAddStudentToClassPopup\\\" class=\\\"popup\\\">\\r\\n  <app-add-students-to-class></app-add-students-to-class>\\r\\n</div>\\r\\n<div *ngIf=\\\"school.viewManageLessonPopup\\\" class=\\\"popup\\\">\\r\\n  <app-manage-lesson></app-manage-lesson>\\r\\n</div>\\r\\n<div *ngIf=\\\"school.viewTestSummaryPopup\\\" class=\\\"popup\\\">\\r\\n  <app-view-test-summary></app-view-test-summary>\\r\\n</div>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { Router } from '@angular/router';\r\nimport { IdealLesson, IdealQuizFlat } from 'src/app/model/lesson';\r\nimport { IdealQuiz } from '../../../model/lesson';\r\n\r\n@Component({\r\n  selector: 'app-view-class',\r\n  templateUrl: './view-class.component.html',\r\n  styleUrls: ['./view-class.component.css']\r\n})\r\nexport class ViewClassComponent implements OnInit {\r\n\r\n  userTests: IdealQuiz[] = [];\r\n  bestTest: IdealQuiz;\r\n  latestTest: IdealQuiz;\r\n  timeSpent: number = 0;\r\n  \r\n  constructor(public school: SchoolService, public user: UserService, public router: Router) { }\r\n\r\n  columnDefs = [\r\n    {headerName: 'Student Name', field: 'studentName', sortable: true, filter: true, resizable: true, width: 150  },\r\n    //{headerName: 'Student Id', field: 'studentId', sortable: true, filter: true, resizable: true, width: 50 },\r\n    //{headerName: 'Class Id', field: 'classId', sortable: true, filter: true, resizable: true, width: 50 },\r\n    {headerName: 'Lesson Id', field: 'lessonId', sortable: true, filter: true, resizable: true, width: 70 },\r\n    {headerName: 'Lesson', field: 'lessonName', sortable: true, filter: true, resizable: true, width: 70 },\r\n    {headerName: 'Score', field: 'score', sortable: true, filter: true, resizable: true, width: 70  },\r\n    {headerName: 'Violations', field: 'violations', sortable: true, filter: true, resizable: true, width: 70  },\r\n    {headerName: 'Elapsed Time', field: 'elapsedTime', sortable: true, filter: true, resizable: true , width: 90 },\r\n    {headerName: 'Date', field: 'date', sortable: true, filter: true, resizable: true },\r\n];\r\n\r\n  public loadedLessonsByClass: any;\r\n\r\n  public rowData: any;\r\n  private gridApi;\r\n  private gridColumnApi;\r\n\r\n  ngOnInit() {\r\n    console.log('view-class init method...')\r\n    console.log(this.school.selectedClass);\r\n\r\n    this.school.getStudentsByClass(this.school.selectedClass.id);\r\n\r\n    //this.rowData = this.school.mockQuizzes_School;\r\n    this.loadQuizzes();\r\n    this.loadLessons();\r\n    // this.rowData = this.school.allQuizzes;\r\n\r\n    console.log(\"Loaded lessons length: \"+this.school.loadedLessonsByClass.length);\r\n  }\r\n\r\n  addStudent() {\r\n    this.school.viewAddStudentToClassPopup = true;\r\n  }\r\n\r\n  addLesson() {\r\n    this.school.selectedLesson = new IdealLesson();\r\n    this.school.viewManageLessonPopup = true;\r\n  }\r\n\r\n  loadLessons() {\r\n    this.school.getLessonsByClass(this.school.selectedClass.id).subscribe(data => {\r\n\r\n      console.log(\"Loaded Lessons: \"+JSON.stringify(data));\r\n\r\n      if(data.status == \"Success\")\r\n      {\r\n        this.loadedLessonsByClass = data.lessons;\r\n      }\r\n      else\r\n        this.loadedLessonsByClass = null;\r\n      //console.log(this.loadedLessonsByClass);\r\n    })\r\n  }\r\n\r\n  viewUser(id: number) {\r\n    console.log(id);\r\n    //this.user.loadUserById(id);\r\n    this.school.viewUser = this.school.findUserById(id);\r\n    //console.log(this.viewUser);\r\n    this.school.viewUser = this.school.getLoadedStudent(id);\r\n    this.router.navigateByUrl('view-user');\r\n  }\r\n\r\n  onGridReady(params) {\r\n    this.gridApi = params.api;\r\n    this.gridColumnApi = params.columnApi;\r\n\r\n    this.gridApi.sizeColumnsToFit();\r\n  }\r\n\r\n  // onSelectionChanged() {\r\n  //   console.log('clicked!');\r\n  //   var selectedRows = this.gridApi.getSelectedRows();\r\n  //   console.log(selectedRows);\r\n  //   // document.querySelector('#selectedRows').innerHTML =\r\n  //   //   selectedRows.length === 1 ? selectedRows[0].athlete : '';\r\n  // }\r\n\r\n  onRowClicked(event: any) { \r\n    console.log('row', event); \r\n    let q: IdealQuiz = event.data;\r\n\r\n    this.school.TestSummaryId = q.testId;\r\n    this.school.TestSummaryStudentId = q.studentId;\r\n\r\n    this.school.viewTestSummaryPopup = true;\r\n  }\r\n  // onCellClicked(event: any) { console.log('cell', event); }\r\n  // onSelectionChanged(event: any) { console.log(\"selection\", event); }\r\n\r\n  loadQuizzes() {\r\n    let originalQuizes = this.school.allQuizzes;\r\n    this.school.getAllQuizzesByClass(this.school.selectedClass.id).subscribe(data => {\r\n      //console.log(JSON.stringify(data));  // Return the JSON object as a string, so it can be parsed online and mapped to an object\r\n      console.log(JSON.parse(JSON.stringify(data)));\r\n      //console.log(data.class);\r\n\r\n      if(data.status == \"Failed\")\r\n      {\r\n        console.log(\"No test attempts.\");\r\n        this.rowData = [];\r\n        return;\r\n      }\r\n\r\n      this.school.allQuizzesFlat = [];\r\n      this.school.allQuizzes = [];\r\n\r\n          for (let l of data.class.lessons) {\r\n            //console.log(l)\r\n            if (l) {\r\n              for (let t of l.test_attempts) {\r\n                //console.log(t);\r\n                if (t) {\r\n                  if (this.user.currentUser.role.id == 4 && t.student_id != this.user.currentUser.id) \r\n                    continue;\r\n\r\n                  let q = new IdealQuizFlat();\r\n                  console.log(t);\r\n                  q.course_id = data.class.course_id;\r\n                  q.lesson_id = l.lesson_id;\r\n                  q.lessonName = l.lesson_name;\r\n                  q.test_id = t.test_id;\r\n                  q.student_id = t.student_id;\r\n                  q.student_name = this.school.removeDomain(t.student_name);\r\n                  q.start_time = new Date(t.start_time * 1000);\r\n                  q.end_time = new Date(t.end_time * 1000);\r\n                  q.elapsed_time = this.school.getElapsedTimeInMinutes(t.elapsed_time);\r\n                  q.score = t.score;\r\n                  q.violations = t.violations; \r\n\r\n                  this.school.allQuizzesFlat.push(q);\r\n                  this.school.allQuizzes.push(q.convertToIdealQuiz());\r\n                }\r\n              }\r\n            }\r\n          }\r\n      console.log(this.school.allQuizzes);\r\n      this.rowData = this.school.allQuizzes;\r\n      this.school.allQuizzes = originalQuizes;\r\n    });\r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvY29yZS92aWV3LXRlc3Qtc3VtbWFyeS92aWV3LXRlc3Qtc3VtbWFyeS5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<div class=\\\"container\\\">\\r\\n  <div class=\\\"popup-header\\\">\\r\\n    <h5>Test Summary - {{ school.TestSummaryId }}</h5>\\r\\n    <button class=\\\"btn btn-red\\\" (click)=\\\"cancelUpdate()\\\">\\r\\n      <fa name=\\\"fas fa-times-circle\\\"></fa>\\r\\n    </button>\\r\\n  </div>\\r\\n\\r\\n  <div>\\r\\n    <p style=\\\"color: red;\\\">{{ errorMessage }}</p>\\r\\n\\r\\n    <p>Start Time: {{ StartTime }}</p>\\r\\n    <p>End Time: {{ EndTime }}</p>\\r\\n    <p><b>Score: {{ testSummaryResult.score }}</b></p>\\r\\n    <br>\\r\\n\\r\\n    <div *ngIf=\\\"breakdowns.length > 0\\\">\\r\\n      Breakdowns\\r\\n      <hr>\\r\\n    </div>\\r\\n\\r\\n    <table>\\r\\n      <tr *ngFor=\\\"let b of breakdowns\\\" class=\\\"mb-4\\\">\\r\\n        <td>\\r\\n          {{ b.description }}\\r\\n        </td>\\r\\n        <td>&nbsp;&nbsp;</td>\\r\\n        <td>\\r\\n          Points: {{ b.points }} / {{ b.possible_points }}\\r\\n        </td>\\r\\n      </tr>\\r\\n    </table>\\r\\n\\r\\n    <br><br>\\r\\n\\r\\n    <div *ngIf=\\\"violations.length > 0\\\">\\r\\n      Violations\\r\\n      <hr>\\r\\n    </div>\\r\\n\\r\\n    <table>\\r\\n      <tr *ngFor=\\\"let v of violations\\\" class=\\\"mb-4\\\">\\r\\n        <td>\\r\\n          <span style=\\\"color: red;\\\">{{ v.name }}</span>\\r\\n        </td>\\r\\n        <td>&nbsp;&nbsp;</td>\\r\\n        <td>\\r\\n          <span style=\\\"color: red;\\\">{{ v.occuranceFormatted }}</span>\\r\\n        </td>\\r\\n      </tr>\\r\\n    </table>\\r\\n\\r\\n\\r\\n    <div class=\\\"popup-footer\\\" *ngIf=\\\"false\\\">\\r\\n      <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"updateAccount()\\\">Previous</button>\\r\\n      &nbsp;\\r\\n      <button class=\\\"btn btn-lg btn-primary\\\" (click)=\\\"cancelUpdate()\\\">Next</button>\\r\\n    </div>\\r\\n  </div>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport { SchoolService } from '../../../services/school.service';\r\n\r\n@Component({\r\n  selector: 'app-view-test-summary',\r\n  templateUrl: './view-test-summary.component.html',\r\n  styleUrls: ['./view-test-summary.component.css']\r\n})\r\nexport class ViewTestSummaryComponent implements OnInit {\r\n\r\n  public TestSummaryId = '';\r\n  public testSummaryResult: TestSummaryResult;\r\n  public breakdowns: Breakdown[] = [];\r\n  public violations: Violation[] = [];\r\n  public StartTime = '';\r\n  public EndTime = '';\r\n\r\n  public errorMessage = '';\r\n\r\n  constructor(public school: SchoolService) { }\r\n\r\n  ngOnInit() {\r\n    this.loadTestSummary();\r\n  }\r\n\r\n  cancelUpdate() {\r\n    this.school.viewTestSummaryPopup = false;\r\n  }\r\n\r\n  loadTestSummary() {\r\n    if (this.school.TestSummaryId != '' && this.school.TestSummaryStudentId > 0) {\r\n\r\n      this.TestSummaryId = this.school.TestSummaryId;\r\n      \r\n      this.school.getTestSummary(this.school.TestSummaryId, this.school.TestSummaryStudentId).subscribe(res => {\r\n        console.log(res);\r\n        this.testSummaryResult = res.results;\r\n        this.breakdowns = res.breakdowns;\r\n        this.violations = res.violations;\r\n\r\n        console.log(this.testSummaryResult);\r\n        console.log(this.breakdowns);\r\n        console.log(this.violations);\r\n\r\n        this.StartTime = new Date(this.testSummaryResult.start_time * 1000).toString();\r\n        this.EndTime = new Date(this.testSummaryResult.end_time * 1000).toString();\r\n\r\n        for (let i = 0; i < this.violations.length; i++) {\r\n          this.violations[i].occuranceFormatted = new Date(this.violations[i].occurance * 1000).toLocaleString();\r\n        }\r\n      });\r\n  \r\n    }\r\n  }\r\n}\r\n\r\n\r\n\r\nexport class Breakdown {\r\n  tbd_id: number;\r\n  test_id: string;\r\n  student_id: number;\r\n  description: string;\r\n  points: number;\r\n  possible_points: number;\r\n  results: string;\r\n}\r\n\r\nexport class TestSummaryResult {\r\n  test_id: string;\r\n  student_id: number;\r\n  start_time: number;\r\n  end_time: number;\r\n  lesson_id: number;\r\n  score: number;\r\n}\r\n\r\nexport class Violation {\r\n  v_id: number;\r\n  description: string;\r\n  name: string;\r\n  occurance: number;\r\n  occuranceFormatted: string;\r\n\r\n  public formatOccuranceValue(): void {\r\n    this.occuranceFormatted = new Date(this.occurance * 1000).toString();\r\n  }\r\n}","module.exports = \".class\\r\\n{\\r\\n\\tborder-bottom: 1px solid #e0e0e0; \\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.class:hover\\r\\n{\\r\\n\\tbackground-color:#f7f7f7;\\r\\n}\\r\\n\\r\\n.back\\r\\n{\\r\\n\\twidth: 150px;\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9jb3JlL3ZpZXctdXNlci92aWV3LXVzZXIuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxnQ0FBZ0M7Q0FDaEMsZUFBZTtBQUNoQjs7QUFFQTs7Q0FFQyx3QkFBd0I7QUFDekI7O0FBRUE7O0NBRUMsWUFBWTtBQUNiIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9jb3JlL3ZpZXctdXNlci92aWV3LXVzZXIuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jbGFzc1xyXG57XHJcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMGUwZTA7IFxyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNsYXNzOmhvdmVyXHJcbntcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7XHJcbn1cclxuXHJcbi5iYWNrXHJcbntcclxuXHR3aWR0aDogMTUwcHg7XHJcbn0iXX0= */\"","module.exports = \"<div class=\\\"back text-left\\\">\\r\\n  <button class=\\\"btn btn-primary btn-small\\\" (click)=\\\"goBack()\\\">\\r\\n    << Back</button>\\r\\n</div>\\r\\n\\r\\n<i class=\\\"fas fa-user-cog\\\"></i>\\r\\n<h3>{{ school.viewUser.firstname }} {{ school.viewUser.lastname }}</h3>\\r\\n<h4>{{ school.viewUser.role.name }}</h4>\\r\\n<div class=\\\"email-address\\\">{{ school.viewUser.email }}</div>\\r\\n<div class=\\\"phone-number\\\">{{ school.viewUser.phone1 }}</div>\\r\\n<div *ngIf=\\\"lastLogin\\\">\\r\\n  <b>Last Login:</b>\\r\\n  <br>\\r\\n  {{ lastLogin }}\\r\\n</div>\\r\\n\\r\\n<div *ngIf=\\\"school.viewUser.role_id === 3\\\">\\r\\n  <!-- <h5>Classes Taught</h5>\\r\\n  <div class=\\\"row\\\">\\r\\n\\r\\n  </div> -->\\r\\n</div>\\r\\n\\r\\n<div *ngIf=\\\"school.viewUser.role.id === 4\\\">\\r\\n  <br>\\r\\n\\r\\n  <ng-container *ngIf=\\\"school.loadedClassesByStudent; else noClasses\\\">\\r\\n    <h5>Enrolled Classes</h5>\\r\\n    <div *ngFor=\\\"let c of school.loadedClassesByStudent\\\">\\r\\n\\r\\n      <div class=\\\"row class p-2\\\" (click)=\\\"goToClass(c, c.class_id)\\\">\\r\\n\\r\\n        <div class=\\\"col-9 text-left\\\">\\r\\n          <a>{{ c.name }}</a>\\r\\n        </div>\\r\\n\\r\\n        <div class=\\\"col text-right\\\" style=\\\"white-space:nowrap;\\\">\\r\\n          <a class=\\\"\\\">View</a>\\r\\n        </div>\\r\\n      </div>\\r\\n    </div>\\r\\n  </ng-container>\\r\\n\\r\\n  <ng-template #noClasses>\\r\\n    <hr>\\r\\n    <h5>This student isn't enrolled in any classes</h5>\\r\\n    <hr>\\r\\n  </ng-template>\\r\\n\\r\\n  <div class=\\\"m-3\\\">\\r\\n    <div *ngIf=\\\"timeSpent > 0\\\">\\r\\n      <b>Total Time: </b>\\r\\n      <br>\\r\\n      {{ formatSeconds(timeSpent) }}\\r\\n    </div>\\r\\n  </div>\\r\\n  \\r\\n  <div class=\\\"row mt-2 mb-4\\\">\\r\\n    <div class=\\\"col-lg-6 col-sm-12\\\">\\r\\n      <div *ngIf=\\\"bestTest\\\">\\r\\n        <b>Best Score:</b>\\r\\n        <br>\\r\\n        {{ bestTest.score }}\\r\\n      </div>\\r\\n      <div *ngIf=\\\"latestTest\\\">\\r\\n        <b>Best Attempt:</b>\\r\\n        <br>\\r\\n        {{ getFormattedDate(bestTest.startTime) }}\\r\\n      </div>\\r\\n    </div>\\r\\n  \\r\\n    <div class=\\\"col-lg-6 col-sm-12\\\">\\r\\n      <div *ngIf=\\\"bestTest\\\">\\r\\n        <b>Latest Score:</b>\\r\\n        <br>\\r\\n        {{ latestTest.score }}\\r\\n      </div>\\r\\n      <div *ngIf=\\\"latestTest\\\">\\r\\n        <b>Last Attempt:</b>\\r\\n        <br>\\r\\n        {{ getFormattedDate(latestTest.startTime) }}\\r\\n      </div>\\r\\n    </div>\\r\\n  </div>\\r\\n\\r\\n  <ag-grid-angular style=\\\"height: 200px;\\\" class=\\\"ag-theme-balham\\\" [rowData]=\\\"rowData\\\" [columnDefs]=\\\"columnDefs\\\">\\r\\n  </ag-grid-angular>\\r\\n</div>\"","import { Component, OnInit } from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport { UserService } from 'src/app/services/user.service';\r\nimport { SchoolService } from 'src/app/services/school.service';\r\nimport { IdealClass } from 'src/app/model/class';\r\nimport { Router } from '@angular/router';\r\nimport { IdealQuiz } from '../../../model/lesson';\r\n\r\n@Component({\r\n  selector: 'app-view-user',\r\n  templateUrl: './view-user.component.html',\r\n  styleUrls: ['./view-user.component.css']\r\n})\r\nexport class ViewUserComponent implements OnInit {\r\n\r\n  userTests: IdealQuiz[] = [];\r\n  bestTest: IdealQuiz;\r\n  latestTest: IdealQuiz;\r\n  timeSpent: number = 0;\r\n  lastLogin: string = '';\r\n\r\n  constructor(public user: UserService, public school: SchoolService, public router: Router, private _location: Location) { }\r\n\r\n  columnDefs = [\r\n    {headerName: 'Type', field: 'test_type', sortable: true, filter: true, resizable: true, width: 70 },\r\n    {headerName: 'Lesson Id', field: 'lessonId', sortable: true, filter: true, resizable: true, width: 90 },\r\n    {headerName: 'Score', field: 'score', sortable: true, filter: true, resizable: true, width: 70  },\r\n    {headerName: 'Violations', field: 'violations', sortable: true, filter: true, resizable: true, width: 90  },\r\n    {headerName: 'Elapsed Time', field: 'elapsedTime', sortable: true, filter: true, resizable: true , width: 90 },\r\n    {headerName: 'Date', field: 'date', sortable: true, filter: true, resizable: true },\r\n];\r\n\r\n  public rowData: any;\r\n\r\n  ngOnInit() {\r\n    console.log(this.school.viewUser);\r\n    if (this.school.viewUser.role.id == 4) {\r\n      this.school.getClassesByStudent(this.school.viewUser.id);\r\n    }\r\n\r\n    for (let q of this.school.allQuizzes) {\r\n      console.log(q.studentId +\":\"+this.school.viewUser.id);\r\n      if (q.studentId == this.school.viewUser.id) {\r\n        this.userTests.push(q);\r\n      }\r\n    }\r\n    console.log(this.school.allQuizzes);\r\n    console.log(this.userTests);\r\n    this.rowData = this.userTests;\r\n\r\n    for (let t of this.userTests) {\r\n      if (this.bestTest) {\r\n        if (t.score > this.bestTest.score) {\r\n          this.bestTest = t;\r\n        }\r\n      } else {\r\n        this.bestTest = t;\r\n      }\r\n\r\n      if (this.latestTest) {\r\n        if (t.startTime > this.latestTest.startTime) {\r\n          this.latestTest = t;\r\n        }\r\n      } else {\r\n        this.latestTest = t;\r\n      }\r\n\r\n      let e = t.elapsedTime.split(\":\");\r\n      let min = parseInt(e[0]);\r\n      let sec = parseInt(e[1]);\r\n      this.timeSpent += (min * 60) + sec;\r\n\r\n      // this.timeSpent += parseInt(t.elapsedTime);\r\n    }\r\n\r\n    if(this.school.viewUser.timestamped == null || this.school.viewUser.timestamped === 0)\r\n    {\r\n      this.lastLogin = \"Never\";\r\n    }\r\n    else\r\n    {\r\n      let d = new Date(this.school.viewUser.timestamped*1000);\r\n      this.lastLogin = d.toLocaleDateString() +\" at \"+ d.toLocaleTimeString();\r\n    }\r\n\r\n    // console.log(this.bestTest);\r\n    // console.log(this.latestTest);\r\n    // console.log(this.timeSpent);\r\n\r\n    // console.log(this.school.loadedClassesByStudent);\r\n  }\r\n\r\n  goToClass(cls: IdealClass, id: number) {\r\n    // TODO: THis is a hack until the return values from the DB match the objects. The IdealClass object has id but the returned class objects from the API use 'class_id'\r\n    console.log(cls);\r\n    cls.id = id;\r\n    this.school.selectedClass = cls;\r\n    this.router.navigateByUrl('/view-class');\r\n  }\r\n\r\n  goBack()\r\n  {\r\n    this._location.back();\r\n  }\r\n\r\n  getFormattedDate(d) {\r\n    let date = new Date(d);\r\n    // let year = date.getFullYear();\r\n    // let month = (1 + date.getMonth()).toString().padStart(2, '0');\r\n    // let day = date.getDate().toString().padStart(2, '0');\r\n    // let hour = date.getHours();\r\n    // let pm = false;\r\n    // if(hour > 12)\r\n    // {\r\n    //   pm = true;\r\n    //   hour -= 12;\r\n    // }\r\n    // let minute = date.getMinutes();\r\n    // return month + '/' + day + '/' + year + ' at ' + hour + \":\" + minute+ (pm ? \"PM\":\"AM\") +\" EST\";\r\n    // return month + '/' + day + '/' + year;\r\n    return date.toLocaleDateString() + \" at \"+ date.toLocaleTimeString();\r\n  }\r\n\r\n  formatSeconds(d) {\r\n    d = Number(d);\r\n    var h = Math.floor(d / 3600);\r\n    var m = Math.floor(d % 3600 / 60);\r\n    var s = Math.floor(d % 3600 % 60);\r\n\r\n    var hDisplay = h > 0 ? h + (h == 1 ? \" hour \" : \" hours \") : \"\";\r\n    var mDisplay = m > 0 ? m + (m == 1 ? \" minute \" : \" minutes \") : \"\";\r\n    var sDisplay = s > 0 ? s + (s == 1 ? \" second\" : \" seconds\") : \"\";\r\n    return hDisplay + mDisplay + sDisplay; \r\n  }\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3R1ZGVudC90ZWFjaGVyLWRhc2hib2FyZC90ZWFjaGVyLWRhc2hib2FyZC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<p>\\r\\n  teacher-dashboard works!\\r\\n</p>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-teacher-dashboard',\r\n  templateUrl: './teacher-dashboard.component.html',\r\n  styleUrls: ['./teacher-dashboard.component.css']\r\n})\r\nexport class TeacherDashboardComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvc3VwZXItdXNlci9zdXBlci11c2VyLWRhc2hib2FyZC9zdXBlci11c2VyLWRhc2hib2FyZC5jb21wb25lbnQuY3NzIn0= */\"","module.exports = \"<p>\\r\\n  super-user-dashboard works!\\r\\n</p>\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-super-user-dashboard',\r\n  templateUrl: './super-user-dashboard.component.html',\r\n  styleUrls: ['./super-user-dashboard.component.css']\r\n})\r\nexport class SuperUserDashboardComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","import { Role } from './role';\r\nimport * as faker from 'faker';\r\n\r\nexport class Person {\r\n    \r\n    constructor() {\r\n        this.id = 1;\r\n        this.username = '';\r\n        this.password = '';\r\n        this.password1 = '';\r\n        this.password2 = '';\r\n        this.firstname = '';\r\n        this.lastname = '';\r\n        this.email = '';\r\n        this.phone1 = '';\r\n        this.phone2 = '';\r\n        this.confirmed = '0';\r\n        this.isSuperUser = false;\r\n        this.role = new Role(4, \"Student\");\r\n        this.timestamped = 0;\r\n    }\r\n\r\n    id: number;\r\n    username: string;\r\n    firstname: string;\r\n    lastname: string;\r\n    password: string;\r\n    password1: string;\r\n    password2: string;\r\n    email: string;\r\n    phone1: string;\r\n    phone2: string;\r\n    role_id: number;\r\n    role: Role;\r\n    timestamped: number;\r\n    confirmed: string;\r\n\r\n    isSuperUser: boolean;\r\n}\r\n\r\nexport class PersonUtil {\r\n\r\n\tpublic getMockUser(roleId: number) {\r\n\t\tlet p: Person = new Person();\r\n        p.email = faker.internet.email();\r\n        p.phone1 = faker.phone.phoneNumber();\r\n        p.phone2 = faker.phone.phoneNumber();\r\n\t\tp.firstname = faker.name.firstName();\r\n        p.lastname = faker.name.lastName();\r\n        p.username = 'user' + faker.random.number(9999);\r\n        p.password = 'password1';\r\n\t\t//p.id = faker.random.number(500);\r\n        //p.role = this.getMockRole(faker.random.number({min: 1, max: 4}));\r\n        p.role = this.getMockRole(roleId);\r\n        p.role_id = roleId;\r\n\t\treturn p;\r\n\t}\r\n\t\r\n\tpublic getMockRole(id: number) {\r\n    if (id == 1) { return new Role(1, \"Super User\"); }\r\n    if (id == 2) { return new Role(2, \"School Admin\"); }\r\n    if (id == 3) { return new Role(3, \"Instructor\"); }\r\n    if (id == 4) { return new Role(4, \"Student\"); }\r\n  }\r\n}","import { Person } from './Person';\r\n\r\nexport class IdealClass {\r\n\r\n    constructor() {\r\n        this.name = \"\";\r\n        this.course_name = \"\";\r\n    }\r\n\r\n    id: number;\r\n    name: string;\r\n    course_name : string;\r\n    description: string;\r\n    enrolled: number;\r\n    instructor: Person;\r\n    instructor_id: number;\r\n    classroom_id: number;\r\n    room: string;\r\n    days: string;\r\n    start_date: string;\r\n    end_date: string;\r\n    start_time: string;\r\n    end_time: string;\r\n    monday = 1;\r\n    tuesday = 0;\r\n    wednesday = 1;\r\n    thursday = 0;\r\n    friday = 1;\r\n    saturday = 0;\r\n    sunday = 0;\r\n    school_id: number;\r\n    course_id = 0;\r\n    active : string;\r\n\r\n    //students: Person[] = [];\r\n    \r\n}\r\n\r\nexport class IdealClassroom {\r\n    id: number;\r\n    room_number: string;\r\n    school_id: number;\r\n    seats: number;\r\n}\r\n\r\nexport class IdealCourse {\r\n\r\n//     constructor(cls: IdealClass) {\r\n//         if (cls.id) {\r\n//             this.id = cls.id;\r\n//         }\r\n//         this.name = cls.course_name;\r\n//         this.desc = cls.description;\r\n//     }\r\n    id: number;\r\n    name: string;\r\n    description: string;\r\n    active: string;\r\n}","import * as faker from 'faker';\r\nimport { Person } from './Person';\r\n\r\nexport const LessonTypes = [\"N/A\", \"G\", \"T\"];\r\n\r\nexport class IdealLesson {\r\n    lesson_id: number;\r\n    sequence_number: number;\r\n    title: string;\r\n    description: string;\r\n    course_id: number;\r\n    picture_url: string;\r\n}\r\n\r\nexport class IdealQuiz {\r\n    studentId: number;\r\n    studentName: string;\r\n    lessonId: number;\r\n    lessonName: string;\r\n    classId: number;\r\n    testId: string;\r\n    test_type: string;\r\n    date: string;\r\n    startTime: Date;\r\n    endTime: Date;\r\n    elapsedTime: string;\r\n    score: number;\r\n    violations: number;\r\n    school_id: number;\r\n}\r\n\r\nexport class IdealQuizFlat {\r\n    course_id: number;\r\n    lesson_id: number;\r\n    class_id: number;\r\n    test_id: string;\r\n    test_type: string;\r\n    student_id: number;\r\n    student_name: string;\r\n    lessonName: string;\r\n    start_time: Date;\r\n    end_time: Date;\r\n    elapsed_time: string;\r\n    score: number;\r\n    violations: number;\r\n    school_id: number;\r\n\r\n    public convertToIdealQuiz(): IdealQuiz {\r\n        let q: IdealQuiz = new IdealQuiz();\r\n\r\n        q.date = this.start_time.toLocaleDateString() + \" at \"+this.start_time.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});\r\n        q.testId = this.test_id;\r\n        q.studentId = this.student_id;\r\n        q.studentName = this.student_name;\r\n        q.lessonId = this.lesson_id;\r\n        q.classId = this.class_id;\r\n        q.startTime = this.start_time;\r\n        q.endTime = this.end_time;\r\n        q.elapsedTime = this.elapsed_time;\r\n        q.score = this.score;\r\n        q.violations = this.violations;\r\n        q.school_id = this.school_id;\r\n        q.lessonName = this.lessonName;\r\n        q.test_type = this.test_type;\r\n\r\n        return q;\r\n    }\r\n}\r\n\r\n\r\nexport class LessonUtil {\r\n\r\n    createMockLessons(course_id: number) : IdealLesson[] {\r\n        let lessons: IdealLesson[] = [];\r\n\r\n        let l = new IdealLesson();\r\n        l.course_id = course_id;\r\n        l.description = faker.lorem.paragraph();\r\n        l.title = \"Intro to VR\";\r\n        l.sequence_number = 1;\r\n        lessons.push(l);\r\n\r\n        for (let i = 1;  i <= 6; i++) {\r\n            let l: IdealLesson = new IdealLesson();\r\n            l.course_id = course_id;\r\n            l.description = faker.lorem.paragraph();\r\n            l.title = 'Lesson ' + i;\r\n            l.sequence_number = i + 1;\r\n            lessons.push(l);\r\n        }\r\n\r\n        return lessons;\r\n    }\r\n\r\n    createMockQuizzes(student: Person, lessonId: number) : IdealQuiz[] {\r\n        let quizzes: IdealQuiz[] = [];\r\n\r\n        let num: number = faker.random.number(7);\r\n\r\n        for (let i = 1; i <= num; i++) {\r\n            let q: IdealQuiz = new IdealQuiz();\r\n            //q.id = i.toString();\r\n            q.lessonId = lessonId;\r\n            q.studentId = student.id;\r\n            q.studentName = student.lastname + \", \" + student.firstname;\r\n            q.score = faker.random.number(100);\r\n            q.violations = faker.random.number(2);\r\n            q.date = faker.date.past(1).toLocaleString();\r\n            // q.startTime = Date.parse(q.date);\r\n            //q.endTime = new Date(q.date.getTime() + faker.random.number(45)*60000).toLocaleTimeString();\r\n            //q.elapsedTime = new Date(q.endTime).valueOf() - new Date(q.startTime).valueOf();\r\n            q.elapsedTime = faker.random.number(45).toString();\r\n            \r\n            quizzes.push(q);\r\n        }\r\n\r\n        return quizzes;\r\n    }\r\n\r\n}","export class Role {\r\n    id: number;\r\n    name: string;\r\n\r\n    constructor(id: number, name: string) {\r\n        this.id = id;\r\n        this.name = name;\r\n    }\r\n}\r\n\r\n\r\nexport const ROLES: Role[] = [\r\n    { id: 1, name: \"Super User\" },\r\n    { id: 2, name: \"School Admin\" },\r\n    { id: 3, name: \"Instructor\" },\r\n    { id: 4, name: \"Student\" },\r\n];\r\n","import { Person, PersonUtil } from './Person';\r\nimport { IdealClass } from './class';\r\nimport * as faker from 'faker';\r\n\r\nexport class IdealSchool {\r\n\r\n    constructor() {\r\n        this.id = 0;\r\n        this.name = '';\r\n        this.address1 = '';\r\n        this.address2 = '';\r\n        this.city = '';\r\n        this.state = '';\r\n        this.zipcode = '';\r\n        this.email = '';\r\n        this.phone = '';\r\n        this.pocid = 0;\r\n        this.total_seats = 0;\r\n        this.active_seats = 0;\r\n        this.admin_seats = 0;\r\n        this.teacher_seats = 0;\r\n        this.student_seats = 0;\r\n\t      this.scorm = '0';\r\n        this.domain = '';\r\n        //this.administrator = null;\r\n        //this.classes = [];\r\n    }\r\n\r\n    id: number;\r\n    name: string;\r\n    address1: string;\r\n    address2: string;\r\n    city: string;\r\n    state: string;\r\n    zipcode: string;\r\n    email: string;\r\n    phone: string;\r\n    pocid: number;\r\n\r\n    //administrator: Person;\r\n    classes: IdealClass[] = [];\r\n\r\n    total_seats: number;\r\n    active_seats: number;\r\n    admin_seats: number;\r\n    teacher_seats: number;\r\n    student_seats: number;\r\n    scorm: string = '0';\r\n    domain: string = '';\r\n\r\n    // this is the same as active seats\r\n    // totalStudents() {\r\n    //     let total = 0;\r\n    //     for (let c of this.classes) {\r\n    //         total += c.students.length;\r\n    //     }\r\n    //     return total;\r\n    // }\r\n}\r\n\r\n\r\nexport class SchoolUtil {\r\n    \r\n  getMockSchool() {\r\n    let s: IdealSchool = new IdealSchool();\r\n    s.email = faker.internet.email();\r\n    s.address1 = faker.address.streetAddress();\r\n    s.address2 = '';\r\n    s.city = faker.address.city();\r\n    s.state = faker.address.state();\r\n    s.zipcode = faker. address.zipCode();\r\n    s.name = faker.name.jobTitle() + \" Academy\";\r\n    s.phone = faker.phone.phoneNumber();\r\n    //s.id = faker.random.uuid();\r\n    s.pocid = 2;\r\n    //s.total_seats = faker.random.number(50);\r\n    s.admin_seats = faker.random.number(50);\r\n    s.teacher_seats = faker.random.number(50);\r\n    s.student_seats = faker.random.number(50);\r\n    //s.administrator = new PersonUtil().getMockUser(1);\r\n    //s.totalSeats = faker.random.number(50);\r\n    return s;\r\n  }\r\n\r\n  createMockClass() {\r\n    let c: IdealClass = new IdealClass();\r\n    \r\n    c.name = \"Intro to \" + faker.name.jobTitle();\r\n    c.classroom_id = faker.random.number(9999);\r\n    c.instructor_id = faker.random.number(9999);\r\n    //c.id = faker.random.uuid();\r\n    c.start_time = \"1:00 PM\";  //faker.random.number().toString();\r\n    c.end_time = \"1:45 PM\";  //faker.random.number().toString();\r\n    c.start_date = \"2020-01-15\";  //faker.random.number().toString();\r\n    c.end_date = \"2020-05-19\";  //faker.random.number().toString();\r\n    \r\n    // c.instructor = new PersonUtil().getMockUser(3);\r\n    // c.students = [];\r\n    // let total = faker.random.number(20);\r\n    // for (let i = 0; i < total; i++) {\r\n    //   c.students.push(new PersonUtil().getMockUser(1));\r\n    // }\r\n\r\n    console.log(faker.name.jobTitle());\r\n    return c;\r\n  }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class MainService {\r\n\r\n  public isCollapsed = false;\r\n  public isDevelopment = false;\r\n\r\n  constructor(public router: Router) {\r\n    \r\n   }\r\n\r\n  toggleSideMenu() {\r\n    this.isCollapsed = !this.isCollapsed;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, RouterEvent, NavigationEnd } from '@angular/router';\r\n\r\n /** A router wrapper, adding extra functions. */\r\n@Injectable()\r\nexport class RouterHistoryService {\r\n  private previousUrl: string = undefined;\r\n  private currentUrl: string = undefined;\r\n\r\n  //These urls won't be saved in the history for now, support needs added for them. This is not the preferred solution. A better solution is needed for the refresh issue.\r\n  private avoid:string[] = [\r\n    \"/\",\r\n    \"/login\",\r\n    \"/school-list\",\r\n    \"/view-user\",\r\n    \"/view-class\",\r\n    \"/account\"\r\n  ];\r\n\r\n  constructor(private router : Router) {\r\n    this.currentUrl = this.router.url;\r\n    router.events.subscribe(event => {\r\n      if (event instanceof NavigationEnd) {   \r\n\r\n        if(event.url == \"/school-dashboard\")\r\n        {\r\n          let clear = localStorage.getItem(\"clearURL\");\r\n          let savedURL = localStorage.getItem(\"currentURL\");\r\n\r\n          if(savedURL === null)\r\n            return;\r\n            \r\n          if(savedURL != event.url && savedURL != \"\" && clear == \"false\")\r\n          {\r\n            this.router.navigateByUrl(savedURL);\r\n          }\r\n        }     \r\n\r\n        this.previousUrl = this.currentUrl;\r\n        this.currentUrl = event.url;\r\n\r\n        if(!this.avoid.includes(this.currentUrl))\r\n        {\r\n          localStorage.setItem(\"currentURL\", this.currentUrl);\r\n          // console.log(\"SAVED URL: \"+this.currentUrl);\r\n        }\r\n      };\r\n    });\r\n  }\r\n\r\n  public getPreviousUrl(){\r\n    return this.previousUrl;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IdealSchool, SchoolUtil } from '../model/school';\r\nimport { IdealClass, IdealCourse, IdealClassroom } from '../model/class';\r\nimport { PersonUtil, Person } from '../model/Person';\r\nimport { Router } from '@angular/router';\r\nimport { UserService } from './user.service';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Role } from '../model/role';\r\nimport { IdealLesson, LessonUtil, IdealQuiz, IdealQuizFlat } from '../model/lesson';\r\n\r\nimport * as faker from 'faker';\r\nimport { JsonPipe } from '@angular/common';\r\nimport { MainService } from './main.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SchoolService {\r\n\r\n  // baseUrl = 'http://fnfgjidealindustriesapidev-env.hvbxczppmd.us-east-2.elasticbeanstalk.com/';\r\n  devURL = '/api/';\r\n  liveURL = 'https://api.ivrylearning.com/';\r\n  baseUrl = 'https://api.ivrylearning.com/';\r\n  //baseUrl = 'https://www.fnfsandbox.com/ideal-api/';\r\n\r\n  // THese are for editing or creating new objects\r\n  selectedUser: Person;\r\n  selectedSchool: IdealSchool;\r\n  selectedClass: IdealClass;\r\n  selectedCourse: IdealCourse;\r\n  selectedLesson: IdealLesson;\r\n\r\n  public notifications: string = \"\";\r\n\r\n  // The currently selected school for the current user (NOT the school being edited)\r\n  currentUserSchool = new IdealSchool();\r\n\r\n  // The class the current user is viewing (usually to add students to)\r\n  public viewClass = new IdealClass();\r\n\r\n  // The user currently being viewed through a dashboard or the view user page. Separate from selectedUser to keep any recently edited user from showing up on view user if no ID has been input...\r\n  public viewUser: Person;\r\n\r\n  viewManageSchoolPopup = false;\r\n  doSchoolUpdate = false;\r\n  doSchoolCreate = true;\r\n\r\n  viewManageAccountPopup = false;\r\n  manageAccountUserRole: Role;\r\n  manageAccountSchoolId = 0;\r\n  doUserCreate = true;\r\n  doUserUpdate = false;\r\n  public manageUserMessage = 'x';\r\n  public manageUserType = 'x';\r\n\r\n  viewManageRoomsPopup = false;\r\n  updateRoomNumber: IdealClassroom;\r\n\r\n  viewManageClassPopup = false;\r\n  doClassUpdate = false;\r\n  doClassCreate = true;\r\n\r\n  viewManageCoursePopup = false;\r\n  doCourseUpdate = false;\r\n  doCourseCreate = true;\r\n\r\n  viewManageLessonPopup = false;\r\n\r\n  viewTestSummaryPopup = false;\r\n  TestSummaryId = '';\r\n  TestSummaryStudentId = 0;\r\n\r\n  personUtil = new PersonUtil();\r\n  schoolUtil = new SchoolUtil();\r\n\r\n  loadedSchools: IdealSchool[] = [];\r\n\r\n  loadedRooms: IdealClassroom[] = [];\r\n\r\n  loadedClasses: IdealClass[] = [];\r\n  loadedClassesByStudent: IdealClass[] = [];\r\n  loadedClassesBySchool: IdealClass[] = [];\r\n\r\n  loadedCourses: IdealCourse[] = [];\r\n  selectCourseOnLoad : boolean = false;\r\n\r\n  loadedStudentsByClass: Person[] = [];\r\n  loadedStudentsByClass_Count: number;\r\n  viewAddStudentToClassPopup = false;\r\n\r\n  loadedLessonsByClass: IdealLesson[] = [];\r\n  loadedLessonsByClass_Count: number;\r\n  loadedLessonsByCourse: IdealLesson[] = [];\r\n  loadedLessonsByCourse_Count: number;\r\n  viewAddLessonToClassPopup = false;\r\n  selectLessonOnLoad : boolean = false;\r\n\r\n  allQuizzesFlat: IdealQuizFlat[] = [];\r\n  allQuizzes: IdealQuiz[] = [];\r\n\r\n  mockQuizzes_School: IdealQuiz[] = [];\r\n  mockQuizzes_Student: IdealQuiz[] = [];\r\n\r\n  loadedUsers: Person[] = [];\r\n  loadedUsers_Inactive: Person[] = [];\r\n  loadedSuperUsers: Person[] = [];\r\n  loadedSchoolAdmins: Person[] = [];\r\n  loadedInstructors: Person[] = [];\r\n  loadedStudents: Person[] = [];\r\n\r\n  // Used for searching\r\n  allUsers: Person[] = [];\r\n  filteredUsers: Person[] = [];\r\n  searchExistingEmail = '';\r\n\r\n\r\n  constructor(public http: HttpClient, public router: Router, public user: UserService, private main: MainService) {\r\n\r\n    let url = window.location.href;\r\n    console.log(url);\r\n    if (url.includes('localhost')) {\r\n      console.log('Setting to dev environment.')\r\n      this.main.isDevelopment = true;\r\n      this.baseUrl = this.devURL;\r\n    }\r\n    else\r\n    {\r\n      this.baseUrl = this.liveURL;\r\n    }\r\n    // TODO: Hard coding the school for now, but will eventually need to load schools the user is associated with and let them pick one...\r\n    //this.getSchoolById(19);\r\n  }\r\n\r\n  editSchool(s: IdealSchool) {\r\n    if (s != null) {\r\n      this.selectedSchool = s;\r\n      this.doSchoolUpdate = true;\r\n      this.doSchoolCreate = false;\r\n    }\r\n    else {\r\n      this.selectedSchool = new IdealSchool();\r\n      this.doSchoolUpdate = false;\r\n      this.doSchoolCreate = true;\r\n    }\r\n\r\n    this.viewManageSchoolPopup = true;\r\n  }\r\n\r\n  editClass(c: IdealClass) {\r\n    if (c != null) {\r\n      this.selectedClass = c;\r\n      this.doClassUpdate = true;\r\n      this.doClassCreate = false;\r\n    }\r\n    else {\r\n      this.selectedClass = new IdealClass();\r\n      this.doClassUpdate = false;\r\n      this.doClassCreate = true;\r\n    }\r\n    console.log(c);\r\n    this.viewManageClassPopup = true;\r\n  }\r\n\r\n  editCourse(c: IdealCourse) {\r\n    if (c != null) {\r\n      this.selectedCourse = c;\r\n      this.doCourseUpdate = true;\r\n      this.doCourseCreate = false;\r\n    }\r\n    else {\r\n      this.selectedCourse = new IdealCourse();\r\n      this.doCourseUpdate = false;\r\n      this.doCourseCreate = true;\r\n    }\r\n    console.log(c);\r\n    this.viewManageCoursePopup = true;\r\n  }\r\n\r\n  saveSchool() {\r\n    console.log(this.selectedSchool);\r\n\r\n    if (this.doSchoolCreate) {\r\n      this.loadedSchools.push(this.selectedSchool);\r\n      this.doSchoolCreate = false;\r\n    }\r\n\r\n    this.viewManageSchoolPopup = false;\r\n  }\r\n\r\n  addSchool() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    console.log(this.selectedSchool);\r\n\r\n    this.http.post<any>(this.baseUrl + 'school/add.php', this.selectedSchool, { headers: header }).subscribe(data => {\r\n      \r\n      console.log(data);\r\n      let d = JSON.parse(JSON.stringify(data));\r\n\r\n      let schoolID = d.school.s_id;\r\n\r\n      if (data.status == \"success\") {\r\n\r\n        this.updateUserRoleAndSchool(this.user.currentUser.id, 1, d.school.s_id).subscribe(data => {\r\n\r\n          console.log(data);\r\n\r\n          this.getSchoolsByUser(this.user.currentUser.id).subscribe((data) => {\r\n            this.loadedSchools = data.schools;\r\n            //check if school is a scorm school, if it is then create the scorm class\r\n            if(this.selectedSchool.scorm == '1')\r\n            {\r\n              this.createScormClass(schoolID);\r\n            }\r\n            else\r\n            {\r\n              this.router.navigateByUrl('school-list');\r\n              this.viewManageSchoolPopup = false;\r\n            }\r\n          });\r\n\r\n        });\r\n      }\r\n    })\r\n  }\r\n\r\n  saveSelectedSchool() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    console.log(\"Updating school with data: \"+JSON.stringify(this.selectedSchool));\r\n\r\n    this.http.post<any>(this.baseUrl + 'school/upd.php', this.selectedSchool, { headers: header }).subscribe(data => {\r\n      \r\n      console.log(data);\r\n      // let d = JSON.parse(JSON.stringify(data));\r\n\r\n      // console.log(\"name: \"+d.school.school_name);\r\n\r\n      if (data.status == \"success\") {\r\n\r\n        this.getSchoolsByUser(this.user.currentUser.id).subscribe((data) => {\r\n            this.loadedSchools = data.schools;\r\n            this.router.navigateByUrl('school-list');\r\n          });\r\n      }\r\n\r\n    })\r\n  }\r\n\r\n  saveSelectedCourse() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    console.log(\"Updating course with data: \"+JSON.stringify(this.selectedCourse));\r\n\r\n    this.http.post<any>(this.baseUrl + 'course/upd.php', this.selectedCourse, { headers: header }).subscribe(data => {\r\n      \r\n      console.log(data);\r\n\r\n      if (data.status == \"success\") {\r\n        this.loadAllCourses();\r\n      }\r\n    })\r\n  }\r\n\r\n  saveSelectedLesson() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    console.log(\"Updating lesson with data: \"+JSON.stringify(this.selectedLesson));\r\n\r\n    this.http.post<any>(this.baseUrl + 'lesson/upd.php', this.selectedLesson, { headers: header }).subscribe(data => {\r\n      \r\n      console.log(data);\r\n\r\n      // this.loadedLessonsByCourse = [];\r\n\r\n      if (data.status == \"success\") {\r\n        this.getLessonsByCourse(this.selectedCourse.id);\r\n      }\r\n    })\r\n  }\r\n\r\n  getSchoolById(id: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"searchby\": \"id\",\r\n      \"id\": id,\r\n      \"name\": \"\"\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'school/inq.php', body, options)\r\n  }\r\n\r\n  getAllSchools() {\r\n    this.http.get<any>(this.baseUrl + 'school/list.php').subscribe(data => {\r\n      console.log(data);\r\n    })\r\n  }\r\n\r\n  getSchoolActiveSeats(schoolId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    let body = {\r\n      \"id\": schoolId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'school/seats.php', body, options);\r\n  }\r\n\r\n  getSchoolsByUser(personId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    let body = {\r\n      \"person_id\": personId,\r\n      \"school_id\": \"\",\r\n      \"role_id\": \"\"\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'userrole/list.php', body, options);\r\n  }\r\n\r\n  selectSchool(school: IdealSchool) {\r\n\r\n    let schoolId = school.id;\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"person_id\": this.user.currentUser.id,\r\n      \"school_id\": schoolId\r\n    }\r\n\r\n    this.getSchoolById(schoolId).subscribe(data => {\r\n\r\n      // console.log(data.schools[0]);\r\n      this.currentUserSchool = data.schools[0];\r\n      this.selectedSchool = this.currentUserSchool;\r\n      // this.loadUsersBySchool(this.currentUserSchool.id);\r\n      this.loadClassroomsBySchool();\r\n      \r\n      if(this.user.currentUser.isSuperUser)\r\n      {\r\n        this.user.currentUser.role = this.setUserRole(1);\r\n        this.router.navigateByUrl('/school-dashboard');\r\n\r\n        // if(localStorage.getItem(\"currentURL\") != \"\")\r\n        //   {\r\n        //     console.log(this.currentUserSchool.id);\r\n        //     this.router.navigateByUrl(localStorage.getItem(\"currentURL\"));\r\n        //   }\r\n        //   else\r\n        //   {\r\n        //     console.log(\"GOING TO DASHBOARD\");\r\n        //     this.router.navigateByUrl('/school-dashboard');\r\n        //   }\r\n      }\r\n      else\r\n      {\r\n        this.http.post<any>(this.baseUrl + 'userrole/list.php', body, options).subscribe(data => {\r\n          // console.log(\"DATA:\"+JSON.stringify(data));\r\n          let roleId = data[0].role;\r\n          this.user.currentUser.role = this.setUserRole(roleId);\r\n          this.selectedSchool = this.currentUserSchool;\r\n          localStorage.setItem(\"currentUser\", JSON.stringify(this.user.currentUser));\r\n          this.router.navigateByUrl('/school-dashboard');\r\n          // if(localStorage.getItem(\"currentURL\") != \"\")\r\n          //   this.router.navigateByUrl(localStorage.getItem(\"currentURL\"));\r\n          // else\r\n          // {\r\n          //   console.log(\"GOING TO DASHBOARD\");\r\n            \r\n          // }\r\n        });\r\n      }\r\n\r\n    });\r\n    \r\n  }\r\n\r\n  viewSchool(s: IdealSchool) {\r\n    this.selectedSchool = s;\r\n    this.router.navigateByUrl('/class-list')\r\n  }\r\n\r\n  updateClassroom() {\r\n    //TODO: This method doesn't work quite yet. Need to flesh it out.\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let room: IdealClassroom = new IdealClassroom();\r\n    room.room_number = String(this.selectedClass.classroom_id);\r\n    room.school_id = this.currentUserSchool.id;\r\n    room.seats = 0;\r\n\r\n    this.http.post<any>(this.baseUrl + 'classroom/add.php', room, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      this.loadClassroomsBySchool();\r\n      //this.selectedClass.classroom_id = data.classroom.classrooms[0].id;\r\n    });\r\n  }\r\n\r\n  addClassroom(room: string, schoolId: number, seats: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"room\": room,\r\n      \"school_id\": schoolId,\r\n      \"seats\": seats\r\n    }\r\n\r\n    this.http.post<any>(this.baseUrl + 'classroom/add.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      this.loadClassroomsBySchool();\r\n    });\r\n  }\r\n\r\n  addSelectedCourse() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let course: IdealCourse = this.selectedCourse;\r\n\r\n    let body = {\r\n      \"name\": course.name,\r\n      \"description\": course.description,\r\n      \"active\": course.active\r\n    }\r\n\r\n    console.log(\"Sending course data: \" + JSON.stringify(body));\r\n\r\n    this.http.post<any>(this.baseUrl + 'course/add.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      this.selectCourseOnLoad = true;\r\n      this.loadAllCourses();\r\n    });\r\n  }\r\n\r\n  addSelectedLesson() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let lesson: IdealLesson = this.selectedLesson;\r\n    lesson.course_id = this.selectedCourse.id;\r\n\r\n    let body = {\r\n      \"sequence_num\": lesson.sequence_number,\r\n      \"title\": lesson.title,\r\n      \"description\": lesson.description,\r\n      \"course_id\": lesson.course_id,\r\n      \"picture_url\": lesson.picture_url\r\n    }\r\n\r\n    console.log(\"Sending lesson data: \" + JSON.stringify(body));\r\n\r\n    this.http.post<any>(this.baseUrl + 'lesson/add.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      // this.selectLessonOnLoad = true;\r\n      this.getLessonsByCourse(lesson.course_id);\r\n    });\r\n  }\r\n\r\n  loadClassroomsBySchool() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"SchoolID\": this.currentUserSchool.id\r\n    }\r\n\r\n    this.http.post<any>(this.baseUrl + 'classroom/list.php', body, { headers: header }).subscribe(data => {\r\n      //console.log(data);\r\n      this.loadedRooms = data;\r\n    });\r\n  }\r\n\r\n  loadAllCourses() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    this.http.get<any>(this.baseUrl + 'course/list.php', { headers: header }).subscribe(data => {\r\n\r\n      this.loadedCourses = data.courses;\r\n      console.log(this.loadedCourses);\r\n\r\n      if(this.selectCourseOnLoad)\r\n      {\r\n        this.selectedCourse = this.loadedCourses[this.loadedCourses.length-1];\r\n        this.selectedLesson = new IdealLesson();\r\n        this.loadedLessonsByCourse = [];\r\n        this.selectCourseOnLoad = false;\r\n        console.log(\"New Selected Course: \"+ JSON.stringify(this.selectedCourse));\r\n      }\r\n        \r\n    });\r\n  }\r\n\r\n  // loadLessons(course_id: IdealCourse) {\r\n  //   let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n  //   this.http.get<any>(this.baseUrl + 'lesson/list.php', { headers: header }).subscribe(data => {\r\n  //     console.log(data);\r\n  //     this.loadedCourses = data.courses;\r\n  //     console.log(this.loadedCourses);\r\n  //   });\r\n  // }\r\n\r\n  saveSelectedClass() {\r\n    // Check the ID field to determine if this is an add or an update\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n    let cls: IdealClass = this.selectedClass;\r\n    console.log(\"Saving class info: \"+ JSON.stringify(cls));\r\n\r\n    if (cls.id) { // Updating an existing class\r\n      let body = {\r\n        \"id\": cls.id,\r\n        \"course_id\": cls.course_id,\r\n        \"class_name\": cls.name,\r\n        \"room_id\": cls.classroom_id,\r\n        \"instructor_id\": cls.instructor_id,\r\n        \"start_date\": cls.start_date,\r\n        \"end_date\": cls.end_date,\r\n        \"start_time\": cls.start_time,\r\n        \"mon\": cls.monday ? \"1\" : \"0\",\r\n        \"tue\": cls.tuesday ? \"1\" : \"0\",\r\n        \"wed\": cls.wednesday ? \"1\" : \"0\",\r\n        \"thu\": cls.thursday ? \"1\" : \"0\",\r\n        \"fri\": cls.friday ? \"1\" : \"0\",\r\n      }\r\n\r\n      console.log(\"Updating existing class: \"+JSON.stringify(body));\r\n\r\n      this.http.post<any>(this.baseUrl + 'class/upd.php', body, { headers: header }).subscribe(data => {\r\n        console.log(data);\r\n        this.getClassesBySchoolId(this.currentUserSchool.id);\r\n      })\r\n    }\r\n    else // Creating a new class\r\n    {\r\n      cls.school_id = this.currentUserSchool.id;\r\n\r\n      // Have to do this as a temp fix until the days are consistent.\r\n      let cls2: any;\r\n      cls2 = cls;\r\n      cls2.mon = cls.monday;\r\n      cls2.tue = cls.tuesday;\r\n      cls2.wed = cls.wednesday;\r\n      cls2.thu = cls.thursday;\r\n      cls2.fri = cls.friday;\r\n      console.log(\"Creating new class:\");\r\n      console.log(cls2);\r\n\r\n      this.http.post<any>(this.baseUrl + 'class/add.php', cls2, { headers: header }).subscribe(data => {\r\n        console.log(data);\r\n        this.selectedClass.id = data.id;\r\n        this.getClassesBySchoolId(this.currentUserSchool.id);\r\n      });\r\n    }\r\n\r\n    this.viewManageClassPopup = false;\r\n  }\r\n\r\n  createScormClass(schoolID) {\r\n    //Create new room\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"room\": \"SCORM ROOM\",\r\n      \"school_id\": schoolID,\r\n      \"seats\": 0\r\n    }\r\n\r\n    console.log(body);\r\n\r\n    this.http.post<any>(this.baseUrl + 'classroom/add.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n\r\n      //Create new class\r\n      let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n      let cls = new IdealClass();\r\n      cls.name = \"SCORM\";\r\n      cls.course_id = 1;\r\n      cls.classroom_id = data.classroom.cl_id;\r\n      cls.room = \"SCORM ROOM\";\r\n      cls.school_id = schoolID;\r\n      cls.start_date = \"2021-04-22\";\r\n      cls.end_date = \"2021-08-22\";\r\n      cls.start_time = \"1:00 PM\";\r\n      cls.end_time = \"1:45 PM\";\r\n      cls.active = \"Y\";\r\n      console.log(\"Creating new class:\");\r\n      console.log(cls);\r\n\r\n      this.http.post<any>(this.baseUrl + 'class/add.php', cls, { headers: header }).subscribe((data) => {\r\n        console.log(data);\r\n          this.router.navigateByUrl('school-list');\r\n          this.viewManageSchoolPopup = false;\r\n      });\r\n      \r\n    });\r\n    \r\n  }\r\n\r\n  enrollStudent(studentId: number, classId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"student_id\": studentId,\r\n      \"class_id\": classId\r\n    }\r\n\r\n    console.log(\"Enroll: \"+ JSON.stringify(body));\r\n\r\n    this.http.post<any>(this.baseUrl + 'enrollment/add.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      this.getStudentsByClass(this.selectedClass.id);\r\n    });\r\n  }\r\n\r\n  unenrollStudent(studentId: number, classId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"student_id\": studentId,\r\n      \"class_id\": classId\r\n    }\r\n\r\n    console.log(\"Unenroll: \"+ JSON.stringify(body));\r\n\r\n    this.http.post<any>(this.baseUrl + 'enrollment/remove.php', body, { headers: header }).subscribe(data => {\r\n      console.log(data);\r\n      this.getStudentsByClass(this.selectedClass.id);\r\n    });\r\n  }\r\n\r\n  getLessonsByStudent(studentId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"student_id\": studentId\r\n    }\r\n\r\n    this.http.post(this.baseUrl + 'lesson/status.php', body, { headers: header}).subscribe(data => {\r\n      console.log(data);\r\n    });\r\n  }\r\n\r\n\r\n  updateUserRole(personId: number, roleId: number, schoolId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    // Role Id is the NEW role. The assumption here is that there's only one role per person per school.\r\n    let body = {\r\n      \"role_id\": roleId,\r\n      \"person_id\": personId,\r\n      \"school_id\": schoolId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'userrole/update.php', body, options);\r\n  }\r\n\r\n\r\n  getLessonsByClass(classId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"searchby\": \"class\",\r\n      \"class_id\": classId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'lesson/list.php', body, { headers: header});\r\n  }\r\n\r\n  getLessonsByCourse(courseID: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"searchby\": \"course\",\r\n      \"course_id\": courseID\r\n    }\r\n\r\n    this.http.post<any>(this.baseUrl + 'lesson/list.php', body, { headers: header}).subscribe(data => {\r\n\r\n      console.log(data);\r\n\r\n      if(data.status == \"Failed\")\r\n      {\r\n        this.loadedLessonsByCourse = [];\r\n        return;\r\n      }\r\n \r\n      this.loadedLessonsByCourse = data.lessons;\r\n\r\n      if(this.selectLessonOnLoad)\r\n      {\r\n        this.selectedLesson = this.loadedLessonsByCourse[this.loadedLessonsByCourse.length-1];\r\n        this.selectLessonOnLoad = false;\r\n      }\r\n    });\r\n  }\r\n\r\n  getTestSummary(testId: string, studentId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    let body = {\r\n      \"test_id\": testId,\r\n      \"student_id\": studentId,\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'test/summary.php', body, { headers: header})\r\n  }\r\n\r\n\r\n  addSelectedUser(roleId: number, schoolId: number) {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    console.log(\"Creating the following user: \");\r\n    \r\n\r\n    var body =\r\n    {\r\n      user: this.selectedUser,\r\n      schoolId: schoolId,\r\n      roleId: roleId\r\n    }\r\n\r\n    console.log(body);\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/add.php', body, { headers: header });\r\n  }\r\n\r\n  // For updating users on a school's accounts page\r\n  updateSelectedUser() {\r\n    let header = new HttpHeaders({ 'content-type': 'application/json' });\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/upd.php', this.selectedUser, { headers: header })\r\n  }\r\n\r\n\r\n  addUserToListGroup(user: Person, roleId: number) {\r\n    if (roleId == 1) {\r\n      this.loadedSuperUsers.push(user);\r\n    } else if (roleId == 2) {\r\n      this.loadedSchoolAdmins.push(user);\r\n    } else if (roleId == 3) {\r\n      this.loadedInstructors.push(user);\r\n    } else if (roleId == 4) {\r\n      this.loadedStudents.push(user);\r\n    }\r\n  }\r\n\r\n\r\n  loadUserById(id: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"searchby\": \"id\",\r\n      \"id\": id,\r\n      \"email\": \"\"\r\n    }\r\n\r\n    this.http.post<any>(this.baseUrl + 'person/inq.php', body, options).subscribe(data => {\r\n      console.log(data);\r\n      this.viewUser = data.people[0];\r\n      console.log(this.viewUser);\r\n    })\r\n  }\r\n\r\n\r\n  getRoleByUserId(userId: number): number {\r\n    let roleId = 0;\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    let body = {\r\n      \"person_id\": userId,\r\n      \"school_id\": \"19\"\r\n    }\r\n\r\n    this.http.post<any>(this.baseUrl + 'userrole/list.php', body, options).subscribe(data => {\r\n      console.log(data);\r\n\r\n    })\r\n\r\n    return roleId;\r\n  }\r\n\r\n  filterUserlist() {\r\n    if (this.searchExistingEmail.length > 0) {\r\n      this.filteredUsers = this.loadedUsers.filter(u => u.email.toLowerCase().includes(this.searchExistingEmail.toLowerCase()));\r\n    }\r\n    else\r\n    {\r\n      this.filteredUsers = [];\r\n    }\r\n  }\r\n\r\n  updateUserRoleAndSchool(personId: number, roleId: number, schoolId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"person_id\": personId,\r\n      \"role_id\": roleId,\r\n      \"school_id\": schoolId\r\n    }\r\n\r\n    console.log(\"BODY: \"+ JSON.stringify(body));\r\n\r\n    return this.http.post(this.baseUrl + 'userrole/add.php', body, options);\r\n  }\r\n\r\n  getLoadedStudent(personId: number): Person {\r\n    return this.loadedStudents.find(s => s.id == personId);\r\n  }\r\n\r\n  loadUsersBySchool(schoolId: number) {\r\n    // console.log(\"Loading users by school\");\r\n    this.clearCurrentUserList();\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"school_id\": schoolId\r\n    }\r\n\r\n    this.loadedUsers = [];\r\n\r\n    this.http.post<any>(this.baseUrl + 'userrole/list.php', body, options).subscribe(data => {\r\n\r\n      // console.log(data);\r\n      \r\n      if (!data || !data.people || data.status == \"Failed\")\r\n        return;\r\n\r\n      for (let u of data.people) {\r\n        this.loadedUsers.push(u);\r\n\r\n        if (u.active == \"inactive\") {\r\n          u.role = this.setUserRole(u.role_id);\r\n          this.loadedUsers_Inactive.push(u);\r\n        } else {\r\n          if (u.role_id == 1) {\r\n            u.role = this.setUserRole(1);\r\n            this.loadedSuperUsers.push(u);\r\n          } else if (u.role_id == 2) {\r\n            u.role = this.setUserRole(2);\r\n            this.loadedSchoolAdmins.push(u);\r\n          } else if (u.role_id == 3) {\r\n            u.role = this.setUserRole(3);\r\n            this.loadedInstructors.push(u);\r\n          } else if (u.role_id == 4) {\r\n            u.role = this.setUserRole(4);\r\n            this.loadedStudents.push(u);\r\n          }\r\n        }\r\n\r\n      }\r\n      // console.log(this.loadedStudents);\r\n    })\r\n  }\r\n\r\n\r\n  setUserRole(roleId: number) {\r\n    if (roleId == 1) {\r\n      return { id: 1, name: \"Super User\" }\r\n    } else if (roleId == 2) {\r\n      return { id: 2, name: \"School Admin\" }\r\n    } else if (roleId == 3) {\r\n      return { id: 3, name: \"Instructor\" }\r\n    } else if (roleId == 4) {\r\n      return { id: 4, name: \"Student\" }\r\n    }\r\n    return null;\r\n  }\r\n\r\n\r\n  getClassesBySchoolId(id: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"searchby\": \"school\",\r\n      \"school_id\": this.currentUserSchool.id,\r\n      \"instructor_id\": \"\"\r\n    }\r\n\r\n    //console.log(this.currentUserSchool.id);\r\n    this.currentUserSchool.classes = [];\r\n\r\n    this.http.post<any>(this.baseUrl + 'class/inq.php', body, options).subscribe(data => {\r\n      console.log(data);\r\n      this.currentUserSchool.classes = data.classes;\r\n      this.getActiveSeats();\r\n    });\r\n  }\r\n\r\n  getActiveSeats() {\r\n    this.currentUserSchool.active_seats = 0;\r\n\r\n    if(this.currentUserSchool.classes != null)\r\n    {\r\n      for (let c of this.currentUserSchool.classes) {\r\n        this.currentUserSchool.active_seats += c.enrolled;\r\n      }\r\n    }\r\n  }\r\n\r\n  getClassesByStudent(personId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"searchby\": \"student\",\r\n      \"student_id\": personId,\r\n      \"class_id\": \"\"\r\n    }\r\n\r\n    this.currentUserSchool.classes = [];\r\n\r\n    this.http.post<any>(this.baseUrl + 'enrollment/inq.php', body, options).subscribe(data => {\r\n      this.loadedClassesByStudent = data.classes;\r\n      // console.log(\"Loaded Classes for student: \"+ JSON.stringify(data));\r\n    });\r\n  }\r\n\r\n  getStudentsByClass(classId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = {\r\n      \"searchby\": \"class\",\r\n      \"student_id\": \"\",\r\n      \"class_id\": classId\r\n    }\r\n\r\n    //console.log(this.currentUserSchool.id);\r\n    //this.currentUserSchool.classes = [];\r\n\r\n    this.http.post<any>(this.baseUrl + 'enrollment/inq.php', body, options).subscribe(data => {\r\n      console.log(data);\r\n      this.loadedStudentsByClass = data.students;\r\n      this.loadedStudentsByClass_Count = data.count;\r\n\r\n      this.loadedLessonsByClass = new LessonUtil().createMockLessons(classId);\r\n      //console.log(this.loadedLessonsByClass);\r\n    });\r\n  }\r\n\r\n  findUserById(id: number) {\r\n    return this.loadedUsers.find(u => u.id == id);\r\n  }\r\n\r\n\r\n  // Returns an error if there are any scheduled classes. Those need to be removed/deleted first.\r\n  deleteSchool(schoolId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"school_id\": schoolId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'school/rem.php', body, options);\r\n  }\r\n\r\n  // Returns an error if there are any active enrollments. Those need to be removed/deleted first.\r\n  deleteClass(classId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"class_id\": classId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'class/rem.php', body, options);\r\n  }\r\n\r\n  // Removes all students from a class. Comments are optional\r\n  deleteEnrollmentsByClass(classId: number, comments: string) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"class_id\": classId,\r\n      \"comments\": comments\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'enrollment/cancelAll.php', body, options);\r\n  }\r\n\r\n  // Removes a student from a class. Comments are optional\r\n  deleteEnrollmentByUserAndClass(classId: number, studentId: number, comments: string) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"class_id\": classId,\r\n      \"student_id\": studentId,\r\n      \"comments\": comments\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'enrollment/cancel.php', body, options);\r\n  }\r\n\r\n  deleteCourse(courseID: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"course_id\": courseID\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'course/delete.php', body, options).subscribe((data) => {\r\n\r\n      console.log(\"Deleting course response: \"+ JSON.stringify(data));\r\n      \r\n      if(data.status == \"Success\")\r\n      {\r\n        this.selectedCourse = new IdealCourse();\r\n        this.loadAllCourses();\r\n      }\r\n\r\n      this.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  deleteLesson(lessonID: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"lesson_id\": lessonID\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'lesson/delete.php', body, options).subscribe((data) => {\r\n\r\n      console.log(\"Deleting lesson response: \"+ JSON.stringify(data));\r\n      \r\n      if(data.status == \"Success\")\r\n      {\r\n        this.selectedLesson = new IdealLesson();\r\n        this.getLessonsByCourse(this.selectedCourse.id);\r\n      }\r\n\r\n      this.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  deleteRoom(roomID: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"room_id\": roomID\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'classroom/rem.php', body, options).subscribe((data) => {\r\n\r\n      console.log(\"Deleting classroom response: \"+ JSON.stringify(data));\r\n      \r\n      if(data.status == \"Success\")\r\n      {\r\n        this.loadClassroomsBySchool();\r\n      }\r\n\r\n      this.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  removeAllStudents() {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"school_id\": this.selectedSchool.id\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/delete.php', body, options).subscribe((data) => {\r\n\r\n      console.log(\"Removing All Students response: \"+ JSON.stringify(data));\r\n      \r\n      if(data.status == \"Success\")\r\n      {\r\n        this.loadUsersBySchool(this.selectedSchool.id);\r\n      }\r\n      else\r\n        console.log(\"FAILED TO REMOVE STUDENTS\");\r\n\r\n      this.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n    });\r\n  }\r\n\r\n  getAllQuizzes(pSchool_id: number = null) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    if (pSchool_id)\r\n      return this.http.post<any>(this.baseUrl + 'test/list.php', {school_id: pSchool_id}, options);\r\n    else\r\n      return this.http.post<any>(this.baseUrl + 'test/list.php', options);\r\n    //.subscribe(data => {\r\n    //   console.log(JSON.stringify(data));  // Return the JSON object as a string, so it can be parsed online and mapped to an object\r\n    //   console.log(JSON.parse(JSON.stringify(data)));\r\n    //   //console.log(data.courses[1]);\r\n\r\n    //   for (let c of data.courses) {\r\n    //     //console.log(c);\r\n    //     if (c) {\r\n    //       for (let l of c.lessons) {\r\n    //         //console.log(l)\r\n    //         if (l) {\r\n    //           for (let t of l.test_attempts) {\r\n    //             //console.log(t);\r\n    //             if (t) {\r\n    //               let q = new IdealQuizFlat();\r\n    //               q.course_id = c.course_id;\r\n    //               q.lesson_id = l.lesson_id;\r\n    //               q.test_id = t.test_id;\r\n    //               q.student_id = t.student_id;\r\n    //               q.student_name = t.student_name;\r\n    //               q.start_time = new Date(t.start_time * 1000);\r\n    //               q.end_time = new Date(t.end_time * 1000);\r\n    //               q.elapsed_time = t.elapsed_time;\r\n    //               q.score = t.score;\r\n    //               q.violations = 0;\r\n  \r\n    //               this.allQuizzesFlat.push(q);\r\n    //               this.allQuizzes.push(q.convertToIdealQuiz());\r\n    //             }\r\n    //           }\r\n    //         }\r\n    //       }\r\n    //     }\r\n    //   }\r\n\r\n      //console.log(this.allQuizzes);\r\n    //});\r\n  }\r\n\r\n  getAllQuizzesByClass(classId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"class_id\": classId\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'test/class.php', body, options);\r\n  }\r\n\r\n  getAllQuizzesByStudent(studentID: number) \r\n  {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    \r\n    let body = {\r\n      \"student_id\": studentID\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'test/inq.php', body, options);\r\n  }\r\n\r\n  loadMockQuizzesForSchool() {\r\n    for (let i = 0; i < this.loadedStudents.length; i++) {\r\n      let student = this.loadedStudents[i];\r\n      let lessonId = faker.random.number(5) + 1;\r\n      let quizzes = new LessonUtil().createMockQuizzes(student, lessonId);\r\n\r\n      for (let q of quizzes) {\r\n        this.mockQuizzes_School.push(q);\r\n      }\r\n    }\r\n  }\r\n\r\n  loadMockQuizzesForStudent(student: Person) {\r\n    let lessonId = faker.random.number(5) + 1;\r\n    let quizzes = new LessonUtil().createMockQuizzes(student, lessonId);\r\n\r\n    for (let q of quizzes) {\r\n      this.mockQuizzes_Student.push(q);\r\n    }\r\n  }\r\n\r\n  clearCurrentUserList() {\r\n    this.loadedUsers = [];\r\n    this.loadedUsers_Inactive = [];\r\n    this.loadedInstructors = [];\r\n    this.loadedSchoolAdmins = [];\r\n    this.loadedStudents = [];\r\n    this.loadedSuperUsers = [];\r\n  }\r\n\r\n  editUser(u: Person) {\r\n    console.log(u);\r\n    this.selectedUser = u;\r\n    this.doUserUpdate = true;\r\n    this.doUserCreate = false;\r\n    this.manageUserType = u.role.name;\r\n    this.viewManageAccountPopup = true;\r\n  }\r\n\r\n\r\n  createSchoolAdmin() {\r\n    this.manageAccountUserRole = { id: 2, name: \"School Admin\" };\r\n    this.doUserUpdate = false;\r\n    this.doUserCreate = true;\r\n    this.manageUserType = \"SCHOOL ADMIN\"\r\n    this.manageUserMessage = \"This user will have permission to add/remove instructors, students, and class for a given school.\"\r\n    this.selectedUser = new Person();\r\n    this.viewManageAccountPopup = true;\r\n  }\r\n\r\n  createInstructor() {\r\n    this.manageAccountUserRole = { id: 3, name: \"Instructor\" };\r\n    this.doUserUpdate = false;\r\n    this.doUserCreate = true;\r\n    this.manageUserType = \"INSTRUCTOR\"\r\n    this.manageUserMessage = \"You are creating a new INSTRUCTOR. This user will have permission to view and manage students for any classes they teach.\"\r\n    this.selectedUser = new Person();\r\n    this.viewManageAccountPopup = true;\r\n  }\r\n\r\n  createStudent() {\r\n    this.manageAccountUserRole = { id: 4, name: \"Student\" };\r\n    this.doUserUpdate = false;\r\n    this.doUserCreate = true;\r\n    this.manageUserType = \"STUDENT\"\r\n    this.manageUserMessage = \"You are creating a new STUDENT. This user will have permission to view their class data for any enrolled classes.\"\r\n    this.selectedUser = new Person();\r\n    this.viewManageAccountPopup = true;\r\n  }\r\n\r\n\r\n  loadAllUsers() {\r\n    this.allUsers = [];\r\n\r\n    this.http.get<any>(this.baseUrl + 'person/list.php').subscribe(data => {\r\n      this.allUsers = data.people;\r\n    })\r\n  }\r\n\r\n  // listUsersByRole(roleId: number) {\r\n  //   this.loadedInstructors = [];\r\n  //   this.loadedSchoolAdmins = [];\r\n  //   this.loadedStudents = [];\r\n  //   this.loadedSuperUsers = [];\r\n\r\n  //   let body = { \r\n  //     \"role_id\": roleId\r\n  //   }\r\n\r\n  //   this.http.post<any>(this.baseUrl + 'userrole/list.php', body).subscribe(data => {\r\n  //     console.log(data);\r\n  //     if (roleId == 1) {\r\n  //       this.loadedSuperUsers = data.people;\r\n  //     } else if (roleId == 2) {\r\n  //       this.loadedSchoolAdmins = data.people;\r\n  //     } else if (roleId == 3) {\r\n  //       this.loadedInstructors = data.people;\r\n  //     } else if (roleId == 4) { \r\n  //       this.loadedStudents = data.people;\r\n  //     }\r\n  //   })\r\n  // }\r\n\r\n\r\n  createMockSchool() {\r\n    this.selectedSchool = new SchoolUtil().getMockSchool();\r\n  }\r\n\r\n  showAlert(title: string, message: string, isError: boolean = false)\r\n  {\r\n    this.notifications = '<div class=\"alert ' + (isError ? 'alert-danger' : 'alert-success') +'\" role=\"alert\"><strong>' + title + '!</strong> ' + message + '</div>';\r\n  }\r\n\r\n  clearAlert()\r\n  {\r\n    this.notifications = \"\";\r\n  }\r\n\r\n  getElapsedTimeInMinutes(seconds: any) : any {\r\n    if (seconds == null) return '00:00';\r\n    if (seconds == 0) return '00:00';\r\n\r\n    try\r\n    {\r\n      var minutes = Math.floor(seconds / 60);\r\n      var secondsRemaining = seconds % 60;\r\n      return `${minutes.toString()}:${secondsRemaining < 10 ? \"0\" + secondsRemaining : secondsRemaining}`;\r\n    }\r\n    catch\r\n    {\r\n      console.log(\"[SchoolDashboardComponent] Unable to format time: \" + seconds);\r\n      return '00:00';\r\n    }\r\n    \r\n  }\r\n\r\n  removeDomain(username: string)\r\n  {\r\n    if(username.includes(\"||\"))\r\n    {\r\n      let u = username.split(\"||\");\r\n      return u[0];\r\n    }\r\n    else\r\n      return username;\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Person, PersonUtil } from '../model/Person';\r\nimport { RouterModule, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { CanActivate } from '@angular/router/src/utils/preactivation';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Role, ROLES } from '../model/role';\r\nimport { jsonpCallbackContext } from '@angular/common/http/src/module';\r\nimport * as jwt from 'jsonwebtoken';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UserService {\r\n\r\n  public isLoggedIn = false;\r\n  public currentUser: Person;\r\n\r\n  public onLoginError = false;\r\n  public loginErrorText = '';\r\n\r\n  public token = '';\r\n\r\n  public notifications: string = \"\";\r\n\r\n  //viewUser: Person;\r\n  \r\n  devURL = '/api/';\r\n  liveURL = 'https://api.ivrylearning.com/';\r\n  baseUrl = 'https://api.ivrylearning.com/';\r\n  // baseUrl = '/api/';\r\n  //baseUrl = 'https://www.fnfsandbox.com/ideal-api/';\r\n\r\n  constructor(public http: HttpClient, public router: Router) {\r\n\r\n    let url = window.location.href;\r\n    console.log(url);\r\n    if (url.includes('localhost')) {\r\n      this.baseUrl = this.devURL;\r\n    }\r\n    else\r\n    {\r\n      this.baseUrl = this.liveURL;\r\n    }\r\n\r\n    if (localStorage.getItem('currentUser')) {\r\n      // TODO: Need to also check how long since the last log in date.\r\n      let date = localStorage.getItem('loggedInDate');\r\n\r\n      this.currentUser = JSON.parse(localStorage.getItem('currentUser'));\r\n      this.doLogin(this.currentUser.id, '', true);\r\n    }\r\n\r\n    if (!this.isLoggedIn) {\r\n      console.log(\"NOT LOGGED IN\");\r\n      this.router.navigateByUrl('/login');\r\n    }\r\n   }\r\n\r\n  login(username: string, password: string, keepLoggedIn: boolean) {\r\n\r\n    this.notifications = \"\";\r\n    this.onLoginError = false;\r\n    \r\n    //console.log(keepLoggedIn);\r\n    //let body = this.encodeRequestBody(username, password);\r\n    let body = { 'username': username, 'password': password }\r\n\r\n    this.http.post(this.baseUrl + 'person/getToken.php', body, { headers: new HttpHeaders({'Content-Type': 'application/json'}), responseType: 'text'}).subscribe(response => {\r\n      // console.log(response);\r\n\r\n      let data = JSON.parse(response);\r\n\r\n      if (data.status == \"Success\") {\r\n        this.notifications = \"\";\r\n\r\n        this.doLogin(data.id, data.token, keepLoggedIn);\r\n      }\r\n      else if (data.status == \"Failed\") {\r\n        //TODO: Show an error\r\n        this.showAlert(data.status, data.message, (data.status == \"Failed\" ? true : false));\r\n      }\r\n    })\r\n  }\r\n\r\n  encodeRequestBody(username: string, password: string) {\r\n    let token1 = btoa(JSON.stringify({ 'alg': 'HS256', 'typ': 'JWT' }));\r\n    let token2 = btoa(JSON.stringify({ 'username': username, 'password': password }));\r\n    let tokens = token1 + \".\" + token2;\r\n\r\n    return { tokens };\r\n  }\r\n\r\n  testLogin(roleId: number) {\r\n    this.currentUser = new PersonUtil().getMockUser(roleId);\r\n    this.isLoggedIn = true;\r\n    this.router.navigateByUrl('/school-list');\r\n  }\r\n\r\n  testJWTLogin() {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = { \r\n      \"username\": \"test30\",\r\n      \"password\": \"pass1\"\r\n    }\r\n\r\n    this.http.post(this.baseUrl + 'person/login.php', body, { headers: new HttpHeaders({'Content-Type': 'application/json'}), responseType: 'text'}).subscribe(data => {\r\n      console.log(data);\r\n      //console.log(atob(data.split('.')[1]));\r\n      //this.viewUser = data.people[0]; \r\n      //console.log(this.viewUser);\r\n    })\r\n  }\r\n\r\n  logout() {\r\n    this.currentUser = null;\r\n    this.isLoggedIn = false;\r\n    localStorage.clear();\r\n    this.router.navigateByUrl('/login');\r\n  }\r\n\r\n  userHasAccess(roleId: number): boolean {\r\n\r\n    if(this.currentUser.isSuperUser)\r\n      return true;\r\n\r\n    if(this.currentUser.role === undefined)\r\n      return false;\r\n\r\n    if (this.currentUser.role.id <= roleId || this.currentUser.isSuperUser) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  /// Get the user by id, set them as the current user, and mark them as logged in.\r\n  doLogin(id: number, token: string, keepLoggedIn: boolean) {\r\n    this.getUserById(id).subscribe(data => {\r\n      // console.log(data);\r\n      this.token = token;\r\n      this.currentUser = data.people[0];\r\n      this.isLoggedIn = true;\r\n      this.isSuperUser();\r\n      \r\n      this.keepUserLoggedIn();\r\n      // if (keepLoggedIn) {\r\n      //   this.keepUserLoggedIn();\r\n      // }\r\n\r\n      this.router.navigateByUrl('/school-list');    \r\n    })\r\n  }\r\n\r\n  getUserById(id: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n    let body = { \r\n      \"searchby\": \"id\",\r\n      \"id\": id,\r\n      \"email\": \"\"\r\n    }\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/inq.php', body, options);\r\n  }\r\n\r\n  isSuperUser() {\r\n    // Hard coding the super user logins for now\r\n    if (this.currentUser.username == 'kriskramer' || this.currentUser.username == 'grok241' || this.currentUser.username == 'ivrysam') {\r\n      this.currentUser.isSuperUser = true;\r\n    }\r\n  }\r\n\r\n  keepUserLoggedIn() {\r\n    // Save the currentUser object to local data. Check on next page load to bypass login if it exists (need to set a time limit)\r\n    // console.log(\"Saving user data for keepLoggedIn...\"+JSON.stringify(this.currentUser));\r\n    localStorage.setItem('currentUser', JSON.stringify(this.currentUser));\r\n    localStorage.setItem('loggedInDate', Date.now().toString());\r\n  }\r\n\r\n  // For updating the logged in user via the User's account page (link in the nav bar)\r\n  updateCurrentUser() {\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/upd.php', this.currentUser, {headers : header})\r\n  }\r\n\r\n  sendPasswordResetEmail(email: string) {\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"email\": email\r\n    };\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/forgotPassword.php', body, {headers : header});\r\n  }\r\n\r\n  checkToken(token: string){\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"token\": token\r\n    };\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/auth.php', body, {headers : header});\r\n  }\r\n\r\n  resetPassword(password: string, token: string){\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"password\": password,\r\n      \"token\": token\r\n    };\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/resetPassword.php', body, {headers : header});\r\n  }\r\n\r\n  updatePassword(currentPassword: string, newPassword: string){\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"email\": this.currentUser.email,\r\n      \"current_password\": currentPassword,\r\n      \"password\": newPassword\r\n    };\r\n\r\n    console.log(\"Sending: \"+ JSON.stringify(body));\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/resetPassword.php', body, {headers : header});\r\n  }\r\n\r\n  sendConfirmationEmail() {\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"email\": this.currentUser.email\r\n    };\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/sendConfirmation.php', body, {headers : header});\r\n  }\r\n\r\n  confirmAccount(token: string) {\r\n    let header = new HttpHeaders({'content-type': 'application/json'});\r\n\r\n    let body = {\r\n      \"token\": token,\r\n      \"action\":\"1\"\r\n    };\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/auth.php', body, {headers : header});\r\n  }\r\n\r\n  deleteUser(personId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = { \r\n      \"id\": personId,\r\n      \"active\": \"0\"\r\n    }\r\n\r\n    console.log(body);\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/setactive.php', body, options);\r\n  }\r\n\r\n  unDeleteUser(personId: number) {\r\n    let options = { headers: new HttpHeaders().set('Content-Type', 'application/json') };\r\n\r\n    let body = { \r\n      \"id\": personId,\r\n      \"active\": \"1\"\r\n    }\r\n\r\n    console.log(body);\r\n\r\n    return this.http.post<any>(this.baseUrl + 'person/setactive.php', body, options);\r\n  }\r\n\r\n  showAlert(title: string, message: string, isError: boolean = false)\r\n  {\r\n    this.notifications = '<div class=\"alert ' + (isError ? 'alert-danger' : 'alert-success') +'\" role=\"alert\"><strong>' + title + '!</strong> ' + message + '</div>';\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n// AuthGuard class for ensuring that users are logged in when using routing\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n  path: ActivatedRouteSnapshot[];\r\n  route: ActivatedRouteSnapshot;\r\n  constructor(private user: UserService, private router: Router) {}\r\n\r\n  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    if (!this.user.isLoggedIn) {\r\n      // redirect to some view explaining what happened\r\n      this.router.navigateByUrl('/login');\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n}\r\n\r\nexport class LoginResponse {\r\n  status: string;\r\n  id: number;\r\n  token: string;\r\n  message: string;\r\n}","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n  production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\r\n","import 'hammerjs';\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n  enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n  .catch(err => console.error(err));\r\n"],"sourceRoot":""}