cloud-ide-academics 0.0.57 → 0.0.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{cloud-ide-academics-bonafide-request-form.component-CM35A1Ex.mjs → cloud-ide-academics-bonafide-request-form.component-DIBzUNbF.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-bonafide-request-form.component-CM35A1Ex.mjs.map → cloud-ide-academics-bonafide-request-form.component-DIBzUNbF.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-Bw-I_FfZ.mjs → cloud-ide-academics-class-program-term-create.component-A5Ed_CAc.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-Bw-I_FfZ.mjs.map → cloud-ide-academics-class-program-term-create.component-A5Ed_CAc.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-DMUqLvyZ.mjs → cloud-ide-academics-class-program-term-list.component-BWQ4BI9Z.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-DMUqLvyZ.mjs.map → cloud-ide-academics-class-program-term-list.component-BWQ4BI9Z.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-C1qeVY8_.mjs → cloud-ide-academics-cloud-ide-academics-BRQerudY.mjs} +191 -33
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-BRQerudY.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-C2VZz6x-.mjs → cloud-ide-academics-program-class-create.component-Bd6yGQ3X.mjs} +13 -9
- package/fesm2022/cloud-ide-academics-program-class-create.component-Bd6yGQ3X.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-list.component-C333Jax-.mjs → cloud-ide-academics-program-class-list.component-D591YMJ3.mjs} +3 -147
- package/fesm2022/cloud-ide-academics-program-class-list.component-D591YMJ3.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/index.d.ts +21 -11
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-C1qeVY8_.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-program-class-create.component-C2VZz6x-.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-program-class-list.component-C333Jax-.mjs.map +0 -1
|
@@ -10,7 +10,7 @@ import { NotificationService, CideInputComponent, CideTextareaComponent, CideEle
|
|
|
10
10
|
import { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
|
|
11
11
|
import { C as CideAcademicsBonafideService } from './cloud-ide-academics-bonafide.service-CHPe3MPl.mjs';
|
|
12
12
|
import { generateStringFromObject, cidePath, hostManagerRoutesUrl, coreRoutesUrl } from 'cloud-ide-lms-model';
|
|
13
|
-
import {
|
|
13
|
+
import { e as CideLytProgramSectionSelectorComponent } from './cloud-ide-academics-cloud-ide-academics-BRQerudY.mjs';
|
|
14
14
|
|
|
15
15
|
class CideAcademicsBonafideRequestFormComponent {
|
|
16
16
|
destroyRef = inject(DestroyRef);
|
|
@@ -314,4 +314,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
314
314
|
}] });
|
|
315
315
|
|
|
316
316
|
export { CideAcademicsBonafideRequestFormComponent };
|
|
317
|
-
//# sourceMappingURL=cloud-ide-academics-bonafide-request-form.component-
|
|
317
|
+
//# sourceMappingURL=cloud-ide-academics-bonafide-request-form.component-DIBzUNbF.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-bonafide-request-form.component-CM35A1Ex.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/bonafide/components/bonafide-request-form/bonafide-request-form.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/bonafide/components/bonafide-request-form/bonafide-request-form.component.html"],"sourcesContent":["import { Component, signal, DestroyRef, inject, OnInit, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideFormFieldErrorComponent, CideSelectComponent } from 'cloud-ide-element';\nimport { NotificationService } from 'cloud-ide-element';\nimport { CideLytSharedWrapperComponent, AppStateHelperService } from 'cloud-ide-layout';\nimport { CideAcademicsBonafideService } from '../../services/bonafide.service';\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\nimport { CideLytProgramSectionSelectorComponent } from '../../../../../public-api';\n\n@Component({\n selector: 'cide-academics-bonafide-request-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CideInputComponent,\n CideTextareaComponent,\n CideEleButtonComponent,\n CideFormFieldErrorComponent,\n CideLytSharedWrapperComponent,\n CideLytProgramSectionSelectorComponent,\n CideSelectComponent\n ],\n templateUrl: './bonafide-request-form.component.html',\n styles: [`\n :host {\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\n }\n `]\n})\nexport class CideAcademicsBonafideRequestFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private bonafideService = inject(CideAcademicsBonafideService);\n private fb = inject(FormBuilder);\n private router = inject(Router);\n private notificationService = inject(NotificationService);\n private appStateHelper = inject(AppStateHelperService);\n private http = inject(HttpClient);\n\n form!: FormGroup;\n loading = signal(false);\n initializing = signal(true);\n isStudentUser = signal<boolean>(false);\n \n // Store student and entity IDs\n private studentId: string | null = null;\n private entityId: string | null = null;\n \n // For non-student users: class/section/student selection\n studentsList = signal<any[]>([]);\n studentsLoading = signal(false);\n selectedStudent = signal<any | null>(null);\n \n // Computed: show class/section selector for non-student users\n showClassSectionSelector = computed(() => !this.isStudentUser());\n showStudentSelector = computed(() => {\n if (this.isStudentUser()) return false;\n const formValue = this.form.value;\n return !!(formValue.class_program_id || formValue.section_id);\n });\n\n ngOnInit(): void {\n // Initialize form with conditional fields\n this.form = this.fb.group({\n // Common fields\n abnr_purpose: ['', Validators.required],\n abnr_remarks: [''],\n // For non-student users: class/section/student selection\n class_program_id: [''],\n branch_id: [''],\n term_id: [''],\n section_id: [''],\n selected_student_id: ['']\n });\n \n // Watch for class/section changes to load students\n this.setupClassSectionWatchers();\n \n // Load student and entity data from admission\n this.loadStudentAndEntityData();\n }\n \n /**\n * Setup watchers for class/section changes to load students\n */\n private setupClassSectionWatchers(): void {\n // Watch for section_id changes to load students\n this.form.get('section_id')?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.loadStudentsByClassSection();\n });\n \n // Watch for class_program_id changes (if section not available)\n this.form.get('class_program_id')?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Reset section and student when class changes\n this.form.patchValue({ section_id: '', selected_student_id: '' }, { emitEvent: false });\n this.loadStudentsByClassSection();\n });\n }\n \n /**\n * Update validators based on user type\n */\n private updateValidators(): void {\n const isStudent = this.isStudentUser();\n const studentControl = this.form.get('selected_student_id');\n \n if (!isStudent && studentControl) {\n // Non-student: make student selection required\n studentControl.setValidators([Validators.required]);\n } else if (isStudent && studentControl) {\n // Student: remove required validator\n studentControl.clearValidators();\n }\n studentControl?.updateValueAndValidity({ emitEvent: false });\n }\n \n /**\n * Load students based on selected class/section\n */\n private loadStudentsByClassSection(): void {\n const classProgramId = this.form.get('class_program_id')?.value;\n const sectionId = this.form.get('section_id')?.value;\n \n if (!classProgramId) {\n this.studentsList.set([]);\n this.form.patchValue({ selected_student_id: '' }, { emitEvent: false });\n return;\n }\n \n this.studentsLoading.set(true);\n \n // Build query params for admission list\n const queryParams: any = {\n admap_class_program_id_acacpm: classProgramId,\n admap_isactive: true\n };\n \n if (sectionId) {\n queryParams.admap_section_id_acapts = sectionId;\n }\n \n // Use generateStringFromObject to create encoded query string\n const queryString = generateStringFromObject(queryParams);\n \n const admissionUrl = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n 'admission',\n queryString\n ]);\n \n this.http.get<any>(admissionUrl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response?.success && response?.data) {\n const admissions = Array.isArray(response.data) ? response.data : [response.data];\n // Map to student options\n const students = admissions\n .filter((adm: any) => adm.admap_student_id)\n .map((adm: any) => ({\n value: adm.admap_student_id,\n label: `${adm.admap_first_name || ''} ${adm.admap_middle_name || ''} ${adm.admap_last_name || ''}`.trim() || adm.admap_student_id,\n admission: adm\n }));\n this.studentsList.set(students);\n } else {\n this.studentsList.set([]);\n }\n this.studentsLoading.set(false);\n },\n error: (err) => {\n console.error('Error loading students:', err);\n this.notificationService.error('Failed to load students. Please try again.');\n this.studentsList.set([]);\n this.studentsLoading.set(false);\n }\n });\n }\n\n /**\n * Load student ID and entity ID from admission data\n * Determines if user is a student or non-student\n */\n private loadStudentAndEntityData(): void {\n this.initializing.set(true);\n \n // Get current user\n const currentUser = this.appStateHelper.getCurrentUser();\n if (!currentUser?._id) {\n this.notificationService.error('User not authenticated');\n this.initializing.set(false);\n return;\n }\n\n // Get student ID from admission form using user_id\n const userId = currentUser._id;\n const queryParams = new URLSearchParams({ admap_user_id_auth: userId }).toString();\n \n // Use the same pattern as fee components - admission is under core module\n const admissionUrl = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n 'admission',\n queryParams\n ]);\n \n this.http.get<any>(admissionUrl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (admissionResponse) => {\n if (admissionResponse?.success && admissionResponse?.data) {\n // Get admission data (might be array or single object)\n const admissionData = Array.isArray(admissionResponse.data) \n ? admissionResponse.data[0] \n : admissionResponse.data;\n \n // Check if user is a student (has student_id in admission)\n const hasStudentId = !!(admissionData?.admap_student_id);\n this.isStudentUser.set(hasStudentId);\n \n // Update validators based on user type\n this.updateValidators();\n \n if (hasStudentId) {\n // Student user: auto-populate student and entity IDs\n this.studentId = admissionData.admap_student_id;\n this.entityId = admissionData?.admap_entity_id_syen || null;\n \n // If entity ID not found in admission, try to get from active entity\n if (!this.entityId) {\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n }\n \n if (!this.entityId) {\n this.notificationService.warning('Entity ID not found. Please contact administrator.');\n }\n } else {\n // Non-student user: need to select class/section/student\n // Get entity ID from active entity\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n } else {\n this.notificationService.warning('Entity ID not found. Please contact administrator.');\n }\n }\n } else {\n // No admission data found - user is likely non-student\n this.isStudentUser.set(false);\n this.updateValidators();\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n }\n this.initializing.set(false);\n },\n error: (err) => {\n console.error('Error loading admission data:', err);\n // On error, assume non-student and get entity from active entity\n this.isStudentUser.set(false);\n this.updateValidators();\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n this.initializing.set(false);\n }\n });\n }\n\n onSubmit(): void {\n if (this.form.valid) {\n // Determine student ID based on user type\n let finalStudentId: string | null = null;\n \n if (this.isStudentUser()) {\n // Student user: use auto-fetched student ID\n finalStudentId = this.studentId;\n } else {\n // Non-student user: use selected student ID\n finalStudentId = this.form.get('selected_student_id')?.value || null;\n }\n \n // Validate required data\n if (!finalStudentId) {\n if (this.isStudentUser()) {\n this.notificationService.error('Student ID is required. Please ensure your admission is confirmed.');\n } else {\n this.notificationService.error('Please select a student.');\n }\n return;\n }\n \n if (!this.entityId) {\n this.notificationService.error('Entity ID is required. Please contact administrator.');\n return;\n }\n \n this.loading.set(true);\n \n // Build payload with all required fields\n const payload = {\n abnr_student_id_auth: finalStudentId,\n abnr_entity_id_syen: this.entityId,\n abnr_purpose: this.form.value.abnr_purpose,\n abnr_remarks: this.form.value.abnr_remarks || ''\n };\n \n this.bonafideService.createRequest(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success('Bonafide request created successfully');\n this.router.navigate(['/control-panel/bonafide']);\n } else {\n this.notificationService.error(response.message || 'Failed to create request');\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('Error creating bonafide request:', err);\n this.notificationService.error(err.error?.message || 'Failed to create request');\n this.loading.set(false);\n }\n });\n }\n }\n\n cancel(): void {\n this.router.navigate(['/control-panel/bonafide']);\n }\n}\n\n","<!-- Bonafide Request Form with Shared Wrapper -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'academics_bonafide_form' }\">\n <div class=\"tw-w-full tw-h-full\">\n @if (initializing()) {\n <!-- Loading State -->\n <div class=\"tw-w-full tw-h-full tw-flex tw-items-center tw-justify-center\">\n <div class=\"tw-text-center\">\n <div class=\"tw-text-gray-600 tw-mb-2\">Loading student information...</div>\n <div class=\"tw-text-sm tw-text-gray-500\">Please wait</div>\n </div>\n </div>\n } @else {\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\"\n [class.tw-opacity-60]=\"loading()\">\n \n <!-- Form Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n <!-- Form Fields -->\n <div class=\"tw-space-y-6\">\n <!-- Class/Section Selector for Non-Student Users -->\n @if (showClassSectionSelector()) {\n <div class=\"tw-max-w-4xl\">\n <div class=\"tw-mb-4\">\n <h3 class=\"tw-text-sm tw-font-semibold tw-text-gray-700 tw-mb-2\">Select Class & Section</h3>\n <p class=\"tw-text-xs tw-text-gray-500\">Select the class and section to find the student</p>\n </div>\n <cide-lyt-program-section-selector\n [formGroup]=\"form\"\n classProgramControlName=\"class_program_id\"\n branchControlName=\"branch_id\"\n termControlName=\"term_id\"\n sectionControlName=\"section_id\"\n [showLabels]=\"true\"\n [disabled]=\"loading()\">\n </cide-lyt-program-section-selector>\n </div>\n }\n \n <!-- Student Selection for Non-Student Users -->\n @if (showStudentSelector()) {\n <div class=\"tw-max-w-2xl\">\n <cide-ele-select\n label=\"Select Student\"\n formControlName=\"selected_student_id\"\n [options]=\"studentsList()\"\n [loading]=\"studentsLoading()\"\n placeholder=\"Select a student\"\n valueKey=\"value\"\n labelKey=\"label\"\n size=\"md\"\n [required]=\"true\"\n [disabled]=\"loading() || studentsLoading()\">\n </cide-ele-select>\n </div>\n }\n \n <!-- Purpose Field -->\n <div class=\"tw-max-w-2xl\">\n <cide-ele-input\n label=\"Purpose\"\n formControlName=\"abnr_purpose\"\n [required]=\"true\"\n placeholder=\"Enter purpose for bonafide certificate\"\n size=\"md\"\n [disabled]=\"loading()\">\n </cide-ele-input>\n </div>\n \n <!-- Remarks Field -->\n <div class=\"tw-max-w-2xl\">\n <cide-ele-textarea\n label=\"Remarks\"\n formControlName=\"abnr_remarks\"\n placeholder=\"Enter any additional remarks\"\n rows=\"4\"\n size=\"md\"\n [disabled]=\"loading()\">\n </cide-ele-textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\n <div class=\"tw-flex tw-flex-col tw-gap-3\">\n <!-- Error Message -->\n <div class=\"tw-w-full\">\n <cide-form-field-error [formGroup]=\"form\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button \n cideEleButton \n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancel()\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button \n cideEleButton \n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"!form.valid || loading()\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n Submit Request\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n }\n </div>\n</cide-lyt-shared-wrapper>\n\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-academics-bonafide-request-form.component-DIBzUNbF.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/bonafide/components/bonafide-request-form/bonafide-request-form.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/bonafide/components/bonafide-request-form/bonafide-request-form.component.html"],"sourcesContent":["import { Component, signal, DestroyRef, inject, OnInit, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideFormFieldErrorComponent, CideSelectComponent } from 'cloud-ide-element';\nimport { NotificationService } from 'cloud-ide-element';\nimport { CideLytSharedWrapperComponent, AppStateHelperService } from 'cloud-ide-layout';\nimport { CideAcademicsBonafideService } from '../../services/bonafide.service';\nimport { cidePath, coreRoutesUrl, hostManagerRoutesUrl, generateStringFromObject } from 'cloud-ide-lms-model';\nimport { CideLytProgramSectionSelectorComponent } from '../../../../../public-api';\n\n@Component({\n selector: 'cide-academics-bonafide-request-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CideInputComponent,\n CideTextareaComponent,\n CideEleButtonComponent,\n CideFormFieldErrorComponent,\n CideLytSharedWrapperComponent,\n CideLytProgramSectionSelectorComponent,\n CideSelectComponent\n ],\n templateUrl: './bonafide-request-form.component.html',\n styles: [`\n :host {\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\n }\n `]\n})\nexport class CideAcademicsBonafideRequestFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private bonafideService = inject(CideAcademicsBonafideService);\n private fb = inject(FormBuilder);\n private router = inject(Router);\n private notificationService = inject(NotificationService);\n private appStateHelper = inject(AppStateHelperService);\n private http = inject(HttpClient);\n\n form!: FormGroup;\n loading = signal(false);\n initializing = signal(true);\n isStudentUser = signal<boolean>(false);\n \n // Store student and entity IDs\n private studentId: string | null = null;\n private entityId: string | null = null;\n \n // For non-student users: class/section/student selection\n studentsList = signal<any[]>([]);\n studentsLoading = signal(false);\n selectedStudent = signal<any | null>(null);\n \n // Computed: show class/section selector for non-student users\n showClassSectionSelector = computed(() => !this.isStudentUser());\n showStudentSelector = computed(() => {\n if (this.isStudentUser()) return false;\n const formValue = this.form.value;\n return !!(formValue.class_program_id || formValue.section_id);\n });\n\n ngOnInit(): void {\n // Initialize form with conditional fields\n this.form = this.fb.group({\n // Common fields\n abnr_purpose: ['', Validators.required],\n abnr_remarks: [''],\n // For non-student users: class/section/student selection\n class_program_id: [''],\n branch_id: [''],\n term_id: [''],\n section_id: [''],\n selected_student_id: ['']\n });\n \n // Watch for class/section changes to load students\n this.setupClassSectionWatchers();\n \n // Load student and entity data from admission\n this.loadStudentAndEntityData();\n }\n \n /**\n * Setup watchers for class/section changes to load students\n */\n private setupClassSectionWatchers(): void {\n // Watch for section_id changes to load students\n this.form.get('section_id')?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.loadStudentsByClassSection();\n });\n \n // Watch for class_program_id changes (if section not available)\n this.form.get('class_program_id')?.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Reset section and student when class changes\n this.form.patchValue({ section_id: '', selected_student_id: '' }, { emitEvent: false });\n this.loadStudentsByClassSection();\n });\n }\n \n /**\n * Update validators based on user type\n */\n private updateValidators(): void {\n const isStudent = this.isStudentUser();\n const studentControl = this.form.get('selected_student_id');\n \n if (!isStudent && studentControl) {\n // Non-student: make student selection required\n studentControl.setValidators([Validators.required]);\n } else if (isStudent && studentControl) {\n // Student: remove required validator\n studentControl.clearValidators();\n }\n studentControl?.updateValueAndValidity({ emitEvent: false });\n }\n \n /**\n * Load students based on selected class/section\n */\n private loadStudentsByClassSection(): void {\n const classProgramId = this.form.get('class_program_id')?.value;\n const sectionId = this.form.get('section_id')?.value;\n \n if (!classProgramId) {\n this.studentsList.set([]);\n this.form.patchValue({ selected_student_id: '' }, { emitEvent: false });\n return;\n }\n \n this.studentsLoading.set(true);\n \n // Build query params for admission list\n const queryParams: any = {\n admap_class_program_id_acacpm: classProgramId,\n admap_isactive: true\n };\n \n if (sectionId) {\n queryParams.admap_section_id_acapts = sectionId;\n }\n \n // Use generateStringFromObject to create encoded query string\n const queryString = generateStringFromObject(queryParams);\n \n const admissionUrl = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n 'admission',\n queryString\n ]);\n \n this.http.get<any>(admissionUrl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response?.success && response?.data) {\n const admissions = Array.isArray(response.data) ? response.data : [response.data];\n // Map to student options\n const students = admissions\n .filter((adm: any) => adm.admap_student_id)\n .map((adm: any) => ({\n value: adm.admap_student_id,\n label: `${adm.admap_first_name || ''} ${adm.admap_middle_name || ''} ${adm.admap_last_name || ''}`.trim() || adm.admap_student_id,\n admission: adm\n }));\n this.studentsList.set(students);\n } else {\n this.studentsList.set([]);\n }\n this.studentsLoading.set(false);\n },\n error: (err) => {\n console.error('Error loading students:', err);\n this.notificationService.error('Failed to load students. Please try again.');\n this.studentsList.set([]);\n this.studentsLoading.set(false);\n }\n });\n }\n\n /**\n * Load student ID and entity ID from admission data\n * Determines if user is a student or non-student\n */\n private loadStudentAndEntityData(): void {\n this.initializing.set(true);\n \n // Get current user\n const currentUser = this.appStateHelper.getCurrentUser();\n if (!currentUser?._id) {\n this.notificationService.error('User not authenticated');\n this.initializing.set(false);\n return;\n }\n\n // Get student ID from admission form using user_id\n const userId = currentUser._id;\n const queryParams = new URLSearchParams({ admap_user_id_auth: userId }).toString();\n \n // Use the same pattern as fee components - admission is under core module\n const admissionUrl = cidePath.join([\n hostManagerRoutesUrl.cideSuiteHost,\n coreRoutesUrl.module,\n 'admission',\n queryParams\n ]);\n \n this.http.get<any>(admissionUrl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (admissionResponse) => {\n if (admissionResponse?.success && admissionResponse?.data) {\n // Get admission data (might be array or single object)\n const admissionData = Array.isArray(admissionResponse.data) \n ? admissionResponse.data[0] \n : admissionResponse.data;\n \n // Check if user is a student (has student_id in admission)\n const hasStudentId = !!(admissionData?.admap_student_id);\n this.isStudentUser.set(hasStudentId);\n \n // Update validators based on user type\n this.updateValidators();\n \n if (hasStudentId) {\n // Student user: auto-populate student and entity IDs\n this.studentId = admissionData.admap_student_id;\n this.entityId = admissionData?.admap_entity_id_syen || null;\n \n // If entity ID not found in admission, try to get from active entity\n if (!this.entityId) {\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n }\n \n if (!this.entityId) {\n this.notificationService.warning('Entity ID not found. Please contact administrator.');\n }\n } else {\n // Non-student user: need to select class/section/student\n // Get entity ID from active entity\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n } else {\n this.notificationService.warning('Entity ID not found. Please contact administrator.');\n }\n }\n } else {\n // No admission data found - user is likely non-student\n this.isStudentUser.set(false);\n this.updateValidators();\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n }\n this.initializing.set(false);\n },\n error: (err) => {\n console.error('Error loading admission data:', err);\n // On error, assume non-student and get entity from active entity\n this.isStudentUser.set(false);\n this.updateValidators();\n const activeEntity = this.appStateHelper.activeEntity();\n if (activeEntity?._id) {\n this.entityId = activeEntity._id;\n }\n this.initializing.set(false);\n }\n });\n }\n\n onSubmit(): void {\n if (this.form.valid) {\n // Determine student ID based on user type\n let finalStudentId: string | null = null;\n \n if (this.isStudentUser()) {\n // Student user: use auto-fetched student ID\n finalStudentId = this.studentId;\n } else {\n // Non-student user: use selected student ID\n finalStudentId = this.form.get('selected_student_id')?.value || null;\n }\n \n // Validate required data\n if (!finalStudentId) {\n if (this.isStudentUser()) {\n this.notificationService.error('Student ID is required. Please ensure your admission is confirmed.');\n } else {\n this.notificationService.error('Please select a student.');\n }\n return;\n }\n \n if (!this.entityId) {\n this.notificationService.error('Entity ID is required. Please contact administrator.');\n return;\n }\n \n this.loading.set(true);\n \n // Build payload with all required fields\n const payload = {\n abnr_student_id_auth: finalStudentId,\n abnr_entity_id_syen: this.entityId,\n abnr_purpose: this.form.value.abnr_purpose,\n abnr_remarks: this.form.value.abnr_remarks || ''\n };\n \n this.bonafideService.createRequest(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success('Bonafide request created successfully');\n this.router.navigate(['/control-panel/bonafide']);\n } else {\n this.notificationService.error(response.message || 'Failed to create request');\n }\n this.loading.set(false);\n },\n error: (err) => {\n console.error('Error creating bonafide request:', err);\n this.notificationService.error(err.error?.message || 'Failed to create request');\n this.loading.set(false);\n }\n });\n }\n }\n\n cancel(): void {\n this.router.navigate(['/control-panel/bonafide']);\n }\n}\n\n","<!-- Bonafide Request Form with Shared Wrapper -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'academics_bonafide_form' }\">\n <div class=\"tw-w-full tw-h-full\">\n @if (initializing()) {\n <!-- Loading State -->\n <div class=\"tw-w-full tw-h-full tw-flex tw-items-center tw-justify-center\">\n <div class=\"tw-text-center\">\n <div class=\"tw-text-gray-600 tw-mb-2\">Loading student information...</div>\n <div class=\"tw-text-sm tw-text-gray-500\">Please wait</div>\n </div>\n </div>\n } @else {\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\"\n [class.tw-opacity-60]=\"loading()\">\n \n <!-- Form Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n <!-- Form Fields -->\n <div class=\"tw-space-y-6\">\n <!-- Class/Section Selector for Non-Student Users -->\n @if (showClassSectionSelector()) {\n <div class=\"tw-max-w-4xl\">\n <div class=\"tw-mb-4\">\n <h3 class=\"tw-text-sm tw-font-semibold tw-text-gray-700 tw-mb-2\">Select Class & Section</h3>\n <p class=\"tw-text-xs tw-text-gray-500\">Select the class and section to find the student</p>\n </div>\n <cide-lyt-program-section-selector\n [formGroup]=\"form\"\n classProgramControlName=\"class_program_id\"\n branchControlName=\"branch_id\"\n termControlName=\"term_id\"\n sectionControlName=\"section_id\"\n [showLabels]=\"true\"\n [disabled]=\"loading()\">\n </cide-lyt-program-section-selector>\n </div>\n }\n \n <!-- Student Selection for Non-Student Users -->\n @if (showStudentSelector()) {\n <div class=\"tw-max-w-2xl\">\n <cide-ele-select\n label=\"Select Student\"\n formControlName=\"selected_student_id\"\n [options]=\"studentsList()\"\n [loading]=\"studentsLoading()\"\n placeholder=\"Select a student\"\n valueKey=\"value\"\n labelKey=\"label\"\n size=\"md\"\n [required]=\"true\"\n [disabled]=\"loading() || studentsLoading()\">\n </cide-ele-select>\n </div>\n }\n \n <!-- Purpose Field -->\n <div class=\"tw-max-w-2xl\">\n <cide-ele-input\n label=\"Purpose\"\n formControlName=\"abnr_purpose\"\n [required]=\"true\"\n placeholder=\"Enter purpose for bonafide certificate\"\n size=\"md\"\n [disabled]=\"loading()\">\n </cide-ele-input>\n </div>\n \n <!-- Remarks Field -->\n <div class=\"tw-max-w-2xl\">\n <cide-ele-textarea\n label=\"Remarks\"\n formControlName=\"abnr_remarks\"\n placeholder=\"Enter any additional remarks\"\n rows=\"4\"\n size=\"md\"\n [disabled]=\"loading()\">\n </cide-ele-textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\n <div class=\"tw-flex tw-flex-col tw-gap-3\">\n <!-- Error Message -->\n <div class=\"tw-w-full\">\n <cide-form-field-error [formGroup]=\"form\"></cide-form-field-error>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button \n cideEleButton \n type=\"button\" \n variant=\"secondary\" \n (click)=\"cancel()\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n \n <button \n cideEleButton \n type=\"submit\" \n variant=\"primary\" \n [disabled]=\"!form.valid || loading()\"\n [loading]=\"loading()\"\n leftIcon=\"save\">\n Submit Request\n </button>\n </div>\n </div>\n </div>\n </div>\n </form>\n }\n </div>\n</cide-lyt-shared-wrapper>\n\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
8
8
|
import { NotificationService, ConfirmationService, CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideIconComponent, CideSelectComponent, CideFormFieldErrorComponent } from 'cloud-ide-element';
|
|
9
9
|
import { AppStateHelperService, ComponentContextService, RightsService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
|
|
10
10
|
import { ENTITY_SERVICE_TOKEN } from 'cloud-ide-shared';
|
|
11
|
-
import {
|
|
11
|
+
import { c as CideLytClassProgramBranchService, C as CideLytProgramClassService, d as CideLytClassProgramTermService } from './cloud-ide-academics-cloud-ide-academics-BRQerudY.mjs';
|
|
12
12
|
import { generateObjectFromString, MClassProgramTerm } from 'cloud-ide-lms-model';
|
|
13
13
|
|
|
14
14
|
class ClassProgramTermCreateComponent {
|
|
@@ -1217,4 +1217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1217
1217
|
}], ctorParameters: () => [] });
|
|
1218
1218
|
|
|
1219
1219
|
export { ClassProgramTermCreateComponent };
|
|
1220
|
-
//# sourceMappingURL=cloud-ide-academics-class-program-term-create.component-
|
|
1220
|
+
//# sourceMappingURL=cloud-ide-academics-class-program-term-create.component-A5Ed_CAc.mjs.map
|