{"version":3,"file":"main.28e7eb5c48b14c5d.js","mappings":"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AAU,EACVC,OAAS,EACTC,KAAQ,yCACRC,IAAO,CACL,kBACA,uBACA,4BACA,oBACA,oBACA,8BACA,8BACA,iCACA,sBACA,uBACA,mBACA,mBACA,WAEFV,UAAa,CACX,KACA,OAGJ,CACEK,MAAS,iCACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,kDACRC,IAAO,CACL,yBACA,iBACA,iBACA,sBACA,qBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,+BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,2BACRC,IAAO,CACL,iBACA,yBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,kCACRC,IAAO,CACL,iBACA,iBACA,wBACA,mBACA,oBACA,kBACA,eACA,iBACA,qBACA,aAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,wBACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,yCACRC,IAAO,CACL,kBACA,iBACA,6BACA,4BACA,0BACA,kBACA,8BACA,qBACA,mBACA,iBACA,mBACA,kBACA,sBACA,yBACA,sBACA,mBAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,wBACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,kDACRC,IAAO,CACL,kBACA,iBACA,6BACA,4BACA,0BACA,kBACA,8BACA,qBACA,mBACA,iBACA,mBACA,kBACA,sBACA,yBACA,sBACA,mBAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,6BACRC,IAAO,CACL,0BACA,wBACA,wBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,0BACTC,KAAQ,MACRC,QAAU,IACVC,OAAS,EACTC,KAAQ,sBACRC,IAAO,CACL,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,yBACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,oBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,yBACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,qCACRC,IAAO,CACL,oBACA,oBACA,kBACA,kBACA,gBACA,oBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,kCACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,qBACRC,IAAO,CACL,uBACA,kBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,mDACRC,IAAO,CACL,mBACA,kBACA,gBACA,mBACA,uBACA,oBACA,kBACA,mBACA,qBACA,kBACA,qBACA,iBACA,qBACA,iBACA,wBACA,iBACA,kBACA,qBACA,qBACA,wBACA,sBACA,sBACA,wBACA,wBACA,mBACA,mBACA,oBACA,qBACA,kBACA,aAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,mBACA,sBAGJ,CACEL,MAAS,6BACTC,KAAQ,MACRC,QAAU,IACVC,OAAS,EACTC,KAAQ,2BACRC,IAAO,CACL,qBAGJ,CACEL,MAAS,iCACTC,KAAQ,QACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,sBAGJ,CACEL,MAAS,0BACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,2BACRC,IAAO,CACL,6BACA,iCACA,0BACA,6BACA,6BACA,4BACA,4BACA,uBACA,oBACA,kBACA,gBACA,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,iCACRC,IAAO,CACL,oBACA,gBACA,kBACA,oBACA,iBACA,qBACA,iBACA,mBACA,qBACA,mBACA,aAEFV,UAAa,CACX,KACA,KACA,OAGJ,CACEK,MAAS,0BACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,wBACRC,IAAO,CACL,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,2BACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,yBACRC,IAAO,CACL,sBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,sBACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,iBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,SACTC,KAAQ,IACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,4CACRC,IAAO,CACL,kBACA,yBACA,aAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,6BACTC,KAAQ,MACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,iCACRC,IAAO,GACPV,UAAa,IAEf,CACEK,MAAS,uBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,qBACRC,IAAO,CACL,uBACA,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,2BACTC,KAAQ,OACRC,QAAU,EACVC,OAAS,EACTC,KAAQ,6BACRC,IAAO,CACL,sBACA,aAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,wBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,mBACRC,IAAO,CACL,oBACA,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,MACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,mCACRC,IAAO,CACL,uBACA,WAEFV,UAAa,IAEf,CACEK,MAAS,oBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,0BACRC,IAAO,CACL,UACA,qBACA,kBACA,gBACA,iBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,oBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,kBACA,kBACA,mBACA,gBACA,iBAEFV,UAAa,CACX,KACA,OAGJ,CACEK,MAAS,0BACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,4BACRC,IAAO,CACL,iBACA,eACA,gBACA,gBACA,gBACA,iBACA,eACA,kBACA,cACA,kBACA,oBACA,qBACA,kBACA,qBACA,sBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,0BACTC,KAAQ,OACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,+DACRC,IAAO,CACL,sBACA,mBACA,iBACA,gBACA,kBACA,mBACA,oBACA,eACA,gBACA,cACA,cACA,oBACA,mBACA,eACA,iBACA,gBACA,iBAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,+BACTC,KAAQ,OACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,gEACRC,IAAO,CACL,kBACA,oBACA,kBACA,mBACA,mBACA,gBACA,iBAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,wBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,kDACRC,IAAO,CACL,eACA,kBACA,oBACA,gBACA,gBAEFV,UAAa,CACX,KACA,KACA,KACA,OAGJ,CACEK,MAAS,iCACTC,KAAQ,OACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,+CACRC,IAAO,CACL,kBACA,gBACA,gBACA,iBAEFV,UAAa,CACX,KACA,KACA,KACA,OAGJ,CACEK,MAAS,kCACTC,KAAQ,QACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,kCACRC,IAAO,CACL,iBACA,gBACA,qBACA,gBACA,kBACA,eACA,oBACA,gBACA,gBACA,kBACA,gBACA,oBACA,eACA,aAEFV,UAAa,CACX,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAGJ,CACEK,MAAS,wBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,uBACRC,IAAO,CACL,mBAEFV,UAAa,CACX,OAGJ,CACEK,MAAS,oBACTC,KAAQ,MACRC,OAAU,EACVC,OAAS,EACTC,KAAQ,gCACRC,IAAO,CACL,eACA,gBACA,mBACA,mBAEFV,UAAa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BACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,eACA,kBACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,YACA,eACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,mBACA,sBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,iBACA,oBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,cACA,kBACA,qBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,WACA,kBACA,qBACA,cACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,oBAIA,SAAAyoG,EAAAx4D,GACA,IAAAhqC,EAAAyiG,EAAAz4D,GACA,OAAA2O,EAAA34C,EACA,CACA,SAAAyiG,EAAAz4D,GACA,IAAA2O,EAAA+pD,EAAA3oG,EAAAiwC,GAAA,CACA,IAAA4O,EAAA,IAAAh7B,MAAA,uBAAAosB,EAAA,KACA,MAAA4O,EAAA95C,KAAA,mBACA85C,CACA,CACA,OAAA7+C,EAAAiwC,EACA,CACAw4D,EAAA9+E,KAAA,WACA,OAAAD,OAAAC,KAAA3pB,EACA,EACAyoG,EAAA7kF,QAAA8kF,EACAE,GAAAC,QAAAJ,EACAA,EAAAxiG,GAAA","names":["AuthGuard","constructor","authService","router","this","canActivate","route","state","isAuth","getIsAuth","saveLeadDynoAffiliateIdFromRoute","navigate","queryParams","returnUrl","url","static","t","i0","i1","i2","_angular_core__WEBPACK_IMPORTED_MODULE_1__","jDH","factory","ɵfac","ProfileGuard","user","getLoggedInUser","userRole","getUserRole","toLowerCase","status","checkTeacherAccessApproval","getTeacherStatus","pipe","map","data","TeacherStatus","APPROVED","setDisabledProfileRoutes","navigateByUrl","replaceUrl","_angular_core__WEBPACK_IMPORTED_MODULE_3__","TeacherApplicationDeactivateGuard","canDeactivate","component","_angular_core__WEBPACK_IMPORTED_MODULE_0__","TeacherGuard","accept","console","log","teacherStatus","setTeacherStatus","statusText","includes","UserStatus","ACTIVE","WITHDRAWN","INCOMPLETE","CONSIDERATION","_angular_core__WEBPACK_IMPORTED_MODULE_4__","ClassroomType","PAID","TRIAL","Level","A1","A2","B1","B2","C1","C2","NT21","NT22","N5","N4","N3","N2","N1","HSK1","HSK2","HSK3","HSK4","HSK5","HSK6","TOPIK1","TOPIK2","TOPIK3","TOPIK4","TOPIK5","TOPIK6","BS","TBD","ALL","Status","EXPIRED","INACTIVE","ON_GOING","ON_HOLD","PENDING","COMPLETED","COMPLETED_TRIAL","PENDING_TRIAL","ARRANGED_TRIAL","DISMISSED_TRIAL","ONGOING_TRIAL","ARRANGED_NO_SHOW","DISMISSED","RateValue","VERY_BAD","BAD","NEUTRAL","GOOD","VERY_GOOD","languages","code","name","nativeName","countries","emoji","unicode","image","timezones","value","abbr","offset","isdst","text","utc","phoneCodes","country","iso","dummyLessons","id","classroomId","startingDate","duration","isRecccuring","answered","requestedByName","bbbLink","title","level","classroom","totalHours","hoursLeft","activeLevel","users","fname","lname","email","phone","timezone","classroomStudents","type","language","teacher","activePackage","lessons_level","hoursCompleted","lessonsStarted","lessonsEnded","currentPackageLevel","expiresOn","stratedAt","purchasedAt","extensions","firstName","lastName","role","Date","undefined","dummyClassrooms","price","hours","lessons","description","packages","dummyLesson","Dimentions","w576","w768","w992","w1024","w1366","w1500","h850","AppLayoutType","Default","Sidebar","Center","Blank","Admin","Category","VOCABULARY","GRAMMAR","WRITING","READING","LISTENING","SPEAKING","REVISION","TEST","HomeworkStatus","COMPLETED_RATED","COMPLETED_UNRATED","PARTIALLY_COMPLETED_PARTIALLY_RATED","COMPLETED_PARTIALLY_RATED","COMPLETED_PARTIALLY_UNRATED","PARTIALLY_COMPLETED_RATED","NO_COMPLETED_RATED","LessonStatus","ARRANGED","CANCELED_TRIAL","REQUESTED_TRIAL","CANCELED","NO_SHOW","REARRANGE","REQUESTED","PackageType","REGULAR","FLEX","PREMIUM","BUSINESS","GIFT","PackageDurationHours","PackageState","ONGOING","PAUSED","CANCELLED","PURCHASED","REFUNDED","TRANSFERED","PackagesModel","getDefaultPackages","costPlus","expiresIn","perHour","expirationMonths","expiresPlus","cancelation","pause","StudentTrialStatus","NEW","FORWARDED","ASSIGNED","LOST","GALAXY","IGNORED","HAS_PAYMENT","NONE","NO_LONGER_CONSIDERED","REJECTED","RECEIVED","UserRole","TEACHER","STUDENT","UserAvailabilityType","OFF","AVAILABLE","FilterPipe","transform","args","term","toLocaleLowerCase","filter","item","contains","isContain","key","hasOwnProperty","propertyValue","indexOf","EJ8","pure","BACKEND_URL","environment","apiUrl","BACKEND_LMS_URL","AuthService","http","toastService","userService","isAuthenticated","isAuthenticatedSignal","signal","firebaseLoggedIn","firebaseLogoutEvent","authStatusListener","Subject","UserRoles","_userId","showRegistrationSuccessfullMessage$","BehaviorSubject","showRegistrationSuccessfullMessage","asObservable","disabledProfileRoutes","isStudent","isTeacher","teachingLanguage","getUser","getToken","token","getUserId","userId","setUserId","getDecodedAccessToken","authInformation","getAuthData","JSON","parse","setAuthStatusListener","next","getAuthStatusListener","createUser","password","endpoint","post","pwd","confirmUser","subscribe","res","setShowToastmessage","severity","summary","detail","forgot","_ref","_asyncToGenerator","response","_x","apply","arguments","confirmForgot","pwdRetype","login","username","jwt_decode","setToken","tokenValue","setIsAuthenticated","set","setAuthTimer","tokenTimer","setTimeout","logout","setShowRegistrationSuccessfullMessage","saveAuthData","expirationDate","localStorage","setItem","toISOString","stringify","autoAuthUser","_this","now","getTime","getItem","clearTimeout","clearAuthData","removeItem","isUserInfoFullfileld","skype","timeZone","get","getTeacherStatusPromise","toPromise","getUserPhoto","photo","leadDynoAffiliateId","afmc","i3","i4","_angular_core__WEBPACK_IMPORTED_MODULE_5__","providedIn","CalendarService","generalService","lessonService","classroomService","chooseClassroomListener$","chooseClassroomListener","selectedDateListener$","selectedDateListener","durationListener$","durationListener","scheduleListener$","listen","isUpdating","scheduleListener","updateListener$","updateListener","toggleOverlayListener$","toggleOverlayListener","teacherChangeListener$","teacherChangeListener","calendarAgendaMonthListener$","calendarAgendaMonthListener","calendarAgendaHeightListener$","calendarAgendaHeightListener","scrollTo","eventSettings","classoomEventSettings","calendarLessons","setChooseClassroom","setSelectedDateListener","date","setDurationListener","setScheduleListener","setUpdateListener","val","setToggleOverlayListener","setTeacherChangeListener","setCalendarAgendaMonthListener","setCalendarAgendaHeightListener","convertLessonsToCallendarObjects","currentEventSettings","lesson","createLessonEvent","push","Id","Language","substring","toUpperCase","StartTime","EndTime","moment","add","toDate","CategoryColor","Duration","RecurrenceRule","Type","Lesson","Padding","convertAvailabilityToCalendarObjects","times","currentWeek","getWeek","mon","tue","wed","thu","fri","sat","sun","createAvailabilityEventsByDay","day","dayString","hourFrom","minutesFrom","hourTo","minutesTo","splitTimeFrom","splitTimeTo","from","to","nextFrom","nextTo","array","escapeFrom","i","length","split","parseInt","setHours","crateAvailabilityEvent","getDatesDiff","minutes","getEventGradientColor","curr","week","first","getUTCDate","getUTCDay","setUTCDate","slice","checkIfAvailabilityExists","dayAvailability","block","aTo","aFrom","getHours","toString","getMinutes","available","splitAvailabilityFrom","splitAvailabilityTo","addDaysOff","dayOff","cancelDaysOff","dayOffId","getPrettyLessonDate","getDayFromNumber","getDay","getMonthFromNumber","getMonth","getDate","createSpecificTeacherAvailability","availability","blockSpecificTeacherAvailability","retrieveCalendarAvailability","headers","getBusinessHours","calendarAvailability","businessHours","dateParts","interval","startTimeParts","endTimeParts","startHour","startMinute","endHour","endMinute","daysOfWeek","startTime","endTime","setDate","createDayOffEvents","daysOff","period","reason","start","display","extendedProps","rendering","selectable","editable","allDay","i5","_angular_core__WEBPACK_IMPORTED_MODULE_8__","ChatService","db","afAuth","inject","UserService","GeneralService","isChatEnabled","showUploadFile","unreadCount","currentRoom","showBubbleChat","dbPath","usersRef","collection","chatsRef","deleteChatFilesFromLibraryFolder","fileUrl","signInAnonymously","Observable","observer","then","userCredential","complete","catch","error","signInAnonym","auth","getAuth","message","getLastMessage","doc","snapshotChanges","action","payload","getClassroomChats","actions","a","getChatMessages","ref","orderBy","createChatRoom","participants","chat","createdAt","format","lastMessage","lastMessageAt","serverTimestamp","lastMessageFrom","lastMessageFromName","lastMessageFromImage","lastMessageIsFile","lastMessageDeleted","addMessage","chatRef","messageRef","snapshot","updateData","content","senderId","getPersonFullName","avatarUrl","isFileFromLibrary","isUploadFile","exists","updateLastMessage","usersInChat","updatedUnreadCounts","forEach","chatUser","aspUserId","unreadCounts","editMessage","messageId","updatedMessage","lastMessageId","limit","update","Promise","resolve","Error","isLastMessageDeleted","getLastUnreadMessagesCountForUser","valueChanges","markLastMessagesAsRead","markLastMessagesAsReadInLastMessage","s","deleteMessage","delete","updateChatRoom","deleteChatRoom","markMessagesAsRead","querySnapshot","batch","firestore","readStatusUpdate","readStatus","commit","markAllMessagesAsRead","messageData","updatedReadStatus","getUnreadMessagesCount","getUnreadMessagesCountForUser","switchMap","chatSnapshots","chatObservables","combineLatest","reduce","acc","count","createFirebaseUser","createUserWithEmailAndPassword","signInFirebaseUser","signInWithEmailAndPassword","checkFirebaseUserExistsByEmail","fetchSignInMethodsForEmail","signInMethods","signOutFromFirebase","signOut","isLoggedInInFireBase","authState","getFireBaseUser","setUserStatus","merge","getUserStatus","getOnlineUsers","where","_angular_core__WEBPACK_IMPORTED_MODULE_6__","BACKEND_URL_LMS","ClassroomService","packageService","ClassroomTypes","ClassroomStatuses","classroomsLevelFilter$","domLevelID","classroomsLevelFilter","classroomsStatusFilter$","domStatusID","classroomsStatusFilter","selectedAgendaDate$","selectedAgendaDate","classroomUpdateListener$","classroomUpdateListener","classroomPackagesUpdateListener$","classroomPackagesUpdateListener","sessionUserClassrooms","sessionUserTrialClassrooms","classroomToArrangeLesson","currentSelectedClassroom","setSelectedClassroom","setSelectedAgendaDate","setSelectedClassroomUpdate","setSelectedClassroomPackagesUpdate","setUserClassrooms","classrooms","getUserSessionClassrooms","getSelectedClassroom","getClassroom","getUserClassrooms","el","of","forkJoin","getClassroomExtras","x","usersDTOResult","getUsersTitle","tap","changeTrialLevel","trialId","newLevel","changeClassLevel","getClassroomStudents","getClassroomTeacher","Object","keys","off","getClassroomActivePackage","getClassroomLessons2","getClassroomPackages","l","changeClassroomsLevelFilter","changeClassroomsStatusFilter","getClassroomTitle","getClassroomType","getStatusClassroomStats","getClassroomSizesStats","getStudentsHoursStatsOnEachLevelStats","getPackageStats","getTrialClassrooms","getClassroomsTeacher","getClassroomLessons","gePendingLessons","acceptLessonRequest","lessonId","rejectLessonRequest","getLMSUserClassrooms","changeClassroomStatus","newStatus","getLevelIndex","isTrialClassroomWithCompletedFirstLesson","isTrialClassroomWithCompletedLesson","some","isTrialClassroomDismissed","isFirstLessonStatusInTrialClassroom","isTrialClassroom","isLastLessonWithinOneMonth","lastLesson","latest","getAvailableHoursWithTeacher","teacherId","filterAvailableClassrooms","availableClassrooms","classRoom","getAccumulatedHoursLeft","hasClassroomPackageHoursLeft","getStudentNamesWithHTML","showLastName","uniqueStudents","Array","Set","student","find","remainingStudents","studentNames","circleHtml","div","document","createElement","innerHTML","firstChild","outerHTML","getFormattedStudentNames","students","values","replaceImportedWithDash","charAt","join","getFullStudentNames","getClassroomUrl","getClassroomRateUrl","getClassroomTypeSmallIconPath","isClassroomOngoing","isStudentActive","hasPayment","getOngoingPackage","pkg","accumulatedHoursLeft","pack","getAccumulatedTotalHours","accumulatedTotalHours","filterLevelsByTeachingLanguage","levels","sortClassroomsByFirstName","sort","b","localeCompare","getLessonRowName","getShortFullName","getuniqueClassroomStudents","_angular_core__WEBPACK_IMPORTED_MODULE_16__","ConfirmDialogService","isVisible","rejectBtnIcon","acceptBtnIcon","showHeader","dismissableMask","dialogType","headerClass","dialogKey","acceptBtnClass","rejectBtnClass","rejectSelectionSource","rejectSelected$","acceptSelectionSource","acceptSelected$","setProperties","props","getProperties","confirmMessage","confirmIcon","acceptBtnLabel","rejectBtnLabel","headerText","extraData","resetProperties","onRejectSelection","event","onAcceptSelection","show","hide","API_URL","sanitizer","deviceKind$","w576down","is576","is768","is992","is1024","is1366","isBig","mobileMenuTitle$","deviceKind","mobileMenuTitle","mltLanguages","mltLevels","languagesToLearn","link","socialMedia","icon","languageLevels","levelName","showOnlyOnCode","visible","packageDurationHours","refs","getLanguagesToLearn","getSocialMedia","getCountries","getTimezones","getPhoneCodes","getLanguageLevels","setDevice","window","innerWidth","w576up","w768up","w992up","w1024up","w1366up","w1500up","slideInElement","getElementById","classList","remove","body","style","overflowY","slideOutElement","slideInNativeElement","slideOutNativeElement","date1","date2","diff","days","weeks","Math","abs","round","hideClassElements","classElements","call","showClassElements","collapseSection","element","sectionHeight","scrollHeight","elementTransition","transition","requestAnimationFrame","height","setAttribute","expandSection","toggleSection","sectionElement","sectionArrowImgSrc","inherit","note","getAttribute","setOpen","open","section","clearInterval","iv","timeout","overflow","setInterval","clientHeight","getRandomInt","max","floor","random","refreshComponent","skipLocationChange","gradientScale","newValue","oldValue","resize","minus","divide","offsetWidth","scrollY","width","slideElements","showModal","slideNativeElements","toIsoString","getFileName","str","n","lastIndexOf","n2","getTeacherFileName","teacherFile","getFileName2","getDomainFileNamePath","convertedString","replace","getFileNameAndExtension","filePath","pop","downloadLink","responseType","blob","saveAs","getColorByIndex","index","downLoadfiles","targetUrl","href","URL","createObjectURL","download","click","updateMobileMenuTitle","isNullishObject","obj","every","formatDate","d","separator","yyyy","getFullYear","mm","dd","formatDateToDMY","dateTimeString","toLocaleDateString","month","year","convertToDDMMYYYY","dateString","padStart","convertDateStringToIsoFormatWithZeroTime","convertToIsoDate","formattedDate","convertWithoutTimeAndZ","setUTCHours","convertToTime","toLocaleTimeString","hour12","hour","minute","convertCamelCase","camelCaseString","spacedString","originalChar","ifFieldValid","form","field","tryToSave","invalid","touched","getUserLocalTime","timeZoneUTC","isHour12","filteredTimezones","options","startDst","endDst","Intl","DateTimeFormat","scaleElementDown","transformOrigin","zoomValue","divElement","zoom","nativeElement","scaleElementReset","findCountryImage","phoneCode","countryCode","pc","findCountryImageByName","countryName","c","getHeaderName","person","capitalize","calculateAge","dob","dateOfBirth","ageMs","ageDate","getUTCFullYear","setDefaultUserAvatar","target","src","convertMinutesToHours","convertHoursToMinutesWithSuffix","fullSuffix","decimalPart","minuteSuffix","formatSelectedDateTimeForLesson","selectedDay","selectedTimeSlot","selectedDateTimeString","toDateString","getMinutesDifference","end","diffInMilliseconds","formatDateWithoutOffset","formatLessonStartingDate","navigateToLessonDetails","navigationExtras","getLessonDetailsLink","openDialogWithComponent","dialogService","dialogData","appendDialogActionsTo","resultHandler","close","centerX","centerY","rect","querySelector","getBoundingClientRect","left","top","dialogRef","header","containsOnlyNumbers","modal","contentStyle","padding","position","baseZIndex","maskStyleClass","onClose","destroyComponent","componentRef","destroy","navigateToBookingSystem","isObjectEmpty","isDayInThePast","dayNumber","currentDate","today","currentDateFormatted","getPercentScreenWidthInPixels","percentageVal","input","test","navigateToBuyPackage","openExternalLink","replaceNotGivenWith","replaceStr","getSafeSkypeUrl","bypassSecurityTrustUrl","sortByStartingDate","startDateA","startDateB","isBefore","isAfter","sortLessonsByDate","dateA","extractCountryPrefix","phoneNumber","parts","getDefaultPhoneCode","extractPhoneNumber","getLessonTime","lessonDate","timeFormat","lessonTime","lessonDateString","endsWith","sortLessonsByRecentFirst","dateB","isWithinTimeRange","timeRange","hoursDifference","isPast","goToGoogleMeetLink","googleMeetURL","sanitizedURL","encodeURI","goToBellbirdLink","bellBirdMeetingURL","goToJitsiMeetLink","convertTimezoneValueToText","isWithinMinutes","time","dateTime","currentTime","targetDateTime","minutesOfDay","Number","targetTime","isSame","timeDifference","getCurrentTime","timezoneData","tz","utcOffset","getCurrentTimeInTimezone","convertTimeToHourOfDayFormat","getTimeDifferenceInMinutes","userTimezone","momentDate1","momentDate2","isDifferenceWithin30Minutes","differenceInMinutes","lessonDurationInMinutes","maxAllowedDifference","isWithin30Mins","currentTimeInUserTimezone","lessonStartingDateInUserTimezone","showTimeDifference","startMoment","endMoment","asHours","asMinutes","getCountryCode","_angular_core__WEBPACK_IMPORTED_MODULE_9__","LayoutService","studentTrialService","menuItems","lottieIcon","disabled","disableOnStudentTrial","scale","extraMobileMenuItems","method","currentMenuIndex$","currentMenuIndex","sideMenuHeight$","sideMenuHeight","setCurrentMenuIndex","setSideMenuHeight","updateMenuItemDisabledStatus","menuItem","updateAllMenuItemsDisabledStatus","updateMenuItemClassroomToTrialsForStudent","numberOfPaidClassrooms","getMenuItems","menuItemsCopy","hasTrialRequested","getExtraMobileMenuItems","LessonService","addListener$","addListener","deleteListener$","deleteListener","lessonToRateListener$","lessonToRateListener","sessionAllUserLessons","lessonToReschedule","create","setAddListener","createRecurring","setLessonRatingListener","setDeleteListener","del","getLessonExtraDetails","getAllUserLessons","getLMSAllUserLessons","getUserLessonsFullHistory","getUserLessonsHistory","getTodaysLessons","getRequestedLessons","getAllReccuringLessons","getClassroomReccuringLessons","compareFn","getClassroomsWithReccuringLessons","reccurringLessons","getDaysOfRecurringLessonsOfClassroom","getLessonExtrasValues","extras","result","getLessonExtras","getLessonLevel","getLessonTitle","getLessonLanguage","getLessonExtraDetailsPiped","getLessonClassroom","getLessonHoursForEachLevel","getLessonHoursForEachStatus","getAllLessonsByLevelAndStatus","getStatusesNames","getNextLesson","createBBB","bbb","chargeLessonTime","answer","getTimeToNextLesson","eventDay","countdown","timeSpan","hasTrialStatus","statusString","getStatusNameFromStatusString","lowercaseStatusString","sortLessonByDate","sortOrder","getLessonRowTooltipName","_angular_core__WEBPACK_IMPORTED_MODULE_13__","LibraryService","setUpdateFolderListener","libraryFile","folder","updateFolderListener$","setLibraryUpdatedListener","libraryUpdatedListener$","moveFileToFolder","oldId","newId","setDeleteFolderListener","deleteFolderListener$","setGroupActions","showGroupActions","showGroupActions$","setshowGroupAction","showGroupActionsListener$","setshowUploadAction","showUploadActionsListener$","setCheckedNotes","checkedLibraries","currentSelectedClassroomId$","currentSelectedClassroomId","myLibrariesListener$","myLibrariesListener","libraryUpdatedListener","updateFolderListener","deleteFolderListener","showGroupActionsListener","showUploadActionsListener","libraryToAdd","folderToDelete","selectedlibraryFile","isPreviewingFromChat","checkedLibraryFiles","rootFolder","parent","initializeEmptyLibraryObject","libraryFiles","getFileFullPath","file","getLibraryTitle","library","comma","path","getLibraryFiles","fileNames","progress","getFolderPathOfFolder","folders","reverse","parentFolder","getInnerFoldersOfLibraries","foldersWithFiles","innerFolders","folderWithFiles","frontFolders","getInnerFoldersOfFolder","concat","getLibrariesOnRootFolders","getLibrariesOfFolder","createLibrary","getUserLibraries","createFolder","uploadFilesToFolder","files","shareFileWithClassUsers","unShareLibrary","getUserCreatedLibFolders","getSharedByMeLibFolders","getShareWithMeLibFolders","setCurrentSelectedClassroomId","setCurrentSelectedClassroom","getCurrentSelectedClassroom","setMyLibrariesListener","setFolderToDelete","getFolderToDelete","setLibraryFile","libFile","getLibraryFile","getClassroomFiles","uploadClassroomFilesToFolder","req","getUsersLibraryHasBeenSharedWith","fileId","deleteFolder","folderId","updateLibraryFileName","newName","getTeacherClassRooms","editFileLevels","newLevels","editFileCategories","newFileCategories","NotificationService","notification","updateRead","markAsReadBulk","ids","PackageService","packageFilterHelper","hasExtention","packageFilter","expiresOn_from","expiresOn_to","stratedAt_to","stratedAt_from","purchasedAt_from","purchasedAt_to","getPackageFilter","getCurrentPackageFilter","setCurrentPackageFilter","getPackageFilterWithoutTheCurrent","current","gerPackageExtraDetails","getUserPackages","getAllUserPackages","getPackageExtentions","packageId","getPackageLessonLevels","getPackagesToBuy","getUpdatedPackagesToBuy","getSplitPackagesToBuy","convertPackageDates","findLessonPackageById","lessonPackageId","pckage","getPackageExtras","convertedDates","extension","fromDate","lessonLevel","requestTrial","requestbuyPackage","upgradePackage","getExtentionOptions","buyExtension","createRevolutOrder","createSplitRevolutOrder","completeOrder","completeSplitOrder","addPurchaseEvent","purchaseData","leadDynoGetAffiliateEvent","affiliate_code","getLeadDynoAffiliateByAffiliateCode","affiliateCode","privateKey","HttpHeaders","params","checkIfPackageCanBeFrozen","enableFreeze","userIsOnFlexOrPremiumPackage","iterPackage","_angular_core__WEBPACK_IMPORTED_MODULE_10__","StudentTrialService","studentStatusSubject","studentStatus$","isTrialRequested","setTrialRequested","updateStudentTrialStatus","getStudentHasTrialRequest","getStudentTrialStatus","postRequestTrial","postRequestTrialInner","postContactUs","BACKEND_LMS_TEACHER_URL","TeacherApplicationService","step$","step","currentStepIndex$","currentStepIndex","submitOnMenuClickListener$","submitOnMenuClickListener","updateAvailabilityListener$","updateAvailabilityListener","updateAvailabilityForSchedulerListener$","updateAvailabilityForSchedulerListener","showWithdrawConfirmationDialog$","showWithdrawConfirmationDialog","showApplicationProgressMenu$","showApplicationProgressMenu","shouldRetrieveTeacherStatus$","shouldRetrieveTeacherStatus","compareStepvalues$","compareStepvalues","stepsValid","stepsStatuses","step1","step2","step3","step4","step5","step6","dummyTeacher","preffered_name","first_name","last_name","city","flagUrl","country_origin","country_residency","native_language","native_languages","birth","education","language_speak","language_teach","teaching_methods","years_experience","cv","hours_per_week","date_applied","institute","fileUploads","setStep","setCurrentStepIndex","setStepValid","setStepValidWithBoolean","isNotValid","setSubmitOnMenuClickListener","submitted","setUpdateAvailabilityClickListener","setUpdateAvailabilityForSchedulerClickListener","setShowWithdrawConfirmationDialog","setShowApplicationProgressMenu","setShouldRetrieveTeacherStatus","setCompareStepvalues","setStepStatuses","registerTeacher","updateAvailability","updateAPITeacherApplicationStep1","getTeacherApplicationStep1","getTeacherApplicationStep2","updateTeacherApplicationStep2","getTeacherApplicationStep3","updateAPITeacherApplicationStep3","getTeacherApplicationStep4","updateAPITeacherApplicationStep4","getTeacherApplicationStep5","updateAPITeacherApplicationStep5","getTeacherApplicationStep6","getTeacherApplicationStepsStatus","getLingoTeachingLanguages","deleteTeacherApplicationFiles","filename","withdrawnTeacherApplication","restartTeacherApplication","updateTeacherAvailability","getStepsTitle","stepIndex","getTeacherStatusNavigationUrl","navigateUrl","isTeacherStatusApproved","ToastService","subs","SubSink","showToastmessage$","showToastmessage","toastObject","ngOnDestroy","unsubscribe","_angular_core__WEBPACK_IMPORTED_MODULE_2__","update$","updateProfile$","updateProfile","uploadFiles$","uploadFiles","newFileUpload$","newFileUpload","updateUserListener","updateUserProfile","setUpdateProfile","setUploadFiles","setNewFileUpload","setUserPassword","getUserAvatar","updateAvatarUrl","newAvatarUrl","existingValue","parsedValue","getUserAvailability","getUserDaysOff","getUserAbsences","getUserHasPayment","getUserById","birthday","ageDifMs","getEmptyAvailability","comfirmDiscardUnsavedChanges","hasUnsavedChanges","confirmationService","confirm","reject","generateReferralCodeFromUser","WindowService","windowRef","slideUpDownAnimation","trigger","animate","slideInOut","opacity","slideInOut2","ConfirmComponent","activatedRoute","firstStep","ngOnInit","ngAfterViewInit","addLottiePlayerToStep","core","VBU","selectors","viewQuery","rf","ctx","routes","loadComponent","__webpack_require__","e","bind","m","AuthComponent","children","LoginComponent","ForgotComponent","confirmError","resetEmail","resetCode","ismyTextFieldType","take","onSignup","confirmPassword","togglemyPasswordFieldType","getKeyValueFieldType","decls","vars","consts","template","_r1","signupForm_r2","ForgotComponent_div_20_Template","redirectTo","pathMatch","AuthRoutingModule","$C","G2t","RouterModule","forChild","AuthModule","CommonModule","FormsModule","MatProgressSpinnerModule","ButtonModule","CheckboxModule","RecaptchaModule","_r3","ctx_r1","onSubmitFilesToUpload","onDialogClose","ChatUploadFileDialogComponent_Defer_0_Conditional_5_Template","ChatUploadFileDialogComponent_Defer_0_Conditional_6_Template","checkedFilesToUpload","ChatUploadFileDialogComponent","config","chatService","libraryService","injector","Injector","toObservable","alert","standalone","features","ChatUploadFileDialogComponent_Defer_0_Template","ChatUploadFileDialogComponent_DeferPlaceholder_1_Template","ChatUploadFileDialogComponent_Defer_2_DepsFn","SharedModule","LibraryModule","styles","ctx_r5","msg_r3","_c3","ChatMessagesDisplayComponent_ng_container_2_ng_container_7_ng_container_1_Template","ChatMessagesDisplayComponent_ng_container_2_ng_container_7_ng_template_2_Template","isImage","notImage_r7","getUserFirstName","$event","$implicit","i_r4","menu1_r5","toggle","selectedMessage","selectedMessageIndex","ChatMessagesDisplayComponent_ng_container_2_ng_container_7_Template","ChatMessagesDisplayComponent_ng_container_2_ng_template_8_Template","ChatMessagesDisplayComponent_ng_container_2_span_11_Template","buildMenuItems","_c0","_c1","isBubbleMode","notFile_r8","_c2","timestamp","seconds","ChatMessagesDisplayComponent","DomSanitizer","messages","chatsList","deleteMessageSelected","EventEmitter","editMessageSelected","clipboard","Clipboard","items","label","command","emit","textContent","copy","filteredItems","getUserFullNameAndInitials","fullName","initials","fileExtension","msg","sanitizeContent","bypassSecurityTrustHtml","shouldShowOptionsMenu","inputs","SignalBased","outputs","ChatMessagesDisplayComponent_ng_container_2_Template","MenuModule","changeDetection","ChatComponent_Defer_0_Conditional_0_div_9_ng_container_2_Template","ChatComponent_Defer_0_Conditional_0_div_9_ng_container_3_Template","_c4","ctx_r0","isTabletOrMobile","personSearchTemplate_r2","personBoxTemplate_r3","ChatComponent_Defer_0_Conditional_0_div_10_Conditional_4_ng_container_0_Template","emptyMessagesTemplate_r5","ChatComponent_Defer_0_Conditional_0_div_10_ng_container_1_Template","ChatComponent_Defer_0_Conditional_0_div_10_Conditional_4_Template","_r4","ChatComponent_Defer_0_Conditional_0_div_10_ng_container_6_Template","chatPersonTemplate_r6","_c5","editMessageMode","inputTextTemplate_r7","ChatComponent_Defer_0_Conditional_0_div_9_Template","ChatComponent_Defer_0_Conditional_0_div_10_Template","showLeftSideMobile","showRightSideMobile","ChatComponent_Defer_0_Conditional_0_Template","bubbleMode","ChatComponent_Conditional_4_div_3_div_11_Conditional_6_ng_container_0_Template","ChatComponent_Conditional_4_div_3_div_11_ng_container_4_Template","ChatComponent_Conditional_4_div_3_div_11_Conditional_6_Template","showInnerChat","ChatComponent_Conditional_4_div_3_div_12_Conditional_10_ng_container_0_Template","ChatComponent_Conditional_4_div_3_div_12_ng_container_7_Template","ChatComponent_Conditional_4_div_3_div_12_Conditional_10_Template","_r10","ChatComponent_Conditional_4_div_3_div_19_ng_container_3_Template","_r9","toggleChat","ChatComponent_Conditional_4_div_3_div_11_Template","ChatComponent_Conditional_4_div_3_div_12_Template","ChatComponent_Conditional_4_div_3_div_19_Template","chatBoxState","_c6","_r8","ChatComponent_Conditional_4_div_3_Template","chatCircleState","chatBoxVisible","_r12","showBackUsers","ChatComponent_ng_template_5_p_button_3_Template","_r11","ChatComponent_ng_template_5_Conditional_6_Template","getChatGroupAvatarUrl","activeUser","isUserOnline","getChatGroupAspUserId","chatName","_r14","disableEditAndTextarea","resetTextarea","_r15","onBasicUploadAuto","ChatComponent_ng_template_7_ng_template_16_ng_template_1_Template","ChatComponent_ng_template_7_Conditional_0_Template","ChatComponent_ng_template_7_ng_container_6_Template","ChatComponent_ng_template_7_ng_template_7_Template","_r13","openFileUploadDialog","ChatComponent_ng_template_7_ng_container_15_Template","ChatComponent_ng_template_7_ng_template_16_Template","adjustParentHeight","onPaste","autoResizeTextArea_r16","focus","addNewMessage","_c7","_c8","uploadProgress","notUploading_r17","notUpload_r18","_r19","onSearchChange","countLastMessageCount","tmp_12_0","lastMessages$","chatGroup_r21","ChatComponent_ng_template_11_div_0_ng_container_11_Conditional_1_Template","ChatComponent_ng_template_11_div_0_ng_container_11_Conditional_3_Template","tmp_13_0","ChatComponent_ng_template_11_div_0_ng_template_13_Conditional_0_Template","ChatComponent_ng_template_11_div_0_ng_template_13_Conditional_2_Template","_r20","setUserActive","ChatComponent_ng_template_11_div_0_Conditional_3_Template","ChatComponent_ng_template_11_div_0_Conditional_4_Template","ChatComponent_ng_template_11_div_0_ng_container_7_Template","ChatComponent_ng_template_11_div_0_ng_container_11_Template","ChatComponent_ng_template_11_div_0_ng_template_13_Template","ChatComponent_ng_template_11_div_0_span_16_Template","_c9","currentChatId","tmp_14_0","chatTypeBadgeTemplate_r23","_c10","tmp_18_0","notFileChat_r22","tmp_20_0","ChatComponent_ng_template_11_div_0_Template","filteredChats","relatedName","ChatComponent_ng_template_15_Conditional_0_Template","ChatComponent_ng_template_15_Conditional_1_Template","ChatComponent_ng_template_15_Conditional_2_Template","chatGroup_r24","chatType","CLASSROOM","USER","ChatType","ChatComponent","currentIndex","DialogService","HttpClient","loading","onlineUsers","chatListsLoaded","messageTimestamps","editMessageisLastMessage","lastMessages","lastMessagesSubject","expandStatuses","expanded","searchControl","FormControl","myScrollContainer","viewChild","computed","getChatGroupName","chats","leftTooltipItems","pastedImage","imageInfo","initChatFunctionality","loadOnlineStatus","listenChatListsLoaded","loadMobileLayoutCheck","tooltipOptions","tooltipLabel","tooltipPosition","ngAfterViewChecked","autoResizeTextArea","onInput","adjustHeight","textarea","fromClipboard","selectedFile","currentFiles","formData","FormData","append","documentType","Authorization","uploadRequest","endpointExtras","myFile","reportProgress","observe","HttpEventType","UploadProgress","loaded","total","Response","sendMessage","scrollToBottom","err","chatClassroom","getChatOppositeName","sink","initTeacherChats","initStudentChats","retrieveChats","uniqueStudentIds","classroomChat","createClassroomChat","has","createStudentChat","flat","uniqueTeacherIds","individualChat","createIndividualChat","classroomLevel","classroomLanguage","chatHistory","studentId","loadChatMessages","chatId","currentChatSubscription","filterOutOldMessages","cutoffDate","subtract","filteredMessages","inputField","oldestTimestamp","min","waitTime","trim","tempDiv","editMessageObj","rows","formattedContent","scrollTop","refreshList","currentTutorial","getUnreadMessages","chatListsWithUnreadCounts","totalUnreadCount","getValue","updateChatsListSorting","aLastMessage","sortUserListByChats","userTimestampMap","participant","findAvatarUrl","readBy","goToChat","divToShowDialog","myElement","dialogWidth","toFixed","dialogsubTitle","dialogTitle","isArray","clipboardData","originalEvent","getAsFile","recognizeImage","imageData","addEventListener","autoResize","textArea","ChatComponent_Defer_0_Template","ChatComponent_DeferPlaceholder_1_Template","ChatComponent_Defer_2_DepsFn","ChatComponent_Conditional_4_Template","ChatComponent_ng_template_5_Template","ChatComponent_ng_template_7_Template","ChatComponent_ng_template_9_Template","ChatComponent_ng_template_11_Template","ChatComponent_ng_template_13_Template","ChatComponent_ng_template_15_Template","FileUploadModule","InputTextModule","i6","InputTextareaModule","SpeedDialModule","BadgeModule","i7","TooltipModule","TabViewModule","animation","LibraryComponent","LibraryRoutingModule","DynamicDialogRef","imports","ConfirmDialogModule","onCheckedList","onSendSharedWith","preselectedClassroom","innerFolder_r7","_r6","moveSelected","marginLeft","selectedFolder","_r5","LibraryFileActionsDialogComponent_ng_container_4_ng_container_7_Template","onMoveSubmitted","onUploadedFilesSubmitted","uploadFinished","onTagChoosen","showEditRename","modifiedFile","newFileName","LibraryFileActionsDialogComponent_ng_container_6_div_2_Template","LibraryFileActionsDialogComponent_ng_container_6_ng_container_3_Template","onChooseTag","onTagsSubmitted","LibraryFileActionsDialogComponent","sharedWithMap","getParentFolders","f","childFolders","sortFolders","sortedFolders","parentFolders","child","categories","isLevel","checked","applyToAll","tag","arrLibrary","index2","findIndex","splice","fileNameWithPath","fileNameParts","deepCopy","checkbox","isCategory","category","newCategories","rename","_angular_core__WEBPACK_IMPORTED_MODULE_11__","LibraryFileActionsDialogComponent_ng_container_1_Template","LibraryFileActionsDialogComponent_ng_container_2_Template","LibraryFileActionsDialogComponent_ng_container_3_Template","LibraryFileActionsDialogComponent_ng_container_4_Template","LibraryFileActionsDialogComponent_ng_container_5_Template","LibraryFileActionsDialogComponent_ng_container_6_Template","collapseNotesLeftSide","isCollapsed","onMyFilesSelected","selectedClassroom","hasSelectedClassroom","firstListItemTitle","classroom_r6","classRoomSelected","LibraryLeftSidebarComponent_ng_template_4_div_1_img_4_Template","LibraryLeftSidebarComponent_ng_template_4_div_1_span_6_Template","LibraryLeftSidebarComponent_ng_template_4_div_1_span_7_Template","classTitleElem_r7","LibraryLeftSidebarComponent_ng_template_4_div_0_Template","LibraryLeftSidebarComponent_ng_template_4_div_1_Template","toggleSwitch","filteredClassRooms","showActiveClassrooms","op_r9","isLarge","classroom_r10","LibraryLeftSidebarComponent_ng_template_8_li_1_Template","classroom_r14","LibraryLeftSidebarComponent_div_9_ng_container_7_div_1_img_4_Template","LibraryLeftSidebarComponent_div_9_ng_container_7_div_1_span_6_Template","LibraryLeftSidebarComponent_div_9_ng_container_7_div_1_span_7_Template","classTitleElem_r15","LibraryLeftSidebarComponent_div_9_ng_container_7_div_1_Template","LibraryLeftSidebarComponent_div_9_div_5_Template","LibraryLeftSidebarComponent_div_9_ng_container_7_Template","leftSideHeight","LibraryLeftSidebarComponent","layoutService","autoSelectFirstClassroom","showMyNotes","myFilesSelected","classroomSelected","collapsed","myFilesDiv","dayOverlayPanel","scrollPanel","ngOnChanges","prepareCollapsedForStudent","addMyFilesClass","refresh","removeMyFilesClass","removeClass","getElementsByClassName","myFilesElement","toggleDropdown","stopPropagation","LibraryLeftSidebarComponent_div_1_Template","LibraryLeftSidebarComponent_ng_template_4_Template","LibraryLeftSidebarComponent_p_button_5_Template","LibraryLeftSidebarComponent_ng_template_8_Template","LibraryLeftSidebarComponent_div_9_Template","level_r2","category_r3","ctx_r3","classroomFile","LibraryFileRowItemComponent_div_17_ng_template_2_span_0_Template","LibraryFileRowItemComponent_div_17_ng_container_1_Template","LibraryFileRowItemComponent_div_17_ng_template_2_Template","notMobileBlock_r5","_r7","checkLibraryItem","checkLibMenu","LibraryFileRowItemComponent_div_19_img_1_Template","LibraryFileRowItemComponent_div_19_img_2_Template","LibraryFileRowItemComponent","hasLimitedOptions","availableActions","isSmallScreen","showSharedWithUsers","isInTab","fileDeleted","libraryChecked","fileUnshared","StudentIdsToSend","isDisabled","isDisabledWholeClass","moveFileId","moveFolderId","isMoveRadioCheked","showRename","sharedWithUsers","hasMultipleCategoriesSlice","prepareMenuItemsForItem","onSelect","showMoveFilePopup","context","openFileInNewTab","copyURL","downloadFile","shareWithTeacher","send","fileIds","studentIds","sendShareToApi","sendUnShareToApi","deleteFile","showSharePopup","getUniqueSharedUsers","filteredUsers","onWholeClassSelect","moveFile","moveFolder","fileURL","selBox","appendChild","select","execCommand","removeChild","shareLibraryFile","unShareLibraryFile","sendParams","LibraryFileRowItemComponent_div_9_Template","LibraryFileRowItemComponent_img_10_Template","LibraryFileRowItemComponent_p_chip_15_Template","LibraryFileRowItemComponent_div_17_Template","menu3_r6","LibraryFileRowItemComponent_div_19_Template","LibraryFileRowItemComponent_img_20_Template","_r2","menu4_r3","SingleLibraryFolderItemComponent","openFolder","getFolderContextMenu","openFolderClicked","SingleLibraryFolderItemComponent_i_0_Template","ctx_r2","onRejectFolderDelete","onAcceptFolderDelete","deleteFolderConfirmData","onRejectFileDelete","onAcceptFileDelete","deleteFileConfirmData","onAcceptFileDeleteMultiple","deleteMultipleFilesConfirmData","SingleLibraryComponent_ng_container_9_ng_container_1_Template","classInfoGeneralTemplate_r6","SingleLibraryComponent_ng_container_10_ng_container_5_ng_container_2_Template","selectedStudent_r8","onTabChangeFilterFilesPerStudent","SingleLibraryComponent_ng_container_10_ng_container_4_Template","SingleLibraryComponent_ng_container_10_ng_container_5_Template","onShowUploadDialog","showShare","shareLibraryFiles","openShareDialog","moveMultipleFiles","deleteMultipleFiles","SingleLibraryComponent_ng_template_11_div_10_div_16_Template","deleteFolderSelected","openFolderSelected","innerFolder_r15","_r16","_r17","folderPath","folder_r19","_r18","folderName","onCreateFolder","SingleLibraryComponent_ng_template_11_ng_container_33_ng_container_4_Template","SingleLibraryComponent_ng_template_11_ng_container_33_ng_container_5_Template","_r21","_r22","onFileDeleted","onLibraryChecked","onFileUnshared","withClassroom","classroom_r24","libFiles_r23","SingleLibraryComponent_ng_template_11_div_35_ng_container_2_Template","fileListHeight","getFilteredFiles","uniqueFiles_r25","SingleLibraryComponent_ng_template_11_img_7_Template","SingleLibraryComponent_ng_template_11_img_8_Template","SingleLibraryComponent_ng_template_11_div_10_Template","SingleLibraryComponent_ng_template_11_div_18_Template","SingleLibraryComponent_ng_template_11_img_19_Template","SingleLibraryComponent_ng_template_11_img_24_Template","SingleLibraryComponent_ng_template_11_div_30_Template","SingleLibraryComponent_ng_template_11_ng_container_32_Template","SingleLibraryComponent_ng_template_11_ng_container_33_Template","SingleLibraryComponent_ng_template_11_ng_container_34_Template","SingleLibraryComponent_ng_template_11_div_35_Template","extraGradientClass","libraryTitle","canShare","canUpload","showInput","SingleLibraryComponent","isMyFiles","loggedInUser","inHomework","task","classroomIdToAddLib","showFilters","showAddLibrary","allLibrariesWithFiles","currentPathLibraries","inClassroom","showingMine","filteredFiles","libsSharedWith","libsSharedBy","studentsToShareWith","showDialog","currentUploadFolder","classroomStudentsIds","setStudentsToShareWith","oncollapseNotesLeftSideChanged","lib","found","initOpenFolderListener","getClassRooms","getFoldersWithFiles","initFiles","shareMultipleLibraryFiles","onShowAddLibrary","teacherClassrooms","deleteLibFolder","onFolderSelect","moveFileAPI","dummyId","initializeFilesWithFolders","getInnerFolders","copyFolders","innerFolder","unshift","removeFolderByFolderId","r","createdBy","targetElementName","onSubmit","toSend","libFiles","StudentIds","mapLibraryToAddFiles","filterDelteFromLibraryFiles","deleteFileAPI","removeLibraryFileByFileId","filteredLibraryFiles","isLeftsideCollapsed","currentStudent","sharedWith","unique","self","i8","i9","SingleLibraryComponent_ng_container_0_Template","SingleLibraryComponent_ng_container_1_Template","SingleLibraryComponent_ng_container_2_Template","SingleLibraryComponent_ng_container_9_Template","SingleLibraryComponent_ng_container_10_Template","SingleLibraryComponent_ng_template_11_Template","SingleLibraryComponent_ng_template_13_Template","getLibFolders","onClassRoomSelected","teacherClassrooms_r3","LibraryComponent_div_2_ng_container_2_Template","teacherClassrooms$","LibraryComponent_ng_container_4_ng_container_2_ng_container_10_Template","LibraryComponent_ng_container_4_ng_container_2_app_single_library_12_Template","LibraryComponent_ng_container_4_ng_container_2_ng_container_20_Template","isLoading","myLibs","LibraryComponent_ng_container_4_div_1_Template","LibraryComponent_ng_container_4_ng_container_2_Template","LibraryComponent_ng_container_4_app_single_library_4_Template","onTabChange","LibraryComponent_ng_container_5_ng_container_2_ng_container_10_Template","LibraryComponent_ng_container_5_ng_container_2_app_single_library_12_Template","LibraryComponent_ng_container_5_ng_container_2_ng_container_20_Template","LibraryComponent_ng_container_5_div_1_Template","LibraryComponent_ng_container_5_ng_container_2_Template","cdr","leftSide","mainWrapper","tab1checked","tab2checked","initUpdateListener","initClassroomUpdateListener","loadLibFolders","startWith","maxHeight","detectChanges","loadLibraryData","showLoading","requests","classroomFiles","sharedBy","addLibrary","ConfirmationService","LibraryComponent_div_2_Template","LibraryComponent_ng_container_4_Template","LibraryComponent_ng_container_5_Template","toggleFilterVisibility","filterType_r4","applyFilter","showFiltersTablet","currentFilterType","notif_r6","removeNotificationSelected","TopMenuContainerLayoutComponent","NotificationOverviewComponent","notificationService","filterTypes","notifications","searchValue","filteredNotifications","isTablet","unreadNotifications","isLoadingNotifications","isRead","unreadNotificationIds","filterType","dateCheck","dateFrom","dateTo","searchCheck","filterCategoryCheck","onSearchInput","onFromDateSelection","onToDateSelection","notificationId","onCalendarClose","NotificationOverviewComponent_button_9_Template","NotificationOverviewComponent_ng_container_20_Template","NotificationOverviewComponent_ng_container_32_Template","NotificationOverviewComponent_ng_container_33_Template","NotificationsRoutingModule","NotificationsModule","CalendarModule","ContactInfoComponent_form_1_div_7_Template","ContactInfoComponent_form_1_div_12_Template","ContactInfoComponent_form_1_div_17_Template","ContactInfoComponent","teacherService","location","UntypedFormGroup","UntypedFormControl","validators","Validators","required","valid","goBack","ContactInfoComponent_form_1_Template","addEducation","removeEducation","hideFileUpload","UPLOAD_TEACHER_APPLICATION_FILES_URL","EducationComponent_ng_container_2_div_5_div_18_div_4_Template","educationfilePaths","controls","showFileUpload","skillIndex_r9","removeEducationFileField","EducationComponent_ng_container_2_div_5_ng_template_19_div_0_div_2_Template","EducationComponent_ng_container_2_div_5_ng_template_19_div_0_div_3_Template","EducationComponent_ng_container_2_div_5_ng_template_19_div_0_div_4_Template","EducationComponent_ng_container_2_div_5_ng_template_19_div_0_Template","EducationComponent_ng_container_2_div_5_div_6_Template","EducationComponent_ng_container_2_div_5_div_7_Template","EducationComponent_ng_container_2_div_5_div_9_Template","EducationComponent_ng_container_2_div_5_div_14_Template","EducationComponent_ng_container_2_div_5_div_18_Template","EducationComponent_ng_container_2_div_5_ng_template_19_Template","tplwithFilePaths_r11","EducationComponent_ng_container_2_div_5_Template","EducationComponent","fb","speakLanguageCounter","teacherEducation","formChanged","updateStepFormValues","initFormChangedListener","UntypedFormArray","group","teacherApplicationStep2","fileUploadElement","addEducationFileField","removeAt","back","fileIndex","fileName","removeEmployee","empIndex","at","newFilePathFormGroup","skillIndex","EducationComponent_ng_container_2_Template","addLanguageSpeak","i_r5","removeLanguageSpeak","language_r6","level_r7","ExperienceComponent_form_1_div_3_div_5_Template","ExperienceComponent_form_1_div_3_div_6_Template","ExperienceComponent_form_1_div_3_div_7_Template","handleSpeakLanguageChange","ExperienceComponent_form_1_div_3_ng_template_10_Template","ExperienceComponent_form_1_div_3_ng_template_13_Template","filteredLanguageSpeakLevels","disableSpeakLevelsDropdown","addLanguageTeach","i_r11","removeLanguageTeach","language_r12","level_r13","ExperienceComponent_form_1_div_6_div_4_Template","ExperienceComponent_form_1_div_6_div_5_Template","ExperienceComponent_form_1_div_6_div_6_Template","handleTeachLanguageChange","ExperienceComponent_form_1_div_6_ng_template_9_Template","ExperienceComponent_form_1_div_6_ng_template_12_Template","teachLevelOptions","disableTeachLevelsDropdown","ExperienceComponent_form_1_div_3_Template","ExperienceComponent_form_1_div_4_Template","ExperienceComponent_form_1_div_6_Template","ExperienceComponent_form_1_div_7_Template","ExperienceComponent_form_1_div_13_Template","ExperienceComponent_form_1_div_18_Template","languagesSpeakForm","languagesTeachForm","ExperienceComponent","toast","teacherLanguagesSpeak","teacherLanguagesTeach","languageSpeakError","languageTeachError","availableLanguageLevels","filteredLanguageTeachLevels","createForm","methods","years","object","patchValue","teachingMethods","yearsExperience","languageSpeak","elementFound","setfilteredLanguageSpeakLevels","languageTeach","setfilteredLanguageTeachLevels","languageCode","hasBusinessLevel","languageIndex","dirty","ExperienceComponent_form_1_Template","country_r3","country_r4","GeneralInfoComponent_ng_container_2_ng_template_36_div_3_Template","timezone_r5","language_r7","addnativeLanguage","i_r10","removeNativeLanguage","onOriginChange","GeneralInfoComponent_ng_container_2_div_47_ng_template_5_Template","GeneralInfoComponent_ng_container_2_div_47_div_6_Template","GeneralInfoComponent_ng_container_2_div_47_ng_container_7_Template","GeneralInfoComponent_ng_container_2_div_8_Template","GeneralInfoComponent_ng_container_2_div_13_Template","GeneralInfoComponent_ng_container_2_div_19_Template","onCountryChange","GeneralInfoComponent_ng_container_2_ng_template_24_Template","GeneralInfoComponent_ng_container_2_div_25_Template","GeneralInfoComponent_ng_container_2_ng_template_30_Template","GeneralInfoComponent_ng_container_2_div_31_Template","onTimeZoneChange","GeneralInfoComponent_ng_container_2_ng_template_36_Template","GeneralInfoComponent_ng_container_2_div_37_Template","onBirthDateSelected","GeneralInfoComponent_ng_container_2_div_42_Template","GeneralInfoComponent_ng_container_2_div_47_Template","GeneralInfoComponent_ng_container_2_div_48_Template","GeneralInfoComponent_ng_container_2_div_57_Template","onPhoneCodeChange","GeneralInfoComponent_ng_container_2_div_67_Template","maxBirthdateTime","nativeLanguages","selectedPhoneCode","GeneralInfoComponent","ngForm","selectedCountry","formattedBirthDate","nativeLanguagesModel","newDate","setFullYear","prepareSelectedPhoneCodeFromIP","updateStep1TeacherInfoFormValues","invalidInputs","controlName","detailMessage","teacherApplicationStep1FormData","prefferedName","countryOrigin","countryResidency","teacherStep1Object","isValidDate","native","isConfirm","selectedLanguage","selectedTimezone","ifNativeLanguagesFieldValid","objectValue","dateValue","isNaN","country_code","GeneralInfoComponent_ng_container_2_Template","ResumeComponent","UPLOAD_TEACHER_CV_URL","UPLOAD_TEACHER_PICTURE_URL","filesUploaded","msgs","submittedFiles","fileUploadChanged","areFilesSubmitted","submitResume","fileKind","profilePicture","deleteFileClicked","teacherApplication","nativeLanguage_r2","ReviewComponent_div_4_div_19_Template","ReviewComponent_div_4_div_23_Template","ReviewComponent_div_4_div_40_Template","file_r3","ReviewComponent_div_12_div_1_div_15_Template","education_r4","ReviewComponent_div_12_div_1_Template","experience_r5","experience_r6","ReviewComponent_div_16_div_4_Template","ReviewComponent_div_16_div_8_Template","ReviewComponent_div_17_div_10_Template","ReviewComponent_div_17_div_17_Template","available_r7","available_r8","available_r9","available_r10","available_r11","available_r12","available_r13","ReviewComponent_div_21_div_8_Template","ReviewComponent_div_21_div_9_Template","ReviewComponent_div_21_div_10_Template","ReviewComponent_div_21_div_11_Template","ReviewComponent_div_21_div_12_Template","ReviewComponent_div_21_div_13_Template","ReviewComponent_div_21_div_14_Template","updateAgreement1","updateAgreement2","ReviewComponent","isAgreement1Checked","isAgreement2Checked","submitTeacher","hideBottomLayout","checkQueryParamsForBottomLayout","teacherApplicationReview","queryparams","buttons","ReviewComponent_div_4_Template","ReviewComponent_div_8_Template","ReviewComponent_div_12_Template","ReviewComponent_div_16_Template","ReviewComponent_div_17_Template","ReviewComponent_div_21_Template","ReviewComponent_ng_container_22_Template","statusDateText","formattedSubmittedDate","restartApplicationAndgoToStatusInfoPage","goToStatusInfoPage","goToReviewPage","handleWithdrawal","StatusComponent_div_0_div_16_Template","StatusComponent_div_0_a_25_Template","StatusComponent_div_0_a_26_Template","StatusComponent_div_0_a_27_Template","StatusComponent_div_0_a_28_Template","StatusComponent_div_0_div_32_Template","StatusComponent_div_0_div_34_Template","StatusComponent_div_0_div_35_Template","loggenInUser","statusCssClass","statusIcon","formatStatusNameText","isWithdrawn","currentStatus","isIncomplete","showReviewLink","showWithdrawLink","isConsidered","isApproved","isNoLongerConsidered","isReceived","isRejected","StatusComponent","dateSubmited","setTeacherStatusBasedOnResponse","shouldRetrieve","teacherStatusResponse","isEmpty","StatusComponent_div_0_Template","navigateToTeacherSection","routeIsActive","currentStepsStatus","arePreviousStepsCompleted","goToStatusPage","confirmWithdraw","TeacherMenuComponent","showButtonsInsteadOfMenu","teacherMenuItems","ev","stepsStatus","backClicked","goBackIcon","routePath","steps","currentStep","TeacherMenuComponent_ng_container_2_Template","TeacherMenuComponent_ng_template_3_Template","templateName_r4","TeacherApplicationComponent_div_0_strong_11_Template","totalSteps","cd_r4","cda_r6","TeacherApplicationComponent","windowService","changeDetector","applicationProgress","canDisplayConfirmDialog","shouldShow","shouldShowDialog","ngAfterContentChecked","prepareStepsCounterText","firstDivContent","firstDivConten","afterAcceptWithDrawApplication","TeacherApplicationComponent_div_0_Template","TeacherApplicationComponent_div_1_Template","TeacherApplicationComponent_ng_template_4_Template","TeacherApplicationComponent_ng_template_5_Template","TeacherApplicationComponent_ng_template_8_Template","TeacherAvailabilityComponent","TeacherApplicationRoutingModule","TeacherApplicationModule","ReactiveFormsModule","DropdownModule","ProgressSpinnerModule","RippleModule","addMon","isDialog","i_r2","removeMon","AvailabilityComponent_div_26_img_4_Template","timePickChanged","AvailabilityComponent_div_26_button_8_Template","AvailabilityComponent_div_26_button_9_Template","defaultDate","addTue","i_r7","removeTue","AvailabilityComponent_div_39_img_4_Template","AvailabilityComponent_div_39_button_8_Template","AvailabilityComponent_div_39_button_9_Template","addWed","removeWed","AvailabilityComponent_div_52_img_4_Template","AvailabilityComponent_div_52_button_8_Template","AvailabilityComponent_div_52_button_9_Template","addThu","i_r15","removeThu","AvailabilityComponent_div_65_img_4_Template","AvailabilityComponent_div_65_button_8_Template","AvailabilityComponent_div_65_button_9_Template","addFri","i_r19","removeFri","AvailabilityComponent_div_78_img_4_Template","AvailabilityComponent_div_78_button_8_Template","AvailabilityComponent_div_78_button_9_Template","_r24","addSat","_r25","i_r23","removeSat","AvailabilityComponent_div_91_img_4_Template","AvailabilityComponent_div_91_button_8_Template","AvailabilityComponent_div_91_button_9_Template","_r28","addSun","_r29","i_r27","removeSun","AvailabilityComponent_div_104_img_4_Template","_r26","AvailabilityComponent_div_104_button_8_Template","AvailabilityComponent_div_104_button_9_Template","time_r31","_r30","onHoursChange","AvailabilityComponent_div_106_ng_template_8_Template","AvailabilityComponent_div_106_div_9_Template","hourOptions","_r32","_r33","AvailabilityComponent_ng_container_108_span_6_Template","AvailabilityComponent_ng_container_108_span_7_Template","AvailabilityComponent","calendarService","showHours","weekDays","teacherAvailabilityMon","teacherAvailabilityTue","teacherAvailabilityWed","teacherAvailabilityThu","teacherAvailabilityFri","teacherAvailabilitySat","teacherAvailabilitySun","selectedHours","teacherAvailability","mondayActive","tuesdayActive","wednesdayActive","thursdayActive","fridayActive","saturdayActive","sundayActive","updateDaysFields","formArray","property","timeConverted","toLocaleString","timeArray","hasEmptyFromOrTo","initCheckboxChangedListener","dayParam","dayActive","setControl","removeDay","processDay","list","control","activeDay","castedDay","availabilitySlot","activeDayFormValue","checkFormat","isFromValid","isToValid","reload","checkValidity","AvailabilityComponent_div_3_Template","AvailabilityComponent_div_26_Template","AvailabilityComponent_div_27_Template","AvailabilityComponent_div_39_Template","AvailabilityComponent_div_40_Template","AvailabilityComponent_div_52_Template","AvailabilityComponent_div_53_Template","AvailabilityComponent_div_65_Template","AvailabilityComponent_div_66_Template","AvailabilityComponent_div_78_Template","AvailabilityComponent_div_79_Template","AvailabilityComponent_div_91_Template","AvailabilityComponent_div_92_Template","AvailabilityComponent_div_104_Template","AvailabilityComponent_div_105_Template","AvailabilityComponent_div_106_Template","AvailabilityComponent_ng_container_107_Template","AvailabilityComponent_ng_container_108_Template","tmp_4_0","tmp_8_0","tmp_9_0","tmp_17_0","tmp_21_0","tmp_25_0","tmp_29_0","headerIcon","secondaryTitleRight","closeDialogIconClicked","actionRoute","disabledButton","actionButtonText","backButtonLabel","BlockViewerComponent_div_1_span_2_Template","BlockViewerComponent_div_1_span_5_Template","BlockViewerComponent_div_1_span_6_Template","BlockViewerComponent_div_1_ng_container_7_Template","BlockViewerComponent_div_1_div_8_Template","BlockViewerComponent_div_1_ng_container_9_Template","headerBlockClass","headerBackgroundImage","headerTextClass","new","showCloseDialogIcon","BlockViewerComponent","closeDialogEvent","actionButtonRoute","containerClass","blockClass","previewStyle","containerHeight","ngContentSelectors","BlockViewerComponent_div_1_Template","user_r5","classroom_r2","checkUser","isUserChecked","alreadyAssigned","showBlur","ClassroomsCheckListComponent_div_6_div_5_div_1_Template","addClassroom","ClassroomsCheckListComponent_div_6_div_5_Template","isClassroomChecked","alreadyAssignedFromUsers","ClassroomsCheckListComponent","checkedList","usersAssignedTo","classroomsAssignedTo","firstOpen","Map","classroomUsers","already","disapear","closeOnClickOutside","ngAfterContentInit","foundUnchecked","usersChecked","classroomsChecked","isChecked","closeList","ClassroomsCheckListComponent_div_6_Template","notif_r4","removeNotification","HeaderComponent_div_22_ng_container_5_Template","HeaderComponent_div_22_ng_container_7_Template","HeaderComponent","elementRef","dropdownOpen","backend_url","userPhoto","overlayActive","userOverlayActive","closeProdileDropdownOnClickOutside","handleDropdown","visibility","closeDropdown","ignoreClickOnMeElement","onclick","isClickInsideElement","toggleNotificationOverlay","toggleUserMenuOverlay","onClick","targetElement","onClicka","closeNotificationsDropdownOnClickOutside","_angular_core__WEBPACK_IMPORTED_MODULE_7__","HeaderComponent_Conditional_15_Template","HeaderComponent_div_22_Template","HeaderComponent_div_30_Template","HeaderComponent_div_51_Template","buttonClicked","GHeaderBackButtonComponent","isMobile","GHeaderBackButtonComponent_ng_container_0_Template","GHeaderBackButtonComponent_ng_container_1_Template","GLevelCircleComponent","size","extraClass","extraDutchCssClass","textSize","isBelow768","onResize","updateZoom","TopMenuContainerLayoutComponent_app_header_0_Template","LoaderComponent","loaderEl","item_r3","navigateTo","MobileMenuComponent_ng_container_21_li_1_Template","item_r6","MobileMenuComponent","renderer","init","opened","active","burgerClasses","burger","nava","overlay","menu","socialLinks","linkedin","twitter","facebook","youtube","instagram","onBurgerClicked","toggleMobileMenuItems","mobileMenuItems","innerHeight","burgerClick","addClass","DOCUMENT","MobileMenuComponent_ng_container_4_Template","MobileMenuComponent_Conditional_8_Template","MobileMenuComponent_ng_container_21_Template","MobileMenuComponent_ng_container_22_Template","onNotificationIconError","onRemoveNotification","slimStyle","getNotifIcon","textSizeClass","NotificationRowItemComponent","NotificationRowItemComponent_ng_container_0_Template","NotificationRowItemComponent_ng_container_1_Template","ConfirmDialogComponent_ng_template_3_ng_template_0_h3_2_Template","onClearSelected","showConfirmIcon","ConfirmDialogComponent_ng_template_3_ng_template_0_Template","ConfirmDialogComponent_ng_template_4_ng_template_0_Template","ConfirmDialogComponent_ng_template_5_ng_template_0_h3_1_Template","ConfirmDialogComponent_ng_template_5_ng_template_0_Template","acceptBtnImage","ConfirmDialogComponent_ng_template_6_p_button_1_img_1_Template","ConfirmDialogComponent_ng_template_6_p_button_0_Template","ConfirmDialogComponent_ng_template_6_p_button_1_Template","ConfirmDialogComponent","confirmDialogService","lottieAnim","confirmSelected","rejectSelected","ConfirmDialogComponent_ng_template_3_Template","ConfirmDialogComponent_ng_template_4_Template","ConfirmDialogComponent_ng_template_5_Template","ConfirmDialogComponent_ng_template_6_Template","selectedItemValue","flagFilter","PrimeInputDropdownComponent_ng_container_2_ng_template_1_div_0_img_2_Template","PrimeInputDropdownComponent_ng_container_2_ng_template_1_div_0_div_3_Template","PrimeInputDropdownComponent_ng_container_2_ng_template_1_div_0_div_4_Template","withFlags","PrimeInputDropdownComponent_ng_container_2_ng_template_1_div_0_Template","PrimeInputDropdownComponent_ng_container_2_ng_template_1_Template","option_r2","templateValue","PrimeInputDropdownComponent_ng_template_3_ng_container_1_Template","PrimeInputDropdownComponent","onValueChange","valueSelected","className","styleClass","showTextAfterImage","parentForm","addControl","inputName","placeholder","optionLabel","filterBy","isInvalidControl","isValidControl","PrimeInputDropdownComponent_ng_container_2_Template","PrimeInputDropdownComponent_ng_template_3_Template","MessageService","ImageCropperModule","MessageModule","MessagesModule","ToastModule","ScrollPanelModule","PanelMenuModule","OverlayPanelModule","DeferModule","ChipModule","CarouselModule","InputSwitchModule","AccordionModule","ProgressBarModule","TagModule","StepsModule","DialogModule","SliderModule","PrimeNgRadioButtonModule","HomeworkService","setTagToAll","tagToAll","tagToAll$","homeworkToAdd","submitListener$","submitListener","isTaskFormValid$","isTaskFormValid","showFormListener$","homework","showFormListener","setSubmitListener","setShowFormListener","setIsTaskFormValid","createHomework","homeworkTasksToSend","assignedToIds","assignedTo","homeWorkTasks","libraryFileIds","libraries","homeworkTaskToSend","finished","studentFiles","teacherFiles","rate","proportion","dismissed","assignedToUserInClassroom","deadline","deadLine","updateHomeworkState","updateHomeworkStatus","deleteHomework","deleteTaskFromHomework","taskId","getHomeworks","sortByPending","hw","updateTaskFinished","updateTaskRate","addStudentFileToTask","updateTaskProportion","updateHomework","updateReq","addTaskToHomework","hwId","updateTaskDetails","getHomeworkColor","getStatusOnUpdateFinishedTaskOrRate","tasks","countRatedTasks","countCompleted","initiateHomeworkObject","pinned","initiateHomeworkTaskObject","assignedToClassroom","ChooseTagsComponent","homeworkService","chooseTag","tagsSubmitted","tagsToAll","taskIndex","getIsChecked","getIsCheckedCategory","getIsCheckedLevel","DndDirective","fileOver","fileDropped","onDragOver","evt","preventDefault","onDragLeave","ondrop","dataTransfer","FsC","hostVars","hostBindings","fileDropImageWidth","fileDropImage","onFileDropped","fileBrowseHandler","UploadFilesComponent_div_0_ng_container_5_Template","UploadFilesComponent_div_0_ng_template_6_Template","multiple","defaultImage_r3","fileChangeEvent","imageCropped","imageLoaded","cropperReady","loadImageFailed","croppedImage","imageChangedEvent","filePicker_r6","fileBrowseHandlerProfile","UploadFilesComponent_div_2_div_9_Template","UploadFilesComponent_div_2_ng_container_10_Template","showCropper","fileAfterImageWidth","fileAfterImage","formatBytes","file_r9","UploadFilesComponent_div_3_div_1_div_1_ng_container_1_Template","UploadFilesComponent_div_3_div_1_div_1_ng_template_2_Template","UploadFilesComponent_div_3_div_1_div_1_p_8_Template","UploadFilesComponent_div_3_div_1_div_1_div_9_Template","defaultAfterImage_r11","UploadFilesComponent_div_3_div_1_div_1_Template","UploadFilesComponent_div_3_div_1_Template","file_r14","UploadFilesComponent_div_4_div_1_Template","UploadFilesComponent_div_4_div_2_Template","submit","UploadFilesComponent","isProfile","isTeacherApplication","isSick","teacherFilesLength","postUrl","buttonUI","dndUI","checkboxUI","showSubmitButton","inHomeworkTask","homeworkTaskStudentId","clearFiles","onUploadFinished","onDeleteFileClicked","tagChoosen","profileFile","profileFileName","uploadedFile","uploadFile","upload","replaceSpecialCharactersForFilename","assignToClassroom","assignToUser","bytes","decimals","dm","parseFloat","pow","objectUrl","base64","File","reader","FileReader","onload","readAsDataURL","UploadFilesComponent_div_0_Template","UploadFilesComponent_div_1_Template","UploadFilesComponent_div_2_Template","UploadFilesComponent_div_3_Template","UploadFilesComponent_div_4_Template","UploadFilesComponent_div_5_Template","production","leadDynoPrivateKey","firebase","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","UserInfoGuard","isUserInfoFullefilled","NotFoundComponent","notFoundEl","addLottiePlayerGraphic","viewSection","filteredClassrooms","TrialComponent","showActive","showCompelted","showDismissed","TrialComponent_div_1_Template","TrialComponent_div_2_Template","loadChildren","all","DashboardModule","layout","isDashboard","ClassroomModule","gradient","LoggedInGuard","hideLeftMenu","SharedLinkModule","UserProfileModule","JitsiMeetModule","ChatModule","LingoletteRoomComponent","AppRoutingModule","forRoot","scrollPositionRestoration","slideInAnimation","query","optional","message_r1","ToastComponent","messageService","toastMsg","life","ToastComponent_ng_template_1_Template","AppComponent","primengConfig","mt","routeIsDashboard","routeIsProfile","routeIsTeacher","routeIsAuth","showLeftMenu","routeData","layout$","getLayoutType$","previousUrl","loggedIn","userClassrooms","ripple","events","NavigationStart","NavigationEnd","handleStudentClassroomDataAndMenu","setProperty","RoutesRecognized","root","listenLoggedInUser","mergeMap","getTopLeftGradientClass","checkOffset","onActivate","onWindowScroll","pageYOffset","addActiveClassToProfileInfoInSillyWay","addActiveClassToTeacherInfoInSillyWay","listenChatFromClassrooms","classroomObservables","counts","AppComponent_app_confirm_dialog_3_Template","AppComponent_Conditional_4_Template","AuthInterceptor","intercept","authToken","authRequest","clone","handle","ErrorInterceptor","catchError","errorMessage","throwError","NotFoundModule","CertificateModule","TableModule","AppModule","bootstrap","provide","HTTP_INTERCEPTORS","useClass","multi","LocationStrategy","HashLocationStrategy","DatePipe","BrowserModule","BrowserAnimationsModule","HttpClientModule","AngularFireModule","initializeApp","AngularFirestoreModule","FirebaseAppModule","firebaseApp","ReCaptchaV3Provider","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","webpackContext","webpackContextResolve","o","module","exports"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/core/guards/auth.guard.ts","./src/app/core/guards/profile.guard.ts","./src/app/core/guards/teacher-application.guard.ts","./src/app/core/guards/teacher.guard.ts","./src/app/core/models/classroom.model.ts","./src/app/core/models/data.ts","./src/app/core/models/general.model.ts","./src/app/core/models/homework.model.ts","./src/app/core/models/lesson.model.ts","./src/app/core/models/package.model.ts","./src/app/core/models/student.model.ts","./src/app/core/models/teacher.model.ts","./src/app/core/models/user.model.ts","./src/app/core/pipes/filter.pipe.ts","./src/app/core/services/auth.service.ts","./src/app/core/services/calendar.service.ts","./src/app/core/services/chat.service.ts","./src/app/core/services/classroom.service.ts","./src/app/core/services/confirm-dialog.service.ts","./src/app/core/services/general.service.ts","./src/app/core/services/layout.service.ts","./src/app/core/services/lesson.service.ts","./src/app/core/services/library.service.ts","./src/app/core/services/notification.service.ts","./src/app/core/services/package.service.ts","./src/app/core/services/student-trial.service.ts","./src/app/core/services/teacher-application.service.ts","./src/app/core/services/toast.service.ts","./src/app/core/services/user.service.ts","./src/app/core/services/window.service.ts","./src/app/helpers/my-animations.ts","./src/app/modules/auth/confirm/confirm.component.ts","./src/app/modules/auth/confirm/confirm.component.html","./src/app/modules/auth/forgot/forgot.component.html","./src/app/modules/auth/auth-routing.module.ts","./src/app/modules/auth/forgot/forgot.component.ts","./src/app/modules/auth/auth.module.ts","./src/app/modules/chat/components/chat-upload-file-dialog/chat-upload-file-dialog.component.html","./src/app/modules/chat/components/chat-upload-file-dialog/chat-upload-file-dialog.component.ts","./src/app/modules/chat/components/chat-messages-display/chat-messages-display.component.html","./src/app/modules/chat/components/chat-messages-display/chat-messages-display.component.ts","./src/app/modules/chat/chat.component.ts","./src/app/modules/chat/chat.component.html","./src/app/modules/library/library-routing.module.ts","./src/app/modules/library/library.module.ts","./src/app/modules/library/library/components/library-file-actions-dialog/library-file-actions-dialog.component.html","./src/app/modules/library/library/components/library-file-actions-dialog/library-file-actions-dialog.component.ts","./src/app/modules/library/library/components/library-left-sidebar/library-left-sidebar.component.html","./src/app/modules/library/library/components/library-left-sidebar/library-left-sidebar.component.ts","./src/app/modules/library/library/components/library-file-row-item/library-file-row-item.component.html","./src/app/modules/library/library/components/library-file-row-item/library-file-row-item.component.ts","./src/app/modules/library/library/components/single-library-folder-item/single-library-folder-item.component.html","./src/app/modules/library/library/components/single-library-folder-item/single-library-folder-item.component.ts","./src/app/modules/library/library/components/single-library/single-library.component.html","./src/app/modules/library/library/components/single-library/single-library.component.ts","./src/app/modules/library/library/library.component.html","./src/app/modules/library/library/library.component.ts","./src/app/modules/notifications/components/notification-overview/notification-overview.component.html","./src/app/modules/notifications/notifications-routing.module.ts","./src/app/modules/notifications/components/notification-overview/notification-overview.component.ts","./src/app/modules/notifications/notifications.module.ts","./src/app/modules/teacher-application/contact-info/contact-info.component.html","./src/app/modules/teacher-application/contact-info/contact-info.component.ts","./src/app/modules/teacher-application/education/education.component.html","./src/app/modules/teacher-application/education/education.component.ts","./src/app/modules/teacher-application/experience/experience.component.html","./src/app/modules/teacher-application/experience/experience.component.ts","./src/app/modules/teacher-application/general-info/general-info.component.html","./src/app/modules/teacher-application/general-info/general-info.component.ts","./src/app/modules/teacher-application/resume/resume.component.ts","./src/app/modules/teacher-application/resume/resume.component.html","./src/app/modules/teacher-application/review/review.component.html","./src/app/modules/teacher-application/review/review.component.ts","./src/app/modules/teacher-application/status/status.component.html","./src/app/modules/teacher-application/status/status.component.ts","./src/app/modules/teacher-application/teacher-menu/teacher-menu.component.html","./src/app/modules/teacher-application/teacher-menu/teacher-menu.component.ts","./src/app/modules/teacher-application/teacher-application.component.html","./src/app/modules/teacher-application/teacher-application.component.ts","./src/app/modules/teacher-application/teacher-application-routing.module.ts","./src/app/modules/teacher-application/teacher-availability/teacher-availability.component.ts","./src/app/modules/teacher-application/teacher-availability/teacher-availability.component.html","./src/app/modules/teacher-application/teacher-application.module.ts","./src/app/shared/availability/availability.component.html","./src/app/shared/availability/availability.component.ts","./src/app/shared/block-viewer/block-viewer.component.ts","./src/app/shared/classrooms-check-list/classrooms-check-list.component.html","./src/app/shared/classrooms-check-list/classrooms-check-list.component.ts","./src/app/shared/header/header.component.html","./src/app/shared/header/header.component.ts","./src/app/shared/layout/g-header-back-button/g-header-back-button.component.html","./src/app/shared/layout/g-header-back-button/g-header-back-button.component.ts","./src/app/shared/layout/g-level-circle/g-level-circle.component.ts","./src/app/shared/layout/g-level-circle/g-level-circle.component.html","./src/app/shared/layout/top-menu-container-layout/top-menu-container-layout.component.html","./src/app/shared/layout/top-menu-container-layout/top-menu-container-layout.component.ts","./src/app/shared/loader/loader.component.ts","./src/app/shared/loader/loader.component.html","./src/app/shared/mobile-menu/mobile-menu.component.html","./src/app/shared/mobile-menu/mobile-menu.component.ts","./src/app/shared/notification/notification-row-item/notification-row-item.component.html","./src/app/shared/notification/notification-row-item/notification-row-item.component.ts","./src/app/shared/prime/confirm-dialog/confirm-dialog.component.html","./src/app/shared/prime/confirm-dialog/confirm-dialog.component.ts","./src/app/shared/prime/input/prime-input-dropdown/prime-input-dropdown.component.html","./src/app/shared/prime/input/prime-input-dropdown/prime-input-dropdown.component.ts","./src/app/shared/shared.module.ts","./src/app/core/services/homework.service.ts","./src/app/shared/upload-files/choose-tags/choose-tags.component.ts","./src/app/shared/upload-files/choose-tags/choose-tags.component.html","./src/app/core/directives/dnd.directive.ts","./src/app/shared/upload-files/upload-files.component.html","./src/app/shared/upload-files/upload-files.component.ts","./src/environments/environment.prod.ts","./src/app/core/guards/user.guard.ts","./src/app/modules/not-found/not-found.component.ts","./src/app/modules/not-found/not-found.component.html","./src/app/modules/trial/trial.component.html","./src/app/modules/trial/trial.component.ts","./src/app/app-routing.module.ts","./src/app/core/guards/logged-in.guard.ts","./src/app/helpers/route-animation.ts","./src/app/shared/prime/toast/toast.component.html","./src/app/shared/prime/toast/toast.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/core/interceptors/auth-interceptor.ts","./src/app/core/interceptors/error.interceptor.ts","./src/app/modules/not-found/not-found.module.ts","./src/app/modules/certificate/certificate.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AuthService } from \"../services/auth.service\";\r\n@Injectable()\r\nexport class AuthGuard {\r\n constructor(private authService: AuthService, private router: Router) {}\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable | Promise {\r\n const isAuth = this.authService.getIsAuth();\r\n this.authService.saveLeadDynoAffiliateIdFromRoute(route);\r\n if(!isAuth){\r\n this.router.navigate(['/auth/login'], { queryParams: { returnUrl: state.url }});\r\n }\r\n return isAuth//allow to go to router if true\r\n\r\n }\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Router } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { TeacherStatus, TeacherStatusResponse } from \"../models/teacher.model\";\r\nimport { AuthService } from \"../services/auth.service\";\r\n@Injectable()\r\nexport class ProfileGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router,\r\n ) { }\r\n canActivate(route: ActivatedRouteSnapshot): true | Observable {\r\n const user= this.authService.getLoggedInUser();\r\n const userRole = this.authService.getUserRole();\r\n\r\n // checks if the user role is 'teacher' and their status is 'active'.\r\n // If both conditions are true, it returns true. Otherwise, it calls the method checkTeacherAccessApproval().\r\n\r\n if (userRole && userRole.toLowerCase() === 'teacher') {\r\n if (user.status.toLowerCase() === 'active') {\r\n return true;\r\n }\r\n return this.checkTeacherAccessApproval();\r\n }\r\n // If the user role is not 'teacher', it simply returns true.\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n checkTeacherAccessApproval() {\r\n return this.authService.getTeacherStatus().pipe(\r\n map((data: TeacherStatusResponse) => {\r\n if (data.status === TeacherStatus.APPROVED) {\r\n return true;\r\n } else {\r\n this.authService.setDisabledProfileRoutes(true);\r\n this.router.navigateByUrl('/user-profile/settings', { replaceUrl: true });\r\n return false;\r\n }\r\n })\r\n )\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface CanComponentDeactivate {\r\n canDeactivate: () => Observable | Promise | boolean;\r\n}\r\n\r\n@Injectable()\r\nexport class TeacherApplicationDeactivateGuard {\r\n canDeactivate(component: CanComponentDeactivate): Observable | Promise | boolean {\r\n return component.canDeactivate ? component.canDeactivate() : true;\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from \"@angular/router\";\r\nimport { TeacherStatus, TeacherStatusResponse } from \"../models/teacher.model\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { UserStatus } from \"../models/user.model\";\r\n@Injectable()\r\n\r\nexport class TeacherGuard {\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router,\r\n ) { }\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ) {\r\n const user = this.authService.getLoggedInUser();\r\n const userRole = this.authService.getUserRole();\r\n let accept: boolean = true;\r\n\r\n if (userRole && userRole.toLowerCase() === 'teacher') {\r\n\r\n \r\n console.log(state.url);\r\n // if (state.url.includes(\"dashboard\")) {\r\n // this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n // accept = false;\r\n // return true;\r\n // }\r\n // teacher status is active\r\n\r\n return this.authService.getTeacherStatus().pipe(\r\n map(teacherStatus => {\r\n if (teacherStatus) {\r\n this.authService.setTeacherStatus(teacherStatus);\r\n let statusText = teacherStatus.status.toLowerCase();\r\n\r\n console.log(state.url);\r\n // all other urls except teacher urls\r\n // TODO remove profile checks and possible move them to another guard service\r\n if (!state.url.includes(\"teacher/\")) {\r\n if (statusText.toLowerCase() !== TeacherStatus.APPROVED.toLowerCase()) {\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n accept = false;\r\n return true;\r\n }\r\n if (user.status.toLowerCase(), UserStatus.ACTIVE.toLowerCase()) {\r\n return true;\r\n }\r\n if (statusText === TeacherStatus.WITHDRAWN.toLowerCase() && !state.url.includes(\"profile\") && !state.url.includes(\":status\")) {\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n accept = false;\r\n return true;\r\n }\r\n if (statusText === TeacherStatus.INCOMPLETE.toLowerCase() && !state.url.includes(\"profile\") && state.url.includes(\":status\")) {\r\n accept = false;\r\n\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n return false;\r\n }\r\n if (statusText === TeacherStatus.INCOMPLETE.toLowerCase() && !state.url.includes(\"profile\") && !state.url.includes(\":status\")) {\r\n // return true;\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n accept = true;\r\n return false;\r\n }\r\n if (statusText === TeacherStatus.CONSIDERATION.toLowerCase() && !state.url.includes(\"profile\") && !state.url.includes(\":status\")) {\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n accept = false;\r\n return true;\r\n }\r\n if (statusText === TeacherStatus.CONSIDERATION.toLowerCase() && !state.url.includes(\":status\")) {\r\n accept = true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n return accept//allow to go to router if true\r\n })\r\n );\r\n\r\n // let teacherStatus = (await this.authService.getTeacherStatus().toPromise() as TeacherStatusResponse)\r\n\r\n } else {\r\n if (state.url.includes(\"teacher/\")) {\r\n accept = true;\r\n }\r\n }\r\n\r\n return accept//allow to go to router if true\r\n\r\n }\r\n} ","import { Lesson } from \"./lesson.model\"\r\nimport { Package } from \"./package.model\"\r\nimport { User } from \"./user.model\"\r\n\r\nexport interface Classroom {\r\n id: string,\r\n title: string,\r\n status: Status,\r\n totalHours: number,\r\n hoursLeft: number,\r\n activeLevel: Level.A1 | Level.A2 | Level.B1 | Level.B2 | Level.C1 | Level.C2 | Level.NT21 | Level.NT22 | Level.TBD | Level.BS,\r\n users: User[],\r\n classroomStudents: User[],\r\n type: ClassroomType.PAID | ClassroomType.TRIAL,\r\n language?: string\r\n teacher?: User,\r\n activePackage?: Package,\r\n lessons?: Lesson[],\r\n packages?: Package[]\r\n}\r\n\r\nexport enum ClassroomType {\r\n PAID = 'Paid',\r\n TRIAL = 'Trial'\r\n}\r\n\r\nexport interface ClassroomStudentsResponse {\r\n errorMessage: string,\r\n usersDTOResult: User[]\r\n}\r\n\r\nexport interface StatusClassroomsStats {\r\n total: number,\r\n inActive: number,\r\n onHold: number,\r\n ongoing: number,\r\n pending: number,\r\n expired: number,\r\n}\r\n\r\nexport interface ClassroomSizesStats {\r\n total: number,\r\n group_of_one: number,\r\n group_of_two: number,\r\n group_of_three: number,\r\n group_of_four: number,\r\n}\r\n\r\nexport interface LevelClassroomsStats {\r\n studentCount: number,\r\n hoursCount: number,\r\n level: Level,\r\n errorMessage: string\r\n}\r\n\r\nexport interface CertificateClassroomsStats {\r\n\r\n}\r\n\r\nexport interface PackageClassroomsStats {\r\n packageHours: number,\r\n packageCount: number,\r\n errorMessage: string\r\n}\r\n\r\nexport enum Level {\r\n A1 = \"A1\",\r\n A2 = \"A2\",\r\n B1 = \"B1\",\r\n B2 = \"B2\",\r\n C1 = \"C1\",\r\n C2 = \"C2\",\r\n NT21 = \"NT2.1\", // DUTCH\r\n NT22 = \"NT2.2\", // DUTCH\r\n N5 = \"N5\", // JAPANESE\r\n N4 = \"N4\", // JAPANESE\r\n N3 = \"N3\", // JAPANESE\r\n N2 = \"N2\", // JAPANESE\r\n N1 = \"N1\", // JAPANESE\r\n HSK1 = \"HSK1\", // CHINESE\r\n HSK2 = \"HSK2\", // CHINESE\r\n HSK3 = \"HSK3\", // CHINESE\r\n HSK4 = \"HSK4\", // CHINESE\r\n HSK5 = \"HSK5\", // CHINESE\r\n HSK6 = \"HSK6\", // CHINESE\r\n TOPIK1 = \"TOPIK1\", // KOREAN\r\n TOPIK2 = \"TOPIK2\", // KOREAN\r\n TOPIK3 = \"TOPIK3\", // KOREAN\r\n TOPIK4 = \"TOPIK4\", // KOREAN\r\n TOPIK5 = \"TOPIK5\", // KOREAN\r\n TOPIK6 = \"TOPIK6\", // KOREAN\r\n BS = \"BS\", // Business\r\n TBD = \"TBD\", // To Be Determined\r\n ALL = \"All\"\r\n}\r\n\r\n\r\n\r\nexport enum Status {\r\n EXPIRED = \"Expired\",\r\n INACTIVE = \"Inactive\",\r\n ON_GOING = \"Ongoing\",\r\n ON_HOLD = \"On Hold\",\r\n PENDING = \"Pending\",\r\n TRIAL = \"Trial\",\r\n COMPLETED = \"Completed\",\r\n COMPLETED_TRIAL = \"Trial Completed\",\r\n PENDING_TRIAL = \"Trial Pending\",\r\n ARRANGED_TRIAL = \"Trial Arranged\",\r\n DISMISSED_TRIAL = \"Trial Dismissed\",\r\n ONGOING_TRIAL = \"Trial Ongoing\",\r\n ARRANGED_NO_SHOW = \"Trial No Show\",\r\n DISMISSED = \"Dismissed\",\r\n ALL = \"All\"\r\n}\r\n\r\nexport interface ClassroomsLevelFilter {\r\n level: string,\r\n domLevelID: string\r\n}\r\n\r\nexport interface ClassroomsStatusFilter {\r\n status: string,\r\n domStatusID: string\r\n}\r\n\r\nexport interface StudentHoursStatsOnEachLevelStats {\r\n a1: {\r\n students: number,\r\n hours: number\r\n },\r\n a2: {\r\n students: number,\r\n hours: number\r\n },\r\n b1: {\r\n students: number,\r\n hours: number\r\n },\r\n b2: {\r\n students: number,\r\n hours: number\r\n },\r\n c1: {\r\n students: number,\r\n hours: number\r\n },\r\n c2: {\r\n students: number,\r\n hours: number\r\n }\r\n}\r\n\r\nexport interface ClassroomTeacherRating {\r\n classroomId: string,\r\n teacherId: string,\r\n rateText: string,\r\n level: Level,\r\n createdAt: Date\r\n overall?: RateValue, // TODO THIS IS NOT REQUIRED\r\n organized: RateValue | null,\r\n discipline: RateValue | null,\r\n productive: RateValue | null,\r\n assignments: RateValue | null,\r\n learnSubject: RateValue | null,\r\n explanation: RateValue | null,\r\n performanceEvaluation: RateValue | null,\r\n variety: RateValue | null,\r\n area: RateValue | null,\r\n challenges: RateValue | null,\r\n free: RateValue | null,\r\n encouragement: RateValue | null,\r\n enthusiastic: RateValue | null,\r\n}\r\n\r\nexport interface TrialTeacherRating {\r\n classroomId: string | null,\r\n teacherId: string | null,\r\n level: Level | RateValue,\r\n friendly: RateValue | null,\r\n polite: RateValue | null,\r\n focused: RateValue | null,\r\n explain: RateValue | null,\r\n preferences: RateValue | null,\r\n interest: RateValue | null,\r\n efficiently: RateValue | null,\r\n evaluate: RateValue | null,\r\n schedule: RateValue | null,\r\n [key: string]: RateValue | string | null,\r\n \r\n}\r\n\r\nexport interface RequestNewTeacher {\r\n studentId: string,\r\n teacherId: string,\r\n reason: string\r\n}\r\n\r\nexport enum RateValue {\r\n VERY_BAD = \"Very Bad\",\r\n BAD = \"Bad\",\r\n NEUTRAL = \"Neutral\",\r\n GOOD = \"Good\",\r\n VERY_GOOD = \"Very Good\"\r\n}","import { Country, Language, Timezone } from \"./general.model\";\r\nimport { LessonStatus } from \"./lesson.model\";\r\n\r\nexport let languages: Language[] = [\r\n { \"code\": \"ab\", \"name\": \"Abkhaz\", \"nativeName\": \"аҧсуа\" },\r\n { \"code\": \"aa\", \"name\": \"Afar\", \"nativeName\": \"Afaraf\" },\r\n { \"code\": \"af\", \"name\": \"Afrikaans\", \"nativeName\": \"Afrikaans\" },\r\n { \"code\": \"ak\", \"name\": \"Akan\", \"nativeName\": \"Akan\" },\r\n { \"code\": \"sq\", \"name\": \"Albanian\", \"nativeName\": \"Shqip\" },\r\n { \"code\": \"am\", \"name\": \"Amharic\", \"nativeName\": \"አማርኛ\" },\r\n { \"code\": \"ar\", \"name\": \"Arabic\", \"nativeName\": \"العربية\" },\r\n { \"code\": \"an\", \"name\": \"Aragonese\", \"nativeName\": \"Aragonés\" },\r\n { \"code\": \"hy\", \"name\": \"Armenian\", \"nativeName\": \"Հայերեն\" },\r\n { \"code\": \"as\", \"name\": \"Assamese\", \"nativeName\": \"অসমীয়া\" },\r\n { \"code\": \"av\", \"name\": \"Avaric\", \"nativeName\": \"авар мацӀ, магӀарул мацӀ\" },\r\n { \"code\": \"ae\", \"name\": \"Avestan\", \"nativeName\": \"avesta\" },\r\n { \"code\": \"ay\", \"name\": \"Aymara\", \"nativeName\": \"aymar aru\" },\r\n { \"code\": \"az\", \"name\": \"Azerbaijani\", \"nativeName\": \"azərbaycan dili\" },\r\n { \"code\": \"bm\", \"name\": \"Bambara\", \"nativeName\": \"bamanankan\" },\r\n { \"code\": \"ba\", \"name\": \"Bashkir\", \"nativeName\": \"башҡорт теле\" },\r\n { \"code\": \"eu\", \"name\": \"Basque\", \"nativeName\": \"euskara, euskera\" },\r\n { \"code\": \"be\", \"name\": \"Belarusian\", \"nativeName\": \"Беларуская\" },\r\n { \"code\": \"bn\", \"name\": \"Bengali\", \"nativeName\": \"বাংলা\" },\r\n { \"code\": \"bh\", \"name\": \"Bihari\", \"nativeName\": \"भोजपुरी\" },\r\n { \"code\": \"bi\", \"name\": \"Bislama\", \"nativeName\": \"Bislama\" },\r\n { \"code\": \"bs\", \"name\": \"Bosnian\", \"nativeName\": \"bosanski jezik\" },\r\n { \"code\": \"br\", \"name\": \"Breton\", \"nativeName\": \"brezhoneg\" },\r\n { \"code\": \"bg\", \"name\": \"Bulgarian\", \"nativeName\": \"български език\" },\r\n { \"code\": \"my\", \"name\": \"Burmese\", \"nativeName\": \"ဗမာစာ\" },\r\n { \"code\": \"ca\", \"name\": \"Catalan; Valencian\", \"nativeName\": \"Català\" },\r\n { \"code\": \"ch\", \"name\": \"Chamorro\", \"nativeName\": \"Chamoru\" },\r\n { \"code\": \"ce\", \"name\": \"Chechen\", \"nativeName\": \"нохчийн мотт\" },\r\n { \"code\": \"ny\", \"name\": \"Chichewa; Chewa; Nyanja\", \"nativeName\": \"chiCheŵa, chinyanja\" },\r\n { \"code\": \"zh\", \"name\": \"Chinese\", \"nativeName\": \"中文 (Zhōngwén), 汉语, 漢語\" },\r\n { \"code\": \"cv\", \"name\": \"Chuvash\", \"nativeName\": \"чӑваш чӗлхи\" },\r\n { \"code\": \"kw\", \"name\": \"Cornish\", \"nativeName\": \"Kernewek\" },\r\n { \"code\": \"co\", \"name\": \"Corsican\", \"nativeName\": \"corsu, lingua corsa\" },\r\n { \"code\": \"cr\", \"name\": \"Cree\", \"nativeName\": \"ᓀᐦᐃᔭᐍᐏᐣ\" },\r\n { \"code\": \"hr\", \"name\": \"Croatian\", \"nativeName\": \"hrvatski\" },\r\n { \"code\": \"cs\", \"name\": \"Czech\", \"nativeName\": \"česky, čeština\" },\r\n { \"code\": \"da\", \"name\": \"Danish\", \"nativeName\": \"dansk\" },\r\n { \"code\": \"dv\", \"name\": \"Divehi; Dhivehi; Maldivian;\", \"nativeName\": \"ދިވެހި\" },\r\n { \"code\": \"nl\", \"name\": \"Dutch\", \"nativeName\": \"Nederlands, Vlaams\" },\r\n { \"code\": \"en\", \"name\": \"English\", \"nativeName\": \"English\" },\r\n { \"code\": \"eo\", \"name\": \"Esperanto\", \"nativeName\": \"Esperanto\" },\r\n { \"code\": \"et\", \"name\": \"Estonian\", \"nativeName\": \"eesti, eesti keel\" },\r\n { \"code\": \"ee\", \"name\": \"Ewe\", \"nativeName\": \"Eʋegbe\" },\r\n { \"code\": \"fo\", \"name\": \"Faroese\", \"nativeName\": \"føroyskt\" },\r\n { \"code\": \"fj\", \"name\": \"Fijian\", \"nativeName\": \"vosa Vakaviti\" },\r\n { \"code\": \"fi\", \"name\": \"Finnish\", \"nativeName\": \"suomi, suomen kieli\" },\r\n { \"code\": \"fr\", \"name\": \"French\", \"nativeName\": \"français, langue française\" },\r\n { \"code\": \"ff\", \"name\": \"Fula; Fulah; Pulaar; Pular\", \"nativeName\": \"Fulfulde, Pulaar, Pular\" },\r\n { \"code\": \"gl\", \"name\": \"Galician\", \"nativeName\": \"Galego\" },\r\n { \"code\": \"ka\", \"name\": \"Georgian\", \"nativeName\": \"ქართული\" },\r\n { \"code\": \"de\", \"name\": \"German\", \"nativeName\": \"Deutsch\" },\r\n { \"code\": \"el\", \"name\": \"Greek, Modern\", \"nativeName\": \"Ελληνικά\" },\r\n { \"code\": \"gn\", \"name\": \"Guaraní\", \"nativeName\": \"Avañeẽ\" },\r\n { \"code\": \"gu\", \"name\": \"Gujarati\", \"nativeName\": \"ગુજરાતી\" },\r\n { \"code\": \"ht\", \"name\": \"Haitian; Haitian Creole\", \"nativeName\": \"Kreyòl ayisyen\" },\r\n { \"code\": \"ha\", \"name\": \"Hausa\", \"nativeName\": \"Hausa, هَوُسَ\" },\r\n { \"code\": \"he\", \"name\": \"Hebrew (modern)\", \"nativeName\": \"עברית\" },\r\n { \"code\": \"hz\", \"name\": \"Herero\", \"nativeName\": \"Otjiherero\" },\r\n { \"code\": \"hi\", \"name\": \"Hindi\", \"nativeName\": \"हिन्दी, हिंदी\" },\r\n { \"code\": \"ho\", \"name\": \"Hiri Motu\", \"nativeName\": \"Hiri Motu\" },\r\n { \"code\": \"hu\", \"name\": \"Hungarian\", \"nativeName\": \"Magyar\" },\r\n { \"code\": \"ia\", \"name\": \"Interlingua\", \"nativeName\": \"Interlingua\" },\r\n { \"code\": \"id\", \"name\": \"Indonesian\", \"nativeName\": \"Bahasa Indonesia\" },\r\n { \"code\": \"ie\", \"name\": \"Interlingue\", \"nativeName\": \"Originally called Occidental; then Interlingue after WWII\" },\r\n { \"code\": \"ga\", \"name\": \"Irish\", \"nativeName\": \"Gaeilge\" },\r\n { \"code\": \"ig\", \"name\": \"Igbo\", \"nativeName\": \"Asụsụ Igbo\" },\r\n { \"code\": \"ik\", \"name\": \"Inupiaq\", \"nativeName\": \"Iñupiaq, Iñupiatun\" },\r\n { \"code\": \"io\", \"name\": \"Ido\", \"nativeName\": \"Ido\" },\r\n { \"code\": \"is\", \"name\": \"Icelandic\", \"nativeName\": \"Íslenska\" },\r\n { \"code\": \"it\", \"name\": \"Italian\", \"nativeName\": \"Italiano\" },\r\n { \"code\": \"iu\", \"name\": \"Inuktitut\", \"nativeName\": \"ᐃᓄᒃᑎᑐᑦ\" },\r\n { \"code\": \"ja\", \"name\": \"Japanese\", \"nativeName\": \"日本語 (にほんご/にっぽんご)\" },\r\n { \"code\": \"jv\", \"name\": \"Javanese\", \"nativeName\": \"basa Jawa\" },\r\n { \"code\": \"kl\", \"name\": \"Kalaallisut, Greenlandic\", \"nativeName\": \"kalaallisut, kalaallit oqaasii\" },\r\n { \"code\": \"kn\", \"name\": \"Kannada\", \"nativeName\": \"ಕನ್ನಡ\" },\r\n { \"code\": \"kr\", \"name\": \"Kanuri\", \"nativeName\": \"Kanuri\" },\r\n { \"code\": \"ks\", \"name\": \"Kashmiri\", \"nativeName\": \"कश्मीरी, كشميري‎\" },\r\n { \"code\": \"kk\", \"name\": \"Kazakh\", \"nativeName\": \"Қазақ тілі\" },\r\n { \"code\": \"km\", \"name\": \"Khmer\", \"nativeName\": \"ភាសាខ្មែរ\" },\r\n { \"code\": \"ki\", \"name\": \"Kikuyu, Gikuyu\", \"nativeName\": \"Gĩkũyũ\" },\r\n { \"code\": \"rw\", \"name\": \"Kinyarwanda\", \"nativeName\": \"Ikinyarwanda\" },\r\n { \"code\": \"ky\", \"name\": \"Kirghiz, Kyrgyz\", \"nativeName\": \"кыргыз тили\" },\r\n { \"code\": \"kv\", \"name\": \"Komi\", \"nativeName\": \"коми кыв\" },\r\n { \"code\": \"kg\", \"name\": \"Kongo\", \"nativeName\": \"KiKongo\" },\r\n { \"code\": \"ko\", \"name\": \"Korean\", \"nativeName\": \"한국어 (韓國語), 조선말 (朝鮮語)\" },\r\n { \"code\": \"ku\", \"name\": \"Kurdish\", \"nativeName\": \"Kurdî, كوردی‎\" },\r\n { \"code\": \"kj\", \"name\": \"Kwanyama, Kuanyama\", \"nativeName\": \"Kuanyama\" },\r\n { \"code\": \"la\", \"name\": \"Latin\", \"nativeName\": \"latine, lingua latina\" },\r\n { \"code\": \"lb\", \"name\": \"Luxembourgish, Letzeburgesch\", \"nativeName\": \"Lëtzebuergesch\" },\r\n { \"code\": \"lg\", \"name\": \"Luganda\", \"nativeName\": \"Luganda\" },\r\n { \"code\": \"li\", \"name\": \"Limburgish, Limburgan, Limburger\", \"nativeName\": \"Limburgs\" },\r\n { \"code\": \"ln\", \"name\": \"Lingala\", \"nativeName\": \"Lingála\" },\r\n { \"code\": \"lo\", \"name\": \"Lao\", \"nativeName\": \"ພາສາລາວ\" },\r\n { \"code\": \"lt\", \"name\": \"Lithuanian\", \"nativeName\": \"lietuvių kalba\" },\r\n { \"code\": \"lu\", \"name\": \"Luba-Katanga\", \"nativeName\": \"\" },\r\n { \"code\": \"lv\", \"name\": \"Latvian\", \"nativeName\": \"latviešu valoda\" },\r\n { \"code\": \"gv\", \"name\": \"Manx\", \"nativeName\": \"Gaelg, Gailck\" },\r\n { \"code\": \"mk\", \"name\": \"Macedonian\", \"nativeName\": \"македонски јазик\" },\r\n { \"code\": \"mg\", \"name\": \"Malagasy\", \"nativeName\": \"Malagasy fiteny\" },\r\n { \"code\": \"ms\", \"name\": \"Malay\", \"nativeName\": \"bahasa Melayu, بهاس ملايو‎\" },\r\n { \"code\": \"ml\", \"name\": \"Malayalam\", \"nativeName\": \"മലയാളം\" },\r\n { \"code\": \"mt\", \"name\": \"Maltese\", \"nativeName\": \"Malti\" },\r\n { \"code\": \"mi\", \"name\": \"Māori\", \"nativeName\": \"te reo Māori\" },\r\n { \"code\": \"mr\", \"name\": \"Marathi (Marāṭhī)\", \"nativeName\": \"मराठी\" },\r\n { \"code\": \"mh\", \"name\": \"Marshallese\", \"nativeName\": \"Kajin M̧ajeļ\" },\r\n { \"code\": \"mn\", \"name\": \"Mongolian\", \"nativeName\": \"монгол\" },\r\n { \"code\": \"na\", \"name\": \"Nauru\", \"nativeName\": \"Ekakairũ Naoero\" },\r\n { \"code\": \"nv\", \"name\": \"Navajo, Navaho\", \"nativeName\": \"Diné bizaad, Dinékʼehǰí\" },\r\n { \"code\": \"nb\", \"name\": \"Norwegian Bokmål\", \"nativeName\": \"Norsk bokmål\" },\r\n { \"code\": \"nd\", \"name\": \"North Ndebele\", \"nativeName\": \"isiNdebele\" },\r\n { \"code\": \"ne\", \"name\": \"Nepali\", \"nativeName\": \"नेपाली\" },\r\n { \"code\": \"ng\", \"name\": \"Ndonga\", \"nativeName\": \"Owambo\" },\r\n { \"code\": \"nn\", \"name\": \"Norwegian Nynorsk\", \"nativeName\": \"Norsk nynorsk\" },\r\n { \"code\": \"no\", \"name\": \"Norwegian\", \"nativeName\": \"Norsk\" },\r\n { \"code\": \"ii\", \"name\": \"Nuosu\", \"nativeName\": \"ꆈꌠ꒿ Nuosuhxop\" },\r\n { \"code\": \"nr\", \"name\": \"South Ndebele\", \"nativeName\": \"isiNdebele\" },\r\n { \"code\": \"oc\", \"name\": \"Occitan\", \"nativeName\": \"Occitan\" },\r\n { \"code\": \"oj\", \"name\": \"Ojibwe, Ojibwa\", \"nativeName\": \"ᐊᓂᔑᓈᐯᒧᐎᓐ\" },\r\n // { \"code\": \"cu\", \"name\": \"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic\", \"nativeName\": \"ѩзыкъ словѣньскъ\" },\r\n { \"code\": \"om\", \"name\": \"Oromo\", \"nativeName\": \"Afaan Oromoo\" },\r\n { \"code\": \"or\", \"name\": \"Oriya\", \"nativeName\": \"ଓଡ଼ିଆ\" },\r\n { \"code\": \"os\", \"name\": \"Ossetian, Ossetic\", \"nativeName\": \"ирон æвзаг\" },\r\n { \"code\": \"pa\", \"name\": \"Panjabi, Punjabi\", \"nativeName\": \"ਪੰਜਾਬੀ, پنجابی‎\" },\r\n { \"code\": \"pi\", \"name\": \"Pāli\", \"nativeName\": \"पाऴि\" },\r\n { \"code\": \"fa\", \"name\": \"Persian\", \"nativeName\": \"فارسی\" },\r\n { \"code\": \"pl\", \"name\": \"Polish\", \"nativeName\": \"polski\" },\r\n { \"code\": \"ps\", \"name\": \"Pashto, Pushto\", \"nativeName\": \"پښتو\" },\r\n { \"code\": \"pt\", \"name\": \"Portuguese\", \"nativeName\": \"Português\" },\r\n { \"code\": \"qu\", \"name\": \"Quechua\", \"nativeName\": \"Runa Simi, Kichwa\" },\r\n { \"code\": \"rm\", \"name\": \"Romansh\", \"nativeName\": \"rumantsch grischun\" },\r\n { \"code\": \"rn\", \"name\": \"Kirundi\", \"nativeName\": \"kiRundi\" },\r\n { \"code\": \"ro\", \"name\": \"Romanian, Moldavian, Moldovan\", \"nativeName\": \"română\" },\r\n { \"code\": \"ru\", \"name\": \"Russian\", \"nativeName\": \"русский язык\" },\r\n { \"code\": \"sa\", \"name\": \"Sanskrit (Saṁskṛta)\", \"nativeName\": \"संस्कृतम्\" },\r\n { \"code\": \"sc\", \"name\": \"Sardinian\", \"nativeName\": \"sardu\" },\r\n { \"code\": \"sd\", \"name\": \"Sindhi\", \"nativeName\": \"सिन्धी, سنڌي، سندھی‎\" },\r\n { \"code\": \"se\", \"name\": \"Northern Sami\", \"nativeName\": \"Davvisámegiella\" },\r\n { \"code\": \"sm\", \"name\": \"Samoan\", \"nativeName\": \"gagana faa Samoa\" },\r\n { \"code\": \"sg\", \"name\": \"Sango\", \"nativeName\": \"yângâ tî sängö\" },\r\n { \"code\": \"sr\", \"name\": \"Serbian\", \"nativeName\": \"српски језик\" },\r\n { \"code\": \"gd\", \"name\": \"Scottish Gaelic; Gaelic\", \"nativeName\": \"Gàidhlig\" },\r\n { \"code\": \"sn\", \"name\": \"Shona\", \"nativeName\": \"chiShona\" },\r\n { \"code\": \"si\", \"name\": \"Sinhala, Sinhalese\", \"nativeName\": \"සිංහල\" },\r\n { \"code\": \"sk\", \"name\": \"Slovak\", \"nativeName\": \"slovenčina\" },\r\n { \"code\": \"sl\", \"name\": \"Slovene\", \"nativeName\": \"slovenščina\" },\r\n { \"code\": \"so\", \"name\": \"Somali\", \"nativeName\": \"Soomaaliga, af Soomaali\" },\r\n { \"code\": \"st\", \"name\": \"Southern Sotho\", \"nativeName\": \"Sesotho\" },\r\n { \"code\": \"es\", \"name\": \"Spanish; Castilian\", \"nativeName\": \"español, castellano\" },\r\n { \"code\": \"su\", \"name\": \"Sundanese\", \"nativeName\": \"Basa Sunda\" },\r\n { \"code\": \"sw\", \"name\": \"Swahili\", \"nativeName\": \"Kiswahili\" },\r\n { \"code\": \"ss\", \"name\": \"Swati\", \"nativeName\": \"SiSwati\" },\r\n { \"code\": \"sv\", \"name\": \"Swedish\", \"nativeName\": \"svenska\" },\r\n { \"code\": \"ta\", \"name\": \"Tamil\", \"nativeName\": \"தமிழ்\" },\r\n { \"code\": \"te\", \"name\": \"Telugu\", \"nativeName\": \"తెలుగు\" },\r\n { \"code\": \"tg\", \"name\": \"Tajik\", \"nativeName\": \"тоҷикӣ, toğikī, تاجیکی‎\" },\r\n { \"code\": \"th\", \"name\": \"Thai\", \"nativeName\": \"ไทย\" },\r\n { \"code\": \"ti\", \"name\": \"Tigrinya\", \"nativeName\": \"ትግርኛ\" },\r\n { \"code\": \"bo\", \"name\": \"Tibetan Standard, Tibetan, Central\", \"nativeName\": \"བོད་ཡིག\" },\r\n { \"code\": \"tk\", \"name\": \"Turkmen\", \"nativeName\": \"Türkmen, Түркмен\" },\r\n { \"code\": \"tl\", \"name\": \"Tagalog\", \"nativeName\": \"Wikang Tagalog, ᜏᜒᜃᜅ᜔ ᜆᜄᜎᜓᜄ᜔\" },\r\n { \"code\": \"tn\", \"name\": \"Tswana\", \"nativeName\": \"Setswana\" },\r\n { \"code\": \"to\", \"name\": \"Tonga (Tonga Islands)\", \"nativeName\": \"faka Tonga\" },\r\n { \"code\": \"tr\", \"name\": \"Turkish\", \"nativeName\": \"Türkçe\" },\r\n { \"code\": \"ts\", \"name\": \"Tsonga\", \"nativeName\": \"Xitsonga\" },\r\n { \"code\": \"tt\", \"name\": \"Tatar\", \"nativeName\": \"татарча, tatarça, تاتارچا‎\" },\r\n { \"code\": \"tw\", \"name\": \"Twi\", \"nativeName\": \"Twi\" },\r\n { \"code\": \"ty\", \"name\": \"Tahitian\", \"nativeName\": \"Reo Tahiti\" },\r\n { \"code\": \"ug\", \"name\": \"Uighur, Uyghur\", \"nativeName\": \"Uyƣurqə, ئۇيغۇرچە‎\" },\r\n { \"code\": \"uk\", \"name\": \"Ukrainian\", \"nativeName\": \"українська\" },\r\n { \"code\": \"ur\", \"name\": \"Urdu\", \"nativeName\": \"اردو\" },\r\n { \"code\": \"uz\", \"name\": \"Uzbek\", \"nativeName\": \"zbek, Ўзбек, أۇزبېك‎\" },\r\n { \"code\": \"ve\", \"name\": \"Venda\", \"nativeName\": \"Tshivenḓa\" },\r\n { \"code\": \"vi\", \"name\": \"Vietnamese\", \"nativeName\": \"Tiếng Việt\" },\r\n { \"code\": \"vo\", \"name\": \"Volapük\", \"nativeName\": \"Volapük\" },\r\n { \"code\": \"wa\", \"name\": \"Walloon\", \"nativeName\": \"Walon\" },\r\n { \"code\": \"cy\", \"name\": \"Welsh\", \"nativeName\": \"Cymraeg\" },\r\n { \"code\": \"wo\", \"name\": \"Wolof\", \"nativeName\": \"Wollof\" },\r\n { \"code\": \"fy\", \"name\": \"Western Frisian\", \"nativeName\": \"Frysk\" },\r\n { \"code\": \"xh\", \"name\": \"Xhosa\", \"nativeName\": \"isiXhosa\" },\r\n { \"code\": \"yi\", \"name\": \"Yiddish\", \"nativeName\": \"ייִדיש\" },\r\n { \"code\": \"yo\", \"name\": \"Yoruba\", \"nativeName\": \"Yorùbá\" },\r\n { \"code\": \"za\", \"name\": \"Zhuang, Chuang\", \"nativeName\": \"Saɯ cueŋƅ, Saw cuengh\" }\r\n]\r\n\r\nexport let countries: Country[] = [{\r\n \"name\": \"Ascension Island\",\r\n \"code\": \"AC\",\r\n \"emoji\": \"🇦🇨\",\r\n \"unicode\": \"U+1F1E6 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AC.svg\"\r\n }, {\r\n \"name\": \"Andorra\",\r\n \"code\": \"AD\",\r\n \"emoji\": \"🇦🇩\",\r\n \"unicode\": \"U+1F1E6 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AD.svg\"\r\n }, {\r\n \"name\": \"United Arab Emirates\",\r\n \"code\": \"AE\",\r\n \"emoji\": \"🇦🇪\",\r\n \"unicode\": \"U+1F1E6 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AE.svg\"\r\n }, {\r\n \"name\": \"Afghanistan\",\r\n \"code\": \"AF\",\r\n \"emoji\": \"🇦🇫\",\r\n \"unicode\": \"U+1F1E6 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AF.svg\"\r\n }, {\r\n \"name\": \"Antigua & Barbuda\",\r\n \"code\": \"AG\",\r\n \"emoji\": \"🇦🇬\",\r\n \"unicode\": \"U+1F1E6 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AG.svg\"\r\n }, {\r\n \"name\": \"Anguilla\",\r\n \"code\": \"AI\",\r\n \"emoji\": \"🇦🇮\",\r\n \"unicode\": \"U+1F1E6 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AI.svg\"\r\n }, {\r\n \"name\": \"Albania\",\r\n \"code\": \"AL\",\r\n \"emoji\": \"🇦🇱\",\r\n \"unicode\": \"U+1F1E6 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AL.svg\"\r\n }, {\r\n \"name\": \"Armenia\",\r\n \"code\": \"AM\",\r\n \"emoji\": \"🇦🇲\",\r\n \"unicode\": \"U+1F1E6 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AM.svg\"\r\n }, {\r\n \"name\": \"Angola\",\r\n \"code\": \"AO\",\r\n \"emoji\": \"🇦🇴\",\r\n \"unicode\": \"U+1F1E6 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AO.svg\"\r\n }, {\r\n \"name\": \"Antarctica\",\r\n \"code\": \"AQ\",\r\n \"emoji\": \"🇦🇶\",\r\n \"unicode\": \"U+1F1E6 U+1F1F6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AQ.svg\"\r\n }, {\r\n \"name\": \"Argentina\",\r\n \"code\": \"AR\",\r\n \"emoji\": \"🇦🇷\",\r\n \"unicode\": \"U+1F1E6 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AR.svg\"\r\n }, {\r\n \"name\": \"American Samoa\",\r\n \"code\": \"AS\",\r\n \"emoji\": \"🇦🇸\",\r\n \"unicode\": \"U+1F1E6 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AS.svg\"\r\n }, {\r\n \"name\": \"Austria\",\r\n \"code\": \"AT\",\r\n \"emoji\": \"🇦🇹\",\r\n \"unicode\": \"U+1F1E6 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AT.svg\"\r\n }, {\r\n \"name\": \"Australia\",\r\n \"code\": \"AU\",\r\n \"emoji\": \"🇦🇺\",\r\n \"unicode\": \"U+1F1E6 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AU.svg\"\r\n }, {\r\n \"name\": \"Aruba\",\r\n \"code\": \"AW\",\r\n \"emoji\": \"🇦🇼\",\r\n \"unicode\": \"U+1F1E6 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AW.svg\"\r\n }, {\r\n \"name\": \"Åland Islands\",\r\n \"code\": \"AX\",\r\n \"emoji\": \"🇦🇽\",\r\n \"unicode\": \"U+1F1E6 U+1F1FD\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AX.svg\"\r\n }, {\r\n \"name\": \"Azerbaijan\",\r\n \"code\": \"AZ\",\r\n \"emoji\": \"🇦🇿\",\r\n \"unicode\": \"U+1F1E6 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/AZ.svg\"\r\n }, {\r\n \"name\": \"Bosnia & Herzegovina\",\r\n \"code\": \"BA\",\r\n \"emoji\": \"🇧🇦\",\r\n \"unicode\": \"U+1F1E7 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BA.svg\"\r\n }, {\r\n \"name\": \"Barbados\",\r\n \"code\": \"BB\",\r\n \"emoji\": \"🇧🇧\",\r\n \"unicode\": \"U+1F1E7 U+1F1E7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BB.svg\"\r\n }, {\r\n \"name\": \"Bangladesh\",\r\n \"code\": \"BD\",\r\n \"emoji\": \"🇧🇩\",\r\n \"unicode\": \"U+1F1E7 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BD.svg\"\r\n }, {\r\n \"name\": \"Belgium\",\r\n \"code\": \"BE\",\r\n \"emoji\": \"🇧🇪\",\r\n \"unicode\": \"U+1F1E7 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BE.svg\"\r\n }, {\r\n \"name\": \"Burkina Faso\",\r\n \"code\": \"BF\",\r\n \"emoji\": \"🇧🇫\",\r\n \"unicode\": \"U+1F1E7 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BF.svg\"\r\n }, {\r\n \"name\": \"Bulgaria\",\r\n \"code\": \"BG\",\r\n \"emoji\": \"🇧🇬\",\r\n \"unicode\": \"U+1F1E7 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BG.svg\"\r\n }, {\r\n \"name\": \"Bahrain\",\r\n \"code\": \"BH\",\r\n \"emoji\": \"🇧🇭\",\r\n \"unicode\": \"U+1F1E7 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BH.svg\"\r\n }, {\r\n \"name\": \"Burundi\",\r\n \"code\": \"BI\",\r\n \"emoji\": \"🇧🇮\",\r\n \"unicode\": \"U+1F1E7 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BI.svg\"\r\n }, {\r\n \"name\": \"Benin\",\r\n \"code\": \"BJ\",\r\n \"emoji\": \"🇧🇯\",\r\n \"unicode\": \"U+1F1E7 U+1F1EF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BJ.svg\"\r\n }, {\r\n \"name\": \"St. Barthélemy\",\r\n \"code\": \"BL\",\r\n \"emoji\": \"🇧🇱\",\r\n \"unicode\": \"U+1F1E7 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BL.svg\"\r\n }, {\r\n \"name\": \"Bermuda\",\r\n \"code\": \"BM\",\r\n \"emoji\": \"🇧🇲\",\r\n \"unicode\": \"U+1F1E7 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BM.svg\"\r\n }, {\r\n \"name\": \"Brunei\",\r\n \"code\": \"BN\",\r\n \"emoji\": \"🇧🇳\",\r\n \"unicode\": \"U+1F1E7 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BN.svg\"\r\n }, {\r\n \"name\": \"Bolivia\",\r\n \"code\": \"BO\",\r\n \"emoji\": \"🇧🇴\",\r\n \"unicode\": \"U+1F1E7 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BO.svg\"\r\n }, {\r\n \"name\": \"Caribbean Netherlands\",\r\n \"code\": \"BQ\",\r\n \"emoji\": \"🇧🇶\",\r\n \"unicode\": \"U+1F1E7 U+1F1F6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BQ.svg\"\r\n }, {\r\n \"name\": \"Brazil\",\r\n \"code\": \"BR\",\r\n \"emoji\": \"🇧🇷\",\r\n \"unicode\": \"U+1F1E7 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BR.svg\"\r\n }, {\r\n \"name\": \"Bahamas\",\r\n \"code\": \"BS\",\r\n \"emoji\": \"🇧🇸\",\r\n \"unicode\": \"U+1F1E7 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BS.svg\"\r\n }, {\r\n \"name\": \"Bhutan\",\r\n \"code\": \"BT\",\r\n \"emoji\": \"🇧🇹\",\r\n \"unicode\": \"U+1F1E7 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BT.svg\"\r\n }, {\r\n \"name\": \"Bouvet Island\",\r\n \"code\": \"BV\",\r\n \"emoji\": \"🇧🇻\",\r\n \"unicode\": \"U+1F1E7 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BV.svg\"\r\n }, {\r\n \"name\": \"Botswana\",\r\n \"code\": \"BW\",\r\n \"emoji\": \"🇧🇼\",\r\n \"unicode\": \"U+1F1E7 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BW.svg\"\r\n }, {\r\n \"name\": \"Belarus\",\r\n \"code\": \"BY\",\r\n \"emoji\": \"🇧🇾\",\r\n \"unicode\": \"U+1F1E7 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BY.svg\"\r\n }, {\r\n \"name\": \"Belize\",\r\n \"code\": \"BZ\",\r\n \"emoji\": \"🇧🇿\",\r\n \"unicode\": \"U+1F1E7 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/BZ.svg\"\r\n }, {\r\n \"name\": \"Canada\",\r\n \"code\": \"CA\",\r\n \"emoji\": \"🇨🇦\",\r\n \"unicode\": \"U+1F1E8 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CA.svg\"\r\n }, {\r\n \"name\": \"Cocos (Keeling) Islands\",\r\n \"code\": \"CC\",\r\n \"emoji\": \"🇨🇨\",\r\n \"unicode\": \"U+1F1E8 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CC.svg\"\r\n }, {\r\n \"name\": \"Congo - Kinshasa\",\r\n \"code\": \"CD\",\r\n \"emoji\": \"🇨🇩\",\r\n \"unicode\": \"U+1F1E8 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CD.svg\"\r\n }, {\r\n \"name\": \"Central African Republic\",\r\n \"code\": \"CF\",\r\n \"emoji\": \"🇨🇫\",\r\n \"unicode\": \"U+1F1E8 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CF.svg\"\r\n }, {\r\n \"name\": \"Congo - Brazzaville\",\r\n \"code\": \"CG\",\r\n \"emoji\": \"🇨🇬\",\r\n \"unicode\": \"U+1F1E8 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CG.svg\"\r\n }, {\r\n \"name\": \"Switzerland\",\r\n \"code\": \"CH\",\r\n \"emoji\": \"🇨🇭\",\r\n \"unicode\": \"U+1F1E8 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CH.svg\"\r\n }, {\r\n \"name\": \"Côte d’Ivoire\",\r\n \"code\": \"CI\",\r\n \"emoji\": \"🇨🇮\",\r\n \"unicode\": \"U+1F1E8 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CI.svg\"\r\n }, {\r\n \"name\": \"Cook Islands\",\r\n \"code\": \"CK\",\r\n \"emoji\": \"🇨🇰\",\r\n \"unicode\": \"U+1F1E8 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CK.svg\"\r\n }, {\r\n \"name\": \"Chile\",\r\n \"code\": \"CL\",\r\n \"emoji\": \"🇨🇱\",\r\n \"unicode\": \"U+1F1E8 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CL.svg\"\r\n }, {\r\n \"name\": \"Cameroon\",\r\n \"code\": \"CM\",\r\n \"emoji\": \"🇨🇲\",\r\n \"unicode\": \"U+1F1E8 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CM.svg\"\r\n }, {\r\n \"name\": \"China\",\r\n \"code\": \"CN\",\r\n \"emoji\": \"🇨🇳\",\r\n \"unicode\": \"U+1F1E8 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CN.svg\"\r\n }, {\r\n \"name\": \"Colombia\",\r\n \"code\": \"CO\",\r\n \"emoji\": \"🇨🇴\",\r\n \"unicode\": \"U+1F1E8 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CO.svg\"\r\n }, {\r\n \"name\": \"Clipperton Island\",\r\n \"code\": \"CP\",\r\n \"emoji\": \"🇨🇵\",\r\n \"unicode\": \"U+1F1E8 U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CP.svg\"\r\n }, {\r\n \"name\": \"Costa Rica\",\r\n \"code\": \"CR\",\r\n \"emoji\": \"🇨🇷\",\r\n \"unicode\": \"U+1F1E8 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CR.svg\"\r\n }, {\r\n \"name\": \"Cuba\",\r\n \"code\": \"CU\",\r\n \"emoji\": \"🇨🇺\",\r\n \"unicode\": \"U+1F1E8 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CU.svg\"\r\n }, {\r\n \"name\": \"Cape Verde\",\r\n \"code\": \"CV\",\r\n \"emoji\": \"🇨🇻\",\r\n \"unicode\": \"U+1F1E8 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CV.svg\"\r\n }, {\r\n \"name\": \"Curaçao\",\r\n \"code\": \"CW\",\r\n \"emoji\": \"🇨🇼\",\r\n \"unicode\": \"U+1F1E8 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CW.svg\"\r\n }, {\r\n \"name\": \"Christmas Island\",\r\n \"code\": \"CX\",\r\n \"emoji\": \"🇨🇽\",\r\n \"unicode\": \"U+1F1E8 U+1F1FD\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CX.svg\"\r\n }, {\r\n \"name\": \"Cyprus\",\r\n \"code\": \"CY\",\r\n \"emoji\": \"🇨🇾\",\r\n \"unicode\": \"U+1F1E8 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CY.svg\"\r\n }, {\r\n \"name\": \"Czechia\",\r\n \"code\": \"CZ\",\r\n \"emoji\": \"🇨🇿\",\r\n \"unicode\": \"U+1F1E8 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/CZ.svg\"\r\n }, {\r\n \"name\": \"Germany\",\r\n \"code\": \"DE\",\r\n \"emoji\": \"🇩🇪\",\r\n \"unicode\": \"U+1F1E9 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DE.svg\"\r\n }, {\r\n \"name\": \"Diego Garcia\",\r\n \"code\": \"DG\",\r\n \"emoji\": \"🇩🇬\",\r\n \"unicode\": \"U+1F1E9 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DG.svg\"\r\n }, {\r\n \"name\": \"Djibouti\",\r\n \"code\": \"DJ\",\r\n \"emoji\": \"🇩🇯\",\r\n \"unicode\": \"U+1F1E9 U+1F1EF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DJ.svg\"\r\n }, {\r\n \"name\": \"Denmark\",\r\n \"code\": \"DK\",\r\n \"emoji\": \"🇩🇰\",\r\n \"unicode\": \"U+1F1E9 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DK.svg\"\r\n }, {\r\n \"name\": \"Dominica\",\r\n \"code\": \"DM\",\r\n \"emoji\": \"🇩🇲\",\r\n \"unicode\": \"U+1F1E9 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DM.svg\"\r\n }, {\r\n \"name\": \"Dominican Republic\",\r\n \"code\": \"DO\",\r\n \"emoji\": \"🇩🇴\",\r\n \"unicode\": \"U+1F1E9 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DO.svg\"\r\n }, {\r\n \"name\": \"Algeria\",\r\n \"code\": \"DZ\",\r\n \"emoji\": \"🇩🇿\",\r\n \"unicode\": \"U+1F1E9 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/DZ.svg\"\r\n }, {\r\n \"name\": \"Ceuta & Melilla\",\r\n \"code\": \"EA\",\r\n \"emoji\": \"🇪🇦\",\r\n \"unicode\": \"U+1F1EA U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EA.svg\"\r\n }, {\r\n \"name\": \"Ecuador\",\r\n \"code\": \"EC\",\r\n \"emoji\": \"🇪🇨\",\r\n \"unicode\": \"U+1F1EA U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EC.svg\"\r\n }, {\r\n \"name\": \"Estonia\",\r\n \"code\": \"EE\",\r\n \"emoji\": \"🇪🇪\",\r\n \"unicode\": \"U+1F1EA U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EE.svg\"\r\n }, {\r\n \"name\": \"Egypt\",\r\n \"code\": \"EG\",\r\n \"emoji\": \"🇪🇬\",\r\n \"unicode\": \"U+1F1EA U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EG.svg\"\r\n }, {\r\n \"name\": \"Western Sahara\",\r\n \"code\": \"EH\",\r\n \"emoji\": \"🇪🇭\",\r\n \"unicode\": \"U+1F1EA U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EH.svg\"\r\n }, {\r\n \"name\": \"Eritrea\",\r\n \"code\": \"ER\",\r\n \"emoji\": \"🇪🇷\",\r\n \"unicode\": \"U+1F1EA U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ER.svg\"\r\n }, {\r\n \"name\": \"Spain\",\r\n \"code\": \"ES\",\r\n \"emoji\": \"🇪🇸\",\r\n \"unicode\": \"U+1F1EA U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ES.svg\"\r\n }, {\r\n \"name\": \"Ethiopia\",\r\n \"code\": \"ET\",\r\n \"emoji\": \"🇪🇹\",\r\n \"unicode\": \"U+1F1EA U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ET.svg\"\r\n }, {\r\n \"name\": \"European Union\",\r\n \"code\": \"EU\",\r\n \"emoji\": \"🇪🇺\",\r\n \"unicode\": \"U+1F1EA U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/EU.svg\"\r\n }, {\r\n \"name\": \"Finland\",\r\n \"code\": \"FI\",\r\n \"emoji\": \"🇫🇮\",\r\n \"unicode\": \"U+1F1EB U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FI.svg\"\r\n }, {\r\n \"name\": \"Fiji\",\r\n \"code\": \"FJ\",\r\n \"emoji\": \"🇫🇯\",\r\n \"unicode\": \"U+1F1EB U+1F1EF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FJ.svg\"\r\n }, {\r\n \"name\": \"Falkland Islands\",\r\n \"code\": \"FK\",\r\n \"emoji\": \"🇫🇰\",\r\n \"unicode\": \"U+1F1EB U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FK.svg\"\r\n }, {\r\n \"name\": \"Micronesia\",\r\n \"code\": \"FM\",\r\n \"emoji\": \"🇫🇲\",\r\n \"unicode\": \"U+1F1EB U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FM.svg\"\r\n }, {\r\n \"name\": \"Faroe Islands\",\r\n \"code\": \"FO\",\r\n \"emoji\": \"🇫🇴\",\r\n \"unicode\": \"U+1F1EB U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FO.svg\"\r\n }, {\r\n \"name\": \"France\",\r\n \"code\": \"FR\",\r\n \"emoji\": \"🇫🇷\",\r\n \"unicode\": \"U+1F1EB U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/FR.svg\"\r\n }, {\r\n \"name\": \"Gabon\",\r\n \"code\": \"GA\",\r\n \"emoji\": \"🇬🇦\",\r\n \"unicode\": \"U+1F1EC U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GA.svg\"\r\n }, {\r\n \"name\": \"United Kingdom\",\r\n \"code\": \"GB\",\r\n \"emoji\": \"🇬🇧\",\r\n \"unicode\": \"U+1F1EC U+1F1E7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GB.svg\"\r\n }, {\r\n \"name\": \"Grenada\",\r\n \"code\": \"GD\",\r\n \"emoji\": \"🇬🇩\",\r\n \"unicode\": \"U+1F1EC U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GD.svg\"\r\n }, {\r\n \"name\": \"Georgia\",\r\n \"code\": \"GE\",\r\n \"emoji\": \"🇬🇪\",\r\n \"unicode\": \"U+1F1EC U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GE.svg\"\r\n }, {\r\n \"name\": \"French Guiana\",\r\n \"code\": \"GF\",\r\n \"emoji\": \"🇬🇫\",\r\n \"unicode\": \"U+1F1EC U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GF.svg\"\r\n }, {\r\n \"name\": \"Guernsey\",\r\n \"code\": \"GG\",\r\n \"emoji\": \"🇬🇬\",\r\n \"unicode\": \"U+1F1EC U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GG.svg\"\r\n }, {\r\n \"name\": \"Ghana\",\r\n \"code\": \"GH\",\r\n \"emoji\": \"🇬🇭\",\r\n \"unicode\": \"U+1F1EC U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GH.svg\"\r\n }, {\r\n \"name\": \"Gibraltar\",\r\n \"code\": \"GI\",\r\n \"emoji\": \"🇬🇮\",\r\n \"unicode\": \"U+1F1EC U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GI.svg\"\r\n }, {\r\n \"name\": \"Greenland\",\r\n \"code\": \"GL\",\r\n \"emoji\": \"🇬🇱\",\r\n \"unicode\": \"U+1F1EC U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GL.svg\"\r\n }, {\r\n \"name\": \"Gambia\",\r\n \"code\": \"GM\",\r\n \"emoji\": \"🇬🇲\",\r\n \"unicode\": \"U+1F1EC U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GM.svg\"\r\n }, {\r\n \"name\": \"Guinea\",\r\n \"code\": \"GN\",\r\n \"emoji\": \"🇬🇳\",\r\n \"unicode\": \"U+1F1EC U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GN.svg\"\r\n }, {\r\n \"name\": \"Guadeloupe\",\r\n \"code\": \"GP\",\r\n \"emoji\": \"🇬🇵\",\r\n \"unicode\": \"U+1F1EC U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GP.svg\"\r\n }, {\r\n \"name\": \"Equatorial Guinea\",\r\n \"code\": \"GQ\",\r\n \"emoji\": \"🇬🇶\",\r\n \"unicode\": \"U+1F1EC U+1F1F6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GQ.svg\"\r\n }, {\r\n \"name\": \"Greece\",\r\n \"code\": \"GR\",\r\n \"emoji\": \"🇬🇷\",\r\n \"unicode\": \"U+1F1EC U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GR.svg\"\r\n }, {\r\n \"name\": \"South Georgia & South Sandwich Islands\",\r\n \"code\": \"GS\",\r\n \"emoji\": \"🇬🇸\",\r\n \"unicode\": \"U+1F1EC U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GS.svg\"\r\n }, {\r\n \"name\": \"Guatemala\",\r\n \"code\": \"GT\",\r\n \"emoji\": \"🇬🇹\",\r\n \"unicode\": \"U+1F1EC U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GT.svg\"\r\n }, {\r\n \"name\": \"Guam\",\r\n \"code\": \"GU\",\r\n \"emoji\": \"🇬🇺\",\r\n \"unicode\": \"U+1F1EC U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GU.svg\"\r\n }, {\r\n \"name\": \"Guinea-Bissau\",\r\n \"code\": \"GW\",\r\n \"emoji\": \"🇬🇼\",\r\n \"unicode\": \"U+1F1EC U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GW.svg\"\r\n }, {\r\n \"name\": \"Guyana\",\r\n \"code\": \"GY\",\r\n \"emoji\": \"🇬🇾\",\r\n \"unicode\": \"U+1F1EC U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/GY.svg\"\r\n }, {\r\n \"name\": \"Hong Kong SAR China\",\r\n \"code\": \"HK\",\r\n \"emoji\": \"🇭🇰\",\r\n \"unicode\": \"U+1F1ED U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HK.svg\"\r\n }, {\r\n \"name\": \"Heard & McDonald Islands\",\r\n \"code\": \"HM\",\r\n \"emoji\": \"🇭🇲\",\r\n \"unicode\": \"U+1F1ED U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HM.svg\"\r\n }, {\r\n \"name\": \"Honduras\",\r\n \"code\": \"HN\",\r\n \"emoji\": \"🇭🇳\",\r\n \"unicode\": \"U+1F1ED U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HN.svg\"\r\n }, {\r\n \"name\": \"Croatia\",\r\n \"code\": \"HR\",\r\n \"emoji\": \"🇭🇷\",\r\n \"unicode\": \"U+1F1ED U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HR.svg\"\r\n }, {\r\n \"name\": \"Haiti\",\r\n \"code\": \"HT\",\r\n \"emoji\": \"🇭🇹\",\r\n \"unicode\": \"U+1F1ED U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HT.svg\"\r\n }, {\r\n \"name\": \"Hungary\",\r\n \"code\": \"HU\",\r\n \"emoji\": \"🇭🇺\",\r\n \"unicode\": \"U+1F1ED U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/HU.svg\"\r\n }, {\r\n \"name\": \"Canary Islands\",\r\n \"code\": \"IC\",\r\n \"emoji\": \"🇮🇨\",\r\n \"unicode\": \"U+1F1EE U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IC.svg\"\r\n }, {\r\n \"name\": \"Indonesia\",\r\n \"code\": \"ID\",\r\n \"emoji\": \"🇮🇩\",\r\n \"unicode\": \"U+1F1EE U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ID.svg\"\r\n }, {\r\n \"name\": \"Ireland\",\r\n \"code\": \"IE\",\r\n \"emoji\": \"🇮🇪\",\r\n \"unicode\": \"U+1F1EE U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IE.svg\"\r\n }, {\r\n \"name\": \"Israel\",\r\n \"code\": \"IL\",\r\n \"emoji\": \"🇮🇱\",\r\n \"unicode\": \"U+1F1EE U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IL.svg\"\r\n }, {\r\n \"name\": \"Isle of Man\",\r\n \"code\": \"IM\",\r\n \"emoji\": \"🇮🇲\",\r\n \"unicode\": \"U+1F1EE U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IM.svg\"\r\n }, {\r\n \"name\": \"India\",\r\n \"code\": \"IN\",\r\n \"emoji\": \"🇮🇳\",\r\n \"unicode\": \"U+1F1EE U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IN.svg\"\r\n }, {\r\n \"name\": \"British Indian Ocean Territory\",\r\n \"code\": \"IO\",\r\n \"emoji\": \"🇮🇴\",\r\n \"unicode\": \"U+1F1EE U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IO.svg\"\r\n }, {\r\n \"name\": \"Iraq\",\r\n \"code\": \"IQ\",\r\n \"emoji\": \"🇮🇶\",\r\n \"unicode\": \"U+1F1EE U+1F1F6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IQ.svg\"\r\n }, {\r\n \"name\": \"Iran\",\r\n \"code\": \"IR\",\r\n \"emoji\": \"🇮🇷\",\r\n \"unicode\": \"U+1F1EE U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IR.svg\"\r\n }, {\r\n \"name\": \"Iceland\",\r\n \"code\": \"IS\",\r\n \"emoji\": \"🇮🇸\",\r\n \"unicode\": \"U+1F1EE U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IS.svg\"\r\n }, {\r\n \"name\": \"Italy\",\r\n \"code\": \"IT\",\r\n \"emoji\": \"🇮🇹\",\r\n \"unicode\": \"U+1F1EE U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/IT.svg\"\r\n }, {\r\n \"name\": \"Jersey\",\r\n \"code\": \"JE\",\r\n \"emoji\": \"🇯🇪\",\r\n \"unicode\": \"U+1F1EF U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/JE.svg\"\r\n }, {\r\n \"name\": \"Jamaica\",\r\n \"code\": \"JM\",\r\n \"emoji\": \"🇯🇲\",\r\n \"unicode\": \"U+1F1EF U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/JM.svg\"\r\n }, {\r\n \"name\": \"Jordan\",\r\n \"code\": \"JO\",\r\n \"emoji\": \"🇯🇴\",\r\n \"unicode\": \"U+1F1EF U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/JO.svg\"\r\n }, {\r\n \"name\": \"Japan\",\r\n \"code\": \"JP\",\r\n \"emoji\": \"🇯🇵\",\r\n \"unicode\": \"U+1F1EF U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/JP.svg\"\r\n }, {\r\n \"name\": \"Kenya\",\r\n \"code\": \"KE\",\r\n \"emoji\": \"🇰🇪\",\r\n \"unicode\": \"U+1F1F0 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KE.svg\"\r\n }, {\r\n \"name\": \"Kyrgyzstan\",\r\n \"code\": \"KG\",\r\n \"emoji\": \"🇰🇬\",\r\n \"unicode\": \"U+1F1F0 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KG.svg\"\r\n }, {\r\n \"name\": \"Cambodia\",\r\n \"code\": \"KH\",\r\n \"emoji\": \"🇰🇭\",\r\n \"unicode\": \"U+1F1F0 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KH.svg\"\r\n }, {\r\n \"name\": \"Kiribati\",\r\n \"code\": \"KI\",\r\n \"emoji\": \"🇰🇮\",\r\n \"unicode\": \"U+1F1F0 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KI.svg\"\r\n }, {\r\n \"name\": \"Comoros\",\r\n \"code\": \"KM\",\r\n \"emoji\": \"🇰🇲\",\r\n \"unicode\": \"U+1F1F0 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KM.svg\"\r\n }, {\r\n \"name\": \"St. Kitts & Nevis\",\r\n \"code\": \"KN\",\r\n \"emoji\": \"🇰🇳\",\r\n \"unicode\": \"U+1F1F0 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KN.svg\"\r\n }, {\r\n \"name\": \"North Korea\",\r\n \"code\": \"KP\",\r\n \"emoji\": \"🇰🇵\",\r\n \"unicode\": \"U+1F1F0 U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KP.svg\"\r\n }, {\r\n \"name\": \"South Korea\",\r\n \"code\": \"KR\",\r\n \"emoji\": \"🇰🇷\",\r\n \"unicode\": \"U+1F1F0 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KR.svg\"\r\n }, {\r\n \"name\": \"Kuwait\",\r\n \"code\": \"KW\",\r\n \"emoji\": \"🇰🇼\",\r\n \"unicode\": \"U+1F1F0 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KW.svg\"\r\n }, {\r\n \"name\": \"Cayman Islands\",\r\n \"code\": \"KY\",\r\n \"emoji\": \"🇰🇾\",\r\n \"unicode\": \"U+1F1F0 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KY.svg\"\r\n }, {\r\n \"name\": \"Kazakhstan\",\r\n \"code\": \"KZ\",\r\n \"emoji\": \"🇰🇿\",\r\n \"unicode\": \"U+1F1F0 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/KZ.svg\"\r\n }, {\r\n \"name\": \"Laos\",\r\n \"code\": \"LA\",\r\n \"emoji\": \"🇱🇦\",\r\n \"unicode\": \"U+1F1F1 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LA.svg\"\r\n }, {\r\n \"name\": \"Lebanon\",\r\n \"code\": \"LB\",\r\n \"emoji\": \"🇱🇧\",\r\n \"unicode\": \"U+1F1F1 U+1F1E7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LB.svg\"\r\n }, {\r\n \"name\": \"St. Lucia\",\r\n \"code\": \"LC\",\r\n \"emoji\": \"🇱🇨\",\r\n \"unicode\": \"U+1F1F1 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LC.svg\"\r\n }, {\r\n \"name\": \"Liechtenstein\",\r\n \"code\": \"LI\",\r\n \"emoji\": \"🇱🇮\",\r\n \"unicode\": \"U+1F1F1 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LI.svg\"\r\n }, {\r\n \"name\": \"Sri Lanka\",\r\n \"code\": \"LK\",\r\n \"emoji\": \"🇱🇰\",\r\n \"unicode\": \"U+1F1F1 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LK.svg\"\r\n }, {\r\n \"name\": \"Liberia\",\r\n \"code\": \"LR\",\r\n \"emoji\": \"🇱🇷\",\r\n \"unicode\": \"U+1F1F1 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LR.svg\"\r\n }, {\r\n \"name\": \"Lesotho\",\r\n \"code\": \"LS\",\r\n \"emoji\": \"🇱🇸\",\r\n \"unicode\": \"U+1F1F1 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LS.svg\"\r\n }, {\r\n \"name\": \"Lithuania\",\r\n \"code\": \"LT\",\r\n \"emoji\": \"🇱🇹\",\r\n \"unicode\": \"U+1F1F1 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LT.svg\"\r\n }, {\r\n \"name\": \"Luxembourg\",\r\n \"code\": \"LU\",\r\n \"emoji\": \"🇱🇺\",\r\n \"unicode\": \"U+1F1F1 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LU.svg\"\r\n }, {\r\n \"name\": \"Latvia\",\r\n \"code\": \"LV\",\r\n \"emoji\": \"🇱🇻\",\r\n \"unicode\": \"U+1F1F1 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LV.svg\"\r\n }, {\r\n \"name\": \"Libya\",\r\n \"code\": \"LY\",\r\n \"emoji\": \"🇱🇾\",\r\n \"unicode\": \"U+1F1F1 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/LY.svg\"\r\n }, {\r\n \"name\": \"Morocco\",\r\n \"code\": \"MA\",\r\n \"emoji\": \"🇲🇦\",\r\n \"unicode\": \"U+1F1F2 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MA.svg\"\r\n }, {\r\n \"name\": \"Monaco\",\r\n \"code\": \"MC\",\r\n \"emoji\": \"🇲🇨\",\r\n \"unicode\": \"U+1F1F2 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MC.svg\"\r\n }, {\r\n \"name\": \"Moldova\",\r\n \"code\": \"MD\",\r\n \"emoji\": \"🇲🇩\",\r\n \"unicode\": \"U+1F1F2 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MD.svg\"\r\n }, {\r\n \"name\": \"Montenegro\",\r\n \"code\": \"ME\",\r\n \"emoji\": \"🇲🇪\",\r\n \"unicode\": \"U+1F1F2 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ME.svg\"\r\n }, {\r\n \"name\": \"St. Martin\",\r\n \"code\": \"MF\",\r\n \"emoji\": \"🇲🇫\",\r\n \"unicode\": \"U+1F1F2 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MF.svg\"\r\n }, {\r\n \"name\": \"Madagascar\",\r\n \"code\": \"MG\",\r\n \"emoji\": \"🇲🇬\",\r\n \"unicode\": \"U+1F1F2 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MG.svg\"\r\n }, {\r\n \"name\": \"Marshall Islands\",\r\n \"code\": \"MH\",\r\n \"emoji\": \"🇲🇭\",\r\n \"unicode\": \"U+1F1F2 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MH.svg\"\r\n }, {\r\n \"name\": \"North Macedonia\",\r\n \"code\": \"MK\",\r\n \"emoji\": \"🇲🇰\",\r\n \"unicode\": \"U+1F1F2 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MK.svg\"\r\n }, {\r\n \"name\": \"Mali\",\r\n \"code\": \"ML\",\r\n \"emoji\": \"🇲🇱\",\r\n \"unicode\": \"U+1F1F2 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ML.svg\"\r\n }, {\r\n \"name\": \"Myanmar (Burma)\",\r\n \"code\": \"MM\",\r\n \"emoji\": \"🇲🇲\",\r\n \"unicode\": \"U+1F1F2 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MM.svg\"\r\n }, {\r\n \"name\": \"Mongolia\",\r\n \"code\": \"MN\",\r\n \"emoji\": \"🇲🇳\",\r\n \"unicode\": \"U+1F1F2 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MN.svg\"\r\n }, {\r\n \"name\": \"Macao SAR China\",\r\n \"code\": \"MO\",\r\n \"emoji\": \"🇲🇴\",\r\n \"unicode\": \"U+1F1F2 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MO.svg\"\r\n }, {\r\n \"name\": \"Northern Mariana Islands\",\r\n \"code\": \"MP\",\r\n \"emoji\": \"🇲🇵\",\r\n \"unicode\": \"U+1F1F2 U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MP.svg\"\r\n }, {\r\n \"name\": \"Martinique\",\r\n \"code\": \"MQ\",\r\n \"emoji\": \"🇲🇶\",\r\n \"unicode\": \"U+1F1F2 U+1F1F6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MQ.svg\"\r\n }, {\r\n \"name\": \"Mauritania\",\r\n \"code\": \"MR\",\r\n \"emoji\": \"🇲🇷\",\r\n \"unicode\": \"U+1F1F2 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MR.svg\"\r\n }, {\r\n \"name\": \"Montserrat\",\r\n \"code\": \"MS\",\r\n \"emoji\": \"🇲🇸\",\r\n \"unicode\": \"U+1F1F2 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MS.svg\"\r\n }, {\r\n \"name\": \"Malta\",\r\n \"code\": \"MT\",\r\n \"emoji\": \"🇲🇹\",\r\n \"unicode\": \"U+1F1F2 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MT.svg\"\r\n }, {\r\n \"name\": \"Mauritius\",\r\n \"code\": \"MU\",\r\n \"emoji\": \"🇲🇺\",\r\n \"unicode\": \"U+1F1F2 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MU.svg\"\r\n }, {\r\n \"name\": \"Maldives\",\r\n \"code\": \"MV\",\r\n \"emoji\": \"🇲🇻\",\r\n \"unicode\": \"U+1F1F2 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MV.svg\"\r\n }, {\r\n \"name\": \"Malawi\",\r\n \"code\": \"MW\",\r\n \"emoji\": \"🇲🇼\",\r\n \"unicode\": \"U+1F1F2 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MW.svg\"\r\n }, {\r\n \"name\": \"Mexico\",\r\n \"code\": \"MX\",\r\n \"emoji\": \"🇲🇽\",\r\n \"unicode\": \"U+1F1F2 U+1F1FD\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MX.svg\"\r\n }, {\r\n \"name\": \"Malaysia\",\r\n \"code\": \"MY\",\r\n \"emoji\": \"🇲🇾\",\r\n \"unicode\": \"U+1F1F2 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MY.svg\"\r\n }, {\r\n \"name\": \"Mozambique\",\r\n \"code\": \"MZ\",\r\n \"emoji\": \"🇲🇿\",\r\n \"unicode\": \"U+1F1F2 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/MZ.svg\"\r\n }, {\r\n \"name\": \"Namibia\",\r\n \"code\": \"NA\",\r\n \"emoji\": \"🇳🇦\",\r\n \"unicode\": \"U+1F1F3 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NA.svg\"\r\n }, {\r\n \"name\": \"New Caledonia\",\r\n \"code\": \"NC\",\r\n \"emoji\": \"🇳🇨\",\r\n \"unicode\": \"U+1F1F3 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NC.svg\"\r\n }, {\r\n \"name\": \"Niger\",\r\n \"code\": \"NE\",\r\n \"emoji\": \"🇳🇪\",\r\n \"unicode\": \"U+1F1F3 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NE.svg\"\r\n }, {\r\n \"name\": \"Norfolk Island\",\r\n \"code\": \"NF\",\r\n \"emoji\": \"🇳🇫\",\r\n \"unicode\": \"U+1F1F3 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NF.svg\"\r\n }, {\r\n \"name\": \"Nigeria\",\r\n \"code\": \"NG\",\r\n \"emoji\": \"🇳🇬\",\r\n \"unicode\": \"U+1F1F3 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NG.svg\"\r\n }, {\r\n \"name\": \"Nicaragua\",\r\n \"code\": \"NI\",\r\n \"emoji\": \"🇳🇮\",\r\n \"unicode\": \"U+1F1F3 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NI.svg\"\r\n }, {\r\n \"name\": \"Netherlands\",\r\n \"code\": \"NL\",\r\n \"emoji\": \"🇳🇱\",\r\n \"unicode\": \"U+1F1F3 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NL.svg\"\r\n }, {\r\n \"name\": \"Norway\",\r\n \"code\": \"NO\",\r\n \"emoji\": \"🇳🇴\",\r\n \"unicode\": \"U+1F1F3 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NO.svg\"\r\n }, {\r\n \"name\": \"Nepal\",\r\n \"code\": \"NP\",\r\n \"emoji\": \"🇳🇵\",\r\n \"unicode\": \"U+1F1F3 U+1F1F5\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NP.svg\"\r\n }, {\r\n \"name\": \"Nauru\",\r\n \"code\": \"NR\",\r\n \"emoji\": \"🇳🇷\",\r\n \"unicode\": \"U+1F1F3 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NR.svg\"\r\n }, {\r\n \"name\": \"Niue\",\r\n \"code\": \"NU\",\r\n \"emoji\": \"🇳🇺\",\r\n \"unicode\": \"U+1F1F3 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NU.svg\"\r\n }, {\r\n \"name\": \"New Zealand\",\r\n \"code\": \"NZ\",\r\n \"emoji\": \"🇳🇿\",\r\n \"unicode\": \"U+1F1F3 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/NZ.svg\"\r\n }, {\r\n \"name\": \"Oman\",\r\n \"code\": \"OM\",\r\n \"emoji\": \"🇴🇲\",\r\n \"unicode\": \"U+1F1F4 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/OM.svg\"\r\n }, {\r\n \"name\": \"Panama\",\r\n \"code\": \"PA\",\r\n \"emoji\": \"🇵🇦\",\r\n \"unicode\": \"U+1F1F5 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PA.svg\"\r\n }, {\r\n \"name\": \"Peru\",\r\n \"code\": \"PE\",\r\n \"emoji\": \"🇵🇪\",\r\n \"unicode\": \"U+1F1F5 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PE.svg\"\r\n }, {\r\n \"name\": \"French Polynesia\",\r\n \"code\": \"PF\",\r\n \"emoji\": \"🇵🇫\",\r\n \"unicode\": \"U+1F1F5 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PF.svg\"\r\n }, {\r\n \"name\": \"Papua New Guinea\",\r\n \"code\": \"PG\",\r\n \"emoji\": \"🇵🇬\",\r\n \"unicode\": \"U+1F1F5 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PG.svg\"\r\n }, {\r\n \"name\": \"Philippines\",\r\n \"code\": \"PH\",\r\n \"emoji\": \"🇵🇭\",\r\n \"unicode\": \"U+1F1F5 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PH.svg\"\r\n }, {\r\n \"name\": \"Pakistan\",\r\n \"code\": \"PK\",\r\n \"emoji\": \"🇵🇰\",\r\n \"unicode\": \"U+1F1F5 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PK.svg\"\r\n }, {\r\n \"name\": \"Poland\",\r\n \"code\": \"PL\",\r\n \"emoji\": \"🇵🇱\",\r\n \"unicode\": \"U+1F1F5 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PL.svg\"\r\n }, {\r\n \"name\": \"St. Pierre & Miquelon\",\r\n \"code\": \"PM\",\r\n \"emoji\": \"🇵🇲\",\r\n \"unicode\": \"U+1F1F5 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PM.svg\"\r\n }, {\r\n \"name\": \"Pitcairn Islands\",\r\n \"code\": \"PN\",\r\n \"emoji\": \"🇵🇳\",\r\n \"unicode\": \"U+1F1F5 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PN.svg\"\r\n }, {\r\n \"name\": \"Puerto Rico\",\r\n \"code\": \"PR\",\r\n \"emoji\": \"🇵🇷\",\r\n \"unicode\": \"U+1F1F5 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PR.svg\"\r\n }, {\r\n \"name\": \"Palestinian Territories\",\r\n \"code\": \"PS\",\r\n \"emoji\": \"🇵🇸\",\r\n \"unicode\": \"U+1F1F5 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PS.svg\"\r\n }, {\r\n \"name\": \"Portugal\",\r\n \"code\": \"PT\",\r\n \"emoji\": \"🇵🇹\",\r\n \"unicode\": \"U+1F1F5 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PT.svg\"\r\n }, {\r\n \"name\": \"Palau\",\r\n \"code\": \"PW\",\r\n \"emoji\": \"🇵🇼\",\r\n \"unicode\": \"U+1F1F5 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PW.svg\"\r\n }, {\r\n \"name\": \"Paraguay\",\r\n \"code\": \"PY\",\r\n \"emoji\": \"🇵🇾\",\r\n \"unicode\": \"U+1F1F5 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/PY.svg\"\r\n }, {\r\n \"name\": \"Qatar\",\r\n \"code\": \"QA\",\r\n \"emoji\": \"🇶🇦\",\r\n \"unicode\": \"U+1F1F6 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/QA.svg\"\r\n }, {\r\n \"name\": \"Réunion\",\r\n \"code\": \"RE\",\r\n \"emoji\": \"🇷🇪\",\r\n \"unicode\": \"U+1F1F7 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/RE.svg\"\r\n }, {\r\n \"name\": \"Romania\",\r\n \"code\": \"RO\",\r\n \"emoji\": \"🇷🇴\",\r\n \"unicode\": \"U+1F1F7 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/RO.svg\"\r\n }, {\r\n \"name\": \"Serbia\",\r\n \"code\": \"RS\",\r\n \"emoji\": \"🇷🇸\",\r\n \"unicode\": \"U+1F1F7 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/RS.svg\"\r\n }, {\r\n \"name\": \"Russia\",\r\n \"code\": \"RU\",\r\n \"emoji\": \"🇷🇺\",\r\n \"unicode\": \"U+1F1F7 U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/RU.svg\"\r\n }, {\r\n \"name\": \"Rwanda\",\r\n \"code\": \"RW\",\r\n \"emoji\": \"🇷🇼\",\r\n \"unicode\": \"U+1F1F7 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/RW.svg\"\r\n }, {\r\n \"name\": \"Saudi Arabia\",\r\n \"code\": \"SA\",\r\n \"emoji\": \"🇸🇦\",\r\n \"unicode\": \"U+1F1F8 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SA.svg\"\r\n }, {\r\n \"name\": \"Solomon Islands\",\r\n \"code\": \"SB\",\r\n \"emoji\": \"🇸🇧\",\r\n \"unicode\": \"U+1F1F8 U+1F1E7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SB.svg\"\r\n }, {\r\n \"name\": \"Seychelles\",\r\n \"code\": \"SC\",\r\n \"emoji\": \"🇸🇨\",\r\n \"unicode\": \"U+1F1F8 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SC.svg\"\r\n }, {\r\n \"name\": \"Sudan\",\r\n \"code\": \"SD\",\r\n \"emoji\": \"🇸🇩\",\r\n \"unicode\": \"U+1F1F8 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SD.svg\"\r\n }, {\r\n \"name\": \"Sweden\",\r\n \"code\": \"SE\",\r\n \"emoji\": \"🇸🇪\",\r\n \"unicode\": \"U+1F1F8 U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SE.svg\"\r\n }, {\r\n \"name\": \"Singapore\",\r\n \"code\": \"SG\",\r\n \"emoji\": \"🇸🇬\",\r\n \"unicode\": \"U+1F1F8 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SG.svg\"\r\n }, {\r\n \"name\": \"St. Helena\",\r\n \"code\": \"SH\",\r\n \"emoji\": \"🇸🇭\",\r\n \"unicode\": \"U+1F1F8 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SH.svg\"\r\n }, {\r\n \"name\": \"Slovenia\",\r\n \"code\": \"SI\",\r\n \"emoji\": \"🇸🇮\",\r\n \"unicode\": \"U+1F1F8 U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SI.svg\"\r\n }, {\r\n \"name\": \"Svalbard & Jan Mayen\",\r\n \"code\": \"SJ\",\r\n \"emoji\": \"🇸🇯\",\r\n \"unicode\": \"U+1F1F8 U+1F1EF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SJ.svg\"\r\n }, {\r\n \"name\": \"Slovakia\",\r\n \"code\": \"SK\",\r\n \"emoji\": \"🇸🇰\",\r\n \"unicode\": \"U+1F1F8 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SK.svg\"\r\n }, {\r\n \"name\": \"Sierra Leone\",\r\n \"code\": \"SL\",\r\n \"emoji\": \"🇸🇱\",\r\n \"unicode\": \"U+1F1F8 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SL.svg\"\r\n }, {\r\n \"name\": \"San Marino\",\r\n \"code\": \"SM\",\r\n \"emoji\": \"🇸🇲\",\r\n \"unicode\": \"U+1F1F8 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SM.svg\"\r\n }, {\r\n \"name\": \"Senegal\",\r\n \"code\": \"SN\",\r\n \"emoji\": \"🇸🇳\",\r\n \"unicode\": \"U+1F1F8 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SN.svg\"\r\n }, {\r\n \"name\": \"Somalia\",\r\n \"code\": \"SO\",\r\n \"emoji\": \"🇸🇴\",\r\n \"unicode\": \"U+1F1F8 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SO.svg\"\r\n }, {\r\n \"name\": \"Suriname\",\r\n \"code\": \"SR\",\r\n \"emoji\": \"🇸🇷\",\r\n \"unicode\": \"U+1F1F8 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SR.svg\"\r\n }, {\r\n \"name\": \"South Sudan\",\r\n \"code\": \"SS\",\r\n \"emoji\": \"🇸🇸\",\r\n \"unicode\": \"U+1F1F8 U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SS.svg\"\r\n }, {\r\n \"name\": \"São Tomé & Príncipe\",\r\n \"code\": \"ST\",\r\n \"emoji\": \"🇸🇹\",\r\n \"unicode\": \"U+1F1F8 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ST.svg\"\r\n }, {\r\n \"name\": \"El Salvador\",\r\n \"code\": \"SV\",\r\n \"emoji\": \"🇸🇻\",\r\n \"unicode\": \"U+1F1F8 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SV.svg\"\r\n }, {\r\n \"name\": \"Sint Maarten\",\r\n \"code\": \"SX\",\r\n \"emoji\": \"🇸🇽\",\r\n \"unicode\": \"U+1F1F8 U+1F1FD\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SX.svg\"\r\n }, {\r\n \"name\": \"Syria\",\r\n \"code\": \"SY\",\r\n \"emoji\": \"🇸🇾\",\r\n \"unicode\": \"U+1F1F8 U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SY.svg\"\r\n }, {\r\n \"name\": \"Eswatini\",\r\n \"code\": \"SZ\",\r\n \"emoji\": \"🇸🇿\",\r\n \"unicode\": \"U+1F1F8 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SZ.svg\"\r\n }, {\r\n \"name\": \"Tristan da Cunha\",\r\n \"code\": \"TA\",\r\n \"emoji\": \"🇹🇦\",\r\n \"unicode\": \"U+1F1F9 U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TA.svg\"\r\n }, {\r\n \"name\": \"Turks & Caicos Islands\",\r\n \"code\": \"TC\",\r\n \"emoji\": \"🇹🇨\",\r\n \"unicode\": \"U+1F1F9 U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TC.svg\"\r\n }, {\r\n \"name\": \"Chad\",\r\n \"code\": \"TD\",\r\n \"emoji\": \"🇹🇩\",\r\n \"unicode\": \"U+1F1F9 U+1F1E9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TD.svg\"\r\n }, {\r\n \"name\": \"French Southern Territories\",\r\n \"code\": \"TF\",\r\n \"emoji\": \"🇹🇫\",\r\n \"unicode\": \"U+1F1F9 U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TF.svg\"\r\n }, {\r\n \"name\": \"Togo\",\r\n \"code\": \"TG\",\r\n \"emoji\": \"🇹🇬\",\r\n \"unicode\": \"U+1F1F9 U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TG.svg\"\r\n }, {\r\n \"name\": \"Thailand\",\r\n \"code\": \"TH\",\r\n \"emoji\": \"🇹🇭\",\r\n \"unicode\": \"U+1F1F9 U+1F1ED\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TH.svg\"\r\n }, {\r\n \"name\": \"Tajikistan\",\r\n \"code\": \"TJ\",\r\n \"emoji\": \"🇹🇯\",\r\n \"unicode\": \"U+1F1F9 U+1F1EF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TJ.svg\"\r\n }, {\r\n \"name\": \"Tokelau\",\r\n \"code\": \"TK\",\r\n \"emoji\": \"🇹🇰\",\r\n \"unicode\": \"U+1F1F9 U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TK.svg\"\r\n }, {\r\n \"name\": \"Timor-Leste\",\r\n \"code\": \"TL\",\r\n \"emoji\": \"🇹🇱\",\r\n \"unicode\": \"U+1F1F9 U+1F1F1\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TL.svg\"\r\n }, {\r\n \"name\": \"Turkmenistan\",\r\n \"code\": \"TM\",\r\n \"emoji\": \"🇹🇲\",\r\n \"unicode\": \"U+1F1F9 U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TM.svg\"\r\n }, {\r\n \"name\": \"Tunisia\",\r\n \"code\": \"TN\",\r\n \"emoji\": \"🇹🇳\",\r\n \"unicode\": \"U+1F1F9 U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TN.svg\"\r\n }, {\r\n \"name\": \"Tonga\",\r\n \"code\": \"TO\",\r\n \"emoji\": \"🇹🇴\",\r\n \"unicode\": \"U+1F1F9 U+1F1F4\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TO.svg\"\r\n }, {\r\n \"name\": \"Turkey\",\r\n \"code\": \"TR\",\r\n \"emoji\": \"🇹🇷\",\r\n \"unicode\": \"U+1F1F9 U+1F1F7\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TR.svg\"\r\n }, {\r\n \"name\": \"Trinidad & Tobago\",\r\n \"code\": \"TT\",\r\n \"emoji\": \"🇹🇹\",\r\n \"unicode\": \"U+1F1F9 U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TT.svg\"\r\n }, {\r\n \"name\": \"Tuvalu\",\r\n \"code\": \"TV\",\r\n \"emoji\": \"🇹🇻\",\r\n \"unicode\": \"U+1F1F9 U+1F1FB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TV.svg\"\r\n }, {\r\n \"name\": \"Taiwan\",\r\n \"code\": \"TW\",\r\n \"emoji\": \"🇹🇼\",\r\n \"unicode\": \"U+1F1F9 U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TW.svg\"\r\n }, {\r\n \"name\": \"Tanzania\",\r\n \"code\": \"TZ\",\r\n \"emoji\": \"🇹🇿\",\r\n \"unicode\": \"U+1F1F9 U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/TZ.svg\"\r\n }, {\r\n \"name\": \"Ukraine\",\r\n \"code\": \"UA\",\r\n \"emoji\": \"🇺🇦\",\r\n \"unicode\": \"U+1F1FA U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UA.svg\"\r\n }, {\r\n \"name\": \"Uganda\",\r\n \"code\": \"UG\",\r\n \"emoji\": \"🇺🇬\",\r\n \"unicode\": \"U+1F1FA U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UG.svg\"\r\n }, {\r\n \"name\": \"U.S. Outlying Islands\",\r\n \"code\": \"UM\",\r\n \"emoji\": \"🇺🇲\",\r\n \"unicode\": \"U+1F1FA U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UM.svg\"\r\n }, {\r\n \"name\": \"United Nations\",\r\n \"code\": \"UN\",\r\n \"emoji\": \"🇺🇳\",\r\n \"unicode\": \"U+1F1FA U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UN.svg\"\r\n }, {\r\n \"name\": \"United States\",\r\n \"code\": \"US\",\r\n \"emoji\": \"🇺🇸\",\r\n \"unicode\": \"U+1F1FA U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/US.svg\"\r\n }, {\r\n \"name\": \"Uruguay\",\r\n \"code\": \"UY\",\r\n \"emoji\": \"🇺🇾\",\r\n \"unicode\": \"U+1F1FA U+1F1FE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UY.svg\"\r\n }, {\r\n \"name\": \"Uzbekistan\",\r\n \"code\": \"UZ\",\r\n \"emoji\": \"🇺🇿\",\r\n \"unicode\": \"U+1F1FA U+1F1FF\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/UZ.svg\"\r\n }, {\r\n \"name\": \"Vatican City\",\r\n \"code\": \"VA\",\r\n \"emoji\": \"🇻🇦\",\r\n \"unicode\": \"U+1F1FB U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VA.svg\"\r\n }, {\r\n \"name\": \"St. Vincent & Grenadines\",\r\n \"code\": \"VC\",\r\n \"emoji\": \"🇻🇨\",\r\n \"unicode\": \"U+1F1FB U+1F1E8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VC.svg\"\r\n }, {\r\n \"name\": \"Venezuela\",\r\n \"code\": \"VE\",\r\n \"emoji\": \"🇻🇪\",\r\n \"unicode\": \"U+1F1FB U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VE.svg\"\r\n }, {\r\n \"name\": \"British Virgin Islands\",\r\n \"code\": \"VG\",\r\n \"emoji\": \"🇻🇬\",\r\n \"unicode\": \"U+1F1FB U+1F1EC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VG.svg\"\r\n }, {\r\n \"name\": \"U.S. Virgin Islands\",\r\n \"code\": \"VI\",\r\n \"emoji\": \"🇻🇮\",\r\n \"unicode\": \"U+1F1FB U+1F1EE\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VI.svg\"\r\n }, {\r\n \"name\": \"Vietnam\",\r\n \"code\": \"VN\",\r\n \"emoji\": \"🇻🇳\",\r\n \"unicode\": \"U+1F1FB U+1F1F3\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VN.svg\"\r\n }, {\r\n \"name\": \"Vanuatu\",\r\n \"code\": \"VU\",\r\n \"emoji\": \"🇻🇺\",\r\n \"unicode\": \"U+1F1FB U+1F1FA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/VU.svg\"\r\n }, {\r\n \"name\": \"Wallis & Futuna\",\r\n \"code\": \"WF\",\r\n \"emoji\": \"🇼🇫\",\r\n \"unicode\": \"U+1F1FC U+1F1EB\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/WF.svg\"\r\n }, {\r\n \"name\": \"Samoa\",\r\n \"code\": \"WS\",\r\n \"emoji\": \"🇼🇸\",\r\n \"unicode\": \"U+1F1FC U+1F1F8\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/WS.svg\"\r\n }, {\r\n \"name\": \"Kosovo\",\r\n \"code\": \"XK\",\r\n \"emoji\": \"🇽🇰\",\r\n \"unicode\": \"U+1F1FD U+1F1F0\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/XK.svg\"\r\n }, {\r\n \"name\": \"Yemen\",\r\n \"code\": \"YE\",\r\n \"emoji\": \"🇾🇪\",\r\n \"unicode\": \"U+1F1FE U+1F1EA\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/YE.svg\"\r\n }, {\r\n \"name\": \"Mayotte\",\r\n \"code\": \"YT\",\r\n \"emoji\": \"🇾🇹\",\r\n \"unicode\": \"U+1F1FE U+1F1F9\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/YT.svg\"\r\n }, {\r\n \"name\": \"South Africa\",\r\n \"code\": \"ZA\",\r\n \"emoji\": \"🇿🇦\",\r\n \"unicode\": \"U+1F1FF U+1F1E6\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ZA.svg\"\r\n }, {\r\n \"name\": \"Zambia\",\r\n \"code\": \"ZM\",\r\n \"emoji\": \"🇿🇲\",\r\n \"unicode\": \"U+1F1FF U+1F1F2\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ZM.svg\"\r\n }, {\r\n \"name\": \"Zimbabwe\",\r\n \"code\": \"ZW\",\r\n \"emoji\": \"🇿🇼\",\r\n \"unicode\": \"U+1F1FF U+1F1FC\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ZW.svg\"\r\n }, {\r\n \"name\": \"England\",\r\n \"code\": \"ENGLAND\",\r\n \"emoji\": \"🏴󠁧󠁢󠁥󠁮󠁧󠁿\",\r\n \"unicode\": \"U+1F3F4 U+E0067 U+E0062 U+E0065 U+E006E U+E0067 U+E007F\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/ENGLAND.svg\"\r\n }, {\r\n \"name\": \"Scotland\",\r\n \"code\": \"SCOTLAND\",\r\n \"emoji\": \"🏴󠁧󠁢󠁳󠁣󠁴󠁿\",\r\n \"unicode\": \"U+1F3F4 U+E0067 U+E0062 U+E0073 U+E0063 U+E0074 U+E007F\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/SCOTLAND.svg\"\r\n }, {\r\n \"name\": \"Wales\",\r\n \"code\": \"WALES\",\r\n \"emoji\": \"🏴󠁧󠁢󠁷󠁬󠁳󠁿\",\r\n \"unicode\": \"U+1F3F4 U+E0067 U+E0062 U+E0077 U+E006C U+E0073 U+E007F\",\r\n \"image\": \"https://cdn.jsdelivr.net/npm/country-flag-emoji-json@2.0.0/dist/images/WALES.svg\"\r\n }];\r\n\r\nexport let timezones: any[] = [\r\n {\r\n \"value\": \"Dateline Standard Time\",\r\n \"abbr\": \"DST\",\r\n \"offset\": -12,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-12:00) International Date Line West\",\r\n \"utc\": [\r\n \"Etc/GMT+12\"\r\n ],\r\n \"countries\": [\r\n \"UM\"\r\n ]\r\n },\r\n {\r\n \"value\": \"UTC-11\",\r\n \"abbr\": \"U\",\r\n \"offset\": -11,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-11:00) Coordinated Universal Time-11\",\r\n \"utc\": [\r\n \"Etc/GMT+11\",\r\n \"Pacific/Midway\",\r\n \"Pacific/Niue\",\r\n \"Pacific/Pago_Pago\"\r\n ],\r\n \"countries\": [\r\n \"AS\",\r\n \"NU\",\r\n \"UM\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Hawaiian Standard Time\",\r\n \"abbr\": \"HST\",\r\n \"offset\": -10,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-10:00) Hawaii\",\r\n \"utc\": [\r\n \"Etc/GMT+10\",\r\n \"Pacific/Honolulu\",\r\n \"Pacific/Johnston\",\r\n \"Pacific/Rarotonga\",\r\n \"Pacific/Tahiti\"\r\n ],\r\n \"countries\": [\r\n \"UM\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Alaskan Standard Time\",\r\n \"abbr\": \"AKDT\",\r\n \"offset\": -8,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-09:00) Alaska\",\r\n \"utc\": [\r\n \"America/Anchorage\",\r\n \"America/Juneau\",\r\n \"America/Nome\",\r\n \"America/Sitka\",\r\n \"America/Yakutat\"\r\n ],\r\n \"countries\": [\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Pacific Standard Time (Mexico)\",\r\n \"abbr\": \"PDT\",\r\n \"offset\": -7,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-08:00) Baja California\",\r\n \"utc\": [\r\n \"America/Santa_Isabel\"\r\n ],\r\n \"countries\": [\r\n \"MX\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Pacific Daylight Time\",\r\n \"abbr\": \"PDT\",\r\n \"offset\": -7,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-07:00) Pacific Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Los_Angeles\",\r\n \"America/Tijuana\",\r\n \"America/Vancouver\"\r\n ],\r\n \"countries\": [\r\n \"CA\",\r\n \"MX\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Pacific Standard Time\",\r\n \"abbr\": \"PST\",\r\n \"offset\": -8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-08:00) Pacific Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Los_Angeles\",\r\n \"America/Tijuana\",\r\n \"America/Vancouver\",\r\n \"PST8PDT\"\r\n ],\r\n \"countries\": [\r\n \"CA\",\r\n \"MX\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"US Mountain Standard Time\",\r\n \"abbr\": \"UMST\",\r\n \"offset\": -7,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-07:00) Arizona\",\r\n \"utc\": [\r\n \"America/Creston\",\r\n \"America/Dawson\",\r\n \"America/Dawson_Creek\",\r\n \"America/Hermosillo\",\r\n \"America/Phoenix\",\r\n \"America/Whitehorse\",\r\n \"Etc/GMT+7\"\r\n ],\r\n \"countries\": [\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Mountain Standard Time (Mexico)\",\r\n \"abbr\": \"MDT\",\r\n \"offset\": -6,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-07:00) Chihuahua, La Paz, Mazatlan\",\r\n \"utc\": [\r\n \"America/Chihuahua\",\r\n \"America/Mazatlan\"\r\n ],\r\n \"countries\": [\r\n \"MX\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Mountain Standard Time\",\r\n \"abbr\": \"MDT\",\r\n \"offset\": -6,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-07:00) Mountain Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Boise\",\r\n \"America/Cambridge_Bay\",\r\n \"America/Denver\",\r\n \"America/Edmonton\",\r\n \"America/Inuvik\",\r\n \"America/Ojinaga\",\r\n \"America/Yellowknife\",\r\n \"MST7MDT\"\r\n ],\r\n \"countries\": [\r\n \"CA\",\r\n \"MX\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central America Standard Time\",\r\n \"abbr\": \"CAST\",\r\n \"offset\": -6,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-06:00) Central America\",\r\n \"utc\": [\r\n \"America/Belize\",\r\n \"America/Costa_Rica\",\r\n \"America/El_Salvador\",\r\n \"America/Guatemala\",\r\n \"America/Managua\",\r\n \"America/Tegucigalpa\",\r\n \"Etc/GMT+6\",\r\n \"Pacific/Galapagos\"\r\n ],\r\n \"countries\": [\r\n \"BZ\",\r\n \"CR\",\r\n \"GT\",\r\n \"HN\",\r\n \"NI\",\r\n \"SV\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Standard Time\",\r\n \"abbr\": \"CDT\",\r\n \"offset\": -5,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-06:00) Central Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Chicago\",\r\n \"America/Indiana/Knox\",\r\n \"America/Indiana/Tell_City\",\r\n \"America/Matamoros\",\r\n \"America/Menominee\",\r\n \"America/North_Dakota/Beulah\",\r\n \"America/North_Dakota/Center\",\r\n \"America/North_Dakota/New_Salem\",\r\n \"America/Rainy_River\",\r\n \"America/Rankin_Inlet\",\r\n \"America/Resolute\",\r\n \"America/Winnipeg\",\r\n \"CST6CDT\"\r\n ],\r\n \"countries\": [\r\n \"MX\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Standard Time (Mexico)\",\r\n \"abbr\": \"CDT\",\r\n \"offset\": -5,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-06:00) Guadalajara, Mexico City, Monterrey\",\r\n \"utc\": [\r\n \"America/Bahia_Banderas\",\r\n \"America/Cancun\",\r\n \"America/Merida\",\r\n \"America/Mexico_City\",\r\n \"America/Monterrey\"\r\n ],\r\n \"countries\": [\r\n \"MX\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Canada Central Standard Time\",\r\n \"abbr\": \"CCST\",\r\n \"offset\": -6,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-06:00) Saskatchewan\",\r\n \"utc\": [\r\n \"America/Regina\",\r\n \"America/Swift_Current\"\r\n ],\r\n \"countries\": [\r\n \"CA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"SA Pacific Standard Time\",\r\n \"abbr\": \"SPST\",\r\n \"offset\": -5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-05:00) Bogota, Lima, Quito\",\r\n \"utc\": [\r\n \"America/Bogota\",\r\n \"America/Cayman\",\r\n \"America/Coral_Harbour\",\r\n \"America/Eirunepe\",\r\n \"America/Guayaquil\",\r\n \"America/Jamaica\",\r\n \"America/Lima\",\r\n \"America/Panama\",\r\n \"America/Rio_Branco\",\r\n \"Etc/GMT+5\"\r\n ],\r\n \"countries\": [\r\n \"CO\",\r\n \"EC\",\r\n \"JM\",\r\n \"KY\",\r\n \"PA\",\r\n \"PE\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Eastern Standard Time\",\r\n \"abbr\": \"EST\",\r\n \"offset\": -5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-05:00) Eastern Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Detroit\",\r\n \"America/Havana\",\r\n \"America/Indiana/Petersburg\",\r\n \"America/Indiana/Vincennes\",\r\n \"America/Indiana/Winamac\",\r\n \"America/Iqaluit\",\r\n \"America/Kentucky/Monticello\",\r\n \"America/Louisville\",\r\n \"America/Montreal\",\r\n \"America/Nassau\",\r\n \"America/New_York\",\r\n \"America/Nipigon\",\r\n \"America/Pangnirtung\",\r\n \"America/Port-au-Prince\",\r\n \"America/Thunder_Bay\",\r\n \"America/Toronto\"\r\n ],\r\n \"countries\": [\r\n \"BS\",\r\n \"CA\",\r\n \"CU\",\r\n \"HT\",\r\n \"JM\",\r\n \"KY\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Eastern Daylight Time\",\r\n \"abbr\": \"EDT\",\r\n \"offset\": -4,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-04:00) Eastern Daylight Time (US & Canada)\",\r\n \"utc\": [\r\n \"America/Detroit\",\r\n \"America/Havana\",\r\n \"America/Indiana/Petersburg\",\r\n \"America/Indiana/Vincennes\",\r\n \"America/Indiana/Winamac\",\r\n \"America/Iqaluit\",\r\n \"America/Kentucky/Monticello\",\r\n \"America/Louisville\",\r\n \"America/Montreal\",\r\n \"America/Nassau\",\r\n \"America/New_York\",\r\n \"America/Nipigon\",\r\n \"America/Pangnirtung\",\r\n \"America/Port-au-Prince\",\r\n \"America/Thunder_Bay\",\r\n \"America/Toronto\"\r\n ],\r\n \"countries\": [\r\n \"BS\",\r\n \"CA\",\r\n \"CU\",\r\n \"HT\",\r\n \"JM\",\r\n \"KY\",\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"US Eastern Standard Time\",\r\n \"abbr\": \"UEDT\",\r\n \"offset\": -5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-05:00) Indiana (East)\",\r\n \"utc\": [\r\n \"America/Indiana/Marengo\",\r\n \"America/Indiana/Vevay\",\r\n \"America/Indianapolis\"\r\n ],\r\n \"countries\": [\r\n \"US\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Venezuela Standard Time\",\r\n \"abbr\": \"VST\",\r\n \"offset\": -4.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-04:30) Caracas\",\r\n \"utc\": [\r\n \"America/Caracas\"\r\n ],\r\n \"countries\": [\r\n \"VE\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Paraguay Standard Time\",\r\n \"abbr\": \"PYT\",\r\n \"offset\": -4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-04:00) Asuncion\",\r\n \"utc\": [\r\n \"America/Asuncion\"\r\n ],\r\n \"countries\": [\r\n \"PY\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Atlantic Standard Time\",\r\n \"abbr\": \"ADT\",\r\n \"offset\": -3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-04:00) Atlantic Time (Canada)\",\r\n \"utc\": [\r\n \"America/Glace_Bay\",\r\n \"America/Goose_Bay\",\r\n \"America/Halifax\",\r\n \"America/Moncton\",\r\n \"America/Thule\",\r\n \"Atlantic/Bermuda\"\r\n ],\r\n \"countries\": [\r\n \"CA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Brazilian Standard Time\",\r\n \"abbr\": \"CBST\",\r\n \"offset\": -4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-04:00) Cuiaba\",\r\n \"utc\": [\r\n \"America/Campo_Grande\",\r\n \"America/Cuiaba\"\r\n ],\r\n \"countries\": [\r\n \"BR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"SA Western Standard Time\",\r\n \"abbr\": \"SWST\",\r\n \"offset\": -4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-04:00) Georgetown, La Paz, Manaus, San Juan\",\r\n \"utc\": [\r\n \"America/Anguilla\",\r\n \"America/Antigua\",\r\n \"America/Aruba\",\r\n \"America/Barbados\",\r\n \"America/Blanc-Sablon\",\r\n \"America/Boa_Vista\",\r\n \"America/Curacao\",\r\n \"America/Dominica\",\r\n \"America/Grand_Turk\",\r\n \"America/Grenada\",\r\n \"America/Guadeloupe\",\r\n \"America/Guyana\",\r\n \"America/Kralendijk\",\r\n \"America/La_Paz\",\r\n \"America/Lower_Princes\",\r\n \"America/Manaus\",\r\n \"America/Marigot\",\r\n \"America/Martinique\",\r\n \"America/Montserrat\",\r\n \"America/Port_of_Spain\",\r\n \"America/Porto_Velho\",\r\n \"America/Puerto_Rico\",\r\n \"America/Santo_Domingo\",\r\n \"America/St_Barthelemy\",\r\n \"America/St_Kitts\",\r\n \"America/St_Lucia\",\r\n \"America/St_Thomas\",\r\n \"America/St_Vincent\",\r\n \"America/Tortola\",\r\n \"Etc/GMT+4\"\r\n ],\r\n \"countries\": [\r\n \"AI\",\r\n \"AN\",\r\n \"AW\",\r\n \"BB\",\r\n \"BQ\",\r\n \"CW\",\r\n \"DM\",\r\n \"DO\",\r\n \"GD\",\r\n \"GP\",\r\n \"GY\",\r\n \"KN\",\r\n \"LC\",\r\n \"MF\",\r\n \"MQ\",\r\n \"MS\",\r\n \"PR\",\r\n \"SX\",\r\n \"TC\",\r\n \"TT\",\r\n \"VC\",\r\n \"VG\",\r\n \"VI\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Pacific SA Standard Time\",\r\n \"abbr\": \"PSST\",\r\n \"offset\": -4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-04:00) Santiago\",\r\n \"utc\": [\r\n \"America/Santiago\",\r\n \"Antarctica/Palmer\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Newfoundland Standard Time\",\r\n \"abbr\": \"NDT\",\r\n \"offset\": -2.5,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-03:30) Newfoundland\",\r\n \"utc\": [\r\n \"America/St_Johns\"\r\n ]\r\n },\r\n {\r\n \"value\": \"E. South America Standard Time\",\r\n \"abbr\": \"ESAST\",\r\n \"offset\": -3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-03:00) Brasilia\",\r\n \"utc\": [\r\n \"America/Sao_Paulo\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Argentina Standard Time\",\r\n \"abbr\": \"AST\",\r\n \"offset\": -3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-03:00) Buenos Aires\",\r\n \"utc\": [\r\n \"America/Argentina/La_Rioja\",\r\n \"America/Argentina/Rio_Gallegos\",\r\n \"America/Argentina/Salta\",\r\n \"America/Argentina/San_Juan\",\r\n \"America/Argentina/San_Luis\",\r\n \"America/Argentina/Tucuman\",\r\n \"America/Argentina/Ushuaia\",\r\n \"America/Buenos_Aires\",\r\n \"America/Catamarca\",\r\n \"America/Cordoba\",\r\n \"America/Jujuy\",\r\n \"America/Mendoza\"\r\n ],\r\n \"countries\": [\r\n \"AR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"SA Eastern Standard Time\",\r\n \"abbr\": \"SEST\",\r\n \"offset\": -3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-03:00) Cayenne, Fortaleza\",\r\n \"utc\": [\r\n \"America/Araguaina\",\r\n \"America/Belem\",\r\n \"America/Cayenne\",\r\n \"America/Fortaleza\",\r\n \"America/Maceio\",\r\n \"America/Paramaribo\",\r\n \"America/Recife\",\r\n \"America/Santarem\",\r\n \"Antarctica/Rothera\",\r\n \"Atlantic/Stanley\",\r\n \"Etc/GMT+3\"\r\n ],\r\n \"countries\": [\r\n \"BR\",\r\n \"GF\",\r\n \"SR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Greenland Standard Time\",\r\n \"abbr\": \"GDT\",\r\n \"offset\": -3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-03:00) Greenland\",\r\n \"utc\": [\r\n \"America/Godthab\"\r\n ],\r\n \"countries\": [\r\n \"GL\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Montevideo Standard Time\",\r\n \"abbr\": \"MST\",\r\n \"offset\": -3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-03:00) Montevideo\",\r\n \"utc\": [\r\n \"America/Montevideo\"\r\n ],\r\n \"countries\": [\r\n \"UY\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Bahia Standard Time\",\r\n \"abbr\": \"BST\",\r\n \"offset\": -3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-03:00) Salvador\",\r\n \"utc\": [\r\n \"America/Bahia\"\r\n ],\r\n \"countries\": [\r\n \"BR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"UTC-02\",\r\n \"abbr\": \"U\",\r\n \"offset\": -2,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-02:00) Coordinated Universal Time-02\",\r\n \"utc\": [\r\n \"America/Noronha\",\r\n \"Atlantic/South_Georgia\",\r\n \"Etc/GMT+2\"\r\n ],\r\n \"countries\": [\r\n \"GS\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Mid-Atlantic Standard Time\",\r\n \"abbr\": \"MDT\",\r\n \"offset\": -1,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-02:00) Mid-Atlantic - Old\",\r\n \"utc\": [],\r\n \"countries\": []\r\n },\r\n {\r\n \"value\": \"Azores Standard Time\",\r\n \"abbr\": \"ADT\",\r\n \"offset\": 0,\r\n \"isdst\": true,\r\n \"text\": \"(UTC-01:00) Azores\",\r\n \"utc\": [\r\n \"America/Scoresbysund\",\r\n \"Atlantic/Azores\"\r\n ],\r\n \"countries\": [\r\n \"PT\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Cape Verde Standard Time\",\r\n \"abbr\": \"CVST\",\r\n \"offset\": -1,\r\n \"isdst\": false,\r\n \"text\": \"(UTC-01:00) Cape Verde Is.\",\r\n \"utc\": [\r\n \"Atlantic/Cape_Verde\",\r\n \"Etc/GMT+1\"\r\n ],\r\n \"countries\": [\r\n \"CV\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Morocco Standard Time\",\r\n \"abbr\": \"MDT\",\r\n \"offset\": 1,\r\n \"isdst\": true,\r\n \"text\": \"(UTC) Casablanca\",\r\n \"utc\": [\r\n \"Africa/Casablanca\",\r\n \"Africa/El_Aaiun\"\r\n ],\r\n \"countries\": [\r\n \"MA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"UTC\",\r\n \"abbr\": \"UTC\",\r\n \"offset\": 0,\r\n \"isdst\": false,\r\n \"text\": \"(UTC) Coordinated Universal Time\",\r\n \"utc\": [\r\n \"America/Danmarkshavn\",\r\n \"Etc/GMT\"\r\n ],\r\n \"countries\": []\r\n },\r\n {\r\n \"value\": \"GMT Standard Time\",\r\n \"abbr\": \"GMT\",\r\n \"offset\": 0,\r\n \"isdst\": false,\r\n \"text\": \"(UTC) Edinburgh, London\",\r\n \"utc\": [\r\n \"Etc/UTC\", // default on backend\r\n \"Europe/Isle_of_Man\",\r\n \"Europe/Guernsey\",\r\n \"Europe/Jersey\",\r\n \"Europe/London\"\r\n ],\r\n \"countries\": [\r\n \"GB\"\r\n ]\r\n },\r\n {\r\n \"value\": \"GMT Standard Time\",\r\n \"abbr\": \"GDT\",\r\n \"offset\": 1,\r\n \"isdst\": true,\r\n \"text\": \"(UTC) Dublin, Lisbon\",\r\n \"utc\": [\r\n \"Atlantic/Canary\",\r\n \"Atlantic/Faeroe\",\r\n \"Atlantic/Madeira\",\r\n \"Europe/Dublin\",\r\n \"Europe/Lisbon\"\r\n ],\r\n \"countries\": [\r\n \"IE\",\r\n \"PT\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Greenwich Standard Time\",\r\n \"abbr\": \"GST\",\r\n \"offset\": 0,\r\n \"isdst\": false,\r\n \"text\": \"(UTC) Monrovia, Reykjavik\",\r\n \"utc\": [\r\n \"Africa/Abidjan\",\r\n \"Africa/Accra\",\r\n \"Africa/Bamako\",\r\n \"Africa/Banjul\",\r\n \"Africa/Bissau\",\r\n \"Africa/Conakry\",\r\n \"Africa/Dakar\",\r\n \"Africa/Freetown\",\r\n \"Africa/Lome\",\r\n \"Africa/Monrovia\",\r\n \"Africa/Nouakchott\",\r\n \"Africa/Ouagadougou\",\r\n \"Africa/Sao_Tome\",\r\n \"Atlantic/Reykjavik\",\r\n \"Atlantic/St_Helena\"\r\n ],\r\n \"countries\": [\r\n \"SH\"\r\n ]\r\n },\r\n {\r\n \"value\": \"W. Europe Standard Time\",\r\n \"abbr\": \"WEDT\",\r\n \"offset\": 2,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna\",\r\n \"utc\": [\r\n \"Arctic/Longyearbyen\",\r\n \"Europe/Amsterdam\",\r\n \"Europe/Andorra\",\r\n \"Europe/Berlin\",\r\n \"Europe/Busingen\",\r\n \"Europe/Gibraltar\",\r\n \"Europe/Luxembourg\",\r\n \"Europe/Malta\",\r\n \"Europe/Monaco\",\r\n \"Europe/Oslo\",\r\n \"Europe/Rome\",\r\n \"Europe/San_Marino\",\r\n \"Europe/Stockholm\",\r\n \"Europe/Vaduz\",\r\n \"Europe/Vatican\",\r\n \"Europe/Vienna\",\r\n \"Europe/Zurich\"\r\n ],\r\n \"countries\": [\r\n \"AT\",\r\n \"BE\",\r\n \"CH\",\r\n \"DE\",\r\n \"IT\",\r\n \"LI\",\r\n \"LU\",\r\n \"NL\",\r\n \"NO\",\r\n \"SE\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Europe Standard Time\",\r\n \"abbr\": \"CEDT\",\r\n \"offset\": 2,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague\",\r\n \"utc\": [\r\n \"Europe/Belgrade\",\r\n \"Europe/Bratislava\",\r\n \"Europe/Budapest\",\r\n \"Europe/Ljubljana\",\r\n \"Europe/Podgorica\",\r\n \"Europe/Prague\",\r\n \"Europe/Tirane\"\r\n ],\r\n \"countries\": [\r\n \"AL\",\r\n \"BA\",\r\n \"CZ\",\r\n \"HU\",\r\n \"ME\",\r\n \"RS\",\r\n \"SK\",\r\n \"SI\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Romance Standard Time\",\r\n \"abbr\": \"RDT\",\r\n \"offset\": 2,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+01:00) Brussels, Copenhagen, Madrid, Paris\",\r\n \"utc\": [\r\n \"Africa/Ceuta\",\r\n \"Europe/Brussels\",\r\n \"Europe/Copenhagen\",\r\n \"Europe/Madrid\",\r\n \"Europe/Paris\"\r\n ],\r\n \"countries\": [\r\n \"BE\",\r\n \"DK\",\r\n \"FR\",\r\n \"ES\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central European Standard Time\",\r\n \"abbr\": \"CEDT\",\r\n \"offset\": 2,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb\",\r\n \"utc\": [\r\n \"Europe/Sarajevo\",\r\n \"Europe/Skopje\",\r\n \"Europe/Warsaw\",\r\n \"Europe/Zagreb\"\r\n ],\r\n \"countries\": [\r\n \"BA\",\r\n \"HR\",\r\n \"MK\",\r\n \"PL\"\r\n ]\r\n },\r\n {\r\n \"value\": \"W. Central Africa Standard Time\",\r\n \"abbr\": \"WCAST\",\r\n \"offset\": 1,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+01:00) West Central Africa\",\r\n \"utc\": [\r\n \"Africa/Algiers\",\r\n \"Africa/Bangui\",\r\n \"Africa/Brazzaville\",\r\n \"Africa/Douala\",\r\n \"Africa/Kinshasa\",\r\n \"Africa/Lagos\",\r\n \"Africa/Libreville\",\r\n \"Africa/Luanda\",\r\n \"Africa/Malabo\",\r\n \"Africa/Ndjamena\",\r\n \"Africa/Niamey\",\r\n \"Africa/Porto-Novo\",\r\n \"Africa/Tunis\",\r\n \"Etc/GMT-1\"\r\n ],\r\n \"countries\": [\r\n \"AO\",\r\n \"BJ\",\r\n \"CD\",\r\n \"CF\",\r\n \"CG\",\r\n \"CM\",\r\n \"DZ\",\r\n \"GA\",\r\n \"GQ\",\r\n \"NE\",\r\n \"NG\",\r\n \"TN\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Namibia Standard Time\",\r\n \"abbr\": \"NST\",\r\n \"offset\": 1,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+01:00) Windhoek\",\r\n \"utc\": [\r\n \"Africa/Windhoek\"\r\n ],\r\n \"countries\": [\r\n \"NA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"GTB Standard Time\",\r\n \"abbr\": \"GDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) Athens, Bucharest\",\r\n \"utc\": [\r\n \"Asia/Nicosia\",\r\n \"Europe/Athens\",\r\n \"Europe/Bucharest\",\r\n \"Europe/Chisinau\"\r\n ],\r\n \"countries\": [\r\n \"CY\",\r\n \"GR\",\r\n \"RO\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Middle East Standard Time\",\r\n \"abbr\": \"MEDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) Beirut\",\r\n \"utc\": [\r\n \"Asia/Beirut\"\r\n ],\r\n \"countries\": [\r\n \"LB\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Egypt Standard Time\",\r\n \"abbr\": \"EST\",\r\n \"offset\": 2,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+02:00) Cairo\",\r\n \"utc\": [\r\n \"Africa/Cairo\"\r\n ],\r\n \"countries\": [\r\n \"EG\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Syria Standard Time\",\r\n \"abbr\": \"SDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) Damascus\",\r\n \"utc\": [\r\n \"Asia/Damascus\"\r\n ],\r\n \"countries\": [\r\n \"SY\"\r\n ]\r\n },\r\n {\r\n \"value\": \"E. Europe Standard Time\",\r\n \"abbr\": \"EEDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) E. Europe\",\r\n \"utc\": [\r\n \"Asia/Nicosia\",\r\n \"Europe/Athens\",\r\n \"Europe/Bucharest\",\r\n \"Europe/Chisinau\",\r\n \"Europe/Helsinki\",\r\n \"Europe/Kiev\",\r\n \"Europe/Mariehamn\",\r\n \"Europe/Nicosia\",\r\n \"Europe/Riga\",\r\n \"Europe/Sofia\",\r\n \"Europe/Tallinn\",\r\n \"Europe/Uzhgorod\",\r\n \"Europe/Vilnius\",\r\n \"Europe/Zaporozhye\"\r\n ],\r\n \"countries\": [\r\n \"BG\",\r\n \"EE\",\r\n \"FI\",\r\n \"LV\",\r\n \"LT\",\r\n \"MD\",\r\n \"RO\",\r\n \"UA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"South Africa Standard Time\",\r\n \"abbr\": \"SAST\",\r\n \"offset\": 2,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+02:00) Harare, Pretoria\",\r\n \"utc\": [\r\n \"Africa/Blantyre\",\r\n \"Africa/Bujumbura\",\r\n \"Africa/Gaborone\",\r\n \"Africa/Harare\",\r\n \"Africa/Johannesburg\",\r\n \"Africa/Kigali\",\r\n \"Africa/Lubumbashi\",\r\n \"Africa/Lusaka\",\r\n \"Africa/Maputo\",\r\n \"Africa/Maseru\",\r\n \"Africa/Mbabane\",\r\n \"Etc/GMT-2\"\r\n ],\r\n \"countries\": [\r\n \"BW\",\r\n \"LS\",\r\n \"MW\",\r\n \"MZ\",\r\n \"RW\",\r\n \"ZA\",\r\n \"SZ\",\r\n \"ZM\",\r\n \"ZW\"\r\n ]\r\n },\r\n {\r\n \"value\": \"FLE Standard Time\",\r\n \"abbr\": \"FDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius\",\r\n \"utc\": [\r\n \"Europe/Helsinki\",\r\n \"Europe/Kiev\",\r\n \"Europe/Mariehamn\",\r\n \"Europe/Riga\",\r\n \"Europe/Sofia\",\r\n \"Europe/Tallinn\",\r\n \"Europe/Uzhgorod\",\r\n \"Europe/Vilnius\",\r\n \"Europe/Zaporozhye\"\r\n ],\r\n \"countries\": [\r\n \"EE\",\r\n \"FI\",\r\n \"LV\",\r\n \"LT\",\r\n \"UA\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Turkey Standard Time\",\r\n \"abbr\": \"TDT\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Istanbul\",\r\n \"utc\": [\r\n \"Europe/Istanbul\"\r\n ],\r\n \"countries\": [\r\n \"TR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Israel Standard Time\",\r\n \"abbr\": \"JDT\",\r\n \"offset\": 3,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+02:00) Jerusalem\",\r\n \"utc\": [\r\n \"Asia/Jerusalem\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Libya Standard Time\",\r\n \"abbr\": \"LST\",\r\n \"offset\": 2,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+02:00) Tripoli\",\r\n \"utc\": [\r\n \"Africa/Tripoli\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Jordan Standard Time\",\r\n \"abbr\": \"JST\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Amman\",\r\n \"utc\": [\r\n \"Asia/Amman\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Arabic Standard Time\",\r\n \"abbr\": \"AST\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Baghdad\",\r\n \"utc\": [\r\n \"Asia/Baghdad\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Kaliningrad Standard Time\",\r\n \"abbr\": \"KST\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+02:00) Kaliningrad\",\r\n \"utc\": [\r\n \"Europe/Kaliningrad\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Arab Standard Time\",\r\n \"abbr\": \"AST\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Kuwait, Riyadh\",\r\n \"utc\": [\r\n \"Asia/Aden\",\r\n \"Asia/Bahrain\",\r\n \"Asia/Kuwait\",\r\n \"Asia/Qatar\",\r\n \"Asia/Riyadh\"\r\n ]\r\n },\r\n {\r\n \"value\": \"E. Africa Standard Time\",\r\n \"abbr\": \"EAST\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Nairobi\",\r\n \"utc\": [\r\n \"Africa/Addis_Ababa\",\r\n \"Africa/Asmera\",\r\n \"Africa/Dar_es_Salaam\",\r\n \"Africa/Djibouti\",\r\n \"Africa/Juba\",\r\n \"Africa/Kampala\",\r\n \"Africa/Khartoum\",\r\n \"Africa/Mogadishu\",\r\n \"Africa/Nairobi\",\r\n \"Antarctica/Syowa\",\r\n \"Etc/GMT-3\",\r\n \"Indian/Antananarivo\",\r\n \"Indian/Comoro\",\r\n \"Indian/Mayotte\"\r\n ],\r\n \"countries\": [\r\n \"DJ\",\r\n \"ER\",\r\n \"ET\",\r\n \"KE\",\r\n \"KM\",\r\n \"MG\",\r\n \"SO\",\r\n \"TZ\",\r\n \"UG\",\r\n \"YT\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Moscow Standard Time\",\r\n \"abbr\": \"MSK\",\r\n \"offset\": 3,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk\",\r\n \"utc\": [\r\n \"Europe/Kirov\",\r\n \"Europe/Moscow\",\r\n \"Europe/Simferopol\",\r\n \"Europe/Volgograd\",\r\n \"Europe/Minsk\"\r\n ],\r\n \"countries\": [\r\n \"BY\",\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Samara Time\",\r\n \"abbr\": \"SAMT\",\r\n \"offset\": 4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:00) Samara, Ulyanovsk, Saratov\",\r\n \"utc\": [\r\n \"Europe/Astrakhan\",\r\n \"Europe/Samara\",\r\n \"Europe/Ulyanovsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Iran Standard Time\",\r\n \"abbr\": \"IDT\",\r\n \"offset\": 4.5,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+03:30) Tehran\",\r\n \"utc\": [\r\n \"Asia/Tehran\"\r\n ],\r\n \"countries\": [\r\n \"IR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Arabian Standard Time\",\r\n \"abbr\": \"AST\",\r\n \"offset\": 4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:00) Abu Dhabi, Muscat\",\r\n \"utc\": [\r\n \"Asia/Dubai\",\r\n \"Asia/Muscat\",\r\n \"Etc/GMT-4\"\r\n ],\r\n \"countries\": [\r\n \"AE\",\r\n \"OM\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Azerbaijan Standard Time\",\r\n \"abbr\": \"ADT\",\r\n \"offset\": 5,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+04:00) Baku\",\r\n \"utc\": [\r\n \"Asia/Baku\"\r\n ],\r\n \"countries\": [\r\n \"AZ\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Mauritius Standard Time\",\r\n \"abbr\": \"MST\",\r\n \"offset\": 4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:00) Port Louis\",\r\n \"utc\": [\r\n \"Indian/Mahe\",\r\n \"Indian/Mauritius\",\r\n \"Indian/Reunion\"\r\n ],\r\n \"countries\": [\r\n \"MU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Georgian Standard Time\",\r\n \"abbr\": \"GET\",\r\n \"offset\": 4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:00) Tbilisi\",\r\n \"utc\": [\r\n \"Asia/Tbilisi\"\r\n ],\r\n \"countries\": [\r\n \"GE\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Caucasus Standard Time\",\r\n \"abbr\": \"CST\",\r\n \"offset\": 4,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:00) Yerevan\",\r\n \"utc\": [\r\n \"Asia/Yerevan\"\r\n ],\r\n \"countries\": [\r\n \"AM\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Afghanistan Standard Time\",\r\n \"abbr\": \"AST\",\r\n \"offset\": 4.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+04:30) Kabul\",\r\n \"utc\": [\r\n \"Asia/Kabul\"\r\n ],\r\n \"countries\": [\r\n \"AF\"\r\n ]\r\n },\r\n {\r\n \"value\": \"West Asia Standard Time\",\r\n \"abbr\": \"WAST\",\r\n \"offset\": 5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:00) Ashgabat, Tashkent\",\r\n \"utc\": [\r\n \"Antarctica/Mawson\",\r\n \"Asia/Aqtau\",\r\n \"Asia/Aqtobe\",\r\n \"Asia/Ashgabat\",\r\n \"Asia/Dushanbe\",\r\n \"Asia/Oral\",\r\n \"Asia/Samarkand\",\r\n \"Asia/Tashkent\",\r\n \"Etc/GMT-5\",\r\n \"Indian/Kerguelen\",\r\n \"Indian/Maldives\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Yekaterinburg Time\",\r\n \"abbr\": \"YEKT\",\r\n \"offset\": 5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:00) Yekaterinburg\",\r\n \"utc\": [\r\n \"Asia/Yekaterinburg\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Pakistan Standard Time\",\r\n \"abbr\": \"PKT\",\r\n \"offset\": 5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:00) Islamabad, Karachi\",\r\n \"utc\": [\r\n \"Asia/Karachi\"\r\n ]\r\n },\r\n {\r\n \"value\": \"India Standard Time\",\r\n \"abbr\": \"IST\",\r\n \"offset\": 5.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi\",\r\n \"utc\": [\r\n \"Asia/Kolkata\",\r\n \"Asia/Calcutta\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Sri Lanka Standard Time\",\r\n \"abbr\": \"SLST\",\r\n \"offset\": 5.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:30) Sri Jayawardenepura\",\r\n \"utc\": [\r\n \"Asia/Colombo\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Nepal Standard Time\",\r\n \"abbr\": \"NST\",\r\n \"offset\": 5.75,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+05:45) Kathmandu\",\r\n \"utc\": [\r\n \"Asia/Kathmandu\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Asia Standard Time\",\r\n \"abbr\": \"CAST\",\r\n \"offset\": 6,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+06:00) Nur-Sultan (Astana)\",\r\n \"utc\": [\r\n \"Antarctica/Vostok\",\r\n \"Asia/Almaty\",\r\n \"Asia/Bishkek\",\r\n \"Asia/Qyzylorda\",\r\n \"Asia/Urumqi\",\r\n \"Etc/GMT-6\",\r\n \"Indian/Chagos\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Bangladesh Standard Time\",\r\n \"abbr\": \"BST\",\r\n \"offset\": 6,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+06:00) Dhaka\",\r\n \"utc\": [\r\n \"Asia/Dhaka\",\r\n \"Asia/Thimphu\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Myanmar Standard Time\",\r\n \"abbr\": \"MST\",\r\n \"offset\": 6.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+06:30) Yangon (Rangoon)\",\r\n \"utc\": [\r\n \"Asia/Rangoon\",\r\n \"Indian/Cocos\"\r\n ]\r\n },\r\n {\r\n \"value\": \"SE Asia Standard Time\",\r\n \"abbr\": \"SAST\",\r\n \"offset\": 7,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+07:00) Bangkok, Hanoi, Jakarta\",\r\n \"utc\": [\r\n \"Antarctica/Davis\",\r\n \"Asia/Bangkok\",\r\n \"Asia/Hovd\",\r\n \"Asia/Jakarta\",\r\n \"Asia/Phnom_Penh\",\r\n \"Asia/Pontianak\",\r\n \"Asia/Saigon\",\r\n \"Asia/Vientiane\",\r\n \"Etc/GMT-7\",\r\n \"Indian/Christmas\"\r\n ],\r\n \"countries\": [\r\n \"ID\",\r\n \"KH\",\r\n \"LA\",\r\n \"MY\",\r\n \"TH\",\r\n \"VN\"\r\n ]\r\n },\r\n {\r\n \"value\": \"N. Central Asia Standard Time\",\r\n \"abbr\": \"NCAST\",\r\n \"offset\": 7,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+07:00) Novosibirsk\",\r\n \"utc\": [\r\n \"Asia/Novokuznetsk\",\r\n \"Asia/Novosibirsk\",\r\n \"Asia/Omsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"China Standard Time\",\r\n \"abbr\": \"CST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi\",\r\n \"utc\": [\r\n \"Asia/Hong_Kong\",\r\n \"Asia/Macau\",\r\n \"Asia/Shanghai\"\r\n ],\r\n \"countries\": [\r\n \"CN\"\r\n ]\r\n },\r\n {\r\n \"value\": \"North Asia Standard Time\",\r\n \"abbr\": \"NAST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Krasnoyarsk\",\r\n \"utc\": [\r\n \"Asia/Krasnoyarsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Singapore Standard Time\",\r\n \"abbr\": \"MPST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Kuala Lumpur, Singapore\",\r\n \"utc\": [\r\n \"Asia/Brunei\",\r\n \"Asia/Kuala_Lumpur\",\r\n \"Asia/Kuching\",\r\n \"Asia/Makassar\",\r\n \"Asia/Manila\",\r\n \"Asia/Singapore\",\r\n \"Etc/GMT-8\"\r\n ],\r\n \"countries\": [\r\n \"MY\",\r\n \"SG\"\r\n ]\r\n },\r\n {\r\n \"value\": \"W. Australia Standard Time\",\r\n \"abbr\": \"WAST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Perth\",\r\n \"utc\": [\r\n \"Antarctica/Casey\",\r\n \"Australia/Perth\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Taipei Standard Time\",\r\n \"abbr\": \"TST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Taipei\",\r\n \"utc\": [\r\n \"Asia/Taipei\"\r\n ],\r\n \"countries\": [\r\n \"TW\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Ulaanbaatar Standard Time\",\r\n \"abbr\": \"UST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Ulaanbaatar\",\r\n \"utc\": [\r\n \"Asia/Choibalsan\",\r\n \"Asia/Ulaanbaatar\"\r\n ],\r\n \"countries\": [\r\n \"MN\"\r\n ]\r\n },\r\n {\r\n \"value\": \"North Asia East Standard Time\",\r\n \"abbr\": \"NAEST\",\r\n \"offset\": 8,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+08:00) Irkutsk\",\r\n \"utc\": [\r\n \"Asia/Irkutsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Japan Standard Time\",\r\n \"abbr\": \"JST\",\r\n \"offset\": 9,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+09:00) Osaka, Sapporo, Tokyo\",\r\n \"utc\": [\r\n \"Asia/Dili\",\r\n \"Asia/Jayapura\",\r\n \"Asia/Tokyo\",\r\n \"Etc/GMT-9\",\r\n \"Pacific/Palau\"\r\n ],\r\n \"countries\": [\r\n \"JP\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Korea Standard Time\",\r\n \"abbr\": \"KST\",\r\n \"offset\": 9,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+09:00) Seoul\",\r\n \"utc\": [\r\n \"Asia/Pyongyang\",\r\n \"Asia/Seoul\"\r\n ],\r\n \"countries\": [\r\n \"KR\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Cen. Australia Standard Time\",\r\n \"abbr\": \"CAST\",\r\n \"offset\": 9.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+09:30) Adelaide\",\r\n \"utc\": [\r\n \"Australia/Adelaide\",\r\n \"Australia/Broken_Hill\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"AUS Central Standard Time\",\r\n \"abbr\": \"ACST\",\r\n \"offset\": 9.5,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+09:30) Darwin\",\r\n \"utc\": [\r\n \"Australia/Darwin\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"E. Australia Standard Time\",\r\n \"abbr\": \"EAST\",\r\n \"offset\": 10,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+10:00) Brisbane\",\r\n \"utc\": [\r\n \"Australia/Brisbane\",\r\n \"Australia/Lindeman\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"AUS Eastern Standard Time\",\r\n \"abbr\": \"AEST\",\r\n \"offset\": 10,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+10:00) Canberra, Melbourne, Sydney\",\r\n \"utc\": [\r\n \"Australia/Melbourne\",\r\n \"Australia/Sydney\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"West Pacific Standard Time\",\r\n \"abbr\": \"WPST\",\r\n \"offset\": 10,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+10:00) Guam, Port Moresby\",\r\n \"utc\": [\r\n \"Antarctica/DumontDUrville\",\r\n \"Etc/GMT-10\",\r\n \"Pacific/Guam\",\r\n \"Pacific/Port_Moresby\",\r\n \"Pacific/Saipan\",\r\n \"Pacific/Truk\"\r\n ],\r\n \"countries\": [\r\n \"PG\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Tasmania Standard Time\",\r\n \"abbr\": \"TST\",\r\n \"offset\": 10,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+10:00) Hobart\",\r\n \"utc\": [\r\n \"Australia/Currie\",\r\n \"Australia/Hobart\"\r\n ],\r\n \"countries\": [\r\n \"AU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Yakutsk Standard Time\",\r\n \"abbr\": \"YST\",\r\n \"offset\": 9,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+09:00) Yakutsk\",\r\n \"utc\": [\r\n \"Asia/Chita\",\r\n \"Asia/Khandyga\",\r\n \"Asia/Yakutsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Central Pacific Standard Time\",\r\n \"abbr\": \"CPST\",\r\n \"offset\": 11,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+11:00) Solomon Is., New Caledonia\",\r\n \"utc\": [\r\n \"Antarctica/Macquarie\",\r\n \"Etc/GMT-11\",\r\n \"Pacific/Efate\",\r\n \"Pacific/Guadalcanal\",\r\n \"Pacific/Kosrae\",\r\n \"Pacific/Noumea\",\r\n \"Pacific/Ponape\"\r\n ],\r\n \"countries\": [\r\n \"NC\",\r\n \"SB\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Vladivostok Standard Time\",\r\n \"abbr\": \"VST\",\r\n \"offset\": 11,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+11:00) Vladivostok\",\r\n \"utc\": [\r\n \"Asia/Sakhalin\",\r\n \"Asia/Ust-Nera\",\r\n \"Asia/Vladivostok\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"New Zealand Standard Time\",\r\n \"abbr\": \"NZST\",\r\n \"offset\": 12,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+12:00) Auckland, Wellington\",\r\n \"utc\": [\r\n \"Antarctica/McMurdo\",\r\n \"Pacific/Auckland\"\r\n ],\r\n \"countries\": [\r\n \"NZ\"\r\n ]\r\n },\r\n {\r\n \"value\": \"UTC+12\",\r\n \"abbr\": \"U\",\r\n \"offset\": 12,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+12:00) Coordinated Universal Time+12\",\r\n \"utc\": [\r\n \"Etc/GMT-12\",\r\n \"Pacific/Funafuti\",\r\n \"Pacific/Kwajalein\",\r\n \"Pacific/Majuro\",\r\n \"Pacific/Nauru\",\r\n \"Pacific/Tarawa\",\r\n \"Pacific/Wake\",\r\n \"Pacific/Wallis\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Fiji Standard Time\",\r\n \"abbr\": \"FST\",\r\n \"offset\": 12,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+12:00) Fiji\",\r\n \"utc\": [\r\n \"Pacific/Fiji\"\r\n ],\r\n \"countries\": [\r\n \"FJ\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Magadan Standard Time\",\r\n \"abbr\": \"MST\",\r\n \"offset\": 12,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+12:00) Magadan\",\r\n \"utc\": [\r\n \"Asia/Anadyr\",\r\n \"Asia/Kamchatka\",\r\n \"Asia/Magadan\",\r\n \"Asia/Srednekolymsk\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Kamchatka Standard Time\",\r\n \"abbr\": \"KDT\",\r\n \"offset\": 13,\r\n \"isdst\": true,\r\n \"text\": \"(UTC+12:00) Petropavlovsk-Kamchatsky - Old\",\r\n \"utc\": [\r\n \"Asia/Kamchatka\"\r\n ],\r\n \"countries\": [\r\n \"RU\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Tonga Standard Time\",\r\n \"abbr\": \"TST\",\r\n \"offset\": 13,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+13:00) Nuku'alofa\",\r\n \"utc\": [\r\n \"Etc/GMT-13\",\r\n \"Pacific/Enderbury\",\r\n \"Pacific/Fakaofo\",\r\n \"Pacific/Tongatapu\"\r\n ],\r\n \"countries\": [\r\n \"TO\"\r\n ]\r\n },\r\n {\r\n \"value\": \"Samoa Standard Time\",\r\n \"abbr\": \"SST\",\r\n \"offset\": 13,\r\n \"isdst\": false,\r\n \"text\": \"(UTC+13:00) Samoa\",\r\n \"utc\": [\r\n \"Pacific/Apia\"\r\n ],\r\n \"countries\": [\r\n \"WS\"\r\n ]\r\n }\r\n ];\r\n\r\nexport let phoneCodes: any[] = [\r\n {\"country\":\"Afghanistan\",\"code\":\"+93\",\"iso\":\"AF\"},\r\n {\"country\":\"Albania\",\"code\":\"+355\",\"iso\":\"AL\"},\r\n {\"country\":\"Algeria\",\"code\":\"+213\",\"iso\":\"DZ\"},\r\n {\"country\":\"American Samoa\",\"code\":\"+1-684\",\"iso\":\"AS\"},\r\n {\"country\":\"Andorra\",\"code\":\"+376\",\"iso\":\"AD\"},\r\n {\"country\":\"Angola\",\"code\":\"+244\",\"iso\":\"AO\"},\r\n {\"country\":\"Anguilla\",\"code\":\"+1-264\",\"iso\":\"AI\"},\r\n {\"country\":\"Antarctica\",\"code\":\"+672\",\"iso\":\"AQ\"},\r\n {\"country\":\"Antigua and Barbuda\",\"code\":\"+1-268\",\"iso\":\"AG\"},\r\n {\"country\":\"Argentina\",\"code\":\"+54\",\"iso\":\"AR\"},\r\n {\"country\":\"Armenia\",\"code\":\"+374\",\"iso\":\"AM\"},\r\n {\"country\":\"Aruba\",\"code\":\"+297\",\"iso\":\"AW\"},\r\n {\"country\":\"Australia\",\"code\":\"+61\",\"iso\":\"AU\"},\r\n {\"country\":\"Austria\",\"code\":\"+43\",\"iso\":\"AT\"},\r\n {\"country\":\"Azerbaijan\",\"code\":\"+994\",\"iso\":\"AZ\"},\r\n {\"country\":\"Bahamas\",\"code\":\"+1-242\",\"iso\":\"BS\"},\r\n {\"country\":\"Bahrain\",\"code\":\"+973\",\"iso\":\"BH\"},\r\n {\"country\":\"Bangladesh\",\"code\":\"+880\",\"iso\":\"BD\"},\r\n {\"country\":\"Barbados\",\"code\":\"+1-246\",\"iso\":\"BB\"},\r\n {\"country\":\"Belarus\",\"code\":\"+375\",\"iso\":\"BY\"},\r\n {\"country\":\"Belgium\",\"code\":\"+32\",\"iso\":\"BE\"},\r\n {\"country\":\"Belize\",\"code\":\"+501\",\"iso\":\"BZ\"},\r\n {\"country\":\"Benin\",\"code\":\"+229\",\"iso\":\"BJ\"},\r\n {\"country\":\"Bermuda\",\"code\":\"+1-441\",\"iso\":\"BM\"},\r\n {\"country\":\"Bhutan\",\"code\":\"+975\",\"iso\":\"BT\"},\r\n {\"country\":\"Bolivia\",\"code\":\"+591\",\"iso\":\"BO\"},\r\n {\"country\":\"Bosnia and Herzegovina\",\"code\":\"+387\",\"iso\":\"BA\"},\r\n {\"country\":\"Botswana\",\"code\":\"+267\",\"iso\":\"BW\"},\r\n {\"country\":\"Brazil\",\"code\":\"+55\",\"iso\":\"BR\"},\r\n {\"country\":\"British Indian Ocean Territory\",\"code\":\"+246\",\"iso\":\"IO\"},\r\n {\"country\":\"British Virgin Islands\",\"code\":\"+1-284\",\"iso\":\"VG\"},\r\n {\"country\":\"Brunei\",\"code\":\"+673\",\"iso\":\"BN\"},\r\n {\"country\":\"Bulgaria\",\"code\":\"+359\",\"iso\":\"BG\"},\r\n {\"country\":\"Burkina Faso\",\"code\":\"+226\",\"iso\":\"BF\"},\r\n {\"country\":\"Burundi\",\"code\":\"+257\",\"iso\":\"BI\"},\r\n {\"country\":\"Cambodia\",\"code\":\"+855\",\"iso\":\"KH\"},\r\n {\"country\":\"Cameroon\",\"code\":\"+237\",\"iso\":\"CM\"},\r\n {\"country\":\"Canada\",\"code\":\"+1\",\"iso\":\"CA\"},\r\n {\"country\":\"Cape Verde\",\"code\":\"+238\",\"iso\":\"CV\"},\r\n {\"country\":\"Cayman Islands\",\"code\":\"+1-345\",\"iso\":\"KY\"},\r\n {\"country\":\"Central African Republic\",\"code\":\"+236\",\"iso\":\"CF\"},\r\n {\"country\":\"Chad\",\"code\":\"+235\",\"iso\":\"TD\"},\r\n {\"country\":\"Chile\",\"code\":\"+56\",\"iso\":\"CL\"},\r\n {\"country\":\"China\",\"code\":\"+86\",\"iso\":\"CN\"},\r\n {\"country\":\"Christmas Island\",\"code\":\"+61\",\"iso\":\"CX\"},\r\n {\"country\":\"Cocos Islands\",\"code\":\"+61\",\"iso\":\"CC\"},\r\n {\"country\":\"Colombia\",\"code\":\"+57\",\"iso\":\"CO\"},\r\n {\"country\":\"Comoros\",\"code\":\"+269\",\"iso\":\"KM\"},\r\n {\"country\":\"Cook Islands\",\"code\":\"+682\",\"iso\":\"CK\"},\r\n {\"country\":\"Costa Rica\",\"code\":\"+506\",\"iso\":\"CR\"},\r\n {\"country\":\"Croatia\",\"code\":\"+385\",\"iso\":\"HR\"},\r\n {\"country\":\"Cuba\",\"code\":\"+53\",\"iso\":\"CU\"},\r\n {\"country\":\"Curacao\",\"code\":\"+599\",\"iso\":\"CW\"},\r\n {\"country\":\"Cyprus\",\"code\":\"+357\",\"iso\":\"CY\"},\r\n {\"country\":\"Czech Republic\",\"code\":\"+420\",\"iso\":\"CZ\"},\r\n {\"country\":\"Democratic Republic of the Congo\",\"code\":\"+243\",\"iso\":\"CD\"},\r\n {\"country\":\"Denmark\",\"code\":\"+45\",\"iso\":\"DK\"},\r\n {\"country\":\"Djibouti\",\"code\":\"+253\",\"iso\":\"DJ\"},\r\n {\"country\":\"Dominica\",\"code\":\"+1-767\",\"iso\":\"DM\"},\r\n {\"country\":\"Dominican Republic\",\"code\":\"+1\",\"iso\":\"DO\"},\r\n {\"country\":\"East Timor\",\"code\":\"+670\",\"iso\":\"TL\"},\r\n {\"country\":\"Ecuador\",\"code\":\"+593\",\"iso\":\"EC\"},\r\n {\"country\":\"Egypt\",\"code\":\"+20\",\"iso\":\"EG\"},\r\n {\"country\":\"El Salvador\",\"code\":\"+503\",\"iso\":\"SV\"},\r\n {\"country\":\"Equatorial Guinea\",\"code\":\"+240\",\"iso\":\"GQ\"},\r\n {\"country\":\"Eritrea\",\"code\":\"+291\",\"iso\":\"ER\"},\r\n {\"country\":\"Estonia\",\"code\":\"+372\",\"iso\":\"EE\"},\r\n {\"country\":\"Ethiopia\",\"code\":\"+251\",\"iso\":\"ET\"},\r\n {\"country\":\"Falkland Islands\",\"code\":\"+500\",\"iso\":\"FK\"},\r\n {\"country\":\"Faroe Islands\",\"code\":\"+298\",\"iso\":\"FO\"},\r\n {\"country\":\"Fiji\",\"code\":\"+679\",\"iso\":\"FJ\"},\r\n {\"country\":\"Finland\",\"code\":\"+358\",\"iso\":\"FI\"},\r\n {\"country\":\"France\",\"code\":\"+33\",\"iso\":\"FR\"},\r\n {\"country\":\"French Polynesia\",\"code\":\"+689\",\"iso\":\"PF\"},\r\n {\"country\":\"Gabon\",\"code\":\"+241\",\"iso\":\"GA\"},\r\n {\"country\":\"Gambia\",\"code\":\"+220\",\"iso\":\"GM\"},\r\n {\"country\":\"Georgia\",\"code\":\"+995\",\"iso\":\"GE\"},\r\n {\"country\":\"Germany\",\"code\":\"+49\",\"iso\":\"DE\"},\r\n {\"country\":\"Ghana\",\"code\":\"+233\",\"iso\":\"GH\"},\r\n {\"country\":\"Gibraltar\",\"code\":\"+350\",\"iso\":\"GI\"},\r\n {\"country\":\"Greece\",\"code\":\"+30\",\"iso\":\"GR\"},\r\n {\"country\":\"Greenland\",\"code\":\"+299\",\"iso\":\"GL\"},\r\n {\"country\":\"Grenada\",\"code\":\"+1-473\",\"iso\":\"GD\"},\r\n {\"country\":\"Guam\",\"code\":\"+1-671\",\"iso\":\"GU\"},\r\n {\"country\":\"Guatemala\",\"code\":\"+502\",\"iso\":\"GT\"},\r\n {\"country\":\"Guernsey\",\"code\":\"+44-1481\",\"iso\":\"GG\"},\r\n {\"country\":\"Guinea\",\"code\":\"+224\",\"iso\":\"GN\"},\r\n {\"country\":\"Guinea-Bissau\",\"code\":\"+245\",\"iso\":\"GW\"},\r\n {\"country\":\"Guyana\",\"code\":\"+592\",\"iso\":\"GY\"},\r\n {\"country\":\"Haiti\",\"code\":\"+509\",\"iso\":\"HT\"},\r\n {\"country\":\"Honduras\",\"code\":\"+504\",\"iso\":\"HN\"},\r\n {\"country\":\"Hong Kong\",\"code\":\"+852\",\"iso\":\"HK\"},\r\n {\"country\":\"Hungary\",\"code\":\"+36\",\"iso\":\"HU\"},\r\n {\"country\":\"Iceland\",\"code\":\"+354\",\"iso\":\"IS\"},\r\n {\"country\":\"India\",\"code\":\"+91\",\"iso\":\"IN\"},\r\n {\"country\":\"Indonesia\",\"code\":\"+62\",\"iso\":\"ID\"},\r\n {\"country\":\"Iran\",\"code\":\"+98\",\"iso\":\"IR\"},\r\n {\"country\":\"Iraq\",\"code\":\"+964\",\"iso\":\"IQ\"},\r\n {\"country\":\"Ireland\",\"code\":\"+353\",\"iso\":\"IE\"},\r\n {\"country\":\"Isle of Man\",\"code\":\"+44-1624\",\"iso\":\"IM\"},\r\n {\"country\":\"Israel\",\"code\":\"+972\",\"iso\":\"IL\"},\r\n {\"country\":\"Italy\",\"code\":\"+39\",\"iso\":\"IT\"},\r\n {\"country\":\"Ivory Coast\",\"code\":\"+225\",\"iso\":\"CI\"},\r\n {\"country\":\"Jamaica\",\"code\":\"+1-876\",\"iso\":\"JM\"},\r\n {\"country\":\"Japan\",\"code\":\"+81\",\"iso\":\"JP\"},\r\n {\"country\":\"Jersey\",\"code\":\"+44-1534\",\"iso\":\"JE\"},\r\n {\"country\":\"Jordan\",\"code\":\"+962\",\"iso\":\"JO\"},\r\n {\"country\":\"Kazakhstan\",\"code\":\"+7\",\"iso\":\"KZ\"},\r\n {\"country\":\"Kenya\",\"code\":\"+254\",\"iso\":\"KE\"},\r\n {\"country\":\"Kiribati\",\"code\":\"+686\",\"iso\":\"KI\"},\r\n {\"country\":\"Kosovo\",\"code\":\"+383\",\"iso\":\"XK\"},\r\n {\"country\":\"Kuwait\",\"code\":\"+965\",\"iso\":\"KW\"},\r\n {\"country\":\"Kyrgyzstan\",\"code\":\"+996\",\"iso\":\"KG\"},\r\n {\"country\":\"Laos\",\"code\":\"+856\",\"iso\":\"LA\"},\r\n {\"country\":\"Latvia\",\"code\":\"+371\",\"iso\":\"LV\"},\r\n {\"country\":\"Lebanon\",\"code\":\"+961\",\"iso\":\"LB\"},\r\n {\"country\":\"Lesotho\",\"code\":\"+266\",\"iso\":\"LS\"},\r\n {\"country\":\"Liberia\",\"code\":\"+231\",\"iso\":\"LR\"},\r\n {\"country\":\"Libya\",\"code\":\"+218\",\"iso\":\"LY\"},\r\n {\"country\":\"Liechtenstein\",\"code\":\"+423\",\"iso\":\"LI\"},\r\n {\"country\":\"Lithuania\",\"code\":\"+370\",\"iso\":\"LT\"},\r\n {\"country\":\"Luxembourg\",\"code\":\"+352\",\"iso\":\"LU\"},\r\n {\"country\":\"Macao\",\"code\":\"+853\",\"iso\":\"MO\"},\r\n {\"country\":\"Macedonia\",\"code\":\"+389\",\"iso\":\"MK\"},\r\n {\"country\":\"Madagascar\",\"code\":\"+261\",\"iso\":\"MG\"},\r\n {\"country\":\"Malawi\",\"code\":\"+265\",\"iso\":\"MW\"},\r\n {\"country\":\"Malaysia\",\"code\":\"+60\",\"iso\":\"MY\"},\r\n {\"country\":\"Maldives\",\"code\":\"+960\",\"iso\":\"MV\"},\r\n {\"country\":\"Mali\",\"code\":\"+223\",\"iso\":\"ML\"},\r\n {\"country\":\"Malta\",\"code\":\"+356\",\"iso\":\"MT\"},\r\n {\"country\":\"Marshall Islands\",\"code\":\"+692\",\"iso\":\"MH\"},\r\n {\"country\":\"Mauritania\",\"code\":\"+222\",\"iso\":\"MR\"},\r\n {\"country\":\"Mauritius\",\"code\":\"+230\",\"iso\":\"MU\"},\r\n {\"country\":\"Mayotte\",\"code\":\"+262\",\"iso\":\"YT\"},\r\n {\"country\":\"Mexico\",\"code\":\"+52\",\"iso\":\"MX\"},\r\n {\"country\":\"Micronesia\",\"code\":\"+691\",\"iso\":\"FM\"},\r\n {\"country\":\"Moldova\",\"code\":\"+373\",\"iso\":\"MD\"},\r\n {\"country\":\"Monaco\",\"code\":\"+377\",\"iso\":\"MC\"},\r\n {\"country\":\"Mongolia\",\"code\":\"+976\",\"iso\":\"MN\"},\r\n {\"country\":\"Montenegro\",\"code\":\"+382\",\"iso\":\"ME\"},\r\n {\"country\":\"Montserrat\",\"code\":\"+1-664\",\"iso\":\"MS\"},\r\n {\"country\":\"Morocco\",\"code\":\"+212\",\"iso\":\"MA\"},\r\n {\"country\":\"Mozambique\",\"code\":\"+258\",\"iso\":\"MZ\"},\r\n {\"country\":\"Myanmar\",\"code\":\"+95\",\"iso\":\"MM\"},\r\n {\"country\":\"Namibia\",\"code\":\"+264\",\"iso\":\"NA\"},\r\n {\"country\":\"Nauru\",\"code\":\"+674\",\"iso\":\"NR\"},\r\n {\"country\":\"Nepal\",\"code\":\"+977\",\"iso\":\"NP\"},\r\n {\"country\":\"Netherlands\",\"code\":\"+31\",\"iso\":\"NL\"},\r\n {\"country\":\"Netherlands Antilles\",\"code\":\"+599\",\"iso\":\"AN\"},\r\n {\"country\":\"New Caledonia\",\"code\":\"+687\",\"iso\":\"NC\"},\r\n {\"country\":\"New Zealand\",\"code\":\"+64\",\"iso\":\"NZ\"},\r\n {\"country\":\"Nicaragua\",\"code\":\"+505\",\"iso\":\"NI\"},\r\n {\"country\":\"Niger\",\"code\":\"+227\",\"iso\":\"NE\"},\r\n {\"country\":\"Nigeria\",\"code\":\"+234\",\"iso\":\"NG\"},\r\n {\"country\":\"Niue\",\"code\":\"+683\",\"iso\":\"NU\"},\r\n {\"country\":\"North Korea\",\"code\":\"+850\",\"iso\":\"KP\"},\r\n {\"country\":\"Northern Mariana Islands\",\"code\":\"+1-670\",\"iso\":\"MP\"},\r\n {\"country\":\"Norway\",\"code\":\"+47\",\"iso\":\"NO\"},\r\n {\"country\":\"Oman\",\"code\":\"+968\",\"iso\":\"OM\"},\r\n {\"country\":\"Pakistan\",\"code\":\"+92\",\"iso\":\"PK\"},\r\n {\"country\":\"Palau\",\"code\":\"+680\",\"iso\":\"PW\"},\r\n {\"country\":\"Palestine\",\"code\":\"+970\",\"iso\":\"PS\"},\r\n {\"country\":\"Panama\",\"code\":\"+507\",\"iso\":\"PA\"},\r\n {\"country\":\"Papua New Guinea\",\"code\":\"+675\",\"iso\":\"PG\"},\r\n {\"country\":\"Paraguay\",\"code\":\"+595\",\"iso\":\"PY\"},\r\n {\"country\":\"Peru\",\"code\":\"+51\",\"iso\":\"PE\"},\r\n {\"country\":\"Philippines\",\"code\":\"+63\",\"iso\":\"PH\"},\r\n {\"country\":\"Pitcairn\",\"code\":\"+64\",\"iso\":\"PN\"},\r\n {\"country\":\"Poland\",\"code\":\"+48\",\"iso\":\"PL\"},\r\n {\"country\":\"Portugal\",\"code\":\"+351\",\"iso\":\"PT\"},\r\n {\"country\":\"Puerto Rico\",\"code\":\"+1-787, 1-939\",\"iso\":\"PR\"},\r\n {\"country\":\"Qatar\",\"code\":\"+974\",\"iso\":\"QA\"},\r\n {\"country\":\"Republic of the Congo\",\"code\":\"+242\",\"iso\":\"CG\"},\r\n {\"country\":\"Reunion\",\"code\":\"+262\",\"iso\":\"RE\"},\r\n {\"country\":\"Romania\",\"code\":\"+40\",\"iso\":\"RO\"},\r\n {\"country\":\"Russia\",\"code\":\"+7\",\"iso\":\"RU\"},\r\n {\"country\":\"Rwanda\",\"code\":\"+250\",\"iso\":\"RW\"},\r\n {\"country\":\"Saint Barthelemy\",\"code\":\"+590\",\"iso\":\"BL\"},\r\n {\"country\":\"Saint Helena\",\"code\":\"+290\",\"iso\":\"SH\"},\r\n {\"country\":\"Saint Kitts and Nevis\",\"code\":\"+1-869\",\"iso\":\"KN\"},\r\n {\"country\":\"Saint Lucia\",\"code\":\"+1-758\",\"iso\":\"LC\"},\r\n {\"country\":\"Saint Martin\",\"code\":\"+590\",\"iso\":\"MF\"},\r\n {\"country\":\"Saint Pierre and Miquelon\",\"code\":\"+508\",\"iso\":\"PM\"},\r\n {\"country\":\"Saint Vincent and the Grenadines\",\"code\":\"+1-784\",\"iso\":\"VC\"},\r\n {\"country\":\"Samoa\",\"code\":\"+685\",\"iso\":\"WS\"},\r\n {\"country\":\"San Marino\",\"code\":\"+378\",\"iso\":\"SM\"},\r\n {\"country\":\"Sao Tome and Principe\",\"code\":\"+239\",\"iso\":\"ST\"},\r\n {\"country\":\"Saudi Arabia\",\"code\":\"+966\",\"iso\":\"SA\"},\r\n {\"country\":\"Senegal\",\"code\":\"+221\",\"iso\":\"SN\"},\r\n {\"country\":\"Serbia\",\"code\":\"+381\",\"iso\":\"RS\"},\r\n {\"country\":\"Seychelles\",\"code\":\"+248\",\"iso\":\"SC\"},\r\n {\"country\":\"Sierra Leone\",\"code\":\"+232\",\"iso\":\"SL\"},\r\n {\"country\":\"Singapore\",\"code\":\"+65\",\"iso\":\"SG\"},\r\n {\"country\":\"Sint Maarten\",\"code\":\"+1-721\",\"iso\":\"SX\"},\r\n {\"country\":\"Slovakia\",\"code\":\"+421\",\"iso\":\"SK\"},\r\n {\"country\":\"Slovenia\",\"code\":\"+386\",\"iso\":\"SI\"},\r\n {\"country\":\"Solomon Islands\",\"code\":\"+677\",\"iso\":\"SB\"},\r\n {\"country\":\"Somalia\",\"code\":\"+252\",\"iso\":\"SO\"},\r\n {\"country\":\"South Africa\",\"code\":\"+27\",\"iso\":\"ZA\"},\r\n {\"country\":\"South Korea\",\"code\":\"+82\",\"iso\":\"KR\"},\r\n {\"country\":\"South Sudan\",\"code\":\"+211\",\"iso\":\"SS\"},\r\n {\"country\":\"Spain\",\"code\":\"+34\",\"iso\":\"ES\"},\r\n {\"country\":\"Sri Lanka\",\"code\":\"+94\",\"iso\":\"LK\"},\r\n {\"country\":\"Sudan\",\"code\":\"+249\",\"iso\":\"SD\"},\r\n {\"country\":\"Suriname\",\"code\":\"+597\",\"iso\":\"SR\"},\r\n {\"country\":\"Svalbard and Jan Mayen\",\"code\":\"+47\",\"iso\":\"SJ\"},\r\n {\"country\":\"Swaziland\",\"code\":\"+268\",\"iso\":\"SZ\"},\r\n {\"country\":\"Sweden\",\"code\":\"+46\",\"iso\":\"SE\"},\r\n {\"country\":\"Switzerland\",\"code\":\"+41\",\"iso\":\"CH\"},\r\n {\"country\":\"Syria\",\"code\":\"+963\",\"iso\":\"SY\"},\r\n {\"country\":\"Taiwan\",\"code\":\"+886\",\"iso\":\"TW\"},\r\n {\"country\":\"Tajikistan\",\"code\":\"+992\",\"iso\":\"TJ\"},\r\n {\"country\":\"Tanzania\",\"code\":\"+255\",\"iso\":\"TZ\"},\r\n {\"country\":\"Thailand\",\"code\":\"+66\",\"iso\":\"TH\"},\r\n {\"country\":\"Togo\",\"code\":\"+228\",\"iso\":\"TG\"},\r\n {\"country\":\"Tokelau\",\"code\":\"+690\",\"iso\":\"TK\"},\r\n {\"country\":\"Tonga\",\"code\":\"+676\",\"iso\":\"TO\"},\r\n {\"country\":\"Trinidad and Tobago\",\"code\":\"+1-868\",\"iso\":\"TT\"},\r\n {\"country\":\"Tunisia\",\"code\":\"+216\",\"iso\":\"TN\"},\r\n {\"country\":\"Turkey\",\"code\":\"+90\",\"iso\":\"TR\"},\r\n {\"country\":\"Turkmenistan\",\"code\":\"+993\",\"iso\":\"TM\"},\r\n {\"country\":\"Turks and Caicos Islands\",\"code\":\"+1-649\",\"iso\":\"TC\"},\r\n {\"country\":\"Tuvalu\",\"code\":\"+688\",\"iso\":\"TV\"},\r\n {\"country\":\"U.S. Virgin Islands\",\"code\":\"+1-340\",\"iso\":\"VI\"},\r\n {\"country\":\"Uganda\",\"code\":\"+256\",\"iso\":\"UG\"},\r\n {\"country\":\"Ukraine\",\"code\":\"+380\",\"iso\":\"UA\"},\r\n {\"country\":\"United Arab Emirates\",\"code\":\"+971\",\"iso\":\"AE\"},\r\n {\"country\":\"United Kingdom\",\"code\":\"+44\",\"iso\":\"GB\"},\r\n {\"country\":\"United States\",\"code\":\"+1\",\"iso\":\"US\"},\r\n {\"country\":\"Uruguay\",\"code\":\"+598\",\"iso\":\"UY\"},\r\n {\"country\":\"Uzbekistan\",\"code\":\"+998\",\"iso\":\"UZ\"},\r\n {\"country\":\"Vanuatu\",\"code\":\"+678\",\"iso\":\"VU\"},\r\n {\"country\":\"Vatican\",\"code\":\"+379\",\"iso\":\"VA\"},\r\n {\"country\":\"Venezuela\",\"code\":\"+58\",\"iso\":\"VE\"},\r\n {\"country\":\"Vietnam\",\"code\":\"+84\",\"iso\":\"VN\"},\r\n {\"country\":\"Wallis and Futuna\",\"code\":\"+681\",\"iso\":\"WF\"},\r\n {\"country\":\"Western Sahara\",\"code\":\"+212\",\"iso\":\"EH\"},\r\n {\"country\":\"Yemen\",\"code\":\"+967\",\"iso\":\"YE\"},\r\n {\"country\":\"Zambia\",\"code\":\"+260\",\"iso\":\"ZM\"},\r\n {\"country\":\"Zimbabwe\",\"code\":\"+263\",\"iso\":\"ZW\"}];\r\n\r\nexport let dummyLessons: any[] = [\r\n {\r\n \"id\": 1234,\r\n \"classroomId\": 5678,\r\n \"status\": \"Completed\",\r\n \"startingDate\": \"2023-03-15T09:00:00Z\",\r\n \"duration\": 60,\r\n \"isRecccuring\": false,\r\n \"answered\": \"no\",\r\n \"requestedByName\": \"John Doe\",\r\n \"bbbLink\": \"https://example.com/bbb-room-1234\",\r\n \"title\": \"Introduction to Spanish\",\r\n \"level\": \"A1\",\r\n \"classroom\": {\r\n \"id\": \"5678\",\r\n \"title\": \"Spanish 101\",\r\n \"status\": \"ON_GOING\",\r\n \"totalHours\": 20,\r\n \"hoursLeft\": 16,\r\n \"activeLevel\": \"A1\",\r\n \"users\": [\r\n {\r\n \"id\": 9876,\r\n \"fname\": \"Jane\",\r\n \"lname\": \"Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"phone\": \"+123456789\",\r\n \"timezone\": \"Europe/Paris\"\r\n },\r\n {\r\n \"id\": 8765,\r\n \"fname\": \"Alice\",\r\n \"lname\": \"Smith\",\r\n \"email\": \"alice.smith@example.com\",\r\n \"phone\": \"+987654321\",\r\n \"timezone\": \"America/Los_Angeles\"\r\n }\r\n ],\r\n \"classroomStudents\": [\r\n {\r\n \"id\": 9876,\r\n \"fname\": \"Jane\",\r\n \"lname\": \"Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"phone\": \"+123456789\",\r\n \"timezone\": \"Europe/Paris\"\r\n }\r\n ],\r\n \"type\": \"Paid\",\r\n \"language\": \"Spanish\",\r\n \"teacher\": {\r\n \"id\": 3456,\r\n \"fname\": \"Juan\",\r\n \"lname\": \"Garcia\",\r\n \"email\": \"juan.garcia@example.com\",\r\n \"phone\": \"+345678901\",\r\n \"timezone\": \"Europe/Madrid\"\r\n },\r\n \"activePackage\": {\r\n \"id\": \"package-1234\",\r\n \"lessons_level\": [\r\n {\r\n \"level\": \"A1\",\r\n \"hoursCompleted\": 4,\r\n \"lessonsStarted\": \"2023-03-01T09:00:00Z\",\r\n \"lessonsEnded\": \"present\"\r\n }\r\n ],\r\n \"totalHours\": 20,\r\n \"currentPackageLevel\": \"A1\",\r\n \"hoursLeft\": 16,\r\n \"type\": \"REGULAR\",\r\n \"expiresOn\": \"2023-09-15T23:59:59Z\",\r\n \"stratedAt\": \"2023-02-15T09:00:00Z\",\r\n \"purchasedAt\": \"2023-02-15T12:00:00Z\",\r\n \"state\": \"ACTIVE\",\r\n \"extensions\": []\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 513,\r\n \"classroomId\": 729,\r\n \"status\": \"CANCELED\",\r\n \"startingDate\": \"2022-09-14T16:00:00.000Z\",\r\n \"duration\": 60,\r\n \"isRecccuring\": false,\r\n \"answered\": \"false\",\r\n \"requestedByName\": \"Alice\",\r\n \"title\": \"Intermediate French\",\r\n \"level\": \"B1\",\r\n \"classroom\": {\r\n \"id\": \"729\",\r\n \"title\": \"French 202\",\r\n \"status\": \"ON_GOING\",\r\n \"totalHours\": 20,\r\n \"hoursLeft\": 10,\r\n \"activeLevel\": \"B1\",\r\n \"users\": [\r\n {\r\n \"id\": 123,\r\n \"firstName\": \"Bob\",\r\n \"lastName\": \"Smith\",\r\n \"email\": \"bob@example.com\",\r\n \"phone\": \"123-456-7890\",\r\n \"role\": \"student\",\r\n \"status\": \"ACTIVE\"\r\n },\r\n {\r\n \"id\": 456,\r\n \"firstName\": \"Charlie\",\r\n \"lastName\": \"Brown\",\r\n \"email\": \"charlie@example.com\",\r\n \"phone\": \"555-555-5555\",\r\n \"role\": \"student\",\r\n \"status\": \"ACTIVE\"\r\n },\r\n {\r\n \"id\": 789,\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Jones\",\r\n \"email\": \"david@example.com\",\r\n \"phone\": \"111-111-1111\",\r\n \"role\": \"teacher\",\r\n \"status\": \"ACTIVE\"\r\n }\r\n ],\r\n \"classroomStudents\": [\r\n {\r\n \"id\": 123,\r\n \"firstName\": \"Bob\",\r\n \"lastName\": \"Smith\",\r\n \"email\": \"bob@example.com\",\r\n \"phone\": \"123-456-7890\",\r\n \"role\": \"student\",\r\n \"status\": \"ACTIVE\"\r\n },\r\n {\r\n \"id\": 456,\r\n \"firstName\": \"Charlie\",\r\n \"lastName\": \"Brown\",\r\n \"email\": \"charlie@example.com\",\r\n \"phone\": \"555-555-5555\",\r\n \"role\": \"student\",\r\n \"status\": \"ACTIVE\"\r\n }\r\n ],\r\n \"type\": \"PAID\",\r\n \"teacher\": {\r\n \"id\": 789,\r\n \"firstName\": \"David\",\r\n \"lastName\": \"Jones\",\r\n \"email\": \"david@example.com\",\r\n \"phone\": \"111-111-1111\",\r\n \"role\": \"teacher\",\r\n \"status\": \"ACTIVE\"\r\n },\r\n }},\r\n {\r\n \"id\": 2,\r\n \"classroomId\": 456,\r\n \"status\": \"REARRANGE\",\r\n \"startingDate\": new Date('2023-03-01T18:00:00.000Z'),\r\n \"duration\": 60,\r\n \"isRecccuring\": false,\r\n \"answered\": \"accepted\",\r\n \"requestedByName\": \"Jane Smith\",\r\n \"title\": \"Advanced Calculus\",\r\n \"level\": \"Expert\",\r\n \"classroom\": undefined,\r\n \"bbbLink\": \"https://example.com/bbb/2\"\r\n },\r\n {\r\n \"id\": 3,\r\n \"classroomId\": 789,\r\n \"status\": \"REQUESTED\",\r\n \"startingDate\": new Date('2023-03-01T18:00:00.000Z'),\r\n \"duration\": 45,\r\n \"isRecccuring\": false,\r\n \"answered\": \"rejected\",\r\n \"requestedByName\": \"Bob Johnson\",\r\n \"title\": 'sasa',\r\n \"level\": 'A1',\r\n \"classroom\": undefined,\r\n \"bbbLink\": \"https://example.com/bbb/3\"\r\n },\r\n {\r\n \"id\": 4,\r\n \"classroomId\": 123,\r\n \"status\": \"COMPLETED\",\r\n \"startingDate\": new Date('2023-03-01T18:00:00.000Z'),\r\n \"duration\": 30,\r\n \"isRecccuring\": true,\r\n \"answered\": \"canceled\",\r\n \"requestedByName\": \"Alice Lee\",\r\n \"title\": \"English Conversation\",\r\n \"level\": 'A2',\r\n \"classroom\": undefined,\r\n \"bbbLink\": \"https://example.com/bbb/4\"\r\n },\r\n {\r\n \"id\": 5,\r\n \"classroomId\": 456,\r\n \"status\": \"NO_SHOW\",\r\n \"startingDate\": new Date('2023-03-01T18:00:00.000Z'),\r\n \"duration\": 60,\r\n \"isRecccuring\": false,\r\n \"answered\": \"attended\",\r\n \"requestedByName\": \"David Kim\",\r\n \"title\": \"Business Writing\",\r\n \"level\": \"Advanced\",\r\n \"classroom\": undefined,\r\n \"bbbLink\": \"https://example.com/bbb/5\"\r\n }\r\n];\r\n\r\nexport let dummyClassrooms: any[] =\r\n [\r\n {\r\n \"id\": \"987654\",\r\n \"title\": \"Spanish Course for Beginners\",\r\n \"status\": \"ON_GOING\",\r\n \"totalHours\": 20,\r\n \"hoursLeft\": 12,\r\n \"activeLevel\": \"A1\",\r\n \"users\": [\r\n {\r\n \"id\": \"123456\",\r\n \"name\": \"John Doe\",\r\n \"email\": \"john.doe@example.com\"\r\n },\r\n {\r\n \"id\": \"789012\",\r\n \"name\": \"Jane Doe\",\r\n \"email\": \"jane.doe@example.com\"\r\n }\r\n ],\r\n \"classroomStudents\": [\r\n {\r\n \"id\": \"123456\",\r\n \"name\": \"John Doe\",\r\n \"email\": \"john.doe@example.com\"\r\n },\r\n {\r\n \"id\": \"789012\",\r\n \"name\": \"Jane Doe\",\r\n \"email\": \"jane.doe@example.com\"\r\n }\r\n ],\r\n \"type\": \"PAID\",\r\n \"language\": \"Spanish\",\r\n \"teacher\": {\r\n \"id\": \"345678\",\r\n \"name\": \"Maria Garcia\",\r\n \"email\": \"maria.garcia@example.com\"\r\n },\r\n \"activePackage\": {\r\n \"id\": \"234567\",\r\n \"title\": \"Spanish Beginner Package\",\r\n \"price\": 99.99,\r\n \"hours\": 20\r\n },\r\n \"lessons\": [\r\n {\r\n \"id\": \"345678\",\r\n \"title\": \"Greetings and Introductions\",\r\n \"description\": \"Learn basic greetings and how to introduce yourself\",\r\n \"duration\": 2\r\n },\r\n {\r\n \"id\": \"456789\",\r\n \"title\": \"Numbers and Time\",\r\n \"description\": \"Learn to tell the time and count to 100\",\r\n \"duration\": 2\r\n }\r\n ],\r\n \"packages\": [\r\n {\r\n \"id\": \"234567\",\r\n \"title\": \"Spanish Beginner Package\",\r\n \"price\": 99.99,\r\n \"hours\": 20\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": \"classroom001\",\r\n \"title\": \"English Speaking Practice for Beginners\",\r\n \"status\": \"ON_GOING\",\r\n \"totalHours\": 24,\r\n \"hoursLeft\": 6,\r\n \"activeLevel\": \"A1\",\r\n \"users\": [\r\n {\r\n \"id\": \"user001\",\r\n \"name\": \"John Doe\",\r\n \"email\": \"john.doe@example.com\",\r\n \"role\": \"STUDENT\"\r\n },\r\n {\r\n \"id\": \"user002\",\r\n \"name\": \"Jane Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"role\": \"STUDENT\"\r\n }\r\n ],\r\n \"classroomStudents\": [\r\n {\r\n \"id\": \"user001\",\r\n \"name\": \"John Doe\",\r\n \"email\": \"john.doe@example.com\",\r\n \"role\": \"STUDENT\"\r\n },\r\n {\r\n \"id\": \"user002\",\r\n \"name\": \"Jane Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"role\": \"STUDENT\"\r\n }\r\n ],\r\n \"type\": \"PAID\",\r\n \"language\": \"English\",\r\n \"teacher\": {\r\n \"id\": \"user003\",\r\n \"name\": \"Mary Smith\",\r\n \"email\": \"mary.smith@example.com\",\r\n \"role\": \"TEACHER\"\r\n },\r\n \"activePackage\": {\r\n \"id\": \"package001\",\r\n \"name\": \"Basic Package\",\r\n \"hours\": 24,\r\n \"price\": 200\r\n },\r\n \"lessons\": [\r\n {\r\n \"id\": \"lesson001\",\r\n \"title\": \"Introduction to English\",\r\n \"description\": \"Basic English phrases and greetings\",\r\n \"duration\": 2\r\n },\r\n {\r\n \"id\": \"lesson002\",\r\n \"title\": \"Talking about yourself\",\r\n \"description\": \"Describing yourself and your interests\",\r\n \"duration\": 2\r\n }\r\n ],\r\n \"packages\": [\r\n {\r\n \"id\": \"package001\",\r\n \"name\": \"Basic Package\",\r\n \"hours\": 24,\r\n \"price\": 200\r\n },\r\n {\r\n \"id\": \"package002\",\r\n \"name\": \"Intermediate Package\",\r\n \"hours\": 48,\r\n \"price\": 350\r\n }\r\n ]\r\n }\r\n ];\r\n\r\nexport let dummyLesson = {\r\n \"id\": 1234,\r\n \"classroomId\": 5678,\r\n \"status\": \"ARRANGED_TRIAL\",\r\n \"startingDate\": \"2023-05-07T09:00:00Z\",\r\n \"duration\": 60,\r\n \"isRecccuring\": false,\r\n \"answered\": \"no\",\r\n \"requestedByName\": \"John Doe\",\r\n \"bbbLink\": \"https://example.com/bbb-room-1234\",\r\n \"title\": \"Introduction to Spanish\",\r\n \"level\": \"A1\",\r\n \"classroom\": {\r\n \"id\": \"5678\",\r\n \"title\": \"Spanish 101\",\r\n \"status\": \"ON_GOING\",\r\n \"totalHours\": 20,\r\n \"hoursLeft\": 16,\r\n \"activeLevel\": \"A1\",\r\n \"users\": [\r\n {\r\n \"id\": 9876,\r\n \"fname\": \"Jane\",\r\n \"lname\": \"Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"phone\": \"+123456789\",\r\n \"timezone\": \"Europe/Paris\"\r\n },\r\n {\r\n \"id\": 8765,\r\n \"fname\": \"Alice\",\r\n \"lname\": \"Smith\",\r\n \"email\": \"alice.smith@example.com\",\r\n \"phone\": \"+987654321\",\r\n \"timezone\": \"America/Los_Angeles\"\r\n }\r\n ],\r\n \"classroomStudents\": [\r\n {\r\n \"id\": 9876,\r\n \"fname\": \"Jane\",\r\n \"lname\": \"Doe\",\r\n \"email\": \"jane.doe@example.com\",\r\n \"phone\": \"+123456789\",\r\n \"timezone\": \"Europe/Paris\"\r\n }\r\n ],\r\n \"type\": \"Paid\",\r\n \"language\": \"Spanish\",\r\n \"teacher\": {\r\n \"id\": 3456,\r\n \"fname\": \"Juan\",\r\n \"lname\": \"Garcia\",\r\n \"email\": \"juan.garcia@example.com\",\r\n \"phone\": \"+345678901\",\r\n \"timezone\": \"Europe/Madrid\"\r\n },\r\n \"activePackage\": {\r\n \"id\": \"package-1234\",\r\n \"lessons_level\": [\r\n {\r\n \"level\": \"A1\",\r\n \"hoursCompleted\": 4,\r\n \"lessonsStarted\": \"2023-03-01T09:00:00Z\",\r\n \"lessonsEnded\": \"present\"\r\n }\r\n ],\r\n \"totalHours\": 20,\r\n \"currentPackageLevel\": \"A1\",\r\n \"hoursLeft\": 16,\r\n \"type\": \"REGULAR\",\r\n \"expiresOn\": \"2023-09-15T23:59:59Z\",\r\n \"stratedAt\": \"2023-02-15T09:00:00Z\",\r\n \"purchasedAt\": \"2023-02-15T12:00:00Z\",\r\n \"state\": \"ACTIVE\",\r\n \"extensions\": []\r\n }\r\n }\r\n};","export interface LanguageToLearn {\r\n title: string;\r\n link: string;\r\n}\r\n\r\nexport interface Language {\r\n code: string;\r\n name: string;\r\n nativeName?: string;\r\n}\r\n\r\nexport interface SocialMedia {\r\n icon: string;\r\n link: string;\r\n}\r\n\r\nexport interface Country {\r\n name: string, code: string, emoji: string, unicode: string, image: string\r\n}\r\n\r\nexport interface Timezone {\r\n value: string,\r\n abbr: string,\r\n offset: number,\r\n isdst: boolean,\r\n text: string,\r\n utc: string[],\r\n countries?: string[]\r\n}\r\n\r\nexport interface DeviceKind {\r\n w576down: boolean,\r\n is576: boolean,\r\n is768: boolean,\r\n is992: boolean,\r\n is1024: boolean,\r\n is1366: boolean,\r\n isBig: boolean,\r\n w576up?: boolean,\r\n w768up?: boolean,\r\n w992up?: boolean,\r\n w1024up?: boolean,\r\n w1366up?: boolean,\r\n w1500up?: boolean,\r\n}\r\n\r\nexport enum Dimentions {\r\n w576 = 576,\r\n w768 = 768,\r\n w992 = 992,\r\n w1024 = 1024,\r\n w1366 = 1366,\r\n w1500 = 1500,\r\n h850 = 850\r\n}\r\n\r\nexport interface ToastMessage {\r\n severity: string,\r\n summary: string,\r\n detail: string,\r\n key?: string,\r\n life?: number,\r\n}\r\n\r\n\r\nexport enum AppLayoutType {\r\n Default = 'default',\r\n Sidebar = 'sidebar', // with sidebar\r\n Center = 'center', // centered content, no frame\r\n Blank = 'blank', // no frame\r\n Admin = 'admin', // admin layout\r\n}\r\n\r\nexport interface LeftMenuItem {\r\n title: string;\r\n url: string | (string | { queryParams: { inPage: string; }; })[];\r\n icon: string;\r\n lottieIcon?: string;\r\n disabled: boolean;\r\n role: string[];\r\n scale?: number;\r\n disableOnStudentTrial?: boolean;\r\n method?: () => void;\r\n }\r\n\r\n export interface LeadDynoAffiliate {\r\n id: number;\r\n email: string;\r\n first_name: string;\r\n last_name: string;\r\n affiliate_code: string;\r\n referring_affiliate_id?: any;\r\n created_at: string;\r\n updated_at: string;\r\n status: string;\r\n paypal_email: string;\r\n unsubscribed: boolean;\r\n archived: boolean;\r\n pending_approval: boolean;\r\n affiliate_url: string;\r\n affiliate_dashboard_url: string;\r\n compensation_tier_code: string;\r\n custom_fields: {};\r\n referring_affiliate?: any;\r\n total_leads: number;\r\n total_visitors: number;\r\n total_purchases: number;\r\n }","import { Classroom, Level } from \"./classroom.model\"\r\nimport { Library, LibraryFile } from \"./library.model\"\r\nimport { User } from \"./user.model\"\r\n\r\nexport interface Homework {\r\n id?: string,\r\n title: string,\r\n description: string,\r\n homeWorkTasks: HomeworkTask[],\r\n pinned: boolean,\r\n deadLine: Date | null | string,\r\n status: string,\r\n state: string,\r\n submitted: Date | null,\r\n classroom: number,\r\n assignedTo: User[],\r\n levels: string[],\r\n categories: string[]\r\n}\r\n\r\nexport interface HomeworkTask {\r\n id?: string,\r\n title: string,\r\n finished: boolean,\r\n teacherFiles: HomeworkTaskFile[],\r\n studentFiles?: string[],\r\n assignedTo?: User,\r\n assignedToUserInClassroom?: string,\r\n assignedToClassroom?: Classroom,\r\n libraries?: LibraryFile[],\r\n link?: string,\r\n rate?: number,\r\n proportion: string,\r\n dismissed?: boolean\r\n}\r\n\r\nexport interface HomeworkTaskFile {\r\n filePath: string,\r\n levels: (Level.A1 | Level.A2 | Level.B1 | Level.B2 | Level.C1 | Level.C2)[],\r\n categories: (Category.VOCABULARY | Category.GRAMMAR | Category.WRITING | Category.READING | Category.LISTENING | Category.SPEAKING | Category.REVISION | Category.TEST)[]\r\n}\r\n\r\nexport enum Category {\r\n VOCABULARY = \"Vocabulary\",\r\n GRAMMAR = \"Grammar\",\r\n WRITING = \"Writing\",\r\n READING = \"Reading\",\r\n LISTENING = \"Listening\",\r\n SPEAKING = \"Speaking\",\r\n REVISION = \"Revision\",\r\n TEST = \"Test\",\r\n}\r\n\r\nexport enum HomeworkStatus {\r\n COMPLETED_RATED = \"Completed Rated\",\r\n COMPLETED_UNRATED = \"Completed Unrated\",\r\n PARTIALLY_COMPLETED_PARTIALLY_RATED = \"Completed Partially Rated\",\r\n COMPLETED_PARTIALLY_RATED = \"Partially Completed Partially Rated\",\r\n COMPLETED_PARTIALLY_UNRATED = \"Partially Completed Unrated\",\r\n PARTIALLY_COMPLETED_RATED = \"Partially Completed Rated\",\r\n NO_COMPLETED_RATED = \"Partially Completed Rated\",\r\n PENDING = \"Pending\",\r\n}\r\n\r\nexport enum Proportion {\r\n NOT_DONE = \"Not done\",\r\n SLIGHTLY_DONE = \"Slightly done\",\r\n MOSTLY_DONE = \"Mostly done\",\r\n COMPLETED = \"Completed\"\r\n}\r\n\r\nexport interface HomeworkPostRequest {\r\n title: string,\r\n description: string,\r\n deadLine: string | null,\r\n status: string,\r\n state: string,\r\n levels: string[],\r\n categories: string[],\r\n homeWorkTasks: HomeworkTaskToSend[]\r\n}\r\n\r\nexport interface HomeworkTaskToSend {\r\n id?: string,\r\n title: string,\r\n finished: boolean,\r\n assignedTo: string,\r\n studentFiles: string[],\r\n classroomId: number,\r\n teacherFiles: HomeworkTaskFile[],\r\n link?: string,\r\n rate?: number,\r\n proportion: string,\r\n dismissed?: boolean\r\n libraryFileIds: number[]\r\n}\r\n\r\nexport interface UpdateHomeworkReq {\r\n id: number,\r\n title: string,\r\n description: string,\r\n deadLine: string | null,\r\n status: string,\r\n state: string,\r\n levels: string[],\r\n categories: string[]\r\n}","import { Classroom } from \"./classroom.model\";\r\nimport { User } from \"./user.model\";\r\n\r\nexport interface Lesson {\r\n id: number,\r\n classroomId: number,\r\n status: LessonStatus,\r\n startingDate: Date,\r\n duration: number,\r\n isRecccuring: boolean,\r\n answered: string,\r\n requestedByName: string,\r\n recccuringGroupId?: string,\r\n requestedByAspUserId?: string,\r\n title?: string,\r\n level?: string,\r\n classroom?: Classroom,\r\n bbbLink: string,\r\n googleMeetURL?: string | null,\r\n bellBirdMeetingURL?: string | null\r\n}\r\n\r\nexport interface LessonPostRequest {\r\n classroomId: number,\r\n status?: LessonStatus,\r\n startingDate: string,\r\n duration: number,\r\n isRecccuring: boolean,\r\n}\r\n\r\nexport interface LessonUpdateRequest {\r\n id: number,\r\n classroomId: number,\r\n status: LessonStatus,\r\n startingDate: string,\r\n duration: number,\r\n isRecccuring: boolean,\r\n answered: string | boolean\r\n}\r\n\r\nexport interface LessonRequest {\r\n requestedBy: User | null,\r\n answered: boolean\r\n}\r\n\r\nexport enum LessonStatus {\r\n ARRANGED = \"arranged\",\r\n ARRANGED_TRIAL = \"trial arranged\",\r\n COMPLETED_TRIAL = \"trial completed\",\r\n CANCELED_TRIAL = \"trial canceled\",\r\n REQUESTED_TRIAL = \"trial requested\",\r\n COMPLETED = \"completed\",\r\n CANCELED = \"canceled\",\r\n NO_SHOW = \"No Show\",\r\n REARRANGE = \"rearrange\",\r\n REQUESTED = \"requested\"\r\n}\r\n\r\n// COMPLETED_TRIAL = \"trial completed\",\r\n\r\nexport interface BBB {\r\n teacherName: string,\r\n studentNames: string[],\r\n startDateTime: string,\r\n roomName: string,\r\n message: string,\r\n duration: number,\r\n lessonId: number\r\n}","import { Classroom, Level } from \"./classroom.model\";\r\nimport { Language } from \"./general.model\";\r\nimport { User } from \"./user.model\";\r\n\r\nexport interface Package {\r\n id: string,\r\n lessons_level: PackageLessonsLevel[],\r\n totalHours: number,\r\n classroomId: string,\r\n classroomTeacher?: string,\r\n currentPackageLevel: string,\r\n packageLevel: string,\r\n hoursLeft: number,\r\n type: PackageType.REGULAR | PackageType.FLEX | PackageType.BUSINESS | PackageType.GIFT | PackageType.TRIAL | PackageType.PREMIUM,\r\n expiresOn: Date,\r\n stratedAt: Date,\r\n purchasedAt: Date,\r\n state: PackageState,\r\n extensions: PackageExtention[]\r\n}\r\n\r\nexport interface PackageExtention {\r\n fromDate: Date,\r\n toDate: Date,\r\n reason: string,\r\n requested_by: User\r\n}\r\n\r\nexport interface PackageLessonsLevel {\r\n level: string,\r\n hoursCompleted: number,\r\n lessonsStarted: Date,\r\n lessonsEnded: Date | 'present'\r\n}\r\n\r\nexport interface PackageFilterHelper {\r\n totalHours: (string | number)[],\r\n hoursLeft: (string | number)[],\r\n level: (string | Level)[],\r\n type: (string | PackageType)[],\r\n state: (string | PackageState)[],\r\n hasExtention: string[]\r\n}\r\n\r\nexport interface PackageFilter {\r\n totalHours: (string | number),\r\n hoursLeft: (string | number),\r\n level: (string | Level),\r\n type: (string | PackageType),\r\n state: (string | PackageState),\r\n hasExtention: string,\r\n expiresOn_from: Date,\r\n expiresOn_to: Date,\r\n stratedAt_to: Date,\r\n stratedAt_from: Date,\r\n purchasedAt_from: Date,\r\n purchasedAt_to: Date,\r\n}\r\n\r\nexport interface PackageToExtend {\r\n extendTime: string,\r\n price: number\r\n}\r\n\r\nexport interface PackageToBuy {\r\n Id: number,\r\n type: PackageType,\r\n costPlus: number,\r\n expiresIn: string,\r\n expiresPlus: string,\r\n cancelation: string,\r\n pause: string,\r\n priceHourly: PackagePriceHourly[]\r\n}\r\n\r\nexport interface PackageToBuyNew {\r\n id: number,\r\n hours: number,\r\n price: number,\r\n perHour: number,\r\n language: string,\r\n level: string,\r\n numberOfStudents: string\r\n}\r\n\r\nexport interface mltPackages {\r\n type: PackageType,\r\n costPlus: number,\r\n expiresIn: PackagePriceHourly[],\r\n expiresPlus: string,\r\n cancelation: string,\r\n pause: string,\r\n}\r\n\r\nexport interface PackagePriceHourly {\r\n hours: number,\r\n price: number,\r\n perHour: number,\r\n expirationMonths: number\r\n}\r\n\r\nexport interface BuyerUserDetails {\r\n fname: string,\r\n lname: string,\r\n company: string,\r\n profession: string,\r\n country: string,\r\n streetName: string,\r\n streetNumber: string,\r\n city: string,\r\n postcode: string,\r\n tax: string,\r\n email: string,\r\n phone: string,\r\n tin: string,\r\n}\r\n\r\nexport interface PackageToBuyOrderDeails {\r\n isNew: boolean,\r\n selectedClassroom: Classroom | null,\r\n selectedLevel: string,\r\n selectedLanguage: Language,\r\n selectedNumberOfStudents: string,\r\n selectedPackageToBuy: PackageToBuyNew,\r\n buyerUserDetails: BuyerUserDetails\r\n}\r\n\r\nexport interface SplitPackagesToBuyResponse {\r\n splitPaymentsId: number;\r\n hours: number;\r\n companyFee: number;\r\n language: string;\r\n level: string;\r\n numberOfStudents: string;\r\n }\r\n\r\nexport enum PackageType {\r\n REGULAR = \"Regular\",\r\n FLEX = \"Flexible\",\r\n PREMIUM = \"Premium\",\r\n BUSINESS = \"Business\",\r\n GIFT = \"Gift\",\r\n TRIAL = \"Trial\",\r\n PAID = \"Paid\"\r\n}\r\n\r\nexport const PackageDurationHours: Record = {\r\n [PackageType.REGULAR]: 24,\r\n [PackageType.FLEX]: 12,\r\n [PackageType.PREMIUM]: 4,\r\n}\r\n\r\nexport enum PackageTypeNew {\r\n REGULAR = \"Regular\",\r\n FLEX = \"Flexible\",\r\n PREMIUM = \"Premium\",\r\n}\r\n\r\nexport enum PackageState {\r\n ACTIVE = \"Active\",\r\n ONGOING = \"ongoing\",\r\n COMPLETED = \"Completed\",\r\n PAUSED = \"Paused\",\r\n EXPIRED = \"Expired\",\r\n CANCELED = \"Canceled\",\r\n CANCELLED = \"Cancelled\",\r\n PURCHASED = \"Purchased\",\r\n REFUNDED = \"Refunded\",\r\n TRANSFERED = \"Transferred\"\r\n}\r\n\r\nexport class PackagesModel {\r\n static getDefaultPackages(): mltPackages[] {\r\n const defaultPackages: mltPackages[] = [\r\n {\r\n type: PackageType.REGULAR,\r\n costPlus: 0,\r\n expiresIn: [{ hours: 5, price: 0, perHour: 0, expirationMonths: 1 },\r\n { hours: 10, price: 0, perHour: 0, expirationMonths: 2 },\r\n { hours: 15, price: 0, perHour: 0, expirationMonths: 3 },\r\n { hours: 20, price: 0, perHour: 0, expirationMonths: 4 },\r\n { hours: 50, price: 0, perHour: 0, expirationMonths: 10 },],\r\n expiresPlus: \"\",\r\n cancelation: \"24\",\r\n pause: \"\",\r\n },\r\n {\r\n type: PackageType.FLEX,\r\n costPlus: 30,\r\n expiresIn: [{ hours: 5, price: 0, perHour: 0, expirationMonths: 3 },\r\n { hours: 10, price: 0, perHour: 0, expirationMonths: 4 },\r\n { hours: 15, price: 0, perHour: 0, expirationMonths: 5 },\r\n { hours: 20, price: 0, perHour: 0, expirationMonths: 6 },\r\n { hours: 50, price: 0, perHour: 0, expirationMonths: 12 },],\r\n expiresPlus: \"2 months\",\r\n cancelation: \"12\",\r\n pause: \"\", // TODO: when freeze package is added\r\n },\r\n {\r\n type: PackageType.PREMIUM,\r\n costPlus: 80,\r\n expiresIn: [{ hours: 5, price: 0, perHour: 0, expirationMonths: 5 },\r\n { hours: 10, price: 0, perHour: 0, expirationMonths: 6 },\r\n { hours: 15, price: 0, perHour: 0, expirationMonths: 7 },\r\n { hours: 20, price: 0, perHour: 0, expirationMonths: 8 },\r\n { hours: 50, price: 0, perHour: 0, expirationMonths: 14 },],\r\n expiresPlus: \"4 months\", \r\n cancelation: \"4\",\r\n pause: \"\", // TODO: when freeze package is added\r\n },\r\n ];\r\n \r\n return defaultPackages;\r\n }\r\n }\r\n","export interface RequestTrialRequest {\r\n firstName: string;\r\n lastName: string;\r\n contactNumber: string;\r\n email: string;\r\n nativeLanguage: string;\r\n wantToLearnLanguage: string;\r\n country: string;\r\n timeZone: string;\r\n numberOfStudents: number;\r\n findUs: string;\r\n availability: string;\r\n message: string;\r\n}\r\n\r\nexport enum StudentTrialStatus {\r\n NEW = \"new\",\r\n FORWARDED = \"forwarded\",\r\n ASSIGNED = \"assigned\",\r\n LOST = \"lost\",\r\n GALAXY = \"galaxy\",\r\n IGNORED = \"ignored\",\r\n HAS_PAYMENT = \"hasPayment\",\r\n NONE = \"none\"\r\n}\r\n\r\nexport interface ContactUsRequest {\r\n userData: {\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n phone: string\r\n },\r\n course: string,\r\n studentType: string,\r\n message: string\r\n}\r\n","import { Country, Language, Timezone } from \"./general.model\";\r\nimport { UserAvailability, UserAvailabilityHours } from \"./user.model\";\r\n\r\nexport interface Teacher {\r\n id: string,\r\n preffered_name: string,\r\n first_name: string,\r\n last_name: string,\r\n city?: string,\r\n country?: { name: string, flagUrl: string },\r\n country_origin: { name: string, flagUrl: string },\r\n country_residency: { name: string, flagUrl: string },\r\n native_language?: string,\r\n native_languages: TeacherApplicationStep1NativeLanguage[],\r\n birth: string,\r\n timezone: string,\r\n email: string,\r\n phone_code?: string,\r\n phone: string,\r\n skype: string,\r\n education: TeacherEducation[],\r\n language_speak: TeacherApplicationStep3LanguageSpeakOrTeach[],\r\n language_teach: TeacherApplicationStep3LanguageSpeakOrTeach[],\r\n teaching_methods: string,\r\n years_experience: number,\r\n cv: string,\r\n photo: string,\r\n availability?: UserAvailability,\r\n hours_per_week: string,\r\n status?: string,\r\n date_applied: Date\r\n}\r\n\r\nexport interface LanguageLevel {\r\n language: string,\r\n level: any,\r\n hasBusinessLevel?: boolean\r\n}\r\n\r\nexport interface TeacherEducation {\r\n name: string,\r\n institute: string,\r\n fileUploads: [{ name: string; }]\r\n}\r\n\r\nexport interface TeacherStatusResponse {\r\n dateSubmited: string,\r\n status: string,\r\n userName: string\r\n}\r\n\r\nexport enum TeacherStatus {\r\n APPROVED = \"Approved\",\r\n INCOMPLETE = \"Incomplete\",\r\n CONSIDERATION = \"Under Consideration\",\r\n NO_LONGER_CONSIDERED = \"No Longer Under Consideration\",\r\n REJECTED = \"Rejected\",\r\n NEW = \"New\",\r\n RECEIVED = \"Received\",\r\n WITHDRAWN = \"Withdrawn\"\r\n}\r\n\r\nexport interface TeacherApplicationStep1 {\r\n firstName: string;\r\n lastName: string;\r\n prefferedName: string;\r\n countryOrigin: TeacherApplicationStep1Country;\r\n countryResidency: TeacherApplicationStep1Country;\r\n nativeLanguages: TeacherApplicationStep1NativeLanguage[];\r\n timeZone: string;\r\n birth: string;\r\n email: string;\r\n phone: string;\r\n phoneCode: string;\r\n skype: string;\r\n}\r\nexport interface TeacherApplicationStep2 {\r\n education: TeacherApplicationEducation[];\r\n}\r\n\r\nexport interface TeacherApplicationEducation {\r\n name: string;\r\n institute: string;\r\n fileUploads: TeacherApplicationFileUpload[];\r\n}\r\n\r\ninterface TeacherApplicationFileUpload {\r\n filePath: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep1NativeLanguage {\r\n native: TeacherApplicationStep1Native;\r\n}\r\n\r\nexport interface TeacherApplicationStep1Native {\r\n code: string;\r\n name: string;\r\n nativeName: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep1Country {\r\n name: string;\r\n flagUrl: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep3 {\r\n languageSpeak: TeacherApplicationStep3LanguageSpeakOrTeach[];\r\n languageTeach: TeacherApplicationStep3LanguageSpeakOrTeach[];\r\n yearsExperience: number;\r\n teachingMethods: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep3LanguageSpeakOrTeach {\r\n language: TeacherApplicationStep3Language;\r\n level: any;\r\n levelName?: any,\r\n hasBusinessLevel?: boolean;\r\n}\r\n\r\nexport interface TeacherApplicationStep3LanguageTeach {\r\n levelName: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep3Level {\r\n levelName: string;\r\n visible: boolean;\r\n showOnlyOnCode: string[];\r\n}\r\n\r\nexport interface TeacherApplicationStep3Language {\r\n code: string;\r\n name: string;\r\n nativeName: string;\r\n}\r\n\r\nexport interface TeacherApplicationStepsStatus {\r\n step1: boolean;\r\n step2: boolean;\r\n step3: boolean;\r\n step4: boolean;\r\n step5: boolean;\r\n step6: boolean;\r\n}\r\n\r\nexport interface AvailabilityTime {\r\n AvailabilityDayTime: AvailabilityDayTime[];\r\n mon: AvailabilityDayTime[];\r\n tue: AvailabilityDayTime[];\r\n wed: AvailabilityDayTime[];\r\n thu: AvailabilityDayTime[];\r\n fri: AvailabilityDayTime[];\r\n sat: AvailabilityDayTime[];\r\n sun: AvailabilityDayTime[];\r\n AvailabilityDayTimedayActive: boolean;\r\n tuesdayActive: boolean;\r\n wednesdayActive: boolean;\r\n thursdayActive: boolean;\r\n fridayActive: boolean;\r\n saturdayActive: boolean;\r\n sundayActive: boolean;\r\n hours: string;\r\n}\r\n\r\n\r\nexport interface AvailabilityDayTime {\r\n from: string;\r\n to: string;\r\n}\r\n\r\n\r\ninterface Step1 {\r\n firstName: string;\r\n lastName: string;\r\n prefferedName: string;\r\n countryOrigin: {\r\n name: string;\r\n flagUrl: string;\r\n };\r\n countryResidency: {\r\n name: string;\r\n flagUrl: string;\r\n };\r\n nativeLanguages: Array<{\r\n native: {\r\n code: string;\r\n name: string;\r\n nativeName: string;\r\n }\r\n }>;\r\n timeZone: string;\r\n birth: string;\r\n email: string;\r\n phone: string;\r\n phoneCode: string;\r\n skype: string;\r\n}\r\n\r\nexport interface Step2 {\r\n education: TeacherEducation[];\r\n}\r\n\r\nexport interface Step3 {\r\n languageSpeak: Array<{\r\n language: {\r\n code: string;\r\n name: string;\r\n nativeName: string;\r\n };\r\n level: {\r\n levelName: string;\r\n };\r\n hasBusinessLevel: boolean;\r\n }>;\r\n languageTeach: Array<{\r\n language: {\r\n code: string;\r\n name: string;\r\n nativeName: string;\r\n };\r\n level: {\r\n levelName: string;\r\n };\r\n hasBusinessLevel: boolean;\r\n }>;\r\n yearsExperience: number;\r\n teachingMethods: string;\r\n}\r\n\r\nexport interface TeacherApplicationStep4Response {\r\n cv: string;\r\n profilePicture: string;\r\n}\r\n\r\nexport interface TeacherApplicationReview {\r\n step1: Step1;\r\n step2: Step2;\r\n step3: TeacherApplicationStep3;\r\n step4: TeacherApplicationStep4Response;\r\n step5: AvailabilityTime;\r\n}\r\nexport interface UserAvailabilityStep5 {\r\n [key: string]: UserAvailabilityHours[],\r\n \r\n}\r\nexport interface UserAvailabilityHoursStep5 {\r\n from: string,\r\n to : string,\r\n hours_per_week: string\r\n}","export interface AuthData {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport interface User {\r\n id: string,\r\n aspUserId?: string,\r\n email: string,\r\n personalEmail?: string,\r\n skype: string,\r\n firstName: string,\r\n lastName: string,\r\n phone?: string, // TODO MAKE STRING\r\n bdate?: string,\r\n dateOfBirth?: string,\r\n photo?: string,\r\n avatarUrl?: string,\r\n token?: string,\r\n role?: string,\r\n availability?: UserAvailability, // TODO API CALL\r\n off?: UserAvailabilityOff[], // TODO API CALL\r\n origin?: string,\r\n residence?: string,\r\n timeZone?: string,\r\n introduce?: string,\r\n hours_per_week: string, // TODO GET FROM AVAILABILITY (ADD TO UserAvailability)\r\n status: UserStatus.ACTIVE,\r\n teachingLanguage?: string,\r\n userName?: string,\r\n accSlitPayments?: boolean,\r\n lingoletteId: string\r\n}\r\n\r\nexport enum UserStatus {\r\n ACTIVE = \"Active\"\r\n}\r\n\r\nexport enum UserRole {\r\n TEACHER = \"Teacher\",\r\n STUDENT = \"Student\",\r\n NONE = \"\" // for initialization\r\n}\r\n\r\nexport interface UserAvailability {\r\n id: string,\r\n type: UserAvailabilityType.OFF | UserAvailabilityType.AVAILABLE,\r\n mon: UserAvailabilityHours[],\r\n tue: UserAvailabilityHours[],\r\n wed: UserAvailabilityHours[],\r\n thu: UserAvailabilityHours[],\r\n fri: UserAvailabilityHours[],\r\n sat: UserAvailabilityHours[],\r\n sun: UserAvailabilityHours[],\r\n}\r\n\r\nexport interface UserAvailabilityOff {\r\n id?: number,\r\n reason: string,\r\n period: UserAvailabilityOffDate,\r\n status: OffStatus\r\n}\r\n\r\nexport enum OffStatus {\r\n PENDING = 'Pending',\r\n REJECTED = 'Rejected',\r\n ACCEPTED = 'Accepted'\r\n}\r\n\r\nexport enum UserAvailabilityType {\r\n OFF = \"off\",\r\n AVAILABLE = \"Available\"\r\n}\r\n\r\nexport interface UserAvailabilityHours {\r\n from: string,\r\n to : string\r\n}\r\n\r\nexport interface UserAvailabilityOffDate {\r\n from: Date,\r\n to : Date\r\n}\r\n\r\nexport interface RequestTrialRequest {\r\n firstName: string;\r\n lastName: string;\r\n contactNumber: string;\r\n email: string;\r\n nativeLanguage: string;\r\n wantToLearnLanguage: string;\r\n country: string;\r\n timeZone: string;\r\n numberOfStudents: number;\r\n findUs: string;\r\n availability: string;\r\n message: string;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filter',\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\r\n\r\n transform(value: any[], args: any): any[] {\r\n if (!value || !args || !args['term']) {\r\n return value;\r\n }\r\n\r\n const term: string = args['term'].toLocaleLowerCase();\r\n\r\n console.log('Search term:', term);\r\n\r\n const filteredValues = value.filter(item => {\r\n const contains = this.isContain(term, item);\r\n if (contains) {\r\n console.log('Match found in item:', item);\r\n }\r\n return contains;\r\n });\r\n\r\n return filteredValues;\r\n }\r\n\r\n isContain(term: string, item: any): boolean {\r\n for (const key in item) {\r\n if (item.hasOwnProperty(key)) {\r\n const propertyValue = item[key];\r\n if (typeof propertyValue === 'string') {\r\n if (propertyValue.toLocaleLowerCase().indexOf(term) !== -1) {\r\n return true;\r\n }\r\n } else if (typeof propertyValue === 'object' && propertyValue !== null) {\r\n if (this.isContain(term, propertyValue)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}","import { Injectable, signal } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AuthData, User, UserAvailability, UserAvailabilityOff, UserRole } from '../models/user.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BehaviorSubject, forkJoin, Observable, Subject } from 'rxjs';\r\nimport jwt_decode from 'jwt-decode';\r\nimport { Teacher, TeacherStatus, TeacherStatusResponse } from '../models/teacher.model';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { UserService } from './user.service';\r\nimport { ToastService } from './toast.service';\r\nconst BACKEND_URL = environment.apiUrl + \"/Auth/\";\r\nconst BACKEND_TEACHER_URL = environment.apiUrl + \"/Teacher/\";\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n private isAuthenticated = false;\r\n isAuthenticatedSignal = signal(false);\r\n firebaseLoggedIn = signal(false);\r\n firebaseLogoutEvent = signal(false);\r\n private token?: string | null;\r\n private user?: User | null;\r\n private tokenTimer: any;\r\n private userId?: string | null;\r\n public authStatusListener = new Subject();\r\n public teacherStatus?: string;\r\n UserRoles = UserRole;\r\n private _userId: string | null = null; // private property to store userId value\r\n\r\n private showRegistrationSuccessfullMessage$: BehaviorSubject = new BehaviorSubject(false);\r\n public showRegistrationSuccessfullMessage: Observable = this.showRegistrationSuccessfullMessage$.asObservable();\r\n\r\n public disabledProfileRoutes = false;\r\n constructor(\r\n private http: HttpClient,\r\n private router: Router,\r\n private toastService: ToastService,\r\n private userService: UserService,\r\n // private _externalAuthService: SocialAuthService\r\n ) { }\r\n\r\n get isStudent(): boolean {\r\n return this.getUserRole() === UserRole.STUDENT;\r\n }\r\n\r\n get isTeacher(): boolean {\r\n return this.getUserRole() === UserRole.TEACHER;\r\n }\r\n\r\n get teachingLanguage(): string {\r\n return this.getUser()!.teachingLanguage!;\r\n }\r\n\r\n getToken() {\r\n return this.token;\r\n }\r\n\r\n getIsAuth() {\r\n return this.isAuthenticated;\r\n }\r\n\r\n getUserId() {\r\n return this.userId || this._userId; // return userId from private property if it exists, otherwise from local storage\r\n }\r\n\r\n setUserId(userId: string) {\r\n this._userId = userId; // set userId value in private property\r\n }\r\n\r\n getUserRole() {\r\n if (this.token) {\r\n const tokenInfo = this.getDecodedAccessToken(this.token!); // decode token\r\n return tokenInfo.role\r\n }\r\n return null\r\n }\r\n\r\n getLoggedInUser() {\r\n const authInformation = this.getAuthData();\r\n if (authInformation) {\r\n\r\n let user = JSON.parse(authInformation?.user!);\r\n // // Mutate timeZone\r\n // if (user.timeZone === 'Etc/UTC') {\r\n // user.timeZone = \"Europe/London\";\r\n // }\r\n return user;\r\n }\r\n return {}\r\n }\r\n\r\n setAuthStatusListener(status: boolean) {\r\n this.authStatusListener.next(status);\r\n }\r\n\r\n getAuthStatusListener() {\r\n return this.authStatusListener.asObservable();\r\n }\r\n\r\n createUser(email: string, password: string, endpoint: string) {\r\n return this.http.post(BACKEND_LMS_URL + endpoint + \"?email=\" + email + \"&pwd=\" + password, {\r\n email: email,\r\n pwd: password\r\n });\r\n }\r\n\r\n confirmUser(userId: string, code: string) {\r\n this.http.post(BACKEND_LMS_URL + 'ConfirmEmailAccount?userId = ' + userId + '&code=' + code + '', { userId: userId, code: code })\r\n .subscribe(res => {\r\n if (res) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your account has been confirmed.'\r\n });\r\n this.router.navigateByUrl('/auth', { replaceUrl: true })\r\n }\r\n })\r\n }\r\n\r\n forgot(email: string) {\r\n this.http.post(BACKEND_LMS_URL + \"sendForgotPassCode?UsernameResetPass=\" + email, {})\r\n .subscribe(async response => {\r\n\r\n })\r\n }\r\n\r\n confirmForgot(email: string, code: string, password: string) {\r\n let c = {\r\n code: code,\r\n email: email,\r\n pwd: password,\r\n pwdRetype: password\r\n }\r\n return this.http.post(BACKEND_URL + \"SetPassword\", c);\r\n }\r\n\r\n login(email: string, password: string) {\r\n const authData: AuthData = {\r\n username: email,\r\n password: password\r\n };\r\n\r\n return this.http.post(BACKEND_LMS_URL + \"authenticate\", authData)\r\n }\r\n\r\n getDecodedAccessToken(token: string): any {\r\n try {\r\n return jwt_decode(token);\r\n } catch (Error) {\r\n return null;\r\n }\r\n }\r\n\r\n setToken(tokenValue: string | undefined) {\r\n this.token = tokenValue;\r\n }\r\n\r\n setIsAuthenticated(value: boolean) {\r\n this.isAuthenticated = value;\r\n this.isAuthenticatedSignal.set(value);\r\n }\r\n\r\n setAuthTimer(duration: number) {\r\n this.tokenTimer = setTimeout(() => {\r\n this.logout();\r\n }, duration * 1000)\r\n }\r\n\r\n setDisabledProfileRoutes(value: boolean) {\r\n this.disabledProfileRoutes = value;\r\n }\r\n\r\n setShowRegistrationSuccessfullMessage(value: boolean) {\r\n this.showRegistrationSuccessfullMessage$.next(value);\r\n }\r\n\r\n saveAuthData(token: string, expirationDate: Date, userId: string, user: User, role: string) {\r\n localStorage.setItem(\"token\", token);\r\n localStorage.setItem(\"expiration\", expirationDate.toISOString());\r\n localStorage.setItem(\"userId\", userId);\r\n localStorage.setItem(\"user\", JSON.stringify(user));\r\n localStorage.setItem(\"role\", role);\r\n if (userId) {\r\n this._userId = userId; // set userId value in private property\r\n }\r\n }\r\n\r\n async autoAuthUser() {\r\n\r\n const authInformation = this.getAuthData();\r\n if (!authInformation) {\r\n return;\r\n }\r\n const now = new Date();\r\n const expiresIn = authInformation.expirationDate.getTime() - now.getTime();\r\n if (expiresIn > 0) {\r\n this.token = authInformation.token;\r\n const tokenInfo = this.getDecodedAccessToken(this.token!); // decode token\r\n this.isAuthenticated = true;\r\n this.userId = authInformation.userId;\r\n this.user = JSON.parse(authInformation.user!)\r\n if (authInformation.userId) {\r\n this._userId = authInformation.userId; // set userId value in private property\r\n }\r\n this.setAuthTimer(expiresIn / 1000);\r\n this.authStatusListener.next(true);\r\n }\r\n }\r\n\r\n private getAuthData() {\r\n const token = localStorage.getItem(\"token\");\r\n const expirationDate = localStorage.getItem(\"expiration\");\r\n const userId = localStorage.getItem(\"userId\");\r\n const user = localStorage.getItem(\"user\");\r\n const teacherStatus = localStorage.getItem(\"teacherStatus\");\r\n const role = localStorage.getItem(\"role\");\r\n if (!token || !expirationDate) {\r\n return;\r\n }\r\n return {\r\n token: token,\r\n expirationDate: new Date(expirationDate),\r\n userId: userId,\r\n user: user,\r\n teacherStatus: teacherStatus,\r\n role: role\r\n }\r\n }\r\n\r\n logout() {\r\n this.token = null;\r\n this.isAuthenticated = false;\r\n this.authStatusListener.next(false);\r\n this.userId = null;\r\n this.user = null;\r\n clearTimeout(this.tokenTimer);\r\n this.clearAuthData();\r\n this.router.navigate(['/auth/login']);\r\n }\r\n\r\n private clearAuthData() {\r\n localStorage.removeItem(\"token\");\r\n localStorage.removeItem(\"expiration\");\r\n localStorage.removeItem(\"userId\");\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"role\");\r\n localStorage.removeItem(\"teacherStatus\");\r\n this.teacherStatus = undefined;\r\n this._userId = null;\r\n this.firebaseLogoutEvent.set(true);\r\n this.firebaseLoggedIn.set(false);\r\n }\r\n\r\n public isUserInfoFullfileld() {\r\n if (\r\n this.user?.email === \"\" ||\r\n this.user?.firstName === \"\" ||\r\n this.user?.lastName === \"\" ||\r\n this.user?.skype === \"\" ||\r\n this.user?.timeZone === \"\" ||\r\n this.user?.email === \"Not Given\" ||\r\n this.user?.firstName === \"Not Given\" ||\r\n this.user?.lastName === \"Not Given\" ||\r\n this.user?.skype === \"Not Given\" ||\r\n this.user?.timeZone === \"Not Given\"\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public getTeacherStatus(): Observable {\r\n\r\n return this.http.get(BACKEND_LMS_URL + \"GetTeacherApplicationStatus\");\r\n }\r\n\r\n public getTeacherStatusPromise(): Promise {\r\n\r\n return this.http.get(BACKEND_LMS_URL + \"GetTeacherApplicationStatus\").toPromise();\r\n }\r\n\r\n public setTeacherStatus(status: any) {\r\n this.teacherStatus = status;\r\n }\r\n\r\n public getUserPhoto() {\r\n const authInformation = this.getAuthData();\r\n if (authInformation) {\r\n this.user = JSON.parse(authInformation?.user!);\r\n let photo = (this.user?.photo && this.user?.photo !== 'Not Given') ? environment.apiUrl + \"/\" + this.user?.photo : \"/assets/images/avatar.svg\";\r\n return photo;\r\n }\r\n return \"\"\r\n }\r\n\r\n public getUser() {\r\n const authInformation = this.getAuthData();\r\n this.user = JSON.parse(authInformation?.user!);\r\n return this.user;\r\n }\r\n //TODO GOOGLE LOGIN\r\n\r\n // public signInWithGoogle = ()=> {\r\n // return this._externalAuthService.signIn(GoogleLoginProvider.PROVIDER_ID);\r\n // }\r\n // public signOutExternal = () => {\r\n // this._externalAuthService.signOut();\r\n // }\r\n\r\n \r\n saveLeadDynoAffiliateIdFromRoute(next: ActivatedRouteSnapshot) {\r\n const leadDynoAffiliateId = next.queryParams['afmc'];\r\n\r\n if (leadDynoAffiliateId !== null && leadDynoAffiliateId !== undefined) {\r\n console.log('leadDynoAffiliateId', leadDynoAffiliateId);\r\n localStorage.setItem('leadDynoAffiliateId', leadDynoAffiliateId);\r\n }\r\n }\r\n \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Lesson, LessonStatus } from '../models/lesson.model';\r\nimport * as moment from 'moment';\r\nimport { UserAvailability, UserAvailabilityHours, UserAvailabilityOff } from '../models/user.model';\r\nimport { MyCalendarEvent, RetrieveCalendarAvailabilityRequestData } from '../models/calendar.model';\r\nimport { GeneralService } from './general.service';\r\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\nimport { Classroom } from '../models/classroom.model';\r\nimport { LessonService } from './lesson.service';\r\nimport { ClassroomService } from './classroom.service';\r\nconst BACKEND_URL = environment.apiUrl;\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n\r\nconst dayOfWeekMap: { [key: string]: number } = {\r\n 'mon': 1,\r\n 'tue': 2,\r\n 'wed': 3,\r\n 'thu': 4,\r\n 'fri': 5,\r\n 'sat': 6,\r\n 'sun': 0\r\n};\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CalendarService {\r\n private chooseClassroomListener$: BehaviorSubject = new BehaviorSubject({} as Classroom);\r\n public readonly chooseClassroomListener: Observable = this.chooseClassroomListener$.asObservable();\r\n\r\n private selectedDateListener$: BehaviorSubject = new BehaviorSubject(new Date());\r\n public readonly selectedDateListener: Observable = this.selectedDateListener$.asObservable();\r\n\r\n private durationListener$: BehaviorSubject = new BehaviorSubject(0);\r\n public readonly durationListener: Observable = this.durationListener$.asObservable();\r\n\r\n private scheduleListener$: BehaviorSubject<{ listen: boolean, isUpdating: boolean }> = new BehaviorSubject<{ listen: boolean, isUpdating: boolean }>({ listen: false, isUpdating: false });\r\n public readonly scheduleListener: Observable<{ listen: boolean, isUpdating: boolean }> = this.scheduleListener$.asObservable();\r\n\r\n private updateListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly updateListener: Observable = this.updateListener$.asObservable();\r\n private toggleOverlayListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly toggleOverlayListener: Observable = this.toggleOverlayListener$.asObservable();\r\n\r\n private teacherChangeListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly teacherChangeListener: Observable = this.teacherChangeListener$.asObservable();\r\n\r\n private calendarAgendaMonthListener$: BehaviorSubject = new BehaviorSubject(new Date());\r\n public readonly calendarAgendaMonthListener: Observable = this.calendarAgendaMonthListener$.asObservable();\r\n\r\n private calendarAgendaHeightListener$: BehaviorSubject = new BehaviorSubject(0);\r\n public readonly calendarAgendaHeightListener: Observable = this.calendarAgendaHeightListener$.asObservable();\r\n\r\n public scrollTo: number = 0;\r\n public eventSettings: { dataSource: Record[] } = {} as { dataSource: Record[] }\r\n public classoomEventSettings: { dataSource: Record[] } = {} as { dataSource: Record[] }\r\n private calendarLessons: MyCalendarEvent[] = [];\r\n constructor(\r\n private http: HttpClient,\r\n private generalService: GeneralService,\r\n private authService: AuthService,\r\n private lessonService: LessonService,\r\n private classroomService: ClassroomService\r\n ) { }\r\n\r\n public setChooseClassroom(classroom: Classroom) {\r\n this.chooseClassroomListener$.next(classroom);\r\n }\r\n\r\n public setSelectedDateListener(date: Date) {\r\n this.selectedDateListener$.next(date);\r\n }\r\n\r\n public setDurationListener(duration: number) {\r\n this.durationListener$.next(duration);\r\n }\r\n\r\n public setScheduleListener(listen: boolean, isUpdating: boolean,) {\r\n this.scheduleListener$.next({ listen: listen, isUpdating: isUpdating });\r\n }\r\n\r\n public setUpdateListener(val: boolean) {\r\n this.updateListener$.next(val);\r\n }\r\n\r\n public setToggleOverlayListener(val: boolean) {\r\n this.toggleOverlayListener$.next(val);\r\n }\r\n\r\n public setTeacherChangeListener(val: boolean) {\r\n this.teacherChangeListener$.next(val);\r\n }\r\n\r\n public setCalendarAgendaMonthListener(val: Date) {\r\n this.calendarAgendaMonthListener$.next(val);\r\n }\r\n\r\n public setCalendarAgendaHeightListener(val: number) {\r\n this.calendarAgendaHeightListener$.next(val);\r\n }\r\n\r\n public convertLessonsToCallendarObjects(lessons: Lesson[], language: string): MyCalendarEvent[] {\r\n let eventSettings: MyCalendarEvent[] = [];\r\n let currentEventSettings: MyCalendarEvent;\r\n for (let lesson of lessons) {\r\n currentEventSettings = this.createLessonEvent(lesson, lesson.title!, language);\r\n eventSettings.push(currentEventSettings);\r\n }\r\n return eventSettings;\r\n // return { dataSource: extend([], eventSettings, undefined, true) as Record[] };\r\n }\r\n\r\n createLessonEvent(lesson: Lesson, title: string, language: string) {\r\n // let recRule = lesson.isRecccuring ? 'FREQ=WEEKLY;INTERVAL=1;COUNT=10' : ''\r\n return {\r\n Id: lesson.id,\r\n Subject: title,\r\n Language: language.substring(0, 2).toUpperCase(),\r\n StartTime: lesson.startingDate,\r\n EndTime: moment(lesson.startingDate).add(lesson.duration * 60, 'm').toDate(),\r\n CategoryColor: \"white\",\r\n Duration: lesson.duration,\r\n Status: lesson.status,\r\n RecurrenceRule: \"\",\r\n Type: \"appointment\",\r\n Lesson: lesson,\r\n Padding: ((lesson.duration * 2) * 36 - 35 + 12) + \"px 10px\"\r\n }\r\n }\r\n\r\n public convertAvailabilityToCalendarObjects(times: UserAvailability, type: string): MyCalendarEvent[] {\r\n let currentWeek = this.getWeek();\r\n let mon = new Date(currentWeek[0]);\r\n let tue = new Date(currentWeek[1]);\r\n let wed = new Date(currentWeek[2]);\r\n let thu = new Date(currentWeek[3]);\r\n let fri = new Date(currentWeek[4]);\r\n let sat = new Date(currentWeek[5]);\r\n let sun = new Date(currentWeek[6]);;\r\n let eventSettings: MyCalendarEvent[] = [];\r\n this.createAvailabilityEventsByDay(mon, 'mon', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(tue, 'tue', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(wed, 'wed', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(thu, 'thu', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(fri, 'fri', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(sat, 'sat', times, type, eventSettings)\r\n this.createAvailabilityEventsByDay(sun, 'sun', times, type, eventSettings)\r\n return eventSettings;\r\n }\r\n\r\n createAvailabilityEventsByDay(day: Date, dayString: 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun', times: UserAvailability, type: string, eventSettings: MyCalendarEvent[]) {\r\n let currentEventSettings: MyCalendarEvent;\r\n let id: number = 0;\r\n let hourFrom = 0;\r\n let minutesFrom = 0;\r\n let hourTo = 0;\r\n let minutesTo = 0;\r\n let splitTimeFrom = [];\r\n let splitTimeTo = [];\r\n let from: number = 0;\r\n let to: number = 0;\r\n let nextFrom: number = 0;\r\n let nextTo: number = 0;\r\n let array: UserAvailabilityHours[] = times[dayString];\r\n let escapeFrom: boolean = false;\r\n if (array == null) {\r\n array = []\r\n }\r\n for (let i = 0; i < array.length; i++) {\r\n splitTimeFrom = array[i].from.split(':');\r\n splitTimeTo = array[i].to.split(':');\r\n hourFrom = parseInt(splitTimeFrom[0]);\r\n minutesFrom = parseInt(splitTimeFrom[1]);\r\n hourTo = parseInt(splitTimeTo[0]);\r\n minutesTo = parseInt(splitTimeTo[1]);\r\n if (!escapeFrom) {\r\n from = day.setHours(hourFrom, minutesFrom);\r\n }\r\n escapeFrom = false;\r\n to = day.setHours(hourTo, minutesTo);\r\n if (i + 1 < array.length) {\r\n splitTimeFrom = array[i + 1].from.split(':');\r\n splitTimeTo = array[i + 1].to.split(':');\r\n hourFrom = parseInt(splitTimeFrom[0]);\r\n minutesFrom = parseInt(splitTimeFrom[1]);\r\n hourTo = parseInt(splitTimeTo[0]);\r\n minutesTo = parseInt(splitTimeTo[1]);\r\n nextFrom = day.setHours(hourFrom, minutesFrom);\r\n nextTo = day.setHours(hourTo, minutesTo);\r\n\r\n if (to == nextFrom) {\r\n escapeFrom = true;\r\n }\r\n }\r\n if (!escapeFrom) {\r\n currentEventSettings = this.crateAvailabilityEvent(from, to, id, type);\r\n eventSettings.push(currentEventSettings);\r\n }\r\n }\r\n }\r\n\r\n crateAvailabilityEvent(from: number, to: number, id: number, type: string) {\r\n return {\r\n Id: id,\r\n StartTime: moment(from).add(0, 'm').toDate(),\r\n EndTime: moment(to).add(0, 'm').toDate(),\r\n Subject: \"\",\r\n CategoryColor: \"\",\r\n Duration: this.generalService.getDatesDiff(moment(from).add(0, 'm').toDate(), moment(to).add(0, 'm').toDate()).minutes / 60,//helps to set the height. View getAvailabilityEventHeight in scheduler.ts\r\n Status: LessonStatus.ARRANGED,\r\n RecurrenceRule: 'FREQ=WEEKLY;INTERVAL=1;COUNT=10',\r\n Type: type\r\n }\r\n }\r\n\r\n getEventGradientColor(status: LessonStatus): string {\r\n if (status === LessonStatus.ARRANGED) {\r\n return 'linear-gradient( #c056f5 0%, #5d5085 100%)'\r\n } else if (status === LessonStatus.COMPLETED) {\r\n return 'linear-gradient( #3b9bed 0%, #5d5085 100%)'\r\n } else {\r\n return 'linear-gradient( #F27769 0%, #5d5085 100%)'\r\n }\r\n }\r\n\r\n getWeek() {\r\n let curr = new Date();\r\n let week = []\r\n\r\n for (let i = 1; i <= 7; i++) {\r\n let first = curr.getUTCDate() - curr.getUTCDay() + i\r\n let day = new Date(curr.setUTCDate(first)).toISOString().slice(0, 10)\r\n week.push(day)\r\n }\r\n return week\r\n }\r\n\r\n/**\r\n * The function checks if a given time slot is available in a list of user availability hours.\r\n * @param {any} data - The `data` parameter is of type `any`, which means it can be any data type. It\r\n * is used to pass in the data for which availability needs to be checked.\r\n * @param {UserAvailabilityHours[]} dayAvailability - An array of objects representing the availability\r\n * hours for a user. Each object has two properties: \"from\" and \"to\", which represent the start and end\r\n * times of the availability period.\r\n * @returns an object with two properties: \"add\" and \"block\".\r\n */\r\n checkIfAvailabilityExists(data: any, dayAvailability: UserAvailabilityHours[]) {\r\n if (dayAvailability == null) {\r\n return {\r\n add: true,\r\n block: false\r\n }\r\n }\r\n let aTo: string = \"\";\r\n let aFrom: string = \"\";\r\n aFrom = data.StartTime.getHours().toString() + \":\" + data.StartTime.getMinutes().toString();\r\n let splitTimeFrom = aFrom.split(':');\r\n if (splitTimeFrom[1].toString().length === 1) {\r\n aFrom = aFrom + \"0\";\r\n }\r\n if (splitTimeFrom[0].length === 1) {\r\n aFrom = \"0\" + aFrom\r\n }\r\n // let end = moment(data.EndTime).subtract(15, 'm').toDate(); // dont know why but it works\r\n aTo = data.EndTime.getHours().toString() + \":\" + data.EndTime.getMinutes().toString();\r\n let splitTimeTo = aTo.split(':');\r\n if (splitTimeTo[1].toString().length === 1) {\r\n aTo = aTo + \"0\";\r\n }\r\n if (splitTimeTo[0].length === 1) {\r\n aTo = \"0\" + aTo\r\n }\r\n\r\n if (dayAvailability.length === 0) {\r\n return {\r\n add: true,\r\n block: false\r\n }\r\n }\r\n\r\n for (let available of dayAvailability) {\r\n let splitAvailabilityFrom = available.from.split(\":\");\r\n if (splitAvailabilityFrom[0].length === 1) {\r\n splitAvailabilityFrom[0] = \"0\" + splitAvailabilityFrom[0]\r\n }\r\n let from = splitAvailabilityFrom[0] + \":\" + splitAvailabilityFrom[1];\r\n\r\n let splitAvailabilityTo = available.to.split(\":\");\r\n if (splitAvailabilityTo[0].length === 1) {\r\n splitAvailabilityTo[0] = \"0\" + splitAvailabilityTo[0]\r\n }\r\n let to = splitAvailabilityTo[0] + \":\" + splitAvailabilityTo[1];\r\n\r\n if (from <= aFrom && to >= aTo) {\r\n return {\r\n add: false,\r\n block: true\r\n }\r\n }\r\n }\r\n\r\n for (let available of dayAvailability) {\r\n if ((available.from < aFrom && available.to > aFrom) || (aTo > available.from && aTo < available.to)) {\r\n return {\r\n add: false,\r\n block: false\r\n }\r\n }\r\n }\r\n\r\n for (let available of dayAvailability) {\r\n if (available.from > aFrom || available.to < aTo) {\r\n return {\r\n add: true,\r\n block: false\r\n }\r\n }\r\n }\r\n\r\n return {\r\n add: false,\r\n block: false\r\n }\r\n }\r\n\r\n addDaysOff(dayOff: UserAvailabilityOff) {\r\n return this.http.post(BACKEND_URL + \"/Teacher/AddUserDayOff\", dayOff)\r\n }\r\n\r\n cancelDaysOff(dayOffId: number) {\r\n return this.http.post(BACKEND_URL + \"/Teacher/DeleteUserDayOff?id=\" + dayOffId, {})\r\n }\r\n\r\n getPrettyLessonDate(date: Date) {\r\n return date.getHours() + \":\" + date.getMinutes() + \" on \" + this.generalService.getDayFromNumber(date.getDay()) + \" \" + this.generalService.getMonthFromNumber(date.getMonth()) + \" \" + date.getDate()\r\n }\r\n\r\n createSpecificTeacherAvailability(availability: {}) {\r\n return this.http.post(BACKEND_LMS_URL + \"CreateSpecificTeacherAvailability\", availability)\r\n }\r\n\r\n blockSpecificTeacherAvailability(availability: {}) {\r\n return this.http.post(BACKEND_LMS_URL + \"BlockSpecificTeacherAvailability\", availability)\r\n }\r\n\r\n retrieveCalendarAvailability(availability: RetrieveCalendarAvailabilityRequestData, headers?: HttpHeaders): Observable {\r\n return (this.http.post(BACKEND_LMS_URL + \"RetrieveCalendarAvailability\", availability, { headers }) as Observable)\r\n }\r\n\r\n getBusinessHours(calendarAvailability: any) {\r\n const businessHours = [];\r\n \r\n for (const availability of calendarAvailability) {\r\n const dateParts = availability.date.split('/');\r\n const date = new Date(`${dateParts[2]}-${dateParts[1]}-${dateParts[0]}`);\r\n \r\n for (const interval of availability.availability) {\r\n const startTimeParts = interval.from.split(':');\r\n const endTimeParts = interval.to.split(':');\r\n const startHour = parseInt(startTimeParts[0]);\r\n const startMinute = parseInt(startTimeParts[1]);\r\n const endHour = parseInt(endTimeParts[0]);\r\n const endMinute = parseInt(endTimeParts[1]);\r\n \r\n // Check if the end time is greater than the start time,\r\n // indicating that it goes until the next day\r\n if (endHour < startHour || (endHour === startHour && endMinute < startMinute)) {\r\n // Calculate the duration until midnight\r\n const midnightDuration = (24 - startHour) * 60 - startMinute;\r\n \r\n console.log(midnightDuration);\r\n // Add the availability for the current day until midnight\r\n businessHours.push({\r\n daysOfWeek: [date.getDay()],\r\n startTime: interval.from,\r\n endTime: '24:00'\r\n });\r\n \r\n // Increment the date to the next day\r\n date.setDate(date.getDate() + 1);\r\n \r\n // Calculate the duration from midnight until the end time\r\n const nextDayDuration = endHour * 60 + endMinute;\r\n \r\n // Add the availability for the next day from midnight\r\n businessHours.push({\r\n daysOfWeek: [date.getDay()],\r\n startTime: '00:00',\r\n endTime: interval.to\r\n });\r\n } else {\r\n // Add the availability for the current day\r\n businessHours.push({\r\n daysOfWeek: [date.getDay()],\r\n startTime: interval.from,\r\n endTime: interval.to\r\n });\r\n }\r\n }\r\n }\r\n \r\n console.log(businessHours);\r\n return businessHours;\r\n }\r\n\r\n createDayOffEvents(daysOff: any[]): any[] {\r\n return daysOff.map((dayOff: any) => {\r\n const from = new Date(dayOff.period.from);\r\n const to = new Date(dayOff.period.to);\r\n return {\r\n title: dayOff.reason,\r\n start: from,\r\n display: 'background',\r\n extendedProps: {\r\n type: 'dayOff',\r\n rendering: 'background'\r\n },\r\n selectable: false,\r\n editable: false,\r\n allDay: true\r\n };\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable, inject, signal } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument } from '@angular/fire/compat/firestore';\r\nimport { FieldValue, serverTimestamp } from 'firebase/firestore';\r\nimport * as moment from 'moment';\r\nimport { Observable, combineLatest, defer, forkJoin, from } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { UserService } from './user.service';\r\nimport { GeneralService } from './general.service';\r\nimport { environment } from 'src/environments/environment';\r\nconst BACKEND_URL = environment.apiUrl;\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\nimport { getAuth, signInAnonymously } from \"firebase/auth\";\r\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\r\n\r\ninterface Chat {\r\n createdAt: string;\r\n lastMessage: string;\r\n lastMessageAt: FieldValue;\r\n lastMessageFrom: string;\r\n lastMessageFromName: string;\r\n lastMessageFromImage: string;\r\n lastMessageIsFile: boolean;\r\n lastMessageDeleted: boolean;\r\n classroomId: string;\r\n}\r\n\r\nexport interface ChatUserStatus {\r\n id?: string;\r\n status: 'online' | 'offline';\r\n}\r\n\r\n\r\nexport interface Message {\r\n senderId: string;\r\n content: string;\r\n timestamp: FieldValue;\r\n readBy: string[];\r\n isFileFromLibrary: boolean;\r\n isUploadFile: boolean;\r\n readStatus: {}\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChatService {\r\n userService = inject(UserService);\r\n generalService = inject(GeneralService);\r\n isChatEnabled = signal(environment.isChatEnabled);\r\n showUploadFile = signal(false);\r\n unreadCount = signal(0);\r\n currentRoom = signal({} as any);\r\n showBubbleChat = signal(false);\r\n private dbPath = '/chats';\r\n chatsRef: AngularFirestoreCollection;\r\n private usersRef: AngularFirestoreCollection = this.db.collection('users');\r\n\r\n\r\n constructor(private db: AngularFirestore, private afAuth: AngularFireAuth, private http: HttpClient) {\r\n this.chatsRef = db.collection(this.dbPath);\r\n this.usersRef = db.collection('/users');\r\n }\r\n\r\n\r\n deleteChatFilesFromLibraryFolder(fileUrl: any): Observable {\r\n console.log(fileUrl)\r\n return this.http.post(BACKEND_LMS_URL + \"DeleteChatFilesFromLibraryFolder?fileUrl=\" + fileUrl, {})\r\n }\r\n\r\n // Sign in anonymously\r\n signInAnonymously(): Observable {\r\n return new Observable(observer => {\r\n this.afAuth.signInAnonymously()\r\n .then(userCredential => {\r\n console.log('Signed in anonymously:', userCredential.user);\r\n observer.next(userCredential);\r\n observer.complete();\r\n })\r\n .catch(error => {\r\n console.error('Error signing in anonymously:', error);\r\n observer.error(error);\r\n });\r\n });\r\n }\r\n\r\n signInAnonym() {\r\n const auth = getAuth();\r\n signInAnonymously(auth)\r\n .then(() => {\r\n // Signed in..\r\n })\r\n .catch((error) => {\r\n const errorCode = error.code;\r\n const errorMessage = error.message;\r\n // ...\r\n });\r\n }\r\n\r\n getLastMessage(classroomId: string): Observable {\r\n const chatRef = this.chatsRef.doc(`${classroomId}/`);\r\n\r\n return chatRef.snapshotChanges().pipe(\r\n map(action => {\r\n const data = action.payload.data() as Message;\r\n const id = action.payload.id;\r\n return { id, ...data };\r\n })\r\n );\r\n }\r\n\r\n // Fetch all chats for a classroom\r\n getClassroomChats(classroomId: string): Observable {\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n return this.chatsRef.doc(classroomId).collection('chats')\r\n .snapshotChanges().pipe(\r\n map(actions => actions.map(a => {\r\n const data = a.payload.doc.data() as Chat;\r\n const id = a.payload.doc.id;\r\n return { id, ...data };\r\n }))\r\n );\r\n }\r\n\r\n // Fetch messages for a specific chat room\r\n getChatMessages(classroomId: string): Observable {\r\n return this.db.collection(`${this.dbPath}/${classroomId}/messages`, ref =>\r\n ref.orderBy('timestamp', 'asc')\r\n ).snapshotChanges().pipe(\r\n map(actions => actions.map(a => {\r\n const data = a.payload.doc.data() as Message;\r\n const id = a.payload.doc.id;\r\n return { id, ...data };\r\n }))\r\n );\r\n }\r\n\r\n // Create a new chat room\r\n createChatRoom(classroomId: string, participants: string[]) {\r\n const chat: Chat = {\r\n classroomId: classroomId,\r\n createdAt: moment().format('YYYY-MM-DD HH:mm:ss'),\r\n lastMessage: '',\r\n lastMessageAt: serverTimestamp(),\r\n lastMessageFrom: '',\r\n lastMessageFromName: '',\r\n lastMessageFromImage: '',\r\n lastMessageIsFile: false,\r\n lastMessageDeleted: false\r\n };\r\n return this.chatsRef.add(chat);\r\n }\r\n\r\n // Add a new message to a chat room\r\n addMessage(classroomId: string, message: Message, user: any): Promise {\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n const messageRef = chatRef.collection('messages').doc();\r\n\r\n return chatRef.get().toPromise().then(snapshot => {\r\n const updateData: any = {\r\n createdAt: moment().format('YYYY-MM-DD HH:mm:ss'),\r\n lastMessage: message.content,\r\n lastMessageAt: serverTimestamp(),\r\n classroomId: classroomId,\r\n lastMessageFrom: message.senderId,\r\n lastMessageFromName: this.generalService.getPersonFullName(user),\r\n lastMessageFromImage: this.userService.getUserPhoto(user?.avatarUrl),\r\n lastMessageIsFile: message.isFileFromLibrary || message.isUploadFile,\r\n lastMessageDeleted: false\r\n };\r\n\r\n if (!snapshot!.exists) {\r\n // Retrieve users in the chat, including teacher and students\r\n const usersInChat = [this.currentRoom().teacher, ...this.currentRoom().classroomStudents];\r\n const updatedUnreadCounts: any = {};\r\n usersInChat.forEach((chatUser: any) => {\r\n if (chatUser.aspUserId !== message.senderId) {\r\n updatedUnreadCounts[chatUser.aspUserId] = 1; // Initialize unread count to 1 for new chat\r\n }\r\n });\r\n updateData.unreadCounts = updatedUnreadCounts;\r\n\r\n return chatRef.set(updateData).then(() => {\r\n return messageRef.set(message);\r\n });\r\n } else {\r\n // Existing chat room, update last message and unread counts\r\n return this.updateLastMessage(chatRef, message, user).then(() => {\r\n return messageRef.set(message);\r\n });\r\n }\r\n });\r\n }\r\n\r\n editMessage(classroomId: string, messageId: string, updatedMessage: Message, user: any, updateLastMessage = false): Promise {\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n const messageRef = chatRef.collection('messages').doc(`${messageId}`);\r\n const messagesRef = chatRef.collection('messages', ref => ref.orderBy('timestamp', 'desc').limit(1));\r\n\r\n const lastMessageDoc = messagesRef.ref.doc();\r\n const lastMessageId = lastMessageDoc.id;\r\n console.log(lastMessageId);\r\n return messageRef.get().toPromise().then(snapshot => {\r\n if (snapshot!.exists) {\r\n\r\n\r\n return messageRef.update({\r\n ...updatedMessage,\r\n }).then(() => {\r\n if (updateLastMessage) {\r\n return this.updateLastMessage(chatRef, updatedMessage, user);\r\n }\r\n return Promise.resolve();\r\n });\r\n } else {\r\n throw new Error('Message does not exist');\r\n }\r\n });\r\n }\r\n\r\n private updateLastMessage(chatRef: AngularFirestoreDocument, updatedMessage: Message, user: any, isLastMessageDeleted = false): Promise {\r\n const updateData: any = {\r\n lastMessage: updatedMessage.content,\r\n lastMessageAt: serverTimestamp(),\r\n lastMessageFrom: updatedMessage.senderId,\r\n lastMessageFromImage: this.userService.getUserPhoto(user?.avatarUrl),\r\n lastMessageFromName: this.generalService.getPersonFullName(user),\r\n lastMessageIsFile: updatedMessage.isFileFromLibrary || updatedMessage.isUploadFile,\r\n lastMessageDeleted: isLastMessageDeleted,\r\n };\r\n\r\n return chatRef.get().toPromise().then(snapshot => {\r\n console.log('current room', this.currentRoom());\r\n const updatedUnreadCounts: any = {};\r\n // Retrieve users in the chat, including teacher and students\r\n const usersInChat = [this.currentRoom().teacher, ...this.currentRoom().classroomStudents];\r\n\r\n usersInChat.forEach((chatUser: any) => {\r\n if (chatUser.aspUserId !== updatedMessage.senderId) {\r\n updatedUnreadCounts[chatUser.aspUserId] = (snapshot!.exists ? (snapshot!.data() as any).unreadCounts?.[chatUser.aspUserId] || 0 : 0) + 1;\r\n }\r\n });\r\n\r\n updateData.unreadCounts = updatedUnreadCounts;\r\n return chatRef.update(updateData);\r\n });\r\n }\r\n\r\n getLastUnreadMessagesCountForUser(classroomId: string, userId: string): Observable {\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n\r\n return chatRef.valueChanges().pipe(\r\n map(data => {\r\n const unreadCounts = (data as any)?.unreadCounts;\r\n return unreadCounts ? unreadCounts[userId] || 0 : 0;\r\n })\r\n );\r\n }\r\n\r\n markLastMessagesAsRead(classroomId: string, userId: string): Promise {\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n return this.markLastMessagesAsReadInLastMessage(chatRef, userId);\r\n }\r\n\r\n markLastMessagesAsReadInLastMessage(chatRef: AngularFirestoreDocument, userId: string): Promise {\r\n return chatRef.get().toPromise().then(snapshot => {\r\n if (snapshot!.exists) {\r\n const data = snapshot!.data() as any;\r\n const updatedUnreadCounts = { ...data.unreadCounts, [userId]: 0 };\r\n\r\n return chatRef.update({ unreadCounts: updatedUnreadCounts });\r\n }\r\n return Promise.resolve(); // If the document doesn't exist, there's nothing to update.\r\n });\r\n }\r\n\r\n // Delete a specific message from a chat room\r\n deleteMessage(classroomId: string, message: any, user: any, updateLastMessage = false): Promise {\r\n console.log(classroomId);\r\n console.log(message);\r\n const chatRef = this.chatsRef.doc(`${classroomId}`);\r\n const messageRef = chatRef.collection('messages').doc(message.id);\r\n if (updateLastMessage) {\r\n message.content = 'Message Deleted';\r\n return this.updateLastMessage(chatRef, message, user, true).then(() => {\r\n return messageRef.delete();\r\n });\r\n } else {\r\n return messageRef.delete();\r\n }\r\n }\r\n\r\n // Update a chat room document\r\n updateChatRoom(classroomId: string, data: Partial): Promise {\r\n return this.chatsRef.doc(classroomId).update(data);\r\n }\r\n\r\n // Delete a chat room document\r\n deleteChatRoom(classroomId: string): Promise {\r\n return this.chatsRef.doc(classroomId).delete();\r\n }\r\n\r\n markMessagesAsRead(classroomId: string, userId: string): Promise {\r\n return this.db.collection(`${this.dbPath}/${classroomId}/messages`).get().toPromise().then(querySnapshot => {\r\n const batch = this.db.firestore.batch();\r\n\r\n querySnapshot!.forEach(doc => {\r\n const data = doc.data();\r\n\r\n // Ensure readStatus is a valid map or initialize it\r\n const readStatusUpdate = (data as any).readStatus || {};\r\n\r\n // Add or update the userId in the readStatus map\r\n readStatusUpdate[userId] = true;\r\n\r\n // Update the document with the new or modified readStatus map\r\n batch.update(doc.ref, { readStatus: readStatusUpdate });\r\n });\r\n\r\n return batch.commit();\r\n });\r\n }\r\n\r\n // Mark messages as read\r\n markAllMessagesAsRead(classroomId: string): Promise {\r\n return this.db.collection(`${this.dbPath}/${classroomId}/messages`).get().toPromise().then(querySnapshot => {\r\n const batch = this.db.firestore.batch();\r\n querySnapshot!.forEach(doc => {\r\n const messageData = doc.data() as Message;\r\n const updatedReadStatus = {};\r\n\r\n // Set readStatus for all users in the message's readStatus map to true\r\n for (const userId in messageData.readStatus) {\r\n if (messageData.readStatus.hasOwnProperty(userId)) {\r\n const a = `readStatus.${userId}`;\r\n (updatedReadStatus as any)[a] = true;\r\n }\r\n }\r\n\r\n batch.update(doc.ref, updatedReadStatus);\r\n });\r\n return batch.commit();\r\n });\r\n }\r\n\r\n // Get unread messages count for a user in a classroom\r\n getUnreadMessagesCount(classroomId: string, userId: string): Observable {\r\n return this.db.collection(`${this.dbPath}/${classroomId}/messages`).snapshotChanges().pipe(\r\n map(actions => actions.filter(action => {\r\n const data = action.payload.doc.data() as Message;\r\n return !data.readStatus.hasOwnProperty(userId);\r\n }).length)\r\n );\r\n }\r\n\r\n\r\n // Get total unread messages count for a user across all classrooms\r\n getUnreadMessagesCountForUser(userId: string): Observable {\r\n return this.chatsRef.snapshotChanges().pipe(\r\n switchMap(chatSnapshots => {\r\n const chatObservables = chatSnapshots.map(snapshot => {\r\n const chatId = snapshot.payload.doc.id;\r\n return this.getUnreadMessagesCount(chatId, userId);\r\n });\r\n return combineLatest(chatObservables);\r\n }),\r\n map(unreadCounts => unreadCounts.reduce((acc, count) => acc + count, 0))\r\n );\r\n }\r\n\r\n // Create Firebase Account and return as Observable\r\n createFirebaseUser(email: string, password: string): Observable {\r\n return from(this.afAuth.createUserWithEmailAndPassword(email, password));\r\n }\r\n\r\n // Firebase Sign in as Observable\r\n signInFirebaseUser(email: string, password: string): Observable {\r\n return from(this.afAuth.signInWithEmailAndPassword(email, password));\r\n }\r\n\r\n checkFirebaseUserExistsByEmail(email: string) {\r\n return this.afAuth.fetchSignInMethodsForEmail(email)\r\n .then((signInMethods) => {\r\n console.log('Sign-in methods:', signInMethods);\r\n return signInMethods.length > 0;\r\n })\r\n .catch((error) => {\r\n console.error('Error checking email:', error);\r\n return false;\r\n });\r\n }\r\n\r\n signOutFromFirebase() {\r\n this.afAuth.signOut().then(() => {\r\n console.log('User signed out');\r\n }).catch((error) => {\r\n console.error('Error signing out:', error);\r\n });\r\n }\r\n\r\n // Method to check if user is logged in\r\n isLoggedInInFireBase(): Observable {\r\n return this.afAuth.authState.pipe(\r\n map(user => !!user) // map user object to boolean (true if user exists, false otherwise)\r\n );\r\n }\r\n\r\n // Or, to get the user object directly\r\n getFireBaseUser(): Observable {\r\n return this.afAuth.authState;\r\n }\r\n\r\n setUserStatus(userId: string, status: 'online' | 'offline'): Promise {\r\n const userRef = this.usersRef.doc(userId);\r\n return userRef.set({ status }, { merge: true });\r\n }\r\n\r\n getUserStatus(userId: string): Observable<'online' | 'offline'> {\r\n return this.usersRef.doc(userId).valueChanges().pipe(\r\n map(user => user?.status || 'offline')\r\n );\r\n }\r\n\r\n getOnlineUsers(): Observable {\r\n return this.db.collection('/users', ref => ref.where('status', '==', 'online'))\r\n .snapshotChanges().pipe(\r\n map(actions => actions.map(a => {\r\n const data = a.payload.doc.data() as ChatUserStatus;\r\n const id = a.payload.doc.id;\r\n return { ...data, id }; // Corrected merge of id and data\r\n }))\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\r\nimport { map, mergeMap, switchMap, tap } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Classroom, ClassroomSizesStats, ClassroomsLevelFilter, ClassroomsStatusFilter, ClassroomStudentsResponse, ClassroomType, Level, LevelClassroomsStats, PackageClassroomsStats, Status, StatusClassroomsStats } from '../models/classroom.model';\r\nimport { Lesson, LessonStatus } from '../models/lesson.model';\r\nimport { Note } from '../models/note.model';\r\nimport { User, UserAvailability, UserAvailabilityHours, UserAvailabilityOff, UserAvailabilityType, UserRole } from '../models/user.model';\r\nimport { AuthService } from './auth.service';\r\nimport { NoteService } from './note.service';\r\nimport { PackageService } from './package.service';\r\nimport { UserService } from './user.service';\r\nimport { dummyClassrooms } from '../models/data';\r\nimport { Package, PackageState, PackageType } from '../models/package.model';\r\nimport { GeneralService } from './general.service';\r\nconst BACKEND_URL = environment.apiUrl + \"\";\r\nconst BACKEND_URL_LMS = environment.apiUrl + \"/LMS\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ClassroomService {\r\n\r\n ClassroomTypes = ClassroomType;\r\n ClassroomStatuses = Status;\r\n private classroomsLevelFilter$: BehaviorSubject = new BehaviorSubject({ level: \"All\", domLevelID: \"all-levels\" });\r\n public readonly classroomsLevelFilter: Observable = this.classroomsLevelFilter$.asObservable();\r\n\r\n private classroomsStatusFilter$: BehaviorSubject = new BehaviorSubject({ status: \"All\", domStatusID: \"all-kinds\" });\r\n public readonly classroomsStatusFilter: Observable = this.classroomsStatusFilter$.asObservable();\r\n\r\n private selectedAgendaDate$: BehaviorSubject = new BehaviorSubject(new Date());\r\n public readonly selectedAgendaDate: Observable = this.selectedAgendaDate$.asObservable();\r\n\r\n private classroomUpdateListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly classroomUpdateListener: Observable = this.classroomUpdateListener$.asObservable();\r\n\r\n private classroomPackagesUpdateListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly classroomPackagesUpdateListener: Observable = this.classroomPackagesUpdateListener$.asObservable();\r\n\r\n private userId = this.authService.getLoggedInUser()?.id;\r\n\r\n public sessionUserClassrooms: Classroom[] = [];\r\n public sessionUserTrialClassrooms: Classroom[] = [];\r\n public classroomToArrangeLesson: Classroom = {} as Classroom\r\n dummyClassrooms = dummyClassrooms;\r\n public currentSelectedClassroom: Classroom = {} as Classroom;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n public userService: UserService,\r\n private authService: AuthService,\r\n private packageService: PackageService,\r\n private generalService: GeneralService,\r\n ) { }\r\n\r\n setSelectedClassroom(classroom: Classroom) {\r\n this.currentSelectedClassroom = classroom;\r\n }\r\n\r\n setSelectedAgendaDate(date: Date) {\r\n this.selectedAgendaDate$.next(date);\r\n }\r\n\r\n setSelectedClassroomUpdate(val: boolean) {\r\n this.classroomUpdateListener$.next(val);\r\n }\r\n\r\n setSelectedClassroomPackagesUpdate(val: boolean) {\r\n this.classroomPackagesUpdateListener$.next(val);\r\n }\r\n\r\n setUserClassrooms(classrooms: Classroom[]) {\r\n this.sessionUserClassrooms = classrooms;\r\n }\r\n\r\n getUserSessionClassrooms(): Classroom[] {\r\n return this.sessionUserClassrooms;\r\n }\r\n\r\n getSelectedClassroom(): Classroom {\r\n return this.currentSelectedClassroom;\r\n }\r\n\r\n getClassroom(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL_LMS + '/GetClassroomById?classroomId=' + classroomId)\r\n }\r\n\r\n getUserClassrooms(type?: ClassroomType): Observable {\r\n let endpoint = this.authService.getUserRole() === UserRole.TEACHER ? '/Classrooms/GetTeacherClassrooms' : '/Classrooms/GetUserClassrooms';\r\n\r\n return this.http.get(BACKEND_URL + endpoint)\r\n .pipe(\r\n switchMap((classrooms: Classroom[]) => {\r\n if (type)\r\n classrooms = classrooms.filter(el => el.type === type)\r\n if (classrooms.length == 0) {\r\n return of([])\r\n }\r\n return forkJoin(classrooms.map((classroom: Classroom) => {\r\n return this.getClassroomExtras(classroom.id).pipe(\r\n map(x => {\r\n let classroomDetails: Classroom = ({ ...classroom, ...{ users: x[0].usersDTOResult, title: this.getUsersTitle(x[0].usersDTOResult), activePackage: x[1], lessons: x[2], teacher: x[3], packages: x[4] } });\r\n return classroomDetails;\r\n }))\r\n }))\r\n }), tap((res) => {\r\n // console.log(\"[+] getUserClassrooms:\")\r\n // console.log(res)\r\n })\r\n )\r\n }\r\n\r\n changeTrialLevel(trialId: string, newLevel: string) {\r\n return this.http.post(BACKEND_URL + '/Package/ChangeTrialLevel?classroomId=' + trialId + '&newLevel=' + newLevel, {})\r\n }\r\n\r\n changeClassLevel(trialId: string, newLevel: string) {\r\n return this.http.post(BACKEND_URL + '/Package/ChangeClassLevel?classroomId=' + trialId + '&newLevel=' + newLevel, {})\r\n }\r\n\r\n getClassroomStudents(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL + '/Classrooms/GetClassroomStudents?classroomId=' + classroomId)\r\n }\r\n\r\n getClassroomTeacher(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL + '/Classrooms/GetClassroomTeacher?classroomId=' + classroomId)\r\n .pipe(\r\n switchMap((res: any) => {\r\n Object.keys((res.availability)).forEach((key: string) => {\r\n if (res.availability[key] == null) {\r\n res.availability[key] = []\r\n }\r\n })\r\n for (let dayOff of res.off) {\r\n dayOff.period.from = new Date(new Date(dayOff.period.from).setHours(0, 0));\r\n dayOff.period.to = new Date(new Date(dayOff.period.to).setHours(0, 0));\r\n }\r\n return of(res)\r\n })\r\n )\r\n\r\n }\r\n\r\n getClassroomExtras(classroomId: string): Observable {\r\n return forkJoin([\r\n this.getClassroomStudents(classroomId),\r\n this.packageService.getClassroomActivePackage(classroomId),\r\n this.getClassroomLessons2(classroomId),\r\n this.getClassroomTeacher(classroomId),\r\n this.packageService.getClassroomPackages(classroomId)\r\n ])\r\n }\r\n\r\n public getClassroomLessons2(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetClassroomLessons?classroomId=\" + classroomId).pipe(\r\n map(lesson => lesson.map(l => {\r\n l.startingDate = new Date(l.startingDate);\r\n return l;\r\n }))\r\n )\r\n }\r\n\r\n changeClassroomsLevelFilter(level: ClassroomsLevelFilter) {\r\n this.classroomsLevelFilter$.next(level);\r\n }\r\n\r\n changeClassroomsStatusFilter(status: ClassroomsStatusFilter) {\r\n this.classroomsStatusFilter$.next(status);\r\n }\r\n\r\n getClassroomTitle(classroom: Classroom) {\r\n let title = \"\";\r\n let i = 0;\r\n for (let user of classroom.classroomStudents) {\r\n let comma = i < classroom.classroomStudents.length - 1 ? \", \" : \"\";\r\n title += user.lastName + comma\r\n i++;\r\n }\r\n return title;\r\n }\r\n\r\n getUsersTitle(users: User[]) {\r\n let title = \"\";\r\n let i = 0;\r\n for (let user of users) {\r\n let comma = i < users.length - 1 ? \", \" : \"\";\r\n title += user.lastName + comma\r\n i++;\r\n }\r\n return title;\r\n }\r\n\r\n getClassroomType(users: User[]) {\r\n if (users.length == 1) return \"1 on 1\"\r\n if (users.length == 2) return \"group of 2\"\r\n if (users.length == 3) return \"group of 3\"\r\n return \"group of many\"\r\n }\r\n\r\n getStatusClassroomStats(): Promise {\r\n return this.http.get(BACKEND_URL + \"/Classrooms/GetClassroomsStatusStats?userid=\" + this.userId).toPromise()\r\n }\r\n\r\n getClassroomSizesStats(): Promise {\r\n return this.http.get(BACKEND_URL + \"/Classrooms/GetClassroomSizesStats?classroomid=2\").toPromise()\r\n }\r\n\r\n getStudentsHoursStatsOnEachLevelStats(): Promise {\r\n return this.http.get(BACKEND_URL + \"/Classrooms/GetStudentsAndHoursOnEachLevel\").toPromise()\r\n }\r\n\r\n getPackageStats(): Promise {\r\n return this.http.get(BACKEND_URL + \"/Classrooms/GetClassroomPackagesStatus\").toPromise()\r\n }\r\n\r\n getTrialClassrooms(): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetTrialClassrooms\")\r\n }\r\n\r\n getClassroomsTeacher(): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetTeacherClassrooms\")\r\n }\r\n\r\n public getClassroomLessons(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetClassroomLessons?classroomId=\" + classroomId)\r\n }\r\n\r\n public gePendingLessons(classroomId: string) {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetLessonsPending?ClassroomId=\" + classroomId)\r\n }\r\n\r\n public acceptLessonRequest(lessonId: number) {\r\n return this.http.post(BACKEND_URL_LMS + \"/AcceptLessonRequest?LessonId=\" + lessonId, {});\r\n }\r\n\r\n public rejectLessonRequest(lessonId: number) {\r\n return this.http.post(BACKEND_URL_LMS + \"/RejectLessonRequest?LessonId=\" + lessonId, {});\r\n }\r\n\r\n getLMSUserClassrooms(userId: string): Observable {\r\n return this.http.get(BACKEND_URL_LMS + '/GetUserClassrooms?userId=' + userId);\r\n }\r\n\r\n changeClassroomStatus(classroomId: number, newStatus: string): Observable {\r\n const body = { classroomId, status: newStatus };\r\n return this.http.post(BACKEND_URL_LMS + '/ChangeClassroomStatus?classroomId=' + classroomId + '&status=' + newStatus + '', body);\r\n }\r\n\r\n getLevelIndex(level: Level) {\r\n let levels = [Level.A1, Level.A2, Level.B1, Level.B2, Level.C1, Level.C2];\r\n return levels.indexOf(level)\r\n }\r\n\r\n isTrialClassroomWithCompletedFirstLesson(classroom: any): boolean {\r\n if (classroom.type === this.ClassroomTypes.TRIAL && classroom.lessons.length > 0) {\r\n const firstLesson = classroom.lessons[0];\r\n return firstLesson.status.toLowerCase().includes(LessonStatus.COMPLETED);\r\n }\r\n return false;\r\n }\r\n\r\n isTrialClassroomWithCompletedLesson(classroom: any): boolean {\r\n if (classroom.type === this.ClassroomTypes.TRIAL && classroom.lessons.length > 0) {\r\n return classroom.lessons.some((lesson: any) => {\r\n // console.log('Checking lesson:', lesson);\r\n const isCompleted = lesson.status.toLowerCase().includes(LessonStatus.COMPLETED_TRIAL.toLowerCase());\r\n // console.log('Is lesson completed?', isCompleted);\r\n return isCompleted;\r\n });\r\n }\r\n return false;\r\n }\r\n\r\n isTrialClassroomDismissed(classroom: Classroom): boolean {\r\n if (classroom.type === this.ClassroomTypes.TRIAL && classroom.status === Status.DISMISSED_TRIAL) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isFirstLessonStatusInTrialClassroom(classroom: any, status: LessonStatus): boolean {\r\n if (classroom.type === this.ClassroomTypes.TRIAL && classroom.lessons.length > 0) {\r\n const firstLesson = classroom.lessons[0];\r\n return firstLesson.status === status;\r\n }\r\n return false;\r\n }\r\n\r\n isTrialClassroom(classroom: Classroom): boolean {\r\n if (classroom.type === this.ClassroomTypes.TRIAL) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Checks if the last lesson of a given classroom is within one month from the current date.\r\n *\r\n * @param {Classroom} classroom - The classroom to check the last lesson of.\r\n * @return {boolean} Returns true if the last lesson is within one month, false otherwise.\r\n */\r\n isLastLessonWithinOneMonth(classroom: Classroom): boolean {\r\n // Check if the classroom has lessons\r\n if (classroom.lessons!.length === 0) {\r\n return false;\r\n }\r\n\r\n if ((classroom.type !== this.ClassroomTypes.TRIAL)) {\r\n return false;\r\n }\r\n\r\n // Get the date of the most recent lesson\r\n const lastLesson = classroom.lessons!.reduce((latest: any, lesson: any) => {\r\n const lessonDate = new Date(lesson.startingDate);\r\n return lessonDate > new Date(latest.startingDate) ? lesson : latest;\r\n });\r\n\r\n // Get the current date\r\n const currentDate = new Date();\r\n\r\n // Calculate the difference in time (in milliseconds)\r\n const timeDifference = currentDate.getTime() - new Date(lastLesson.startingDate).getTime();\r\n\r\n // Convert time difference from milliseconds to days\r\n const daysDifference = timeDifference / (1000 * 3600 * 24);\r\n\r\n // Check if the difference is less than or equal to 30 days\r\n return daysDifference <= 520;\r\n }\r\n\r\n getAvailableHoursWithTeacher(teacherId: string): Observable {\r\n return this.http.get(BACKEND_URL_LMS + '/StudentHasHoursWithTeacher?teacherId=' + teacherId);\r\n }\r\n\r\n filterAvailableClassrooms(classrooms: Classroom[]): Classroom[] {\r\n const availableClassrooms: Classroom[] = [];\r\n\r\n classrooms.forEach((classRoom: Classroom) => {\r\n if (classRoom.packages) {\r\n if (this.getAccumulatedHoursLeft(classRoom.packages!) > 0) {\r\n availableClassrooms.push(classRoom);\r\n }\r\n }\r\n });\r\n\r\n return availableClassrooms;\r\n }\r\n\r\n hasClassroomPackageHoursLeft(classroom: Classroom): boolean {\r\n if (this.getAccumulatedHoursLeft(classroom.packages!) > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns an array of student names for a given classroom object.\r\n * @param {Classroom} classroom - The classroom object to get student names from.\r\n * @returns {string[]} An array of student names.\r\n */\r\n getStudentNamesWithHTML(classroom: Classroom, showLastName: boolean = false): string[] {\r\n\r\n const uniqueStudents = Array.from(new Set(classroom.classroomStudents.map(student => student.aspUserId)))\r\n .map(aspUserId => classroom.classroomStudents.find(student => student.aspUserId === aspUserId)) as User[];\r\n const remainingStudents: number = uniqueStudents.length - 1; // Subtract 1 to exclude the first student\r\n\r\n const studentNames: string[] = [];\r\n\r\n if (uniqueStudents.length > 0) {\r\n studentNames.push(`${uniqueStudents[0].firstName} ${showLastName ? uniqueStudents[0].lastName : ''}`);\r\n }\r\n\r\n if (remainingStudents > 0) {\r\n const circleHtml = `+${remainingStudents}`;\r\n const div = document.createElement('div');\r\n div.innerHTML = circleHtml;\r\n studentNames.push((div.firstChild as HTMLElement).outerHTML);\r\n }\r\n\r\n return studentNames;\r\n }\r\n\r\n getFormattedStudentNames(students: any[]): string {\r\n const uniqueStudents: User[] = Object.values(students.reduce((acc, student) => {\r\n if (!acc[student.aspUserId]) {\r\n acc[student.aspUserId] = student;\r\n }\r\n return acc;\r\n }, {}));\r\n\r\n const names = uniqueStudents.map(student => `${this.generalService.replaceImportedWithDash(student.firstName)} ${this.generalService.replaceImportedWithDash(student.lastName) ? this.generalService.replaceImportedWithDash(student.lastName).charAt(0) + '.' : ''}`);\r\n return names.join(', ');\r\n }\r\n\r\n getFullStudentNames(students: any[]): string {\r\n const uniqueStudents: User[] = Object.values(students.reduce((acc, student) => {\r\n if (!acc[student.aspUserId]) {\r\n acc[student.aspUserId] = student;\r\n }\r\n return acc;\r\n }, {}));\r\n\r\n const names = uniqueStudents.map(student => `${this.generalService.replaceImportedWithDash(student.firstName)} ${this.generalService.replaceImportedWithDash(student.lastName) ? this.generalService.replaceImportedWithDash(student.lastName) + '' : ''}`);\r\n return names.join(', ');\r\n }\r\n\r\n getClassroomUrl(classroomId: number) {\r\n return `/dashboard/classrooms/lessons/${classroomId}/details`;\r\n }\r\n\r\n getClassroomRateUrl(classroom: Classroom) {\r\n if (classroom.type.includes('Trial')) {\r\n return `/dashboard/classrooms/lessons/${classroom.id}/info/rate-trial`;\r\n } else {\r\n\r\n return `/dashboard/classrooms/lessons/${classroom.id}/info/teacher-rate`;\r\n }\r\n }\r\n\r\n getClassroomTypeSmallIconPath(classroom: Classroom): string {\r\n if (classroom.type.includes('Trial')) {\r\n return `/assets/icons/paper-plane-blue.svg`;\r\n } else {\r\n return `/assets/icons/student.svg`;\r\n }\r\n }\r\n\r\n isClassroomOngoing(classroom: Classroom): boolean {\r\n if (classroom.status.toLowerCase().includes(this.ClassroomStatuses.ON_GOING.toLowerCase())) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n isStudentActive(classrooms: any[], hasPayment: boolean): boolean {\r\n return classrooms.length > 0 && hasPayment;\r\n }\r\n\r\n getOngoingPackage(packages: Package[]): Package | undefined {\r\n return packages.find((pkg) => pkg.state.toLowerCase() === PackageState.ONGOING.toLowerCase());\r\n }\r\n\r\n getAccumulatedHoursLeft(packages: Package[]): number {\r\n let accumulatedHoursLeft = 0;\r\n\r\n for (const pack of packages) {\r\n // check all ongoing for hours left\r\n // TODO: || pack.state.toLowerCase() === PackageState.PURCHASED.toLowerCase()\r\n if (pack.state.toLowerCase() === PackageState.ONGOING.toLowerCase() || pack.state.toLowerCase() === PackageState.PURCHASED.toLowerCase()) {\r\n accumulatedHoursLeft += pack.hoursLeft;\r\n }\r\n }\r\n\r\n return accumulatedHoursLeft;\r\n }\r\n\r\n getAccumulatedTotalHours(packages: Package[]): number {\r\n let accumulatedTotalHours = 0;\r\n\r\n for (const pack of packages) {\r\n // check all ongoing, completed or gift packages for hours left\r\n if (pack.state.toLowerCase() !== PackageState.REFUNDED.toLowerCase()\r\n || pack.state.toLowerCase() !== PackageState.CANCELED.toLowerCase()\r\n || pack.state.toLowerCase() !== PackageState.CANCELLED.toLowerCase()\r\n || pack.state.toLowerCase() !== PackageState.TRANSFERED.toLowerCase()) {\r\n accumulatedTotalHours += pack.totalHours;\r\n }\r\n }\r\n\r\n return accumulatedTotalHours;\r\n }\r\n\r\n filterLevelsByTeachingLanguage(levels: Level[], teachingLanguage: string): Level[] {\r\n if (!teachingLanguage) {\r\n return levels;\r\n }\r\n if (teachingLanguage.toLowerCase() !== 'dutch') {\r\n return levels.filter(level => level !== Level.NT21 && level !== Level.NT22);\r\n } else {\r\n return levels;\r\n }\r\n }\r\n\r\n sortClassroomsByFirstName(classrooms: Classroom[]): Classroom[] {\r\n try {\r\n return classrooms.sort((a: Classroom, b: Classroom) => {\r\n const firstNameA = a.classroomStudents && a.classroomStudents.length > 0 ? a.classroomStudents[0].firstName : '';\r\n const firstNameB = b.classroomStudents && b.classroomStudents.length > 0 ? b.classroomStudents[0].firstName : '';\r\n return firstNameA.localeCompare(firstNameB);\r\n });\r\n } catch (error) {\r\n // Handle the error appropriately (e.g., log, display error message, fallback behavior)\r\n console.error('An error occurred while sorting classrooms:', error);\r\n return classrooms; // or return an empty array, depending on the desired behavior\r\n }\r\n }\r\n\r\n /**\r\n * Returns the name of the teacher or classroom students for a given classroom.\r\n *\r\n * @param {Classroom} classroom - The classroom object.\r\n * @returns {string} The name of the teacher or classroom students.\r\n */\r\n getLessonRowName(classroom: Classroom): string {\r\n if (this.authService.isStudent) {\r\n return this.generalService.getShortFullName(classroom.teacher);\r\n } else {\r\n return this.getFormattedStudentNames(classroom.classroomStudents);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a deduplicated array of classroom students.\r\n *\r\n * @param classroomStudents - The array of classroom students which may contain duplicates.\r\n * @returns An array of unique classroom students.\r\n */\r\n getuniqueClassroomStudents(classroomStudents: User[]) {\r\n return Array.from(\r\n new Set(classroomStudents.map((student: any) => student.aspUserId))\r\n ).map((aspUserId) =>\r\n classroomStudents.find((student: any) => student.aspUserId === aspUserId)\r\n ) as User[];\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\ninterface ConfirmDialogProperties {\r\n confirmMessage?: string;\r\n confirmIcon?: string;\r\n acceptBtnLabel?: string;\r\n rejectBtnLabel?: string;\r\n rejectBtnIcon?: string;\r\n acceptBtnIcon?: string;\r\n showHeader?: boolean;\r\n dismissableMask?: boolean;\r\n dialogType?: string;\r\n headerClass?: string;\r\n dialogKey?: string;\r\n action?: string;\r\n [key: string]: any;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmDialogService {\r\n isVisible = false;\r\n confirmMessage?: string;\r\n confirmIcon?: string;\r\n acceptBtnLabel?: string;\r\n rejectBtnLabel?: string;\r\n action?: string;\r\n rejectBtnIcon?: string = undefined;\r\n acceptBtnIcon?: string = undefined;\r\n showHeader?: boolean = true;\r\n dismissableMask?: boolean = true;\r\n dialogType?: string = 'header-with-image';\r\n headerClass?: string = 'text-center flex align-items-center flex-column ';\r\n dialogKey = 'key1';\r\n headerText?: string;\r\n acceptBtnClass?: string = ' '\r\n rejectBtnClass?: string = 'cd-dialog-btn-reject';\r\n extraData: any;\r\n private rejectSelectionSource = new Subject();\r\n rejectSelected$ = this.rejectSelectionSource.asObservable();\r\n acceptSelectionSource = new Subject();\r\n acceptSelected$ = this.acceptSelectionSource.asObservable();\r\n\r\n constructor() { }\r\n\r\n setProperties(props: ConfirmDialogProperties) {\r\n Object.keys(props).forEach((key) => {\r\n (this as any)[key as keyof ConfirmDialogService] = props[key];\r\n });\r\n }\r\n\r\n getProperties(): ConfirmDialogProperties {\r\n const properties: ConfirmDialogProperties = {\r\n isVisible: this.isVisible,\r\n confirmMessage: this.confirmMessage,\r\n confirmIcon: this.confirmIcon,\r\n acceptBtnLabel: this.acceptBtnLabel,\r\n rejectBtnLabel: this.rejectBtnLabel,\r\n rejectBtnIcon: this.rejectBtnIcon,\r\n acceptBtnIcon: this.acceptBtnIcon,\r\n showHeader: this.showHeader,\r\n dismissableMask: this.dismissableMask,\r\n dialogType: this.dialogType,\r\n headerClass: this.headerClass,\r\n dialogKey: this.dialogKey,\r\n action: this.action,\r\n headerText: this.headerText,\r\n acceptBtnClass: this.acceptBtnClass,\r\n rejectBtnClass: this.rejectBtnClass,\r\n extraData: this.extraData\r\n };\r\n \r\n return properties;\r\n }\r\n\r\n resetProperties() {\r\n this.isVisible = false;\r\n this.confirmMessage = undefined;\r\n this.confirmIcon = undefined;\r\n this.acceptBtnLabel = undefined;\r\n this.rejectBtnLabel = undefined;\r\n this.action = undefined;\r\n this.rejectBtnIcon = undefined;\r\n this.acceptBtnIcon = undefined;\r\n this.showHeader = true;\r\n this.dismissableMask = true;\r\n this.dialogType = 'header-with-image';\r\n this.headerClass = 'text-center flex align-items-center flex-column ';\r\n this.dialogKey = 'key1';\r\n this.headerText = undefined;\r\n this.acceptBtnClass = ' ';\r\n this.rejectBtnClass = 'cd-dialog-btn-reject';\r\n this.extraData = null;\r\n } \r\n\r\n onRejectSelection(event: any) {\r\n this.rejectSelectionSource.next(this.getProperties());\r\n }\r\n\r\n onAcceptSelection(event: any) {\r\n this.acceptSelectionSource.next(this.getProperties());\r\n }\r\n\r\n show() {\r\n this.isVisible = true;\r\n }\r\n\r\n hide() {\r\n this.isVisible = false;\r\n }\r\n\r\n}\r\n\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { ElementRef, Injectable, inject } from '@angular/core';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { BehaviorSubject, from, map, Observable, of } from 'rxjs';\r\nimport { Classroom, ClassroomType, Level } from '../models/classroom.model';\r\nimport { Country, DeviceKind, Dimentions, Language, LanguageToLearn, SocialMedia, Timezone, ToastMessage } from '../models/general.model';\r\nimport { PackageDurationHours, PackagePriceHourly, PackageToBuy, PackageType } from '../models/package.model';\r\nimport { saveAs } from 'file-saver';\r\nimport * as data from '../models/data';\r\nimport * as moment from 'moment-timezone';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { environment } from 'src/environments/environment';\r\nimport { User, UserRole } from '../models/user.model';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { Lesson } from '../models/lesson.model';\r\nimport { AuthService } from './auth.service';\r\nconst API_URL = environment.apiUrl + \"/\";\r\nconst IP_COUNTRY_API = \"https://ipapi.co/json/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneralService {\r\n authService = inject(AuthService);\r\n private deviceKind$: BehaviorSubject = new BehaviorSubject({ w576down: false, is576: false, is768: false, is992: false, is1024: false, is1366: false, isBig: true });\r\n private mobileMenuTitle$: BehaviorSubject = new BehaviorSubject('test');\r\n\r\n public readonly deviceKind: Observable = this.deviceKind$.asObservable();\r\n public readonly mobileMenuTitle: Observable = this.mobileMenuTitle$.asObservable();\r\n\r\n public readonly mltLanguages: Language[] = [\r\n { name: \"English\", code: \"ENG\" },\r\n { name: \"French\", code: \"FR\" },\r\n { name: \"German\", code: \"GER\" },\r\n { name: \"Italian\", code: \"IT\" },\r\n { name: \"Spanish\", code: \"SP\" },\r\n { name: \"Greek\", code: \"GRE\" },\r\n { name: \"Swedish\", code: \"SW\" },\r\n { name: \"Dutch\", code: \"DUT\" },\r\n { name: \"Russian\", code: \"RUS\" },\r\n { name: \"Japanese\", code: \"JPN\" },\r\n { name: \"Korean\", code: \"KOR\" },\r\n { name: \"Chinese\", code: \"CHI\" },\r\n ]\r\n\r\n public readonly mltLevels = [\r\n // 'Any',\r\n Level.A1,\r\n Level.A2,\r\n Level.B1,\r\n Level.B2,\r\n Level.C1,\r\n Level.C2,\r\n Level.NT21,\r\n Level.NT22,\r\n Level.TBD,\r\n Level.BS\r\n ];\r\n\r\n public readonly languagesToLearn: LanguageToLearn[] = [\r\n {\r\n title: \"English\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Frensh\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"German\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Italian\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Spanish\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Greek\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Swedish\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Dutch\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Russian\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Japanese\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Korean\",\r\n link: \"\"\r\n },\r\n {\r\n title: \"Chinese\",\r\n link: \"\"\r\n }\r\n ]\r\n\r\n public readonly socialMedia: SocialMedia[] = [\r\n {\r\n icon: \"facebook.svg\",\r\n link: \"\"\r\n },\r\n {\r\n icon: \"linkedin.svg\",\r\n link: \"\"\r\n },\r\n {\r\n icon: \"youtube.svg\",\r\n link: \"\"\r\n },\r\n {\r\n icon: \"instagram.svg\",\r\n link: \"\"\r\n },\r\n {\r\n icon: \"tweeter.svg\",\r\n link: \"\"\r\n },\r\n ]\r\n\r\n public readonly languageLevels: any[] = [\r\n {\r\n levelName: \"A1\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"A2\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"B1\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"B2\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"C1\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"C2\",\r\n showOnlyOnCode: [],\r\n visible: true,\r\n },\r\n {\r\n levelName: \"NT2.1\",\r\n showOnlyOnCode: ['nl'],\r\n visible: false,\r\n },\r\n {\r\n levelName: \"NT2.2\",\r\n showOnlyOnCode: ['nl'],\r\n visible: false,\r\n }];\r\n\r\n public readonly packageDurationHours = PackageDurationHours;\r\n\r\n public readonly countries = data.countries\r\n public readonly timezones = data.timezones\r\n public readonly languages = data.languages\r\n public mltPackages: any;\r\n private refs: any[] = [];\r\n\r\n constructor(\r\n private router: Router,\r\n private http: HttpClient,\r\n private sanitizer: DomSanitizer,\r\n ) { }\r\n\r\n getLanguagesToLearn(): LanguageToLearn[] {\r\n return this.languagesToLearn;\r\n }\r\n\r\n getSocialMedia(): SocialMedia[] {\r\n return this.socialMedia;\r\n }\r\n\r\n getCountries(): Country[] {\r\n return data.countries;\r\n }\r\n\r\n getTimezones(): Timezone[] {\r\n return data.timezones;\r\n }\r\n\r\n getPhoneCodes(): any[] {\r\n return data.phoneCodes;\r\n }\r\n\r\n getLanguageLevels(): any[] {\r\n return this.languageLevels;\r\n }\r\n\r\n public setDevice() {\r\n var w576down = window.innerWidth < Dimentions.w576;\r\n var w576up = window.innerWidth >= Dimentions.w576;\r\n var w768up = window.innerWidth >= Dimentions.w768;\r\n var w992up = window.innerWidth >= Dimentions.w992;\r\n var w1024up = window.innerWidth >= Dimentions.w1024;\r\n var w1366up = window.innerWidth >= Dimentions.w1366;\r\n var w1500up = window.innerWidth >= Dimentions.w1500;\r\n\r\n var w576 = window.innerWidth <= Dimentions.w576;\r\n var w768 = window.innerWidth <= Dimentions.w768;\r\n var w992 = window.innerWidth <= Dimentions.w992;\r\n var w1024 = window.innerWidth <= Dimentions.w1024;\r\n var w1366 = window.innerWidth <= Dimentions.w1366;\r\n var w1500 = window.innerWidth <= Dimentions.w1500;\r\n var isBig = window.innerWidth > Dimentions.w1366;\r\n this.deviceKind$.next({\r\n w576down: w576down,\r\n is576: w576,\r\n is768: w768,\r\n is992: w992,\r\n is1024: w1024,\r\n is1366: w1366,\r\n w576up: w576up,\r\n w768up: w768up,\r\n w992up: w992up,\r\n w1024up: w1024up,\r\n w1366up: w1366up,\r\n w1500up: w1500up,\r\n isBig: isBig\r\n });\r\n }\r\n\r\n public slideInElement(id: string) {\r\n document.getElementById(id)?.classList.remove('no-visibility');\r\n document.getElementById(id)?.classList.add('yes-visibility');\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n\r\n public slideOutElement(id: string) {\r\n document.getElementById(id)?.classList.remove('yes-visibility');\r\n document.getElementById(id)?.classList.add('no-visibility');\r\n document.body.style.overflowY = 'scroll';\r\n }\r\n\r\n public slideInNativeElement(el: any) {\r\n el.classList.remove('no-visibility');\r\n el.classList.add('yes-visibility');\r\n document.body.style.overflowY = 'hidden';\r\n }\r\n\r\n public slideOutNativeElement(el: any) {\r\n el.classList.remove('yes-visibility');\r\n el.classList.add('no-visibility');\r\n document.body.style.overflowY = 'scroll';\r\n }\r\n\r\n getDatesDiff(date1: Date, date2: Date) {\r\n var diff = (date1.getTime() - date2.getTime()) / 1000;\r\n var months = diff / (60 * 60 * 24 * 7);\r\n var weeks = diff / (60 * 60 * 24 * 7);\r\n var days = diff / (60 * 60 * 24);\r\n var hours = diff / (60 * 60);\r\n var minutes = diff / (60);\r\n return {\r\n weeks: Math.abs(Math.round(weeks)),\r\n days: Math.abs(Math.round(days)),\r\n hours: Math.abs(Math.round(hours)),\r\n minutes: Math.abs(Math.round(minutes)),\r\n }\r\n }\r\n\r\n public hideClassElements(classElements: HTMLCollectionOf) {\r\n [].forEach.call(classElements, (el: any) => {\r\n el.style.display = 'none';\r\n });\r\n }\r\n\r\n public showClassElements(classElements: HTMLCollectionOf, display: string) {\r\n [].forEach.call(classElements, (el: any) => {\r\n el.style.display = display;\r\n });\r\n }\r\n\r\n public collapseSection(element: any) {\r\n // get the height of the element's inner content, regardless of its actual size\r\n var sectionHeight = element.scrollHeight;\r\n\r\n // temporarily disable all css transitions\r\n var elementTransition = element.style.transition;\r\n element.style.transition = '';\r\n\r\n // on the next frame (as soon as the previous style change has taken effect),\r\n // explicitly set the element's height to its current pixel height, so we \r\n // aren't transitioning out of 'auto'\r\n requestAnimationFrame(function () {\r\n element.style.height = sectionHeight + 'px';\r\n element.style.transition = elementTransition;\r\n\r\n // on the next frame (as soon as the previous style change has taken effect),\r\n // have the element transition to height: 0\r\n requestAnimationFrame(function () {\r\n element.style.height = 0 + 'px';\r\n });\r\n });\r\n\r\n // mark the section as \"currently collapsed\"\r\n element.setAttribute('data-collapsed', 'true');\r\n }\r\n\r\n public expandSection(element: any) {\r\n // get the height of the element's inner content, regardless of its actual size\r\n var sectionHeight = element.scrollHeight;\r\n\r\n // have the element transition to the height of its inner content\r\n element.style.height = sectionHeight + 'px';\r\n\r\n // mark the section as \"currently not collapsed\"\r\n element.setAttribute('data-collapsed', 'false');\r\n }\r\n iv: any\r\n timeout: any;\r\n toggleSection(sectionElement: any, sectionArrowImgSrc: any, inherit: boolean, note?: { id: string, open: string }) {\r\n let id = sectionElement.getAttribute('id');\r\n let setOpen = ''\r\n if (!note?.id) {\r\n setOpen = sectionElement.getAttribute('open') === 'false' ? 'true' : 'false'\r\n } else {\r\n setOpen = note?.open\r\n }\r\n var section = document.getElementById(id);\r\n sectionElement.setAttribute('open', setOpen);\r\n if (note?.id) {\r\n clearInterval(this.iv)\r\n }\r\n clearTimeout(this.timeout);\r\n\r\n if (setOpen === 'true') {\r\n this.timeout = setTimeout(() => {\r\n if (inherit) {\r\n sectionElement.style.overflow = \"inherit\"\r\n }\r\n }, 300);\r\n sectionArrowImgSrc.style.transform = \"rotate(180deg)\"\r\n this.expandSection(section)\r\n if (note?.id) {\r\n this.iv = window.setInterval(() => { // this shit is to adjust the height of rte..\r\n if (document.getElementById('notes-section-' + note?.id) && document.getElementById('defaultRTE-2-' + note?.id))\r\n document.getElementById('notes-section-' + note?.id)!.style.height = document.getElementById('defaultRTE-2-' + note?.id)!.clientHeight + 50 + \"px\";\r\n }, 10)\r\n }\r\n } else {\r\n sectionElement.style.overflow = \"hidden\"\r\n sectionArrowImgSrc.style.transform = \"rotate(0deg)\"\r\n this.collapseSection(section);\r\n if (note?.id) {\r\n clearInterval(this.iv)\r\n }\r\n\r\n }\r\n }\r\n\r\n getRandomInt(max: number) {\r\n return Math.floor(Math.random() * max);\r\n }\r\n\r\n refreshComponent(url: string) {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigate([url]);\r\n });\r\n }\r\n\r\n gradientScale(newValue: number, oldValue: number, element: string) {\r\n if (document.getElementById(element)) {\r\n let resize;\r\n let minus = 0;\r\n let divide = 1;\r\n if (element === 'classroom-gradient') {\r\n minus = 600;\r\n divide = 1.2;\r\n }\r\n if (element === 'tutorial-gradient') {\r\n minus = 1000;\r\n divide = 0.6;\r\n }\r\n if (element === 'guide-gradient') {\r\n minus = 1000;\r\n divide = 0.4;\r\n }\r\n if (element === 'blog-gradient') {\r\n minus = 1000;\r\n divide = 0.8\r\n }\r\n if (element === 'top-left-gradient') {\r\n minus = 0;\r\n divide = 1.5;\r\n }\r\n if (oldValue < newValue) {\r\n resize = document.getElementById('app-content')!.offsetWidth + document.getElementById('app-content')!.offsetWidth / divide - window.scrollY + minus;\r\n } else if (oldValue > newValue) {\r\n resize = document.getElementById('app-content')!.offsetWidth + document.getElementById('app-content')!.offsetWidth / divide - window.scrollY + minus;\r\n }\r\n // if(window.scrollY > minus){\r\n document.getElementById(element)!.style.width = resize + \"px\";\r\n document.getElementById(element)!.style.height = resize + \"px\";\r\n // }\r\n }\r\n }\r\n\r\n slideElements(showModal: boolean, id: string) {\r\n if (showModal) {\r\n this.slideInElement('blur_bg');\r\n this.slideInElement(id);\r\n } else {\r\n this.slideOutElement('blur_bg');\r\n this.slideOutElement(id);\r\n }\r\n }\r\n\r\n slideNativeElements(showModal: boolean, el: string) {\r\n if (showModal) {\r\n this.slideInElement('blur_bg');\r\n this.slideInNativeElement(el);\r\n } else {\r\n this.slideOutElement('blur_bg');\r\n this.slideOutNativeElement(el);\r\n }\r\n }\r\n\r\n toIsoString(date: Date) {\r\n return new Date(date.toString().split('GMT')[0] + ' UTC').toISOString()\r\n }\r\n\r\n getFileName(str: string) {\r\n var n = str.lastIndexOf('/');\r\n var n2 = str.lastIndexOf('.');\r\n var result = str.substring(n + 1, n2);\r\n return result;\r\n }\r\n\r\n getTeacherFileName(teacherFile: string) {\r\n if (teacherFile && teacherFile.lastIndexOf('\\\\')) {\r\n let n = teacherFile.lastIndexOf('\\\\');\r\n let result = teacherFile.substring(n + 1);\r\n return result;\r\n }\r\n return teacherFile\r\n }\r\n\r\n getFileName2(str: string) {\r\n var n = str.lastIndexOf('\\\\');\r\n var n2 = str.lastIndexOf('.');\r\n var result = str.substring(n + 1, n2);\r\n return result;\r\n }\r\n\r\n getDomainFileNamePath(str: string) {\r\n var n = str.lastIndexOf('\\\\');\r\n var n2 = str.lastIndexOf('.');\r\n var result = str.substring(n + 1, n2);\r\n const convertedString = str.replace(/\\\\/g, \"/\");\r\n return API_URL + convertedString;\r\n }\r\n\r\n getFileNameAndExtension(filePath: string): string | undefined {\r\n const fileName = filePath.split('\\\\').pop();\r\n return fileName;\r\n }\r\n\r\n getDayFromNumber(day: number) {\r\n if (day == 0) return \"Sunday\"\r\n if (day == 1) return \"Monday\"\r\n if (day == 2) return \"Tuesday\"\r\n if (day == 3) return \"Wednesday\"\r\n if (day == 4) return \"Thursday\"\r\n if (day == 5) return \"Friday\"\r\n if (day == 6) return \"Saturday\"\r\n return \"\"\r\n }\r\n\r\n getMonthFromNumber(day: number) {\r\n if (day == 0) return \"January\"\r\n if (day == 1) return \"February\"\r\n if (day == 2) return \"Martch\"\r\n if (day == 3) return \"April\"\r\n if (day == 4) return \"May\"\r\n if (day == 5) return \"June\"\r\n if (day == 6) return \"July\"\r\n if (day == 7) return \"August\"\r\n if (day == 8) return \"September\"\r\n if (day == 9) return \"October\"\r\n if (day == 10) return \"November\"\r\n if (day == 11) return \"December\"\r\n return \"\"\r\n }\r\n downloadLink(url: string) {\r\n this.http.get(url, { responseType: \"blob\" })\r\n .subscribe(blob => {\r\n saveAs(blob, this.getTeacherFileName(url));\r\n });\r\n }\r\n\r\n getColorByIndex(index: number) {\r\n if (index == 0) {\r\n return \"#003f5c\"\r\n }\r\n if (index == 1) {\r\n return \"#2f4b7c\"\r\n }\r\n if (index == 2) {\r\n return \"#665191\"\r\n }\r\n if (index == 3) {\r\n return \"#a05195\"\r\n }\r\n if (index == 4) {\r\n return \"#d45087\"\r\n }\r\n if (index == 5) {\r\n return \"#f95d6a\"\r\n }\r\n if (index == 6) {\r\n return \"#ff7c43\"\r\n }\r\n if (index == 7) {\r\n return \"#ffa600\"\r\n }\r\n return \"white\"\r\n }\r\n\r\n downLoadfiles(targetUrl: string) {\r\n this.http.get(targetUrl)\r\n .subscribe((res: any) => {\r\n var a = document.createElement(\"a\");\r\n a.href = URL.createObjectURL(res.blob());\r\n a.download = targetUrl;\r\n // start download\r\n a.click();\r\n })\r\n }\r\n\r\n updateMobileMenuTitle(targetUrl: string) {\r\n this.mobileMenuTitle$.next(targetUrl);\r\n }\r\n\r\n public isNullishObject(obj: {}): boolean {\r\n if (obj === null) {\r\n return true;\r\n }\r\n const isNullish = Object.values(obj).every(value => {\r\n if (value === null) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return isNullish;\r\n }\r\n\r\n formatDate(d: Date, separator: string) {\r\n const yyyy = d.getFullYear().toString();\r\n const mm = (d.getMonth() + 1).toString();\r\n const dd = d.getDate().toString();\r\n\r\n return (yyyy + separator + (mm[1] ? mm : \"0\" + mm[0]) + separator + (dd[1] ? dd : \"0\" + dd[0]));\r\n }\r\n\r\n formatDateToDMY(dateTimeString: string): string {\r\n const date = new Date(dateTimeString);\r\n const formattedDate = date.toLocaleDateString(\"en-GB\", {\r\n day: \"2-digit\",\r\n month: \"2-digit\",\r\n year: \"numeric\"\r\n });\r\n\r\n return formattedDate;\r\n }\r\n\r\n /**\r\n * Converts the given date string to the `dd/mm/yyyy` format\r\n * @param {string} dateString - The date string to be converted.\r\n * @returns {string} The converted date in `dd/mm/yyyy` format.\r\n */\r\n convertToDDMMYYYY(dateString: string): string {\r\n let date = new Date(dateString);\r\n let day = date.getDate().toString().padStart(2, \"0\");\r\n let month = (date.getMonth() + 1).toString().padStart(2, \"0\");\r\n let year = date.getFullYear();\r\n\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n /**\r\n Converts a date string in dd/MM/yyyy format to ISO format with zero time.\r\n @param {string} dateString - The date string in dd/MM/yyyy format to convert.\r\n @returns {string} The ISO format string with zero time.\r\n */\r\n convertDateStringToIsoFormatWithZeroTime(dateString: string): string {\r\n let [day, month, year] = dateString.split(\"/\");\r\n let isoDateString = `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}T00:00:00.000`;\r\n return isoDateString;\r\n }\r\n\r\n /**\r\n * Converts a given datetime string to ISO date format\r\n * @param {string} dateTimeString - The datetime string to be converted\r\n * @returns {string} The ISO date string\r\n */\r\n convertToIsoDate(dateTimeString: string): string {\r\n const date = new Date(dateTimeString);\r\n const formattedDate = date.toISOString();\r\n\r\n return this.convertWithoutTimeAndZ(formattedDate);\r\n }\r\n\r\n /**\r\n Converts a date string to an ISO string without time and Z\r\n @param {string} dateString - The date string to be converted\r\n @returns {string} The converted ISO string\r\n */\r\n convertWithoutTimeAndZ(dateString: string): string {\r\n const date = new Date(dateString);\r\n\r\n date.setUTCHours(0, 0, 0, 0);\r\n date.setDate(date.getDate());\r\n\r\n const isoDateString = date.toISOString().replace('Z', '');\r\n\r\n return isoDateString;\r\n }\r\n\r\n /**\r\n * Converts a date string to a formatted time string.\r\n *\r\n * @param {string} dateString - The date string to convert.\r\n * @returns {string} A formatted time string in 24-hour format (e.g. \"14:30\").\r\n */\r\n convertToTime(dateString: string) {\r\n const date = new Date(dateString);\r\n const options = { hour12: false, hour: 'numeric', minute: 'numeric' };\r\n return date.toLocaleTimeString('en-US', options as any);\r\n }\r\n\r\n /**\r\n * Converts a camelCase string into a spaced string.\r\n * \r\n * @param {string} camelCaseString - The camelCase string to be converted.\r\n * @returns {string} A spaced string.\r\n */\r\n convertCamelCase(camelCaseString: string): string {\r\n let spacedString = '';\r\n\r\n for (let i = 0; i < camelCaseString.length; i++) {\r\n const originalChar = camelCaseString[i];\r\n const upperCaseChar = camelCaseString[i].toUpperCase();\r\n\r\n if (originalChar === upperCaseChar) {\r\n spacedString += ' ' + originalChar;\r\n } else {\r\n spacedString += originalChar;\r\n }\r\n }\r\n\r\n return spacedString;\r\n }\r\n\r\n /**\r\n Check if a form field is valid.\r\n @param form - The form to check.\r\n @param field - The field to check.\r\n @param tryToSave - Whether the form is being submitted.\r\n @returns Whether the field is invalid and has been touched, or if the form is being submitted and the field is invalid.\r\n */\r\n ifFieldValid(form: UntypedFormGroup, field: string, tryToSave: boolean) {\r\n return ((form.get(field)?.invalid && form.get(field)?.touched) || (tryToSave && form.get(field)?.invalid));\r\n }\r\n\r\n getUserLocalTime(timeZoneUTC: string, isHour12 = true) {\r\n if (!timeZoneUTC) {\r\n return;\r\n }\r\n\r\n const filteredTimezones = data.timezones.filter(timezone => timezone.text === timeZoneUTC);\r\n if (filteredTimezones.length === 0) {\r\n return;\r\n }\r\n\r\n const date = new Date();\r\n const options = {\r\n timeZone: filteredTimezones[0].utc[0],\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n hour12: isHour12 // set to true to use 12-hour format\r\n };\r\n\r\n // Check if the current date is within DST period\r\n const isDstActive = () => {\r\n const now = new Date();\r\n const startDst = new Date(now.getFullYear(), 2, 31 - ((5 * now.getFullYear() / 4 + 4) % 7), 1);\r\n const endDst = new Date(now.getFullYear(), 9, 31 - ((5 * now.getFullYear() / 4 + 1) % 7), 1);\r\n return now.getTime() >= startDst.getTime() && now.getTime() < endDst.getTime();\r\n };\r\n\r\n // Adjust the offset if DST is active\r\n if (isDstActive()) {\r\n date.setHours(date.getHours() + 1);\r\n }\r\n\r\n const localTime = new Intl.DateTimeFormat('en-US', options as any).format(date);\r\n return localTime;\r\n }\r\n\r\n scaleElementDown(element: ElementRef, transformOrigin: string, zoomValue: number, divElement?: HTMLElement) {\r\n let zoom = zoomValue;\r\n var width = 100;\r\n zoom = zoom - 0.1;\r\n width = 100 / zoom;\r\n if (divElement) {\r\n\r\n divElement.style.transformOrigin = transformOrigin;\r\n divElement.style.transform = \"scale(\" + zoom + \")\";\r\n divElement.style.width = width + \"%\";\r\n // divElement.style.height = width + \"vh\";\r\n } else {\r\n\r\n element.nativeElement.style.transformOrigin = transformOrigin;\r\n element.nativeElement.style.transform = \"scale(\" + zoom + \")\";\r\n element.nativeElement.style.width = width + \"%\";\r\n element.nativeElement.style.height = width + \"vh\";\r\n }\r\n\r\n }\r\n scaleElementReset(element: ElementRef, divElement?: HTMLElement) {\r\n var zoom = 1;\r\n var width = 100;\r\n zoom = zoom;\r\n width = 100 / zoom;\r\n if (divElement) {\r\n\r\n divElement.style.transformOrigin = \"unset\";\r\n divElement.style.transform = \"none\";\r\n divElement.style.width = width + \"%\";\r\n } else {\r\n element.nativeElement.style.transformOrigin = \"unset\";\r\n element.nativeElement.style.transform = \"none\";\r\n element.nativeElement.style.width = width + \"%\";\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Finds the image of the country with the given phone code.\r\n *\r\n * @param {string} phoneCode The phone code of the country.\r\n * @returns {string} The image of the country, or undefined if the country is not found.\r\n */\r\n findCountryImage(phoneCode: string) {\r\n const countries = this.countries;\r\n const phoneCodes = this.getPhoneCodes();\r\n\r\n const filteredCountries = countries.filter((country) => {\r\n const countryCode = phoneCodes.find((pc) => pc.code === phoneCode)?.iso;\r\n return country.code === countryCode;\r\n });\r\n\r\n const countryImage = filteredCountries[0]?.image;\r\n\r\n return countryImage;\r\n }\r\n\r\n findCountryImageByName(countryName: string): string {\r\n const country = this.getCountries().find(c => c.name === countryName);\r\n return country ? country.image : '';\r\n }\r\n\r\n getHeaderName(person: any): string {\r\n return (person.firstName === 'NotGiven') || (person.firstName === 'Not Given') ? '' : (person.firstName + \" \" + person.lastName.charAt(0) + \".\");\r\n }\r\n\r\n getShortFullName(person: any): string {\r\n if (person.lastName === \"\") {\r\n return person.firstName;\r\n } else {\r\n return person.firstName + \" \" + person.lastName.charAt(0) + \".\";\r\n }\r\n }\r\n\r\n /**\r\n * The function takes a person object and returns their full name by concatenating their first name and\r\n * last name.\r\n * @param {any} person - The `person` parameter is an object that represents a person. It should have\r\n * properties `firstName` and `lastName` which are strings representing the person's first name and\r\n * last name respectively.\r\n * @returns a string, which is the full name of the person.\r\n */\r\n getPersonFullName(person: any): string {\r\n if (person.firstName === \"\" && person.lastName === \"\") {\r\n return \"\";\r\n } else if (person.firstName === \"\") {\r\n return person.lastName;\r\n } else if (person.lastName === \"\") {\r\n return person.firstName;\r\n } else {\r\n return person.firstName + \" \" + person.lastName;\r\n }\r\n }\r\n\r\n capitalize(str: string): string {\r\n if (!str) return str;\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n\r\n /**\r\n * Calculates the age from a given date of birth.\r\n * @param dob The date of birth as a string in the format \"YYYY-MM-DDTHH:mm:ss\".\r\n * @returns The age in years.\r\n */\r\n calculateAge(dob: string): number {\r\n const dateOfBirth = new Date(dob);\r\n const ageMs = Date.now() - dateOfBirth.getTime();\r\n const ageDate = new Date(ageMs);\r\n const age = Math.abs(ageDate.getUTCFullYear() - 1970);\r\n\r\n return age;\r\n }\r\n\r\n /**\r\n * Sets the default user avatar image.\r\n * @param event The event that triggered the function.\r\n */\r\n setDefaultUserAvatar(event: Event) {\r\n const imgElement = event.target as HTMLImageElement;\r\n imgElement.src = 'assets/images/default-user-avatar.png';\r\n }\r\n\r\n convertMinutesToHours(minutes: number): number {\r\n return minutes / 60;\r\n }\r\n\r\n convertHoursToMinutesWithSuffix(hours: number, fullSuffix = false): string {\r\n const decimalPart = hours % 1;\r\n const wholeHours = Math.floor(hours);\r\n let minutes = wholeHours * 60;\r\n\r\n if (decimalPart > 0) {\r\n minutes += decimalPart * 60;\r\n }\r\n\r\n // Handle special cases where decimalPart is 0.25, 0.50, 0.75, etc.\r\n if (decimalPart % 0.25 === 0) {\r\n minutes += (decimalPart * 60 - Math.floor(decimalPart * 60)) * 15;\r\n }\r\n\r\n // Return zero hours if minutes is zero.\r\n if (minutes === 0) {\r\n return '0 hours';\r\n } else if (minutes < 60) {\r\n // Return minutes with suffix if less than 60.\r\n return `${minutes > 0 ? minutes : ''}${fullSuffix && minutes > 0 ? ' Minutes' : 'M'}`;\r\n } else {\r\n const hours = Math.floor(minutes / 60);\r\n const minuteSuffix = fullSuffix ? (minutes === 60 ? ' Minute' : ' Mins') : 'M';\r\n const hourSuffix = fullSuffix ? (hours === 1 ? ' Hour' : ' Hours') : 'H';\r\n\r\n // Return hours and minutes with suffix.\r\n if (hours === 0) {\r\n return `${minutes > 0 ? minutes : ''}${fullSuffix && minutes > 0 ? minuteSuffix : ''}`;\r\n } else {\r\n return `${hours}${hourSuffix}${minutes % 60 > 0 ? ` ${minutes % 60}${fullSuffix ? minuteSuffix : 'M'}` : ''}`;\r\n }\r\n }\r\n }\r\n\r\n formatSelectedDateTimeForLesson(selectedDay: Date, selectedTimeSlot: string): string {\r\n const selectedDateTimeString = `${selectedDay.toDateString()} ${selectedTimeSlot}`;\r\n const formattedDate = moment.utc(selectedDateTimeString, 'ddd MMM DD YYYY HH:mm').toISOString();\r\n return formattedDate;\r\n }\r\n\r\n getMinutesDifference(start: string, end: string): number {\r\n const format = 'HH:mm A'; // Use 24-hour clock format\r\n const startTime = moment(start, format);\r\n const endTime = moment(end, format);\r\n\r\n const diffInMilliseconds = endTime.diff(startTime);\r\n const diffInMinutes = Math.round(diffInMilliseconds / 1000 / 60);\r\n\r\n return diffInMinutes;\r\n }\r\n\r\n formatDateWithoutOffset(dateTimeString: string): string {\r\n return moment.utc(dateTimeString).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');\r\n }\r\n\r\n formatLessonStartingDate(dateTimeString: string): string {\r\n return moment.parseZone(dateTimeString).format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');\r\n }\r\n\r\n /**\r\n * The function `navigateToLessonDetails` navigates to the lesson details page based on the classroom\r\n * type and user role.\r\n * @param {Classroom} classroom - The `classroom` parameter represents the classroom object that\r\n * contains information about the classroom, such as its id and type.\r\n * @param {UserRole} role - The `role` parameter represents the user role, which can be either\r\n * `TEACHER` or something else.\r\n */\r\n navigateToLessonDetails(classroom: Classroom, role: UserRole) {\r\n const navigationExtras: NavigationExtras = {\r\n state: { classRoom: classroom }\r\n };\r\n if (classroom.type === 'Trial') {\r\n if (role === UserRole.TEACHER) {\r\n this.router.navigate(['/dashboard/classrooms/lessons', classroom.id, 'details'], navigationExtras);\r\n } else {\r\n // TODO add real lesson\r\n this.router.navigate(['dashboard/classrooms/lessons', classroom.id, 'info', 'teacher'], {\r\n state: { classRoom: classroom }\r\n });\r\n }\r\n\r\n } else {\r\n this.router.navigate(['/dashboard/classrooms/lessons', classroom.id, 'details'], navigationExtras);\r\n }\r\n }\r\n\r\n /**\r\n Returns an array of strings that represents a link to a lesson details page.\r\n @param {Classroom} classroom - The classroom object that the lesson belongs to.\r\n @param {UserRole} role - The user's role in the classroom.\r\n @returns {string[]} An array of strings that represents a link to a lesson details page.\r\n */\r\n getLessonDetailsLink(classroom: Classroom, role: UserRole): string[] {\r\n let link: string[] = ['/dashboard/classrooms/lessons', classroom.id, 'details'];\r\n if (classroom.type.toLowerCase() === ClassroomType.TRIAL.toLowerCase() && role === UserRole.STUDENT) {\r\n link = ['/dashboard/classrooms/lessons', classroom.id, 'info', 'teacher'];\r\n }\r\n return link;\r\n }\r\n\r\n /**\r\n Opens a dialog box with the specified component, width, and height.\r\n @param {any} dialogService - The dialog service object.\r\n @param {any} component - The component to be displayed in the dialog box.\r\n @param {any} width - The width of the dialog box.\r\n @param {any} [dialogData] - Optional data to be passed to the dialog box component.\r\n @param {any} [appendDialogActionsTo] - Optional ID of an HTML element where the dialog box actions should be appended.\r\n @param {function} [resultHandler] - Optional function to handle the result of the dialog box.\r\n @param {string} [height] - Optional height of the dialog box.\r\n */\r\n public openDialogWithComponent(dialogService: any, component: any, width: any, dialogData?: any, appendDialogActionsTo?: any,\r\n resultHandler?: (result: any) => void, height?: string) {\r\n this.refs.forEach(ref => ref.close());\r\n this.refs = [];\r\n let centerX = '50%';\r\n let centerY = '50%';\r\n if (appendDialogActionsTo) {\r\n if (Object.keys(appendDialogActionsTo).length > 0) {\r\n const element = document.querySelector('#' + appendDialogActionsTo);\r\n const rect = element!.getBoundingClientRect();\r\n centerX = (rect.left + 10 + rect.width / 2 - width / 2) + 'px';\r\n centerY = (rect.top + window.scrollY) + 'px'; // Add window.scrollY to account for scrolling\r\n }\r\n }\r\n\r\n if (!width) {\r\n width = 290;\r\n }\r\n\r\n const dialogRef = (dialogService.open(component, {\r\n header: '',\r\n width: this.containsOnlyNumbers(width) ? width + 'px' : width,\r\n height: height ? height : 'auto',\r\n showHeader: false,\r\n dismissableMask: true,\r\n modal: true,\r\n contentStyle: {\r\n \"max-width\": \"100%\", \"max-height\": height ? height : \"400px\", \"overflow\": \"auto\", \"border-radius\": \"10px\", \"padding\": \"0px\",\r\n },\r\n style: appendDialogActionsTo ? { 'left': centerX, 'top': centerY, 'position': `fixed` } : {},\r\n baseZIndex: 10000,\r\n maskStyleClass: 'transparent-mask',\r\n data: { dialogData: dialogData },\r\n }));\r\n this.refs.push(dialogRef);\r\n dialogRef.onClose.subscribe((data: any) => {\r\n console.log('Dialog closed with data:', data);\r\n if (resultHandler) {\r\n resultHandler(data);\r\n }\r\n });\r\n }\r\n\r\n destroyComponent(componentRef: any) {\r\n if (componentRef) {\r\n componentRef.destroy();\r\n }\r\n }\r\n\r\n navigateToBookingSystem() {\r\n this.router.navigateByUrl('/dashboard/calendar/booking-system');\r\n }\r\n\r\n isObjectEmpty(obj: any): boolean {\r\n return Object.keys(obj).length === 0;\r\n }\r\n\r\n isDayInThePast(dayNumber: number, currentDate: Date): boolean {\r\n const dateString = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + dayNumber;\r\n const today = new Date();\r\n const currentDateFormatted = new Date(dateString);\r\n\r\n // Set hours, minutes, seconds, and milliseconds to 0\r\n today.setHours(0, 0, 0, 0);\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n return currentDateFormatted < today;\r\n }\r\n\r\n getPercentScreenWidthInPixels(percentageVal = 0.8): number {\r\n const screenWidthInPixels = window.innerWidth;\r\n const percentage = percentageVal;\r\n const result = screenWidthInPixels * percentage;\r\n return result;\r\n }\r\n\r\n containsOnlyNumbers(input: string): boolean {\r\n // Regular expression pattern to match only numbers\r\n const pattern = /^[0-9]+$/;\r\n\r\n return pattern.test(input);\r\n }\r\n\r\n // Method to navigate to the lesson details page\r\n navigateToBuyPackage(classroom?: Classroom) {\r\n const navigationExtras: NavigationExtras = {};\r\n if (classroom) {\r\n navigationExtras.queryParams = { 'classroom': JSON.stringify(classroom) };\r\n }\r\n this.router.navigate(['dashboard/buy-package'], navigationExtras);\r\n }\r\n\r\n openExternalLink(url: string): void {\r\n window.open(url, \"_blank\");\r\n }\r\n\r\n replaceImportedWithDash(val: string): string {\r\n if (!val) {\r\n return '';\r\n }\r\n if (val === \"Imported\" || val.includes('Not Given')) {\r\n return \"-\";\r\n }\r\n\r\n return val;\r\n }\r\n\r\n replaceNotGivenWith(val: string, replaceStr?: string): string {\r\n if (!val) {\r\n return '';\r\n }\r\n if (val === \"Imported\" || val.includes('Not Given')) {\r\n return replaceStr ? replaceStr : \"-\";\r\n }\r\n\r\n return val;\r\n }\r\n\r\n getSafeSkypeUrl(url: string): SafeUrl {\r\n const skypeUrl = `skype:` + url;\r\n return this.sanitizer.bypassSecurityTrustUrl(skypeUrl);\r\n }\r\n\r\n sortByStartingDate(a: Lesson, b: Lesson): number {\r\n const startDateA = moment(a.startingDate);\r\n const startDateB = moment(b.startingDate);\r\n if (startDateA.isBefore(startDateB, 'minute')) {\r\n return -1;\r\n } else if (startDateA.isAfter(startDateB, 'minute')) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n sortLessonsByDate(a: Lesson, b: Lesson): number {\r\n const dateA = moment(a.startingDate);\r\n const dateB = moment(b.startingDate);\r\n return dateB.diff(dateA);\r\n }\r\n\r\n extractCountryPrefix(phoneNumber: string | undefined): string {\r\n if (!phoneNumber) {\r\n return '';\r\n }\r\n\r\n const parts = phoneNumber.split(' ');\r\n if (parts.length > 0) {\r\n return parts[0]; // remove the \"+\" prefix\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getDefaultPhoneCode(): void {\r\n const ukPhoneCode = this.getPhoneCodes().find(el => el.iso === 'GB');\r\n return ukPhoneCode || this.getPhoneCodes()[0] || '';\r\n }\r\n\r\n extractPhoneNumber(phoneNumber: string | undefined): string {\r\n if (!phoneNumber) {\r\n return '';\r\n }\r\n\r\n const parts = phoneNumber.split(' ');\r\n if (parts.length > 1) {\r\n return parts[1]; // remove the \"+\" prefix\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getLessonTime(lessonDate: string | Date, timeFormat: string = 'HH:mm') {\r\n let lessonTime;\r\n let lessonDateString = typeof lessonDate === 'string' ? lessonDate : moment(lessonDate).toISOString();\r\n\r\n if (lessonDateString.endsWith('Z')) {\r\n lessonTime = moment.utc(lessonDateString).format(timeFormat);\r\n } else {\r\n lessonTime = moment(lessonDateString).format(timeFormat);\r\n }\r\n return lessonTime;\r\n }\r\n\r\n sortLessonsByRecentFirst(a: Lesson, b: Lesson): number {\r\n const dateB = moment(b.startingDate);\r\n const dateA = moment(a.startingDate);\r\n return dateB.diff(dateA);\r\n }\r\n\r\n isWithinTimeRange(dateString: string, timeRange: number): boolean {\r\n const now = moment();\r\n const date = moment(dateString);\r\n const minutesDifference = Math.abs(now.diff(date, 'minutes'));\r\n const hoursDifference = minutesDifference / 60;\r\n console.log(hoursDifference);\r\n\r\n // check if the date is in the past\r\n const isPast = now.isAfter(date);\r\n console.log(isPast);\r\n\r\n // return true only if the date is NOT in the past and the difference in hours is within the time range\r\n return !isPast && (hoursDifference >= timeRange);\r\n }\r\n\r\n goToGoogleMeetLink(lesson: Lesson): void {\r\n if (lesson.googleMeetURL) {\r\n const urlPattern = /^(http|https):\\/\\/[^ \"]+$/;\r\n if (urlPattern.test(lesson.googleMeetURL)) {\r\n const sanitizedURL = encodeURI(lesson.googleMeetURL);\r\n window.open(sanitizedURL, \"_blank\");\r\n } else {\r\n console.error(\"Invalid Google Meet URL for the lesson.\");\r\n }\r\n } else {\r\n console.error(\"Google Meet URL is missing for the lesson.\");\r\n }\r\n }\r\n\r\n goToBellbirdLink(lesson: Lesson): void {\r\n if (lesson.bellBirdMeetingURL) {\r\n const urlPattern = /^(http|https):\\/\\/[^ \"]+$/;\r\n if (urlPattern.test(lesson.bellBirdMeetingURL!)) {\r\n const sanitizedURL = encodeURI(lesson.bellBirdMeetingURL!);\r\n window.open(sanitizedURL, \"_blank\");\r\n } else {\r\n console.error(\"Invalid Google Meet URL for the lesson.\");\r\n }\r\n } else {\r\n console.error(\"Google Meet URL is missing for the lesson.\");\r\n }\r\n }\r\n\r\n goToJitsiMeetLink(lesson: Lesson): void {\r\n if (lesson) {\r\n this.router.navigate(['/meet'], { queryParams: { id: lesson.id, classroomId: lesson.classroomId } });\r\n } else {\r\n console.error(\"Google Meet URL is missing for the lesson.\");\r\n }\r\n }\r\n\r\n convertTimezoneValueToText(timezone: string) {\r\n return (data.timezones.find((el: Timezone) => el.utc.includes(timezone)));\r\n }\r\n\r\n isWithinMinutes(minutes: number = 15, time: string, dateTime: string): boolean {\r\n const currentTime = moment();\r\n const targetDateTime = moment(dateTime);\r\n\r\n // Parse the target time\r\n const [hours, minutesOfDay] = time.split(':').map(Number);\r\n const targetTime = moment().hours(hours).minutes(minutesOfDay);\r\n\r\n // Check if the target date is today\r\n if (!targetDateTime.isSame(currentTime, 'day')) {\r\n return false;\r\n }\r\n\r\n // Calculate the time difference in minutes\r\n const timeDifference = targetTime.diff(currentTime, 'minutes');\r\n\r\n // Check if the time difference is within the specified minutes\r\n return Math.abs(timeDifference) <= minutes;\r\n }\r\n\r\n getCurrentTime(timezone: string) {\r\n // Get the offset value from the JSON data\r\n const timezoneData = data.timezones.find((tz: Timezone) => tz.utc.includes(timezone));\r\n if (!timezoneData) {\r\n throw new Error('Timezone not found in data.');\r\n }\r\n const offset = timezoneData.offset;\r\n\r\n // Create a moment object with the current timestamp\r\n const currentMoment = moment();\r\n\r\n // Apply the offset to the moment object\r\n const convertedMoment = currentMoment.utcOffset(offset);\r\n\r\n // Format the converted moment object to display the current time\r\n const currentTime = convertedMoment.format('HH:mm');\r\n\r\n return currentTime;\r\n }\r\n\r\n getCurrentTimeInTimezone(timezone: string): string {\r\n const currentTime = moment(); // Use the current time\r\n const date = moment.tz(currentTime, timezone);\r\n return date.format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n convertTimeToHourOfDayFormat(time: string, timezone: string): string {\r\n const date = moment.tz(moment(), timezone);\r\n return date.format('hh:mm A');\r\n }\r\n\r\n getTimeDifferenceInMinutes(date1: string, date2: string): number {\r\n const userTimezone = this.authService.getLoggedInUser().timeZone;\r\n const momentDate1 = moment.tz(date1, userTimezone); // Assuming date1 is in UTC timezone\r\n const momentDate2 = moment.tz(date2, userTimezone); // Assuming date2 is in UTC timezone\r\n const differenceInMinutes = momentDate1.diff(momentDate2, 'minutes');\r\n return differenceInMinutes;\r\n}\r\n\r\n isDifferenceWithin30Minutes(date1: string, date2: string, lesson: Lesson): boolean {\r\n const endTime = moment(lesson.startingDate).add(lesson.duration, 'hours');\r\n const differenceInMinutes = this.getTimeDifferenceInMinutes(date1, date2);\r\n const lessonDurationInMinutes = lesson.duration * 60;\r\n // If date2 is before date1 or endTime, consider the difference as 30 minutes\r\n if (moment(date2).isBefore(date1) || moment(date2).isBefore(endTime)) {\r\n return Math.abs(differenceInMinutes) <= lessonDurationInMinutes;\r\n }\r\n\r\n // Calculate the maximum allowable time difference including the lesson duration and 30 minutes\r\n const maxAllowedDifference = lesson.duration * 60 + 30; // Convert lesson duration to minutes\r\n\r\n // Check if the absolute difference between date1 and date2 is within the allowable range\r\n return Math.abs(differenceInMinutes) <= maxAllowedDifference;\r\n}\r\n\r\n\r\n\r\n isWithin30Mins(lesson: Lesson, user: User) {\r\n const userTimeZone = this.convertTimezoneValueToText(user.timeZone!).text;\r\n const userLocalTime = this.getUserLocalTime(this.convertTimezoneValueToText(user.timeZone!).text, false)!;\r\n\r\n const currentTimeInUserTimezone = this.getCurrentTime(user.timeZone!);\r\n const lessonStartingDateInUserTimezone = lesson.startingDate.toString();\r\n // console.log(this.showTimeDifference(userTimeZone, lessonStartingDateInUserTimezone));\r\n return this.isWithinMinutes(30, currentTimeInUserTimezone, lessonStartingDateInUserTimezone);\r\n }\r\n\r\n showTimeDifference(startTime: string, endTime: string): string {\r\n const startMoment = moment(startTime, 'HH:mm');\r\n const endMoment = moment(endTime, 'HH:mm');\r\n\r\n const duration = moment.duration(endMoment.diff(startMoment));\r\n\r\n const hours = Math.floor(duration.asHours());\r\n const minutes = Math.floor(duration.asMinutes()) % 60;\r\n\r\n return `${hours} hours and ${minutes} minutes`;\r\n }\r\n\r\n getCountryCode(): Observable {\r\n return this.http.get(IP_COUNTRY_API).pipe(\r\n map(response => {\r\n if (response) {\r\n return response;\r\n } else {\r\n throw new Error('Country code not found in response');\r\n }\r\n })\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { LeftMenuItem } from '../models/general.model';\r\nimport { AuthService } from './auth.service';\r\nimport { StudentTrialService } from './student-trial.service';\r\nimport { Classroom, ClassroomType } from '../models/classroom.model';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LayoutService {\r\n menuItems: LeftMenuItem[] = [\r\n {\r\n title: \"Dashboard\",\r\n url: \"/dashboard\",\r\n icon: \"/assets/icons/dashboard-icon.svg\",\r\n lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_h3TUuoD3DG.json\",\r\n disabled: false,\r\n role: [\"Student\", \"Teacher\"],\r\n disableOnStudentTrial: false,\r\n },\r\n {\r\n title: \"Classrooms\",\r\n url: \"/dashboard/classrooms\",\r\n icon: \"/assets/icons/classroom.svg\",\r\n lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_mflokyg2.json\",\r\n disabled: false,\r\n role: [\"Student\", \"Teacher\"],\r\n scale: 0.8,\r\n disableOnStudentTrial: true,\r\n },\r\n {\r\n title: \"Trials\",\r\n url: \"/dashboard/classrooms/trials/page\",\r\n icon: \"/assets/icons/classroom.svg\",\r\n lottieIcon: \"https://assets4.lottiefiles.com/packages/lf20_voBLTvIbhG.json\",\r\n disabled: false,\r\n role: [\"Teacher\"],\r\n scale: 0.8,\r\n disableOnStudentTrial: true,\r\n },\r\n // { title: 'Trials', url: '/dashboard/trials', icon: '/assets/icons/trial.svg', role: ['Teacher']},\r\n {\r\n title: \"Calendar\",\r\n url: \"/dashboard/calendar\",\r\n icon: \"/assets/icons/calendar.svg\",\r\n lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_G2wmKm6yAG.json\",\r\n disabled: false,\r\n role: [\"Student\", \"Teacher\"],\r\n scale: 2.3,\r\n disableOnStudentTrial: true,\r\n },\r\n {\r\n title: \"Library\",\r\n url: \"/dashboard/library\",\r\n icon: \"/assets/icons/library.svg\",\r\n lottieIcon: \"https://assets4.lottiefiles.com/packages/lf20_e6hgcbdn.json\",\r\n disabled: false,\r\n scale: 2.1,\r\n role: [\"Student\", \"Teacher\"],\r\n disableOnStudentTrial: true,\r\n },\r\n // { title: 'Notes', url: '/dashboard/notes', icon: '/assets/icons/notes.svg', role: ['Student', 'Teacher']},\r\n {\r\n title: \"Notes\",\r\n url: \"/dashboard/notes\",\r\n icon: \"/assets/icons/library.svg\",\r\n lottieIcon: \"https://assets10.lottiefiles.com/private_files/lf30_cldvedro.json\",\r\n disabled: true,\r\n role: [\"Teacher\", \"Student\"],\r\n disableOnStudentTrial: true,\r\n },\r\n {\r\n title: \"AI Chat\",\r\n url: \"/dashboard/ai-chat\",\r\n icon: \"/assets/icons/certificate.svg\",\r\n lottieIcon: \"/assets/icons/lottie/ai-chat-2.json\",\r\n disabled: true,\r\n scale: 1.3,\r\n role: [\"Student\"],\r\n disableOnStudentTrial: true,\r\n },\r\n {\r\n title: \"Homework\",\r\n url: \"/dashboard/homework\",\r\n icon: \"/assets/icons/homework.svg\",\r\n lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_hylaaytn.json\",\r\n disabled: true,\r\n role: [\"Student\", \"Teacher\"],\r\n disableOnStudentTrial: true,\r\n },\r\n {\r\n title: \"Certificates\",\r\n url: \"/dashboard/certificates\",\r\n icon: \"/assets/icons/certificate.svg\",\r\n lottieIcon: \"/assets/icons/lottie/certificates.json\",\r\n disabled: true,\r\n role: [\"Student\"],\r\n disableOnStudentTrial: true,\r\n },\r\n // {\r\n // title: \"Guides\",\r\n // url: \"/dashboard/guides\",\r\n // icon: \"/assets/icons/certificate.svg\",\r\n // lottieIcon: \"/assets/icons/lottie/guides.json\",\r\n // disabled: false,\r\n // role: [\"Student\", \"Teacher\"],\r\n // disableOnStudentTrial: true,\r\n // },\r\n {\r\n title: \"Packages\",\r\n url: \"/dashboard/my-packages\",\r\n icon: \"/assets/icons/certificate.svg\",\r\n lottieIcon: \"/assets/icons/lottie/packages.json\",\r\n disabled: false,\r\n scale: 1.5,\r\n role: [\"Student\"],\r\n disableOnStudentTrial: false,\r\n },\r\n ];\r\n\r\n \r\n extraMobileMenuItems: LeftMenuItem[] = [\r\n {\r\n title: \"Settings\",\r\n url: \"/user-profile/info\",\r\n icon: \"/assets/icons/dashboard-icon.svg\",\r\n lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_wcdzldes.json\",\r\n disabled: false,\r\n role: [\"Student\", \"Teacher\"],\r\n disableOnStudentTrial: false,\r\n },\r\n // {\r\n // title: \"Notifications\",\r\n // url: \"/notifications\",\r\n // icon: \"/assets/icons/dashboard-icon.svg\",\r\n // lottieIcon: \"https://assets8.lottiefiles.com/packages/lf20_daV8h3.json\",\r\n // disabled: false,\r\n // role: [\"Student\", \"Teacher\"],\r\n // disableOnStudentTrial: false,\r\n // },\r\n {\r\n title: \"Logout\",\r\n url: \"\",\r\n icon: \"/assets/icons/dashboard-icon.svg\",\r\n lottieIcon: \"https://assets9.lottiefiles.com/datafiles/xjFX0JCCOm2Lhp1/data.json\",\r\n disabled: false,\r\n role: [\"Student\", \"Teacher\"],\r\n disableOnStudentTrial: false,\r\n method: () => {\r\n this.authService.logout()\r\n }\r\n },\r\n \r\n ]\r\n\r\n private currentMenuIndex$: BehaviorSubject =\r\n new BehaviorSubject(0);\r\n public readonly currentMenuIndex: Observable =\r\n this.currentMenuIndex$.asObservable();\r\n\r\n private sideMenuHeight$: BehaviorSubject =\r\n new BehaviorSubject(0);\r\n public readonly sideMenuHeight: Observable =\r\n this.sideMenuHeight$.asObservable();\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private studentTrialService: StudentTrialService\r\n ) {\r\n }\r\n\r\n public setCurrentMenuIndex(index: number) {\r\n this.currentMenuIndex$.next(index);\r\n }\r\n\r\n public setSideMenuHeight(height: number) {\r\n this.sideMenuHeight$.next(height);\r\n }\r\n\r\n public updateMenuItemDisabledStatus(title: string, disabled: boolean) {\r\n const menuItem = this.menuItems.find(item => item.title === title);\r\n if (menuItem) {\r\n menuItem.disabled = disabled;\r\n }\r\n }\r\n\r\n public updateAllMenuItemsDisabledStatus(disabled: boolean) {\r\n this.menuItems.forEach(item => {\r\n if (item.title !== \"Homework\" && item.title !== \"Guides\" && item.title !== \"Certificates\") {\r\n item.disabled = disabled;\r\n }\r\n });\r\n }\r\n\r\n public updateMenuItemClassroomToTrialsForStudent(classrooms: Classroom[]) {\r\n this.menuItems.forEach(item => {\r\n if (item.title === 'Classrooms') \r\n {\r\n if (classrooms) {\r\n const numberOfPaidClassrooms = classrooms.filter(classroom => classroom.type === ClassroomType.PAID).length;\r\n console.log(`The user has ${numberOfPaidClassrooms} paid classrooms.`);\r\n if (numberOfPaidClassrooms > 0) {\r\n item.url = \"/dashboard/classrooms\"\r\n } else {\r\n item.url = \"/dashboard/classrooms/trials/true\"\r\n }\r\n }\r\n }\r\n });\r\n }\r\n \r\n public getMenuItems(): LeftMenuItem[] {\r\n const menuItemsCopy = this.menuItems.slice();\r\n const role = this.authService.getUserRole();\r\n for (let i = 0; i < menuItemsCopy.length; i++) {\r\n if (role === \"Student\") {\r\n if (this.studentTrialService.hasTrialRequested() && menuItemsCopy[i].disableOnStudentTrial) {\r\n menuItemsCopy[i].disabled = true;\r\n }\r\n if (menuItemsCopy[i].title === \"Guides\") {\r\n menuItemsCopy[i].disabled = true;\r\n }\r\n } else {\r\n if (menuItemsCopy[i].title === \"Guides\") {\r\n menuItemsCopy[i].disabled = true;\r\n }\r\n }\r\n }\r\n return menuItemsCopy;\r\n }\r\n\r\n public getExtraMobileMenuItems(): LeftMenuItem[] {\r\n return this.extraMobileMenuItems;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { BehaviorSubject, forkJoin, Observable, of } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BBB, Lesson, LessonPostRequest, LessonStatus } from '../models/lesson.model';\r\nimport { LessonBreakdown, LessonUserRating } from '../models/rating.model';\r\nimport { UserService } from './user.service';\r\nimport { filter, map, mergeMap, switchMap, tap } from 'rxjs/operators';\r\nimport { User, UserRole } from '../models/user.model';\r\nimport { Classroom, ClassroomType, Level, Status } from '../models/classroom.model';\r\nimport { ClassroomService } from './classroom.service';\r\nimport { AuthService } from './auth.service';\r\nimport { GeneralService } from './general.service';\r\n\r\nconst BACKEND_URL = environment.apiUrl;\r\nconst BACKEND_URL_LMS = environment.apiUrl + \"/LMS\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LessonService {\r\n\r\n private addListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly addListener: Observable = this.addListener$.asObservable();\r\n\r\n private updateListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly updateListener: Observable = this.updateListener$.asObservable();\r\n\r\n private deleteListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly deleteListener: Observable = this.deleteListener$.asObservable();\r\n\r\n private lessonToRateListener$: BehaviorSubject = new BehaviorSubject({} as Lesson);\r\n public readonly lessonToRateListener: Observable = this.lessonToRateListener$.asObservable();\r\n\r\n public sessionAllUserLessons: Lesson[] = [];\r\n\r\n public lessonToReschedule: Lesson = {} as Lesson\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private classroomService: ClassroomService,\r\n private authService: AuthService,\r\n private generalService: GeneralService\r\n ) {\r\n\r\n }\r\n\r\n create(lesson: LessonPostRequest) {\r\n return this.http.post(BACKEND_URL_LMS + \"/CreateLesson\", lesson)\r\n }\r\n\r\n setAddListener(add: boolean) {\r\n this.addListener$.next(add);\r\n }\r\n\r\n createRecurring(lessons: LessonPostRequest[]) {\r\n return this.http.post(BACKEND_URL + \"/Lesson/CreateLessons\", lessons)\r\n }\r\n\r\n update(lesson: LessonPostRequest) {\r\n return this.http.post(BACKEND_URL_LMS + \"/UpdateLesson\", lesson)\r\n }\r\n\r\n setUpdateListener(update: boolean) {\r\n this.updateListener$.next(update);\r\n }\r\n\r\n setLessonRatingListener(lesson: Lesson) {\r\n this.lessonToRateListener$.next(lesson);\r\n }\r\n\r\n delete(lessonId: number) {\r\n return this.http.post(BACKEND_URL + \"/Lesson/DeleteLesson?lessonId=\" + lessonId, {})\r\n }\r\n\r\n setDeleteListener(del: boolean) {\r\n this.deleteListener$.next(del);\r\n }\r\n\r\n // public getClassroomLessons2(classroomId: string): Observable {\r\n // return this.http.get(BACKEND_URL + \"/Lesson/GetClassroomLessons?classroomId=\" + classroomId).pipe(\r\n // map(lesson => lesson.map(l => {\r\n // l.startingDate = new Date(l.startingDate);\r\n // return l;\r\n // }))\r\n // )\r\n // }\r\n\r\n public getClassroomLessons(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetClassroomLessons?classroomId=\" + classroomId)\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"accepted\")\r\n })\r\n )\r\n }\r\n\r\n public getAllUserLessons(): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetUserLessonsFullHistory\")\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"accepted\")\r\n })\r\n )\r\n }\r\n\r\n public getLMSAllUserLessons(headers: HttpHeaders): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetUserLessonsFullHistory\", {headers});\r\n }\r\n\r\n public getUserLessonsFullHistory(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetUserLessonsFullHistory\");\r\n }\r\n\r\n public getUserLessonsHistory(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL_LMS + \"/GetUserLessonsHistory?ClassroomId=\" + classroomId);\r\n }\r\n\r\n public getTodaysLessons(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetTodaysLessons\")\r\n }\r\n\r\n public getRequestedLessons(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetUserLessonsFullHistory\")\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"requested\")\r\n })\r\n )\r\n }\r\n\r\n public getAllReccuringLessons(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetAllUserReccurringLessons\")\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"accepted\")\r\n })\r\n )\r\n }\r\n\r\n public getClassroomReccuringLessons(classroomId: string): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetClassroomReccurringLessons?classroomId=\" + classroomId)\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"accepted\")\r\n })\r\n )\r\n }\r\n\r\n compareFn(a: Lesson, b: Lesson) {\r\n if (a.startingDate.getTime() < b.startingDate.getTime())\r\n return -1;\r\n if (a.startingDate.getTime() > b.startingDate.getTime())\r\n return 1;\r\n return 0;\r\n };\r\n\r\n public getClassroomsWithReccuringLessons() {\r\n return this.classroomService.getUserClassrooms(ClassroomType.PAID)\r\n .pipe(\r\n switchMap((classrooms: Classroom[]) => {\r\n return forkJoin(classrooms.map((classroom: Classroom) => {\r\n return this.getClassroomReccuringLessons(classroom.id).pipe(\r\n map(x => {\r\n x.sort(this.compareFn)\r\n let classroomDetails: Classroom = ({ ...classroom, ...{ reccurringLessons: x } });\r\n return classroomDetails;\r\n }))\r\n }))\r\n })\r\n )\r\n }\r\n\r\n public getDaysOfRecurringLessonsOfClassroom(classroom: any) {\r\n let days: any[] = []\r\n for (let lesson of classroom.reccurringLessons) {\r\n let day = this.generalService.getDayFromNumber(lesson.startingDate.getDay())\r\n if (!days.some(el => el == day)) {\r\n days.push(day)\r\n }\r\n }\r\n return days\r\n }\r\n\r\n public getLessonExtrasValues(extras: any) {\r\n return {\r\n level: extras[0], title: extras[1].result, language: extras[2]\r\n }\r\n }\r\n\r\n public getLessonExtras(lessonId: number) {\r\n return forkJoin(\r\n this.getLessonLevel(lessonId),\r\n this.getLessonTitle(lessonId),\r\n this.getLessonLanguage(lessonId),\r\n // this.getLessonClassroom(lessonId),\r\n )\r\n }\r\n getLessonExtraDetailsPiped(lessons: Lesson[], type: string) {\r\n if (lessons.length === 0) {\r\n return of([])\r\n }\r\n if (this.authService.getUserRole() == UserRole.TEACHER) // will get the \"requested in the modal\"\r\n lessons = lessons.filter((lesson: Lesson) => lesson.answered === type)\r\n return forkJoin(lessons.map((lesson: Lesson) => {\r\n return this.getLessonExtras(lesson.id).pipe(\r\n map(x => {\r\n lesson.startingDate = new Date(lesson.startingDate);\r\n let lessonWithExtras: Lesson = ({ ...lesson, ...{ level: x[0], title: x[1].result, language: x[2] } });\r\n return lessonWithExtras;\r\n }))\r\n }))\r\n }\r\n\r\n getLessonExtraDetails(lessons: Lesson[], type: string) {\r\n if (lessons.length === 0) {\r\n return of([])\r\n }\r\n if (this.authService.getUserRole() == UserRole.TEACHER) // will get the \"requested in the modal\"\r\n lessons = lessons.filter((lesson: Lesson) => lesson.answered === type)\r\n for (let lesson of lessons) {\r\n lesson.startingDate = new Date(lesson.startingDate);\r\n lesson.classroom!.users = lesson.classroom!.classroomStudents\r\n lesson.level = lesson.classroom?.activeLevel\r\n lesson.title = this.classroomService.getClassroomTitle(lesson.classroom!)\r\n }\r\n return of(lessons)\r\n }\r\n\r\n public getLessonLevel(lessonId: number) {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetLessonLevel?lessonId=\" + lessonId, { responseType: 'text' })\r\n }\r\n\r\n public getLessonTitle(lessonId: number): Observable<{ result: string }> {\r\n return this.http.get<{ result: string }>(BACKEND_URL + \"/Lesson/GetLessonTitle?lessonId=\" + lessonId)\r\n }\r\n\r\n public getLessonLanguage(lessonId: number) {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetLessonLanguage?lessonId=\" + lessonId, { responseType: 'text' })\r\n }\r\n\r\n public getLessonClassroom(lessonId: number): Observable<[Classroom]> {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetLessonClassroom?lessonId=\" + lessonId)\r\n .pipe(\r\n switchMap((classroom: Classroom) => {\r\n return forkJoin(\r\n this.classroomService.getClassroomStudents(classroom.id)\r\n .pipe(\r\n map((res) => {\r\n return { ...classroom, users: res.usersDTOResult }\r\n })\r\n )\r\n )\r\n })\r\n )\r\n }\r\n\r\n public getLessonHoursForEachLevel(classroomId: string) {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetLessonHoursForEachLevel?ClassroomId=\" + classroomId)\r\n }\r\n\r\n public getLessonHoursForEachStatus(classroomId: string) {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetLessonHoursForEachStatus?ClassroomId=\" + classroomId)\r\n }\r\n\r\n getAllLessonsByLevelAndStatus(status: LessonStatus, level: Level, classroomId?: string) {\r\n let endpoint = classroomId\r\n ?\r\n \"/Lesson/GetLessonByLevelAndStatus?ClassroomId=\" + classroomId + \"&Status=\" + status + \"&Level=\" + level\r\n :\r\n \"/Lesson/GetAllLessonsByLevelAndStatus?Status=\" + status + \"&Level=\" + level\r\n return this.http.get(BACKEND_URL + endpoint)\r\n .pipe(\r\n switchMap((lessons: Lesson[]) => {\r\n return this.getLessonExtraDetails(lessons, \"accepted\")\r\n })\r\n )\r\n }\r\n\r\n public getStatusesNames(): string[] {\r\n return [LessonStatus.ARRANGED, LessonStatus.COMPLETED, LessonStatus.CANCELED, LessonStatus.NO_SHOW]\r\n }\r\n\r\n public getNextLesson(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Lesson/GetOverallNextLesson\")\r\n }\r\n\r\n public createBBB(bbb: BBB) {\r\n return this.http.post(BACKEND_URL + \"/BBB/CreateBBBClass\", bbb)\r\n }\r\n\r\n public chargeLessonTime(lessonId: number, answer: boolean) {\r\n return this.http.post(BACKEND_URL_LMS + \"/ChargeLessonTime?lessonId=\" + lessonId + \"&answer=\" + answer + \"\", {});\r\n }\r\n\r\n public getTimeToNextLesson(lesson: Lesson, timeZone: string) {\r\n const eventDay = moment(lesson.startingDate);\r\n let countdown;\r\n const today = moment(this.generalService.getCurrentTimeInTimezone(timeZone));\r\n const timeSpan = eventDay.diff(today);\r\n\r\n if (timeSpan <= 0) {\r\n countdown = {\r\n days: 0,\r\n hours: 0,\r\n minutes: 0\r\n };\r\n return countdown;\r\n }\r\n\r\n const duration = moment.duration(timeSpan);\r\n countdown = {\r\n days: duration.days(),\r\n hours: duration.hours(),\r\n minutes: duration.minutes()\r\n };\r\n return countdown;\r\n }\r\n\r\n /**\r\n * Checks if the given status string contains the word \"trial\" (case-insensitive).\r\n * @param {string} statusString - The status string to check.\r\n * @returns {boolean} Whether the status string contains the word \"trial\".\r\n */\r\n hasTrialStatus(statusString: string): boolean {\r\n const lowercaseStatusString = statusString.toLowerCase();\r\n if (lowercaseStatusString.includes('trial')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns the corresponding status name for a given status string.\r\n * @param {string} statusString - The status string to get the name for.\r\n * @returns {string} The corresponding status name.\r\n */\r\n getStatusNameFromStatusString(statusString: string): string {\r\n const lowercaseStatusString = statusString.toLowerCase();\r\n if (lowercaseStatusString.includes('trial completed')) {\r\n return 'trial completed';\r\n } else if (lowercaseStatusString.includes('completed')) {\r\n return 'completed';\r\n } else if (lowercaseStatusString.includes('trial arranged')) {\r\n return 'trial arranged';\r\n } else if (lowercaseStatusString.includes('arranged')) {\r\n return 'arranged';\r\n } else if (lowercaseStatusString.includes('show')) {\r\n return 'no show';\r\n } else if (lowercaseStatusString.includes('canceled')) {\r\n return 'canceled';\r\n } else if (lowercaseStatusString.includes('request')) {\r\n return 'requested';\r\n } else {\r\n return 'arranged';\r\n }\r\n }\r\n\r\n sortLessonByDate(a: Lesson, b: Lesson, sortOrder: 'asc' | 'desc') {\r\n const dateA = moment(a.startingDate);\r\n const dateB = moment(b.startingDate);\r\n \r\n if (sortOrder === 'asc') {\r\n return dateA.diff(dateB);\r\n } else {\r\n return dateB.diff(dateA);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the tooltip name of the teacher or classroom students for a given classroom.\r\n *\r\n * @param {Classroom} classroom - The classroom object.\r\n * @returns {string} The tooltip name of the teacher or classroom students.\r\n */\r\n getLessonRowTooltipName(classroom: Classroom): string {\r\n if (this.authService.isStudent) {\r\n return this.generalService.getPersonFullName(classroom.teacher);\r\n } else {\r\n return this.classroomService.getFullStudentNames(classroom.classroomStudents);\r\n }\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, signal } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Classroom, Level } from '../models/classroom.model';\r\nimport { Category } from '../models/homework.model';\r\nimport { Folder, FoldersWithFiles, Library, LibraryFile, UploadFilesToFolderRequest } from '../models/library.model';\r\nimport { User } from '../models/user.model';\r\nimport { UserService } from './user.service';\r\nconst BACKEND_URL = environment.apiUrl\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LibraryService {\r\n\r\n private refs: any[] = [];\r\n private appendDialogActionsTo = 'some-id';\r\n\r\n private showGroupActions$: BehaviorSubject = new BehaviorSubject(false);\r\n public showGroupActions: Observable = this.showGroupActions$.asObservable();\r\n\r\n private currentSelectedClassroomId$: BehaviorSubject = new BehaviorSubject(0);\r\n public currentSelectedClassroomId: Observable = this.currentSelectedClassroomId$.asObservable();\r\n\r\n private myLibrariesListener$: BehaviorSubject = new BehaviorSubject(true);\r\n public myLibrariesListener: Observable = this.myLibrariesListener$.asObservable();\r\n\r\n private updateListener$: BehaviorSubject = new BehaviorSubject(true);\r\n public updateListener: Observable = this.updateListener$.asObservable();\r\n\r\n private libraryUpdatedListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public libraryUpdatedListener: Observable = this.libraryUpdatedListener$.asObservable();\r\n\r\n private updateFolderListener$: BehaviorSubject<{ libraryFile: LibraryFile, folder: Folder }> = new BehaviorSubject<{ libraryFile: LibraryFile, folder: Folder }>({ libraryFile: {} as LibraryFile, folder: {} as Folder });\r\n public updateFolderListener: Observable<{ libraryFile: LibraryFile, folder: Folder }> = this.updateFolderListener$.asObservable();\r\n\r\n private deleteListener$: BehaviorSubject = new BehaviorSubject(0);\r\n public deleteListener: Observable = this.deleteListener$.asObservable();\r\n\r\n private deleteFolderListener$: BehaviorSubject = new BehaviorSubject(0);\r\n public deleteFolderListener: Observable = this.deleteFolderListener$.asObservable();\r\n\r\n private showGroupActionsListener$: BehaviorSubject = new BehaviorSubject(true);\r\n public showGroupActionsListener: Observable = this.showGroupActionsListener$.asObservable();\r\n\r\n private showUploadActionsListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public showUploadActionsListener: Observable = this.showUploadActionsListener$.asObservable();\r\n\r\n checkedLibraries: LibraryFile[] = [];\r\n libraryToAdd: Library = {} as Library;\r\n folderToDelete: Folder = {} as Folder;\r\n selectedlibraryFile: LibraryFile = {} as LibraryFile;\r\n currentSelectedClassroom: Classroom = {} as Classroom;\r\n\r\n isPreviewingFromChat = signal(false);\r\n checkedLibraryFiles = signal([]);\r\n\r\n setUpdateFolderListener(libraryFile: LibraryFile, folder: Folder) {\r\n this.updateFolderListener$.next({ libraryFile: libraryFile, folder: folder });\r\n }\r\n\r\n setLibraryUpdatedListener(val: boolean) {\r\n this.libraryUpdatedListener$.next(val);\r\n }\r\n\r\n moveFileToFolder(oldId: number, newId: number) {\r\n return this.http.post(BACKEND_URL + \"/Library/MoveFileToFolder?fileId=\" + oldId + \"&newFolderId=\" + newId, {})\r\n\r\n }\r\n\r\n setDeleteListener(id: number) {\r\n this.deleteListener$.next(id);\r\n }\r\n\r\n setDeleteFolderListener(id: number) {\r\n this.deleteFolderListener$.next(id);\r\n }\r\n\r\n setGroupActions(showGroupActions: boolean) {\r\n this.showGroupActions$.next(showGroupActions);\r\n }\r\n\r\n setshowGroupAction(showGroupActions: boolean) {\r\n this.showGroupActionsListener$.next(showGroupActions);\r\n }\r\n\r\n setshowUploadAction(showGroupActions: boolean) {\r\n this.showUploadActionsListener$.next(showGroupActions);\r\n }\r\n\r\n setCheckedNotes(checkedLibraries: LibraryFile[]) {\r\n this.checkedLibraries = checkedLibraries;\r\n }\r\n\r\n public rootFolder: Folder = {\r\n parent: \"\",\r\n name: \"home\"\r\n }\r\n\r\n constructor(\r\n private userService: UserService,\r\n private http: HttpClient,\r\n ) { }\r\n\r\n initializeEmptyLibraryObject(): Library {\r\n return {\r\n classroom: 0,\r\n libraryFiles: [],\r\n folder: this.rootFolder,\r\n }\r\n }\r\n\r\n getFileFullPath(file: string) {\r\n return environment.apiUrl + \"/\" + file;\r\n }\r\n\r\n getLibraryTitle(library: Library) {\r\n let title = \"\";\r\n let i = 0;\r\n let comma = \", \"\r\n for (let file of library.libraryFiles) {\r\n i++;\r\n if (i == library.libraryFiles.length) {\r\n comma = \"\"\r\n }\r\n title += this.getFileName(file.path) + comma;\r\n }\r\n return title;\r\n }\r\n\r\n getFileName(path: string) {\r\n if (path) {\r\n let n = path.lastIndexOf('/');\r\n let result = path.substring(n + 1);\r\n return result;\r\n }\r\n return path\r\n }\r\n\r\n getLibraryFiles(library: Library) {\r\n let fileNames = [];\r\n for (let file of library.libraryFiles) {\r\n fileNames.push({ file: { name: this.getFileName(file.path) }, progress: 100 });\r\n }\r\n return fileNames;\r\n }\r\n\r\n getFolderPathOfFolder(folder: Folder, path: Folder[], folders: Folder[]) {\r\n path.push(folder);\r\n if (folder.parent === \"\") {\r\n return []\r\n }\r\n if (folder.parent === this.rootFolder.name) {\r\n return path.reverse()\r\n } else {\r\n let parentFolder = folders.filter(el => el.name === folder.parent)[0]\r\n this.getFolderPathOfFolder(parentFolder, path, folders);\r\n }\r\n return path\r\n }\r\n\r\n getInnerFoldersOfLibraries(foldersWithFiles: FoldersWithFiles[], folders: Folder[]): Folder[] {\r\n let innerFolders: Folder[] = [];\r\n for (let folderWithFiles of foldersWithFiles) {\r\n let folder: Folder = {\r\n name: folderWithFiles.name,\r\n parent: folderWithFiles.parent\r\n }\r\n let frontFolders = this.getInnerFoldersOfFolder(folder, folders);\r\n innerFolders = innerFolders.concat(frontFolders);\r\n }\r\n return innerFolders;\r\n }\r\n\r\n getInnerFoldersOfFolder(folder: Folder, folders: Folder[]) {\r\n let frontFolders = folders.filter(el => {\r\n return el.parent == folder.name\r\n })\r\n return frontFolders.reverse()\r\n }\r\n\r\n getLibrariesOnRootFolders(foldersWithFiles: FoldersWithFiles[]): FoldersWithFiles[] {\r\n return foldersWithFiles.filter((library: FoldersWithFiles) => {\r\n return library.name === this.rootFolder.name\r\n });\r\n }\r\n\r\n getLibrariesOfFolder(folder: Folder, foldersWithFiles: FoldersWithFiles[]): FoldersWithFiles[] {\r\n return foldersWithFiles.filter((library: FoldersWithFiles) => library.name == folder.name && library.parent == folder.parent)\r\n }\r\n\r\n createLibrary(library: Library) {\r\n return this.http.post(BACKEND_URL + \"/Library/CreateLibrary\", library)\r\n }\r\n\r\n getUserLibraries(userId: string): Observable {\r\n return this.http.get(BACKEND_URL + \"/Library/GetLibrariesUserCreated?UserId=\" + userId)\r\n }\r\n\r\n createFolder(folder: Folder) {\r\n return this.http.post(BACKEND_URL + \"/Library/CreateFolder\", folder)\r\n }\r\n\r\n uploadFilesToFolder(files: UploadFilesToFolderRequest) {\r\n return this.http.post(BACKEND_URL + \"/Library/UploadFilesToFolder\", files)\r\n }\r\n\r\n shareFileWithClassUsers(files: LibraryFile[]) {\r\n return this.http.post(BACKEND_URL + \"/Library/ShareFileWithClassUsers\", files)\r\n }\r\n\r\n unShareLibrary(files: LibraryFile[]) {\r\n return this.http.post(BACKEND_URL + \"/Library/UnShareLibrary\", files)\r\n }\r\n\r\n getUserCreatedLibFolders() {\r\n return this.http.get(BACKEND_URL + \"/Library/GetUserCreatedLibFolders\")\r\n }\r\n\r\n getSharedByMeLibFolders(classroomId: number) {\r\n return this.http.get(BACKEND_URL + \"/Library/GetShareByMe?ClassId=\" + classroomId)\r\n }\r\n\r\n getShareWithMeLibFolders(classroomId: number) {\r\n return this.http.get(BACKEND_URL + \"/Library/GetShareWithMe?ClassId=\" + classroomId)\r\n }\r\n\r\n setCurrentSelectedClassroomId(id: number) {\r\n this.currentSelectedClassroomId$.next(id);\r\n }\r\n\r\n setCurrentSelectedClassroom(classroom: Classroom) {\r\n this.currentSelectedClassroom = classroom;\r\n }\r\n\r\n getCurrentSelectedClassroom() {\r\n return this.currentSelectedClassroom;\r\n }\r\n\r\n setMyLibrariesListener(listen: boolean) {\r\n this.myLibrariesListener$.next(listen);\r\n }\r\n\r\n setUpdateListener(listen: boolean) {\r\n this.updateListener$.next(listen);\r\n }\r\n\r\n setFolderToDelete(folder: Folder) {\r\n this.folderToDelete = folder;\r\n }\r\n\r\n getFolderToDelete(): Folder {\r\n return this.folderToDelete;\r\n }\r\n\r\n setLibraryFile(libFile: LibraryFile) {\r\n this.selectedlibraryFile = libFile;\r\n }\r\n\r\n getLibraryFile(): LibraryFile {\r\n return this.selectedlibraryFile;\r\n }\r\n\r\n public openDialogWithComponent(dialogService: any, component: any, width = 360, dialogData?: any, appendDialogActionsTo?: any, resultHandler?: (result: any) => void) {\r\n this.refs.forEach(ref => ref.close());\r\n this.refs = [];\r\n let centerX = '50%';\r\n let centerY = '50%';\r\n if (appendDialogActionsTo) {\r\n if (Object.keys(appendDialogActionsTo).length > 0) {\r\n const element = document.querySelector('#' + appendDialogActionsTo);\r\n const rect = element!.getBoundingClientRect();\r\n const centerX = rect.left + rect.width / 2 - width / 2;\r\n const centerY = rect.top;\r\n }\r\n }\r\n const dialogRef = (dialogService.open(component, {\r\n header: '',\r\n width: width + 'px',\r\n showHeader: false,\r\n dismissableMask: true,\r\n modal: true,\r\n contentStyle: {\r\n \"max-width\": \"100%\", \"max-height\": \"400px\", \"overflow\": \"auto\", \"border-radius\": \"10px\", \"padding\": \"0px\",\r\n },\r\n style: appendDialogActionsTo ? { 'left': centerX, 'top': centerY, 'position': `fixed` } : {},\r\n baseZIndex: 10000,\r\n maskStyleClass: 'transparent-mask',\r\n data: { dialogData: dialogData },\r\n }));\r\n this.refs.push(dialogRef);\r\n dialogRef.onClose.subscribe((data: any) => {\r\n console.log('Dialog closed with data:', data);\r\n if (resultHandler) {\r\n resultHandler(data);\r\n }\r\n });\r\n }\r\n\r\n // getClassroomFiles(classroomId: number) {\r\n // return this.http.get(BACKEND_URL + \"/Library/GetClassroomFiles?classroomid=\" + classroomId)\r\n // }\r\n\r\n getClassroomFiles(classroomId: number) {\r\n return this.http.get(BACKEND_URL + \"/Library/GetMyClassroomFiles?classroomId=\" + classroomId)\r\n }\r\n\r\n uploadClassroomFilesToFolder(req: any) {\r\n return this.http.post(BACKEND_URL + \"/Library/UploadClassroomFilesToFolder\", req)\r\n }\r\n\r\n getUsersLibraryHasBeenSharedWith(fileId: any) {\r\n return this.http.get(BACKEND_URL + \"/Library/GetUsersLibraryHasBeenSharedWith?fileId=\" + fileId)\r\n }\r\n\r\n delete(fileId: any) {\r\n return this.http.post(BACKEND_URL + \"/Library/DeleteLibrary?libraryId=\" + fileId, {})\r\n }\r\n\r\n deleteFolder(folderId: any) {\r\n return this.http.post(BACKEND_URL + \"/Library/DeleteFolder?FolderId=\" + folderId, {})\r\n }\r\n\r\n updateLibraryFileName(fileId: any, newName: string) {\r\n return this.http.post(BACKEND_URL + \"/Library/UpdateLibraryFileName?fileId=\" + fileId + \"&newName=\" + newName, {});\r\n }\r\n\r\n getTeacherClassRooms() {\r\n return this.http.get(BACKEND_URL + \"/Classrooms/GetTeacherClassrooms/\");\r\n }\r\n\r\n editFileLevels(newLevels: any) {\r\n return this.http.post(BACKEND_URL + \"/Library/EditFileLevels\", newLevels);\r\n }\r\n\r\n editFileCategories(newFileCategories: any) {\r\n return this.http.post(BACKEND_URL + \"/Library/EditFileCategories\", newFileCategories);\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { NotificationPost } from '../models/notification.model';\r\nconst BACKEND_URL = environment.apiUrl;\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n create(notification: NotificationPost) {\r\n return this.http.post(BACKEND_LMS_URL + \"CreateNotification\", notification)\r\n }\r\n\r\n get() {\r\n return this.http.get(BACKEND_LMS_URL + \"GetNotifications\")\r\n }\r\n\r\n updateRead(id: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"UpdateNotificationRead?id=\" + id, {})\r\n }\r\n\r\n markAsReadBulk(ids: any[]) {\r\n return this.http.post(BACKEND_LMS_URL + \"UpdateNotificationsRead\", ids)\r\n }\r\n\r\n delete(id: number) {\r\n return this.http.post(BACKEND_LMS_URL + \"DeleteNotification?id=\" + id, {});\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Level } from '../models/classroom.model';\r\nimport { PackageFilter, Package, PackageExtention, PackageFilterHelper, PackageLessonsLevel, PackageState, PackageType, PackageToBuy, PackageToExtend, PackageToBuyNew, SplitPackagesToBuyResponse } from '../models/package.model';\r\nimport { UserRole } from '../models/user.model';\r\nimport { AuthService } from './auth.service';\r\nimport { GeneralService } from './general.service';\r\nimport { UserService } from './user.service';\r\nconst BACKEND_URL = environment.apiUrl;\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PackageService {\r\n\r\n public packageFilterHelper: PackageFilterHelper = {\r\n totalHours: ['Any', 5, 10, 20, 50],\r\n hoursLeft: ['Any', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],\r\n level: ['Any', Level.A1, Level.A2, Level.B1, Level.B2, Level.C1, Level.C2, Level.TBD, Level.BS],\r\n type: ['Any', PackageType.PAID, PackageType.REGULAR, PackageType.FLEX, PackageType.BUSINESS, PackageType.GIFT, PackageType.TRIAL],\r\n state: ['Any', PackageState.ACTIVE, PackageState.COMPLETED, PackageState.PAUSED, PackageState.EXPIRED, PackageState.CANCELED, PackageState.TRANSFERED],\r\n hasExtention: ['Any', 'Yes', 'No']\r\n }\r\n\r\n public packageFilter: PackageFilter = {\r\n totalHours: 'Any',\r\n hoursLeft: 'Any',\r\n level: 'Any',\r\n type: 'Any',\r\n state: 'Any',\r\n hasExtention: 'Any',\r\n expiresOn_from: {} as Date,\r\n expiresOn_to: {} as Date,\r\n stratedAt_to: {} as Date,\r\n stratedAt_from: {} as Date,\r\n purchasedAt_from: {} as Date,\r\n purchasedAt_to: {} as Date,\r\n }\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService\r\n ) { }\r\n\r\n public getPackageFilter(): PackageFilterHelper {\r\n return this.packageFilterHelper;\r\n }\r\n\r\n public getCurrentPackageFilter(): PackageFilter {\r\n return this.packageFilter;\r\n }\r\n\r\n public setCurrentPackageFilter(packageFilter: PackageFilter) {\r\n this.packageFilter = packageFilter;\r\n }\r\n\r\n public getPackageFilterWithoutTheCurrent(): PackageFilterHelper {\r\n let current = this.getCurrentPackageFilter();\r\n let remainingTotalHours = this.packageFilterHelper.totalHours.filter(el => { return el !== current.totalHours });\r\n let hoursLeft = this.packageFilterHelper.hoursLeft.filter(el => { return el !== current.hoursLeft });\r\n let level = this.packageFilterHelper.level.filter(el => { return el !== current.level });\r\n let type = this.packageFilterHelper.type.filter(el => { return el !== current.type });\r\n let state = this.packageFilterHelper.state.filter(el => { return el !== current.state });\r\n let hasExtention = this.packageFilterHelper.hasExtention.filter(el => { return el !== current.hasExtention });\r\n return {\r\n totalHours: remainingTotalHours,\r\n hoursLeft: hoursLeft,\r\n level: level,\r\n type: type,\r\n state: state,\r\n hasExtention: hasExtention\r\n }\r\n }\r\n\r\n getClassroomPackages(classroomId: string) {\r\n return this.http.get(BACKEND_URL + \"/Package/GetClassroomPackages?ClassroomId=\" + classroomId)\r\n .pipe(\r\n switchMap((packages: Package[]) => {\r\n return this.gerPackageExtraDetails(packages);\r\n }),\r\n tap((res) => {\r\n })\r\n )\r\n }\r\n\r\n getUserPackages(userId: string) {\r\n let endpoint = this.authService.getUserRole() === UserRole.TEACHER ? \"/Package/GetTeacherPackages?TeacherId=\" + userId : \"/Package/GetStudentPackages?StudentId=\" + userId;\r\n return this.http.get(BACKEND_URL + endpoint)\r\n .pipe(\r\n switchMap((packages: Package[]) => {\r\n return this.gerPackageExtraDetails(packages);\r\n })\r\n )\r\n }\r\n // new endpoint\r\n getAllUserPackages(userId: string) {\r\n let endpoint = this.authService.getUserRole() === UserRole.TEACHER ? \"GetAllTeacherPackages?userId=\" + userId : \"GetStudentPackages?StudentId=\" + userId;\r\n return this.http.get(BACKEND_LMS_URL + endpoint)\r\n // .pipe(\r\n // switchMap((packages: Package[]) => {\r\n // return this.gerPackageExtraDetails(packages);\r\n // })\r\n // )\r\n }\r\n\r\n getPackageExtentions(packageId: string) {\r\n return this.http.get(BACKEND_URL + `/Package/GetPackageExtentions?packageId=${packageId}`)\r\n }\r\n\r\n getPackageLessonLevels(packageId: string) {\r\n return this.http.get(BACKEND_URL + `/Package/GetPackageLessonsLevels?packageId=${packageId}`)\r\n }\r\n\r\n getClassroomActivePackage(classroomId: string) {\r\n return this.http.get(BACKEND_URL + \"/Package/GetClassroomActivePackage?ClassroomId=\" + classroomId)\r\n }\r\n\r\n getPackagesToBuy() {\r\n return this.http.get(BACKEND_URL + \"/Package/PackagesToBuy\")\r\n }\r\n // new endpoint\r\n getUpdatedPackagesToBuy(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"PackagesToBuy\", req)\r\n }\r\n\r\n getSplitPackagesToBuy(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"SplitPackagesToBuy\", req)\r\n }\r\n\r\n convertPackageDates(pack: Package) {\r\n return {\r\n stratedAt: new Date(pack.stratedAt),\r\n purchasedAt: new Date(pack.purchasedAt),\r\n expiresOn: new Date(pack.expiresOn)\r\n }\r\n }\r\n\r\n findLessonPackageById(packages: Package[], lessonPackageId: string): Package | undefined {\r\n return packages.find((pckage: Package) => pckage.id === lessonPackageId);\r\n }\r\n\r\n public getPackageExtras(packageId: string) {\r\n return forkJoin(\r\n this.getPackageExtentions(packageId),\r\n this.getPackageLessonLevels(packageId)\r\n )\r\n }\r\n\r\n gerPackageExtraDetails(packages: Package[]) {\r\n if (packages.length == 0) {\r\n return []\r\n }\r\n return forkJoin(packages.map((pack: Package) => {\r\n\r\n let convertedDates = this.convertPackageDates(pack)\r\n pack.stratedAt = convertedDates.stratedAt\r\n pack.purchasedAt = convertedDates.purchasedAt\r\n pack.expiresOn = convertedDates.expiresOn\r\n return this.getPackageExtras(pack.id).pipe(\r\n map(x => {\r\n for (let extension of x[0]) {\r\n extension.fromDate = new Date(extension.fromDate);\r\n extension.toDate = new Date(extension.toDate);\r\n }\r\n for (let lessonLevel of x[1]) {\r\n lessonLevel.lessonsStarted = new Date(lessonLevel.lessonsStarted);\r\n lessonLevel.lessonsEnded = new Date(lessonLevel.lessonsEnded);\r\n }\r\n let packageWithExtras: Package = ({ ...pack, ...{ extensions: x[0], lessons_level: x[1] } });\r\n return packageWithExtras;\r\n }))\r\n }))\r\n }\r\n\r\n requestTrial(req: any) {\r\n return this.http.post(BACKEND_URL + \"/Package/RequestTrial\", req)\r\n }\r\n\r\n requestbuyPackage(req: any) {\r\n return this.http.post(BACKEND_URL + \"/Package/BuyPackage\", req)\r\n }\r\n\r\n upgradePackage(packageId: any, newLevel: string) {\r\n return this.http.post(BACKEND_URL + \"/Package/UpgradePackage?packageId=\" + packageId + \"&newLevel=\" + newLevel, {})\r\n }\r\n\r\n getExtentionOptions(): Observable {\r\n return this.http.get(BACKEND_URL + \"/Package/GetExtentionOptions\");\r\n }\r\n\r\n buyExtension(req: any) {\r\n return this.http.post(BACKEND_URL + \"/Package/BuyExtension\", req);\r\n }\r\n\r\n createRevolutOrder(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"CreateRevolutOrder\", req);\r\n }\r\n\r\n createSplitRevolutOrder(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"CreateSplitRevolutOrder\", req);\r\n }\r\n\r\n completeOrder(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"CompleteOrder\", req);\r\n }\r\n\r\n completeSplitOrder(req: any) {\r\n return this.http.post(BACKEND_LMS_URL + \"CompleteSplitOrder\", req);\r\n }\r\n\r\n addPurchaseEvent(purchaseData: any) {\r\n const url = 'https://api.leaddyno.com/v1/purchases';\r\n const headers = { 'Content-Type': 'application/json', 'X-Bypass-Error-Interceptor': 'true' };\r\n\r\n return this.http.post(url, purchaseData, { headers });\r\n }\r\n\r\n leadDynoGetAffiliateEvent(data?: any) {\r\n const url = 'https://api.leaddyno.com/v1/affiliates';\r\n const headers = {\r\n 'X-Bypass-Error-Interceptor': 'true',\r\n \"Content-Type\": \"application/json\",\r\n key: \"165d71696287208d956a45cffb6d8112b66f0e81\",\r\n affiliate_code: \"CMSSLN\",\r\n };\r\n\r\n return this.http.get(url, { headers });\r\n }\r\n\r\n getLeadDynoAffiliateByAffiliateCode(affiliateCode: string, privateKey: string): Observable {\r\n const url = 'https://api.leaddyno.com/v1/affiliates/by_affiliate_code';\r\n\r\n // Constructing request headers\r\n const headers = new HttpHeaders({\r\n 'X-Bypass-Error-Interceptor': 'true',\r\n 'Content-Type': 'application/json',\r\n 'key': privateKey\r\n });\r\n\r\n // Constructing request parameters\r\n const params = {\r\n 'affiliate_code': affiliateCode\r\n };\r\n\r\n console.log(url, headers, params);\r\n\r\n // Making the HTTP GET request\r\n return this.http.get(url, { headers, params });\r\n }\r\n\r\n /**\r\n * checks if a package can be frozen based on its state and type.\r\n * The function iterates through an array of packages and checks if any package is in the ongoing or purchased state and has a type of premium or flex.\r\n * If such a package is found, the enableFreeze variable is set to true.\r\n * The function returns the value of enableFreeze, indicating whether any package can be frozen.\r\n */\r\n checkIfPackageCanBeFrozen(packages: Package[]): boolean {\r\n let enableFreeze = false;\r\n\r\n for (const pack of packages) {\r\n if ((pack.state.toLowerCase() === PackageState.ONGOING.toLowerCase() || pack.state.toLowerCase() === PackageState.PURCHASED.toLowerCase())\r\n && (pack.type === PackageType.PREMIUM || pack.type === PackageType.FLEX)) {\r\n enableFreeze = true;;\r\n }\r\n }\r\n\r\n return enableFreeze;\r\n }\r\n\r\n\r\n userIsOnFlexOrPremiumPackage(packages: Package[]): boolean {\r\n // Check if any package is of type \"Flex\" or \"Premium\"\r\n return packages.some((iterPackage: Package) => (iterPackage.type === PackageType.FLEX || iterPackage.type === PackageType.PREMIUM) &&\r\n (iterPackage.state.toLowerCase() === PackageState.ONGOING.toLowerCase() || iterPackage.state.toLowerCase() === PackageState.PURCHASED.toLowerCase()));\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { RequestTrialRequest, StudentTrialStatus, ContactUsRequest } from \"../models/student.model\";\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StudentTrialService {\r\n isTrialRequested: boolean;\r\n private studentStatusSubject = new BehaviorSubject(StudentTrialStatus.NONE);\r\n studentStatus$ = this.studentStatusSubject.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n ) {\r\n // load the trial request status from sessionStorage\r\n this.isTrialRequested = JSON.parse(localStorage.getItem('isTrialRequested') as string) || false;\r\n }\r\n\r\n setTrialRequested(value: boolean) {\r\n // set the trial request status and save to localStorage\r\n this.isTrialRequested = value;\r\n localStorage.setItem('isTrialRequested', JSON.stringify(this.isTrialRequested));\r\n // localStorage.setItem('isTrialRequested', JSON.stringify(value));\r\n }\r\n\r\n hasTrialRequested() {\r\n return localStorage.getItem('isTrialRequested');\r\n }\r\n\r\n updateStudentTrialStatus(status: StudentTrialStatus) {\r\n this.studentStatusSubject.next(status);\r\n }\r\n\r\n public getStudentHasTrialRequest(): Observable {\r\n return this.http.get(BACKEND_LMS_URL + 'StudentHasTrialRequest');\r\n }\r\n\r\n public getStudentTrialStatus(headers?: HttpHeaders): Observable {\r\n return this.http.get(BACKEND_LMS_URL + 'GetStatusTrial', { headers, responseType: 'text' });\r\n }\r\n \r\n public postRequestTrial(params: RequestTrialRequest): Observable {\r\n return this.http.post(BACKEND_LMS_URL + 'RequestTrial', params);\r\n }\r\n\r\n public postRequestTrialInner(params: RequestTrialRequest): Observable {\r\n return this.http.post(BACKEND_LMS_URL + 'RequestFreeTrialInner', params);\r\n }\r\n \r\n public postContactUs(params: ContactUsRequest): Observable {\r\n return this.http.post(BACKEND_LMS_URL + 'ContactUs', params);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ToastMessage } from '../models/general.model';\r\nimport { AvailabilityTime, LanguageLevel, Teacher, TeacherApplicationReview, TeacherApplicationStepsStatus, TeacherStatus, TeacherStatusResponse } from '../models/teacher.model';\r\nimport { UserAvailability, UserAvailabilityType } from '../models/user.model';\r\nconst BACKEND_URL = environment.apiUrl + \"/Teacher/\";\r\nconst BACKEND_LMS_TEACHER_URL = environment.apiUrl + \"/LMS/\";\r\nconst BACKEND_LMS_URL = environment.apiUrl + \"/LMS/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TeacherApplicationService {\r\n\r\n private step$: BehaviorSubject = new BehaviorSubject(\"Create your account\");\r\n public readonly step: Observable = this.step$.asObservable();\r\n\r\n private currentStepIndex$: BehaviorSubject = new BehaviorSubject(0);\r\n public readonly currentStepIndex: Observable = this.currentStepIndex$.asObservable();\r\n\r\n private submitOnMenuClickListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly submitOnMenuClickListener: Observable = this.submitOnMenuClickListener$.asObservable();\r\n\r\n private updateAvailabilityListener$: BehaviorSubject = new BehaviorSubject(true);\r\n public readonly updateAvailabilityListener: Observable = this.updateAvailabilityListener$.asObservable();\r\n\r\n private updateAvailabilityForSchedulerListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly updateAvailabilityForSchedulerListener: Observable = this.updateAvailabilityForSchedulerListener$.asObservable();\r\n\r\n private showWithdrawConfirmationDialog$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly showWithdrawConfirmationDialog: Observable = this.showWithdrawConfirmationDialog$.asObservable();\r\n\r\n private showApplicationProgressMenu$: BehaviorSubject = new BehaviorSubject(true);\r\n public readonly showApplicationProgressMenu: Observable = this.showApplicationProgressMenu$.asObservable();\r\n\r\n private shouldRetrieveTeacherStatus$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly shouldRetrieveTeacherStatus: Observable = this.shouldRetrieveTeacherStatus$.asObservable();\r\n\r\n private compareStepvalues$: BehaviorSubject<{}> = new BehaviorSubject<{}>({});\r\n public readonly compareStepvalues: Observable<{}> = this.compareStepvalues$.asObservable();\r\n\r\n // private stepsValid$: BehaviorSubject = new BehaviorSubject([false, false, false, false, false, false, false,]);\r\n // public readonly stepsValid: Observable = this.stepsValid$.asObservable();\r\n\r\n public stepsValid: boolean[] = [false, false, false, false, false, true,];\r\n public stepsStatuses: TeacherApplicationStepsStatus = {\r\n step1: false,\r\n step2: false,\r\n step3: false,\r\n step4: false,\r\n step5: false,\r\n step6: false\r\n }\r\n\r\n public dummyTeacher: Teacher = {\r\n id: \"\",\r\n // username: \"\",\r\n preffered_name: \"\",\r\n // password: \"\",\r\n first_name: \"\",\r\n last_name: \"\",\r\n city: \"\",\r\n country: {\r\n name: \"\", flagUrl: \"\"\r\n },\r\n country_origin: {\r\n name: \"\", flagUrl: \"\"\r\n },\r\n country_residency: {\r\n name: \"\", flagUrl: \"\"\r\n },\r\n native_language: \"\",\r\n native_languages: [],\r\n birth: '' + new Date(),\r\n timezone: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n skype: \"\",\r\n education: [],\r\n language_speak: [],\r\n language_teach: [],\r\n teaching_methods: \"\",\r\n years_experience: 0,\r\n cv: \"\",\r\n photo: \"\",\r\n hours_per_week: \"\",\r\n status: \"\",\r\n availability: undefined,\r\n date_applied: new Date()\r\n };\r\n\r\n public teacher: Teacher = {\r\n id: \"\",\r\n // username: \"ibekiaris\",\r\n preffered_name: \"iraklis\",\r\n // password: \"e\",\r\n first_name: \"iraklis\",\r\n last_name: \"bekiaris\",\r\n city: \"serres\",\r\n country: {\r\n name: \"Wales\", flagUrl: \"\"\r\n },\r\n country_origin: {\r\n name: \"\", flagUrl: \"\"\r\n },\r\n country_residency: {\r\n name: \"\", flagUrl: \"\"\r\n },\r\n native_language: \"Afar\",\r\n native_languages: [],\r\n birth: '' + new Date(),\r\n timezone: \"(UTC-12:00) International Date Line West\",\r\n email: \"ibekiaris@outlook.com\",\r\n phone: \"00306988582965\",\r\n skype: \"iraklis.bekiaris\",\r\n education: [\r\n {\r\n name: \"Degree 1\",\r\n institute: \"inst\",\r\n fileUploads: [{name: 'path1'}],\r\n }\r\n ],\r\n language_speak: [\r\n {\r\n language: {code: 'el', nativeName: 'greek', name: \"greek\"},\r\n level: \"C1\"\r\n },\r\n {\r\n language: {code: 'el', nativeName: 'greek', name: \"greek\"},\r\n level: \"C1\"\r\n }\r\n ],\r\n language_teach: [\r\n {\r\n language: {code: 'el', nativeName: 'greek', name: \"greek\"},\r\n level: \"C1\"\r\n },\r\n {\r\n language: {code: 'el', nativeName: 'greek', name: \"greek\"},\r\n level: \"C1\"\r\n }\r\n ],\r\n teaching_methods: \"On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain. These cases are perfectly simple and easy to distinguish. In a free hour, when our power of choice is untrammelled and when nothing prevents our being able to do what we like best, every pleasure is to be welcomed and every pain avoided. But in certain circumstances and owing to the claims of duty or the obligations of business it will frequently occur that pleasures have to be repudiated and annoyances accepted. The wise man therefore always holds in thes\",\r\n years_experience: 6,\r\n cv: \"CV\",\r\n photo: \"Photo\",\r\n hours_per_week: \"5-10\",\r\n status: \"Pending\",\r\n availability: {\r\n id: \"availability_2\",\r\n type: UserAvailabilityType.AVAILABLE,\r\n mon: [{ from: \"10:30\", to: \"14:00\" }, { from: \"15:00\", to: \"18:00\" }, { from: \"19:00\", to: \"20:30\" }],\r\n tue: [{ from: \"10:30\", to: \"14:00\" }, { from: \"15:00\", to: \"18:00\" }, { from: \"19:00\", to: \"20:30\" }],\r\n wed: [{ from: \"10:00\", to: \"18:00\" }],\r\n thu: [{ from: \"12:30\", to: \"14:30\" }, { from: \"16:00\", to: \"20:00\" }],\r\n fri: [{ from: \"10:30\", to: \"14:00\" }, { from: \"15:00\", to: \"18:00\" }],\r\n sat: [{ from: \"10:30\", to: \"14:00\" }],\r\n sun: [],\r\n },\r\n date_applied: new Date()\r\n };\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private router: Router\r\n ) { }\r\n\r\n public setStep(section: string) {\r\n let step = '';\r\n switch (section) {\r\n case 'info':\r\n step = 'Create your account';\r\n break;\r\n case 'contact':\r\n step = 'Enter your contact info';\r\n break;\r\n case 'education':\r\n step = 'Enter your educational skills';\r\n break;\r\n case 'experience':\r\n step = 'Enter your teaching experience & skills';\r\n break;\r\n case 'resume':\r\n step = 'Upload your CV & Photo';\r\n break;\r\n case 'availability':\r\n step = 'Add availability';\r\n break;\r\n case 'review':\r\n step = 'Review & Submit';\r\n break;\r\n case 'status':\r\n step = 'status';\r\n break;\r\n default:\r\n step = '';\r\n }\r\n this.step$.next(step);\r\n }\r\n \r\n public setCurrentStepIndex(index: number) {\r\n this.currentStepIndex$.next(index);\r\n }\r\n\r\n public setStepValid(index: number, form: UntypedFormGroup, id: string) {\r\n if (!form.invalid) {\r\n this.stepsValid[index] = true;\r\n } else {\r\n this.stepsValid[index] = false;\r\n }\r\n }\r\n\r\n public setStepValidWithBoolean(index: number, isNotValid: boolean, id: string) {\r\n if (!isNotValid) {\r\n this.stepsValid[index] = true;\r\n // document.getElementById(id)!.querySelector('img')!.style.display = 'block';;\r\n // document.getElementById(id)!.classList.remove('inactive-item');\r\n } else {\r\n this.stepsValid[index] = false;\r\n // document.getElementById(id)!.querySelector('img')!.style.display = 'none';;\r\n // document.getElementById(id)!.classList.add('inactive-item');\r\n }\r\n }\r\n\r\n public setSubmitOnMenuClickListener(submitted: boolean) {\r\n this.submitOnMenuClickListener$.next(submitted);\r\n }\r\n\r\n public setUpdateAvailabilityClickListener(update: boolean) {\r\n this.updateAvailabilityListener$.next(update);\r\n }\r\n\r\n public setUpdateAvailabilityForSchedulerClickListener(update: boolean) {\r\n this.updateAvailabilityForSchedulerListener$.next(update);\r\n }\r\n\r\n public setShowWithdrawConfirmationDialog(update: boolean) {\r\n this.showWithdrawConfirmationDialog$.next(update);\r\n }\r\n\r\n public setShowApplicationProgressMenu(update: boolean) {\r\n this.showApplicationProgressMenu$.next(update);\r\n }\r\n\r\n public setShouldRetrieveTeacherStatus(update: boolean) {\r\n this.shouldRetrieveTeacherStatus$.next(update);\r\n }\r\n\r\n public setCompareStepvalues(update: {}) {\r\n this.compareStepvalues$.next(update);\r\n }\r\n\r\n public setStepStatuses(stepsStatuses: TeacherApplicationStepsStatus) {\r\n this.stepsStatuses = stepsStatuses;\r\n }\r\n \r\n public registerTeacher(teacher: {}): void {\r\n this.http.post(BACKEND_LMS_TEACHER_URL + \"SubmitTeacherApplication\", teacher)\r\n .subscribe((res) => {\r\n console.log(\"[+] Success Registration: \");\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n }, (error) => {\r\n console.error(error);\r\n });\r\n } \r\n\r\n public updateAvailability(availability: UserAvailability): Observable {\r\n return this.http.post(BACKEND_URL + \"UpdateTeacherAvailability\", availability)\r\n }\r\n\r\n public updateAPITeacherApplicationStep1(form: {}): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'TeacherApplcationSaveStep1', form);\r\n }\r\n\r\n public getTeacherApplicationStep1(teacherId: string): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep1?teacherId=' + teacherId);\r\n }\r\n\r\n public getTeacherApplicationStep2(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep2');\r\n }\r\n\r\n public updateTeacherApplicationStep2(form: {}): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'TeacherApplcationSaveStep2', form);\r\n }\r\n\r\n public getTeacherApplicationStep3(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep3');\r\n }\r\n\r\n public updateAPITeacherApplicationStep3(form: {}): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'TeacherApplcationSaveStep3', form);\r\n }\r\n\r\n public getTeacherApplicationStep4(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep4') as Observable;\r\n }\r\n\r\n public updateAPITeacherApplicationStep4(form: {}): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'TeacherApplcationSaveStep4', form) as Observable;\r\n }\r\n\r\n public getTeacherApplicationStep5(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep5') as Observable;\r\n }\r\n\r\n public updateAPITeacherApplicationStep5(form: {}): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'TeacherApplcationSaveStep5', form) as Observable;\r\n }\r\n\r\n public getTeacherApplicationStep6(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetTeacherApplicationStep6') as Observable;\r\n }\r\n\r\n public getTeacherApplicationStepsStatus(): Observable {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetApplicationStepsStatus') as Observable;\r\n }\r\n\r\n public getLingoTeachingLanguages(): Observable<[]> {\r\n return this.http.get(BACKEND_LMS_TEACHER_URL + 'GetLingoTeachingLanguages') as Observable<[]>;\r\n }\r\n\r\n public deleteTeacherApplicationFiles(filename: string): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'DeleteTeacherApplicationFiles?fileName=' + filename, {}) as Observable;\r\n }\r\n\r\n public withdrawnTeacherApplication(): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'WithdrawnTeacherApplication', {}) as Observable;\r\n }\r\n\r\n public restartTeacherApplication(): Observable {\r\n return this.http.post(BACKEND_LMS_TEACHER_URL + 'RestartTeacherApplication', {}) as Observable;\r\n }\r\n\r\n public updateTeacherAvailability(params: {}): Observable {\r\n return this.http.post(BACKEND_LMS_URL + 'UpdateTeacherAvailability', params) as Observable;\r\n }\r\n\r\n public getStepsTitle(stepIndex: number): string {\r\n const stepTitles = [\r\n 'Create your account',\r\n 'Enter your education info',\r\n 'Enter your teaching experience & skills',\r\n 'Upload your Resume',\r\n 'Add Availability',\r\n 'General Info'\r\n ];\r\n \r\n return stepTitles[stepIndex] || '';\r\n }\r\n\r\n public getTeacherStatusNavigationUrl(status: TeacherStatusResponse) {\r\n let navigateUrl = '/dashboard';\r\n\r\n switch (status.status.toLowerCase()) {\r\n case TeacherStatus.CONSIDERATION.toLowerCase():\r\n case TeacherStatus.NO_LONGER_CONSIDERED.toLowerCase():\r\n case TeacherStatus.REJECTED.toLowerCase():\r\n case TeacherStatus.NEW.toLowerCase():\r\n case TeacherStatus.RECEIVED.toLowerCase():\r\n case TeacherStatus.INCOMPLETE.toLowerCase():\r\n case TeacherStatus.WITHDRAWN.toLowerCase():\r\n navigateUrl = '/teacher/status';\r\n break;\r\n }\r\n\r\n return navigateUrl;\r\n }\r\n\r\n public isTeacherStatusApproved(status: string) {\r\n if (status.toLowerCase() === TeacherStatus.APPROVED.toLowerCase()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport { ToastMessage } from '../models/general.model';\r\n\r\n@Injectable()\r\nexport class ToastService implements OnDestroy {\r\n\r\n private subs = new SubSink();\r\n private showToastmessage$: BehaviorSubject = new BehaviorSubject({} as ToastMessage);\r\n public readonly showToastmessage: Observable = this.showToastmessage$.asObservable();\r\n\r\n constructor() {\r\n }\r\n\r\n public setShowToastmessage(toastObject: ToastMessage) {\r\n this.showToastmessage$.next(toastObject);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { User, UserAvailability, UserAvailabilityOff, UserAvailabilityType, UserStatus } from '../models/user.model';\r\nimport { ConfirmationService } from 'primeng/api';\r\nconst BACKEND_URL = environment.apiUrl + \"/User/\";\r\nconst BACKEND_URL_LMS = environment.apiUrl + \"/LMS/\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService {\r\n\r\n private update$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly update: Observable = this.update$.asObservable();\r\n\r\n private updateProfile$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly updateProfile: Observable = this.updateProfile$.asObservable();\r\n\r\n private uploadFiles$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly uploadFiles: Observable = this.uploadFiles$.asObservable();\r\n\r\n private newFileUpload$: BehaviorSubject<{}> = new BehaviorSubject<{}>({});\r\n public readonly newFileUpload: Observable<{}> = this.newFileUpload$.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n public updateUserListener() {\r\n this.update$.next(true);\r\n }\r\n\r\n public updateUserProfile(user: User) {\r\n this.update$.next(true);\r\n return this.http.post(BACKEND_URL_LMS + \"UpdateUserProfile\", user)\r\n }\r\n\r\n public setUpdateProfile(update: boolean) {\r\n this.updateProfile$.next(update);\r\n }\r\n\r\n public setUploadFiles(update: boolean) {\r\n this.uploadFiles$.next(update);\r\n }\r\n\r\n public setNewFileUpload(update: {}) {\r\n this.newFileUpload$.next(update);\r\n }\r\n\r\n public setUserPassword(user: {}) {\r\n return this.http.post(BACKEND_URL_LMS + \"SetPassword\", user);\r\n }\r\n\r\n public getUserPhoto(user: User) {\r\n let photo = (user?.avatarUrl && user?.avatarUrl !== 'Not Given') ? environment.apiUrl + \"/\" + user?.avatarUrl : \"/assets/images/default-user-avatar.png\";\r\n return photo;\r\n }\r\n\r\n public getUserAvatar(user: User) {\r\n let photo = (user?.photo && user?.photo !== 'Not Given') ? environment.apiUrl + \"/\" + user?.photo : \"/assets/images/avatar.svg\";\r\n return photo;\r\n }\r\n\r\n public updateAvatarUrl(newAvatarUrl: string): void {\r\n // Step 1: Retrieve the existing value from localStorage\r\n const existingValue = localStorage.getItem('user');\r\n\r\n if (existingValue) {\r\n // Step 2: Modify the retrieved value\r\n const parsedValue = JSON.parse(existingValue);\r\n parsedValue.avatarUrl = newAvatarUrl;\r\n\r\n // Step 3: Store the updated value back into localStorage\r\n localStorage.setItem('user', JSON.stringify(parsedValue));\r\n }\r\n }\r\n\r\n public getUserAvailability(userId: string) {\r\n return this.http.get(BACKEND_URL_LMS + \"GetUserAvailability?userId=\" + userId)\r\n .pipe(\r\n map((res: any) => {\r\n Object.keys((res)).forEach((key) => {\r\n if (res[key] == null)\r\n res[key] = []\r\n })\r\n return res\r\n })\r\n )\r\n }\r\n\r\n public getUserDaysOff(userId: string) {\r\n return this.http.get(environment.apiUrl + \"/Teacher/GetUserDaysOff?userId=\" + userId)\r\n .pipe(\r\n map((res: any) => {\r\n for (let dayOff of res) {\r\n dayOff.period.from = new Date(new Date(dayOff.period.from).setHours(0, 0));\r\n dayOff.period.to = new Date(new Date(dayOff.period.to).setHours(0, 0));\r\n }\r\n return res\r\n })\r\n )\r\n }\r\n\r\n public getUserAbsences(userId: string) {\r\n console.log(userId)\r\n return this.http.get(environment.apiUrl + \"/Lesson/GetUserAbsences?userId=\" + userId)\r\n }\r\n\r\n public getUserHasPayment() {\r\n return this.http.get<{}>(BACKEND_URL_LMS + 'StudentHasPayment');\r\n }\r\n\r\n public getUserById(userId: string): Observable {\r\n return this.http.get<{}>(BACKEND_URL + 'GetUserById?userId=' + userId) as Observable;\r\n }\r\n\r\n calculateAge(birthday: Date) { // birthday is a date\r\n var ageDifMs = Date.now() - birthday.getTime();\r\n var ageDate = new Date(ageDifMs); // miliseconds from epoch\r\n return Math.abs(ageDate.getUTCFullYear() - 1970);\r\n }\r\n\r\n getEmptyAvailability() {\r\n return {\r\n id: \"availability_2\",\r\n type: UserAvailabilityType.AVAILABLE,\r\n mon: [],\r\n tue: [],\r\n wed: [],\r\n thu: [],\r\n fri: [],\r\n sat: [],\r\n sun: [],\r\n }\r\n }\r\n\r\n /**\r\n * Checks if there are any unsaved changes and prompts the user with a confirmation message if there are.\r\n * @param {function} hasUnsavedChanges - A function that returns a boolean value indicating whether there are unsaved changes.\r\n * @param {object} confirmationService - An object that provides methods for displaying confirmation messages to the user.\r\n * @returns {Observable|boolean} - An Observable that emits a boolean value indicating whether the user accepts or rejects the confirmation message, or a boolean value of true if there are no unsaved changes.\r\n */\r\n comfirmDiscardUnsavedChanges(hasUnsavedChanges: () => boolean, confirmationService: ConfirmationService): Observable | boolean {\r\n if (hasUnsavedChanges()) {\r\n return new Observable((observer: any) => {\r\n confirmationService.confirm({\r\n header: '',\r\n key: 'stepLeaveConfirmation',\r\n message: 'Unsaved changes will be discarded.
Do you still wish to navigate away from this page?.',\r\n accept: () => {\r\n observer.next(true);\r\n observer.complete();\r\n },\r\n reject: () => {\r\n observer.next(false);\r\n observer.complete();\r\n }\r\n });\r\n });\r\n } else {\r\n return (true);\r\n }\r\n }\r\n\r\n generateReferralCodeFromUser(user: any): string {\r\n const firstNamePart = user.firstName.substring(0, 3).toLowerCase().replace(/\\s+/g, '');\r\n const lastNamePart = user.lastName.toLowerCase().replace(/\\s+/g, '');\r\n return `${firstNamePart}.${lastNamePart}.ref`;\r\n }\r\n \r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class WindowService {\r\n\r\n constructor() {\r\n }\r\n\r\n get windowRef() {\r\n return window;\r\n }\r\n\r\n}","import {\r\n transition,\r\n trigger,\r\n style,\r\n animate,\r\n} from '@angular/animations';\r\nexport const slideUpDownAnimation = trigger('slideUpDown', [\r\n transition(':enter', [\r\n style({ transform: 'translateY(-100%)' }),\r\n animate('200ms ease-in', style({ transform: 'translateY(0%)' }))\r\n ]),\r\n transition(':leave', [\r\n animate('200ms ease-in', style({ transform: 'translateY(-100%)' }))\r\n ])\r\n]);\r\nexport const slideInOut = trigger('slideInOut', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('300ms', style({ opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n animate('300ms', style({ opacity: 0 }))\r\n ])\r\n]);\r\n\r\nexport const slideInOut2 =\r\n trigger('slideInOut2', [\r\n transition(':enter', [\r\n style({ transform: 'translateY(-100%)' }),\r\n animate('200ms ease-in', style({ transform: 'translateY(0%)' }))\r\n ]),\r\n transition(':leave', [\r\n animate('200ms ease-in', style({ transform: 'translateY(-100%)' }))\r\n ])\r\n ])","import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { take } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss']\r\n})\r\nexport class ConfirmComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild('confirmCircleLottie', { static: true }) firstStep: ElementRef = {} as ElementRef;\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private authService: AuthService,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addLottiePlayerToStep(this.firstStep);\r\n const params = this.activatedRoute.snapshot.queryParams;\r\n this.authService.confirmUser(params.userId, params.code)\r\n // this.activatedRoute.queryParams.pipe(take(1)).subscribe((params: Params) => {\r\n \r\n // });\r\n }\r\n\r\n private addLottiePlayerToStep(step: ElementRef): void {\r\n const lottiePlayer = `
\r\n \r\n
`;\r\n step.nativeElement.innerHTML = lottiePlayer;\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n Please wait a moment while we confirm your account...\r\n
\r\n
","
\r\n\r\n \"security\"\r\n
\r\n\r\n
\r\n
Password *
\r\n \r\n \r\n \r\n \r\n
Password must contain at least one capital letter, one\r\n special case (e.g. @), and one number.
\r\n\r\n
\r\n\r\n
\r\n
Confirm Password
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
Passwords do not much
\r\n
\r\n \r\n \r\n
\r\n
","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthComponent } from './auth.component';\r\nimport { ConfirmComponent } from './confirm/confirm.component';\r\nimport { ForgotComponent } from './forgot/forgot.component';\r\nimport { LoginComponent } from './login/login.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n\r\n path: '',\r\n\r\n loadComponent: () =>\r\n import(\"../auth/auth.component\").then(\r\n (m) => m.AuthComponent\r\n ),\r\n children: [\r\n {\r\n path: 'login',\r\n loadComponent: () =>\r\n import(\"../auth/login/login.component\").then(\r\n (m) => m.LoginComponent\r\n ),\r\n },\r\n {\r\n path: 'register',\r\n loadComponent: () =>\r\n import(\"../auth/login/login.component\").then(\r\n (m) => m.LoginComponent\r\n ),\r\n },\r\n { path: 'confirm', component: ConfirmComponent },\r\n { path: 'forgot', component: ForgotComponent },\r\n { path: \"**\", redirectTo: \"/auth/login\", pathMatch: \"full\" },\r\n // {\r\n // path: 'settings',\r\n // component: SettingsComponent,\r\n // },\r\n // {\r\n // path: 'package-history',\r\n // component: PackageHistoryComponent,\r\n // },\r\n // {\r\n // path: 'notifications',\r\n // component: NotificationsProfileComponent,\r\n // },\r\n // {\r\n // path: 'rate-experience',\r\n // component: RateExperienceComponent,\r\n // },\r\n ]\r\n },\r\n\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuthRoutingModule { }","import { Component, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { take } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\n\r\ntype TextFieldType = \"email\" | \"password\" | \"confirm\";\r\n@Component({\r\n selector: 'app-forgot',\r\n templateUrl: './forgot.component.html',\r\n styleUrls: ['./forgot.component.scss']\r\n})\r\nexport class ForgotComponent implements OnInit {\r\n confirmError: boolean = false;\r\n resetEmail: string = \"\";\r\n resetCode: string = \"\";\r\n ismyTextFieldType: Record = {\r\n email: false,\r\n password: false,\r\n confirm: false,\r\n };\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private authService: AuthService,\r\n private router: Router,\r\n private toastService: ToastService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.activatedRoute.queryParams.pipe(take(1)).subscribe((params: Params) => {\r\n this.resetEmail = params.email;\r\n this.resetCode = params.code\r\n });\r\n }\r\n\r\n onSignup(form: NgForm) {\r\n this.confirmError = this.confirmPassword(form.value.password, form.value.confirm);\r\n if (form.invalid || this.confirmError) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Form is invalid. Password must contain at least one capital letter, one special case (e.g. @), and one number.'\r\n });\r\n return;\r\n }\r\n this.authService.confirmForgot(this.resetEmail, this.resetCode, form.value.password)\r\n .subscribe(async response => {\r\n \r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'The password reset was successful.'\r\n });\r\n this.router.navigateByUrl('/auth', { replaceUrl: true })\r\n\r\n })\r\n }\r\n\r\n confirmPassword(password: string, confirm: string) {\r\n return password !== confirm\r\n }\r\n\r\n togglemyPasswordFieldType(key: TextFieldType): void {\r\n this.ismyTextFieldType[key] = !this.ismyTextFieldType[key];\r\n }\r\n\r\n getKeyValueFieldType(key: TextFieldType): boolean {\r\n return this.ismyTextFieldType[key];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthRoutingModule } from './auth-routing.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { ConfirmComponent } from './confirm/confirm.component';\r\n\r\nimport { ForgotComponent } from './forgot/forgot.component';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport {CheckboxModule} from 'primeng/checkbox';\r\nimport { LoaderComponent } from 'src/app/shared/loader/loader.component';\r\nimport { RecaptchaModule } from 'ng-recaptcha';\r\n\r\n@NgModule({\r\n declarations: [\r\n ConfirmComponent,\r\n ForgotComponent,\r\n ],\r\n imports: [\r\n LoaderComponent,\r\n CommonModule,\r\n FormsModule,\r\n AuthRoutingModule,\r\n MatProgressSpinnerModule,\r\n ButtonModule,\r\n CheckboxModule,\r\n RecaptchaModule,\r\n ],\r\n providers: [\r\n //TODO GOOGLE LOGIN\r\n\r\n // {\r\n // provide: HTTP_INTERCEPTORS,\r\n // useClass: ErrorHandlerService,\r\n // multi: true\r\n // },\r\n // {\r\n // provide: 'SocialAuthServiceConfig',\r\n // useValue: {\r\n // autoLogin: false,\r\n // providers: [\r\n // {\r\n // id: GoogleLoginProvider.PROVIDER_ID,\r\n // provider: new GoogleLoginProvider(\r\n // '883654869277-m2mlgsroh8vsmt0tg82lmo4cnt0cuqs3.apps.googleusercontent.com'\r\n // )\r\n // },\r\n // ],\r\n // } as SocialAuthServiceConfig\r\n // }\r\n ]\r\n})\r\nexport class AuthModule { }\r\n","@defer(on viewport) {\r\n\r\n\r\n\r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n}@placeholder {\r\nloading...\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, inject, Injector, signal } from '@angular/core';\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/dynamicdialog\";\r\nimport { ChatService } from \"src/app/core/services/chat.service\";\r\nimport { LibraryModule } from \"src/app/modules/library/library.module\";\r\nimport { SingleLibraryComponent } from \"src/app/modules/library/library/components/single-library/single-library.component\";\r\nimport { SharedModule } from \"src/app/shared/shared.module\";\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { LibraryService } from \"src/app/core/services/library.service\";\r\n\r\n@Component({\r\n selector: 'app-chat-upload-file-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SharedModule,\r\n LibraryModule,\r\n ],\r\n templateUrl: './chat-upload-file-dialog.component.html',\r\n styleUrl: './chat-upload-file-dialog.component.css',\r\n})\r\nexport class ChatUploadFileDialogComponent {\r\n chatService = inject(ChatService);\r\n libraryService = inject(LibraryService);\r\n dialogData: any = {};\r\n showUploadFile = false;\r\n checkedFilesToUpload = signal([] as any[]);\r\n private injector = inject(Injector);\r\n constructor(\r\n private ref: DynamicDialogRef,\r\n private config: DynamicDialogConfig,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.chatService.showUploadFile.set(true);\r\n this.dialogData = this.config.data.dialogData;\r\n console.log(this.dialogData);\r\n this.checkedFilesToUpload.set([]);\r\n\r\n toObservable(this.libraryService.checkedLibraryFiles, {\r\n injector: this.injector\r\n }).subscribe({\r\n next: (data) => {\r\n console.log(data);\r\n this.checkedFilesToUpload.set(data);\r\n }\r\n });\r\n }\r\n\r\n onSubmitFilesToUpload() {\r\n this.ref.close(this.checkedFilesToUpload());\r\n this.checkedFilesToUpload.set([]);\r\n this.ref.destroy();\r\n this.chatService.showUploadFile.set(false);\r\n }\r\n\r\n onDialogClose(data?: any) {\r\n alert(data);\r\n this.chatService.showUploadFile.set(false);\r\n this.libraryService.checkedLibraryFiles.set([]);\r\n this.checkedFilesToUpload.set([]);\r\n this.ref.close(this.ref);\r\n this.ref.destroy();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.chatService.showUploadFile.set(false);\r\n this.checkedFilesToUpload.set([]);\r\n this.ref.destroy();\r\n }\r\n\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \"Image\"\r\n \r\n \r\n \r\n \r\n {{libraryService.getFileName(msg?.content)}}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n {{getUserFirstName(msg?.senderId)}} -  \r\n {{msg?.timestamp?.seconds * 1000 | date: 'medium'}}\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, inject, input, Output, signal } from '@angular/core';\r\nimport { AuthService } from \"src/app/core/services/auth.service\";\r\nimport { LibraryService } from \"src/app/core/services/library.service\";\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { MenuModule } from \"primeng/menu\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { Message } from \"src/app/core/services/chat.service\";\r\n\r\n@Component({\r\n selector: 'app-chat-messages-display',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MenuModule,\r\n ButtonModule,\r\n ],\r\n templateUrl: './chat-messages-display.component.html',\r\n styleUrl: './chat-messages-display.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ChatMessagesDisplayComponent {\r\n libraryService = inject(LibraryService);\r\n authService = inject(AuthService);\r\n sanitizer = inject(DomSanitizer);\r\n messages = input([] as any[]);\r\n isBubbleMode = input(false);\r\n chatsList = input([] as any[]);\r\n @Output() deleteMessageSelected = new EventEmitter<[any, any]>();\r\n @Output() editMessageSelected = new EventEmitter<[any, any]>();\r\n clipboard = inject(Clipboard);\r\n user = this.authService.getLoggedInUser();\r\n selectedMessage: Message = {} as Message;\r\n selectedMessageIndex = 0;\r\n items: MenuItem[] | undefined = [\r\n {\r\n // label: 'Options',\r\n items: [\r\n {\r\n label: 'Edit',\r\n icon: 'pi pi-pencil',\r\n command: (event) => {\r\n console.log(this.messages().length);\r\n this.editMessageSelected.emit([this.selectedMessage, this.messages().length - 1 === this.selectedMessageIndex]);\r\n }\r\n },\r\n {\r\n label: 'Copy',\r\n icon: 'pi pi-copy',\r\n command: (event) => {\r\n const textContent = this.selectedMessage.content.replace(/<[^>]*>/g, '');\r\n\r\n this.clipboard.copy(textContent);\r\n }\r\n },\r\n {\r\n label: 'Delete',\r\n icon: 'pi pi-trash',\r\n command: (event) => {\r\n this.deleteMessageSelected.emit([this.selectedMessage, this.messages().length - 1 === this.selectedMessageIndex]);\r\n }\r\n }\r\n ]\r\n }\r\n ];\r\n filteredItems: MenuItem[] = [\r\n {\r\n // label: 'Options',\r\n items: []\r\n }\r\n ];\r\n\r\n ngOnInit() {\r\n\r\n }\r\n getUserFullNameAndInitials(aspUserId: string): any | null {\r\n for (let classroom of this.chatsList()) {\r\n // Check if the teacher matches the aspUserId\r\n if (classroom.teacher && classroom.teacher.aspUserId === aspUserId) {\r\n const fullName = classroom.teacher.firstName + ' ' + classroom.teacher.lastName;\r\n const initials = classroom.teacher.firstName.charAt(0) + classroom.teacher.lastName.charAt(0);\r\n return { fullName, initials };\r\n }\r\n\r\n // Check if any student matches the aspUserId\r\n for (let student of classroom.classroomStudents) {\r\n if (student.aspUserId === aspUserId) {\r\n const fullName = student.firstName + ' ' + student.lastName;\r\n const initials = student.firstName.charAt(0) + student.lastName.charAt(0);\r\n return { fullName, initials };\r\n }\r\n }\r\n }\r\n return null; // Return null if no match is found\r\n }\r\n\r\n getUserFirstName(aspUserId: string): string | null {\r\n for (let classroom of this.chatsList()) {\r\n // Check if the teacher matches the aspUserId\r\n if (classroom.teacher && classroom.teacher.aspUserId === aspUserId) {\r\n return classroom.teacher.firstName; // Return full firstName\r\n } else {\r\n for (let student of classroom.classroomStudents) {\r\n if (student.aspUserId === aspUserId) {\r\n return student.firstName; // Return full firstName\r\n }\r\n }\r\n }\r\n\r\n // Check if any student matches the aspUserId\r\n\r\n }\r\n return null; // Return null if no match is found\r\n }\r\n\r\n\r\n isImage(filePath: string): boolean {\r\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.tiff', '.ico', '.jfif', '.avif'];\r\n const fileExtension = filePath.split('.').pop()?.toLowerCase();\r\n return imageExtensions.includes(`.${fileExtension}`);\r\n }\r\n\r\n deleteMessage(msg: any) {\r\n this.deleteMessageSelected.emit(msg);\r\n }\r\n\r\n sanitizeContent(msg: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(msg);\r\n }\r\n\r\n shouldShowOptionsMenu(msg: any) {\r\n return msg?.senderId === this.user?.aspUserId && !(msg?.isFileFromLibrary || msg?.isUploadFile);\r\n }\r\n\r\n buildMenuItems(msg: any) {\r\n if ((msg?.isFileFromLibrary || msg?.isUploadFile)) {\r\n this.filteredItems![0].items = this.items![0].items!.filter(item => item.label !== 'Edit');\r\n return this.filteredItems;\r\n }\r\n return this.items;\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, ElementRef, HostListener, Inject, Injector, QueryList, Signal, ViewChild, ViewChildren, computed, inject, input, signal, viewChild } from '@angular/core';\r\nimport * as firebase from \"firebase/compat\";\r\nimport * as moment from \"moment\";\r\nimport { BehaviorSubject, Observable, distinct, filter, forkJoin, map, of, switchMap, take } from \"rxjs\";\r\nimport { Classroom } from \"src/app/core/models/classroom.model\";\r\nimport { ChatMessage, FireDBChat } from \"src/app/core/models/firebase-chat.model\";\r\nimport { AuthService } from \"src/app/core/services/auth.service\";\r\nimport { ChatService, ChatUserStatus, Message } from \"src/app/core/services/chat.service\";\r\nimport { ClassroomService } from \"src/app/core/services/classroom.service\";\r\nimport { UserService } from \"src/app/core/services/user.service\";\r\nimport { SubSink } from \"subsink\";\r\nimport { collection, addDoc, serverTimestamp, FieldValue } from 'firebase/firestore';\r\nimport { User } from \"src/app/core/models/user.model\";\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { GeneralService } from \"src/app/core/services/general.service\";\r\nimport { LibraryFile } from \"src/app/core/models/library.model\";\r\nimport { SharedModule } from \"src/app/shared/shared.module\";\r\nimport { DialogService, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { ChatUploadFileDialogComponent } from \"./components/chat-upload-file-dialog/chat-upload-file-dialog.component\";\r\nimport { LibraryService } from \"src/app/core/services/library.service\";\r\nimport { FileUploadModule, UploadEvent } from 'primeng/fileupload';\r\nimport { HttpHeaders, HttpEventType, HttpClient } from \"@angular/common/http\";\r\nimport { MyFile } from \"src/app/shared/upload-files/upload-files.component\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { ToastService } from \"src/app/core/services/toast.service\";\r\nimport { ChatMessagesDisplayComponent } from \"./components/chat-messages-display/chat-messages-display.component\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { SpeedDialModule } from 'primeng/speeddial';\r\nimport { Dialog } from \"primeng/dialog\";\r\nimport { toObservable } from \"@angular/core/rxjs-interop\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\nimport { TabViewModule } from \"primeng/tabview\";\r\n\r\ninterface LastMessage {\r\n lastMessageFromImage: string;\r\n lastMessage: string;\r\n lastMessageAt: { seconds: number };\r\n // add other properties if necessary\r\n}\r\n\r\ninterface LastMessagesState {\r\n [key: string]: LastMessage;\r\n}\r\n\r\nenum ChatType {\r\n CLASSROOM = \"classroom\",\r\n USER = \"user\",\r\n}\r\n\r\n@Component({\r\n selector: 'app-chat',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n SharedModule,\r\n FileUploadModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n SpeedDialModule,\r\n BadgeModule,\r\n TooltipModule,\r\n TabViewModule,\r\n ChatMessagesDisplayComponent,\r\n ],\r\n\r\n templateUrl: './chat.component.html',\r\n styleUrls: ['./chat.component.scss'],\r\n animations: [\r\n trigger('scaleToggle', [\r\n transition('shown <=> hidden', [animate('0.3s ease-in-out')]),\r\n ]),\r\n ],\r\n providers: [DialogService]\r\n})\r\nexport class ChatComponent {\r\n @ViewChild('autoResizeTextArea', { static: false }) autoResizeTextArea!: ElementRef;\r\n @ViewChild('textareaWrapper', { static: false }) textareaWrapper!: ElementRef;\r\n @ViewChild('editForbitDialog', { static: false }) editForbitDialog!: Dialog;\r\n\r\n private injector = inject(Injector);\r\n bubbleMode = input(false);\r\n private subs = new SubSink();\r\n term = signal('');\r\n tutorials?: any[];\r\n currentTutorial?: any;\r\n currentIndex = -1;\r\n title = '';\r\n chatService = inject(ChatService);\r\n libraryService = inject(LibraryService);\r\n authService = inject(AuthService);\r\n classroomService = inject(ClassroomService);\r\n userService = inject(UserService);\r\n generalService = inject(GeneralService);\r\n dialogService = inject(DialogService);\r\n toastService = inject(ToastService);\r\n http = inject(HttpClient);\r\n loading = false;\r\n files = [] as LibraryFile[];\r\n onlineUsers: ChatUserStatus[] = [];\r\n\r\n chatListsLoaded = signal(false);\r\n\r\n messageTimestamps: number[] = [];\r\n activeUser!: any;\r\n editMessageObj!: any;\r\n editMessageisLastMessage = false;\r\n editMessageMode = signal(false);\r\n messages = signal([] as Message[]);\r\n lastMessages = signal([] as any[]);\r\n private lastMessagesSubject = new BehaviorSubject([]);\r\n lastMessages$ = this.lastMessagesSubject.asObservable();\r\n expandStatuses = false;\r\n expanded = false;\r\n searchControl = new FormControl('');\r\n chatMessages$!: Observable;\r\n user = this.authService.getLoggedInUser();\r\n\r\n isTabletOrMobile = false;\r\n myScrollContainer: Signal = viewChild('scrollMe');\r\n // @ViewChild('scrollMe') private myScrollContainer: ElementRef = {} as ElementRef;\r\n currentChatId: string = '';\r\n chatsList = signal([] as any[]);\r\n filteredChats = computed(() => {\r\n console.log(this.term());\r\n if (!this.term()) {\r\n return this.chatsList();\r\n } else {\r\n return this.chatsList().filter(chat =>\r\n this.getChatGroupName(chat).toLowerCase().includes(this.term().toLowerCase())\r\n );\r\n }\r\n });\r\n currentChatSubscription: any;\r\n showInnerChat = false;\r\n\r\n chatCircleState: string = 'shown';\r\n chatBoxState: string = 'hidden';\r\n chatBoxVisible = false;\r\n chats = signal([] as any[]);\r\n uploadProgress = 0;\r\n leftTooltipItems = [] as any[];\r\n pastedImage: any = undefined;\r\n imageInfo: string = '';\r\n chatType = ChatType;\r\n\r\n onSearchChange(event: any) {\r\n const input = event.target as HTMLInputElement;\r\n this.term.set(input.value);\r\n }\r\n\r\n toggleChat() {\r\n this.chatCircleState = this.chatCircleState === 'shown' ? 'hidden' : 'shown';\r\n this.chatBoxState = this.chatBoxState === 'shown' ? 'shown' : 'hidden';\r\n this.chatBoxVisible = !this.chatBoxVisible;\r\n this.activeUser = undefined;\r\n this.showInnerChat = false;\r\n if (this.chatBoxVisible) {\r\n this.initChatFunctionality();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.chatService.getFireBaseUser().subscribe((res) => {\r\n console.log(res);\r\n })\r\n // this.chatService.createFirebaseUser('asd@sasa.cc', '12213213231').subscribe({\r\n // next: (data: any) => {\r\n // console.log(data);\r\n // },\r\n // error: (err: any) => {\r\n // console.log(err);\r\n // }\r\n // })\r\n // this.chatService.signInAnonymously().subscribe({\r\n // next: (res) => {\r\n // console.log(res);\r\n // },\r\n // error: (err) => {\r\n \r\n // }\r\n // })\r\n this.user = this.authService.getLoggedInUser();\r\n\r\n if (!this.bubbleMode()) {\r\n\r\n this.initChatFunctionality();\r\n\r\n }\r\n this.searchControl.valueChanges.subscribe((res) => {\r\n console.log()\r\n });\r\n\r\n this.loadOnlineStatus();\r\n this.listenChatListsLoaded();\r\n this.loadMobileLayoutCheck();\r\n\r\n this.leftTooltipItems = [\r\n {\r\n tooltipOptions: {\r\n tooltipLabel: 'Add',\r\n tooltipPosition: 'left'\r\n },\r\n icon: 'pi pi-pencil',\r\n command: () => {\r\n }\r\n },\r\n {\r\n tooltipOptions: {\r\n tooltipLabel: 'Update',\r\n tooltipPosition: 'left'\r\n },\r\n icon: 'pi pi-refresh',\r\n command: () => {\r\n }\r\n },\r\n {\r\n tooltipOptions: {\r\n tooltipLabel: 'Delete',\r\n tooltipPosition: 'left'\r\n },\r\n icon: 'pi pi-trash',\r\n command: () => {\r\n }\r\n },\r\n {\r\n icon: 'pi pi-upload',\r\n tooltipOptions: {\r\n tooltipLabel: 'Upload',\r\n tooltipPosition: 'left'\r\n }\r\n },\r\n {\r\n tooltipOptions: {\r\n tooltipLabel: 'Angular Website',\r\n tooltipPosition: 'left'\r\n },\r\n icon: 'pi pi-external-link',\r\n url: 'http://angular.io'\r\n }\r\n ];\r\n\r\n }\r\n ngAfterViewChecked() {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Initially set the height of each textarea\r\n // this.textareas.forEach(textarea => {\r\n // this.adjustHeight(textarea.nativeElement);\r\n // });\r\n\r\n // // Listen for input event on each textarea to adjust the height\r\n // this.textareas.forEach(textarea => {\r\n // console.log(textarea);\r\n // textarea.nativeElement.addEventListener('input', this.onInput.bind(this));\r\n // });\r\n }\r\n adjustParentHeight() {\r\n // Assuming you have the implementation for this method to adjust the textarea height\r\n const element = this.autoResizeTextArea.nativeElement;\r\n element.style.height = 'auto';\r\n element.style.height = `${element.scrollHeight}px`;\r\n }\r\n\r\n onInput(event: any): void {\r\n this.adjustHeight(event.target);\r\n }\r\n\r\n adjustHeight(textarea: HTMLTextAreaElement): void {\r\n textarea.style.height = 'auto'; // Reset height to auto to get the actual scrollHeight\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Set height based on scrollHeight\r\n }\r\n\r\n onBasicUploadAuto(event: any, fromClipboard = false) {\r\n console.log(event);\r\n let selectedFile = {} as File;\r\n if (fromClipboard) {\r\n selectedFile = event;\r\n } else {\r\n selectedFile = event.currentFiles[0] as File;\r\n }\r\n\r\n if (selectedFile) {\r\n let headers = new HttpHeaders(); // Add any headers if needed\r\n const formData = new FormData();\r\n formData.append('file', selectedFile);\r\n headers = new HttpHeaders({\r\n 'documentType': selectedFile.name.split('.').pop()!,\r\n \"Authorization\": \"Bearer \" + this.authService.getToken(),\r\n });\r\n const myFile: MyFile = {\r\n progress: 0,\r\n file: selectedFile,\r\n index: 0\r\n };\r\n this.uploadRequest(headers, '', formData, myFile);\r\n }\r\n }\r\n\r\n uploadRequest(headers: HttpHeaders, endpointExtras: string, formData: FormData, myFile: MyFile) {\r\n this.subs.add(this.http.post(environment.apiUrl + '/Upload/UploadLibraryFile' + endpointExtras, formData, {\r\n headers: headers,\r\n reportProgress: true,\r\n observe: 'events'\r\n })\r\n .subscribe((event: any) => {\r\n\r\n if (event.type === HttpEventType.UploadProgress) {\r\n myFile.progress = Math.round(100 * event.loaded / event.total!);\r\n this.uploadProgress = myFile.progress;\r\n } else if (event.type === HttpEventType.Response) {\r\n console.log('Upload complete:', event.body);\r\n this.sendMessage(event.body.dbPath, false, true);\r\n setTimeout(() => {\r\n this.scrollToBottom();\r\n }, 800);\r\n this.uploadProgress = 0;\r\n // Handle the response from the server, e.g., store the file path or show a success message\r\n }\r\n\r\n if (event.loaded === event.total) {\r\n console.log(HttpEventType);\r\n }\r\n if (event.type === HttpEventType.UploadProgress) {\r\n }\r\n else if (event.type === HttpEventType.Response) {\r\n\r\n // this.uploadedFile = event.body;\r\n // if (this.isProfile) {\r\n // console.log('GEGEG');\r\n // this.showCropper = false;\r\n // }\r\n // this.onUploadFinished.emit({ filePath: event.body, task: this.task });\r\n } else {\r\n }\r\n }, (err: any) => {\r\n console.log(err)\r\n }));\r\n }\r\n\r\n getChatGroupName(chatClassroom: Classroom) {\r\n if (!chatClassroom) {\r\n return '';\r\n }\r\n if (this.authService.isTeacher) {\r\n return this.classroomService.getFormattedStudentNames(chatClassroom.classroomStudents);\r\n } else {\r\n return chatClassroom.language + ' - ' + chatClassroom.teacher?.firstName;\r\n }\r\n }\r\n\r\n getChatOppositeName(chatClassroom: Classroom) {\r\n if (!chatClassroom) {\r\n return '';\r\n }\r\n if (this.authService.isTeacher) {\r\n return this.classroomService.getFormattedStudentNames(chatClassroom.classroomStudents);\r\n } else {\r\n return chatClassroom.teacher?.firstName;\r\n }\r\n }\r\n\r\n getChatGroupAvatarUrl(chatClassroom: Classroom) {\r\n if (!chatClassroom) {\r\n return '';\r\n }\r\n if (this.authService.isTeacher) {\r\n return chatClassroom.classroomStudents[0].avatarUrl;\r\n } else {\r\n return chatClassroom.teacher?.avatarUrl;\r\n }\r\n }\r\n\r\n getChatGroupAspUserId(chatClassroom: Classroom) {\r\n if (!chatClassroom) {\r\n return '';\r\n }\r\n if (this.authService.isTeacher) {\r\n return chatClassroom.classroomStudents[0].aspUserId;\r\n } else {\r\n return chatClassroom.teacher?.aspUserId;\r\n }\r\n }\r\n\r\n initChatFunctionality() {\r\n this.subs.sink = this.classroomService.getLMSUserClassrooms(this.user.id).subscribe(res => {\r\n if (this.authService.isTeacher) {\r\n this.initTeacherChats(res);\r\n } else if (this.authService.isStudent) {\r\n this.initStudentChats(res);\r\n }\r\n this.retrieveChats(res);\r\n\r\n });\r\n\r\n }\r\n\r\n initTeacherChats(classrooms: Classroom[]) {\r\n const uniqueStudentIds = new Set();\r\n const chats = classrooms.map(classroom => {\r\n const classroomChat = this.createClassroomChat(classroom);\r\n // TODO: this needed to prevent repeated student chats \r\n if (classroom.classroomStudents.length === 1) {\r\n return [classroomChat];\r\n }\r\n const studentChats = classroom.classroomStudents\r\n .filter(student => !uniqueStudentIds.has(+student.id))\r\n .map(student => {\r\n uniqueStudentIds.add(+student.id);\r\n return this.createStudentChat(classroom, student);\r\n });\r\n return [classroomChat, ...studentChats];\r\n });\r\n this.chatsList.set(chats.flat());\r\n }\r\n\r\n initStudentChats(classrooms: Classroom[]) {\r\n const uniqueTeacherIds = new Set();\r\n const chats = classrooms.map(classroom => {\r\n const classroomChat = this.createClassroomChat(classroom);\r\n const individualChat = this.createIndividualChat(classroom);\r\n\r\n\r\n if (classroom.classroomStudents.length > 1) {\r\n return [classroomChat, individualChat];\r\n }\r\n // return [classroomChat];\r\n if (!uniqueTeacherIds.has(+individualChat.teacherId!)) {\r\n uniqueTeacherIds.add(+individualChat.teacherId!);\r\n return [classroomChat];\r\n } else {\r\n return [classroomChat];\r\n }\r\n });\r\n this.chatsList.set(chats.flat());\r\n }\r\n\r\n createClassroomChat(classroom: Classroom) {\r\n\r\n let name = '';\r\n\r\n if (this.authService.isTeacher) {\r\n name = this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n } else {\r\n // student\r\n if (classroom.classroomStudents.length > 1) {\r\n name = this.generalService.getShortFullName(classroom.teacher) + ' - ' + this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n } else {\r\n name = this.generalService.getShortFullName(classroom.teacher);\r\n }\r\n }\r\n\r\n return {\r\n classroomId: classroom.id,\r\n classroomLevel: classroom.activeLevel,\r\n classroomLanguage: classroom.language,\r\n teacher: classroom.teacher,\r\n chatType: ChatType.CLASSROOM,\r\n chatName: name,\r\n chatHistory: [],\r\n classroomStudents: classroom.classroomStudents,\r\n relatedName: this.classroomService.getFormattedStudentNames(classroom.classroomStudents),\r\n };\r\n }\r\n\r\n createStudentChat(classroom: Classroom, student: User) {\r\n\r\n let name = '';\r\n\r\n if (this.authService.isTeacher) {\r\n name = this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n } else {\r\n // student\r\n if (classroom.classroomStudents.length > 1) {\r\n name = this.generalService.getShortFullName(classroom.teacher) + ' - ' + this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n } else {\r\n name = this.generalService.getShortFullName(classroom.teacher);\r\n }\r\n }\r\n return {\r\n classroomId: `teacher-${classroom.teacher?.id}-student-${student.aspUserId}`,\r\n studentId: student.id,\r\n relatedName: name,\r\n chatType: ChatType.USER,\r\n chatName: this.generalService.getShortFullName(student),\r\n chatHistory: [],\r\n teacher: classroom.teacher,\r\n classroomStudents: classroom.classroomStudents,\r\n };\r\n }\r\n\r\n createIndividualChat(classroom: Classroom) {\r\n let name = '';\r\n\r\n if (this.authService.isTeacher) {\r\n name = this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n } else {\r\n // student\r\n if (classroom.classroomStudents.length > 1) {\r\n name = this.generalService.getShortFullName(classroom.teacher);\r\n } else {\r\n name = this.generalService.getShortFullName(classroom.teacher);\r\n }\r\n }\r\n\r\n return {\r\n classroomId: `teacher-${classroom.teacher?.id}-student-${this.user.id}`,\r\n teacherId: classroom.teacher?.id,\r\n studentId: this.user.id,\r\n chatType: ChatType.USER,\r\n chatName: name,\r\n chatHistory: [],\r\n teacher: classroom.teacher,\r\n classroomStudents: classroom.classroomStudents,\r\n relatedName: this.classroomService.getFormattedStudentNames(classroom.classroomStudents),\r\n };\r\n }\r\n\r\n loadChatMessages(chatId: string) {\r\n // Unsubscribe from the previous subscription if it exists\r\n if (this.currentChatSubscription) {\r\n this.currentChatSubscription.unsubscribe();\r\n }\r\n\r\n // Set the new current chatId\r\n this.currentChatId = chatId;\r\n\r\n this.chatService.markMessagesAsRead(this.currentChatId, this.user.aspUserId);\r\n // Subscribe to the new chat messages\r\n this.currentChatSubscription = this.chatService.getChatMessages(chatId).subscribe((messages: Message[]) => {\r\n\r\n this.messages.set(messages);\r\n console.log(this.filterOutOldMessages());\r\n this.scrollToBottom();\r\n });\r\n }\r\n\r\n filterOutOldMessages() {\r\n console.log(this.messages());\r\n // Define the cutoff date (5 days ago from now)\r\n const cutoffDate = moment().subtract(5, 'minutes');\r\n\r\n const filteredMessages = this.messages().filter((message: any) => {\r\n const messageTimestamp = moment.unix(message.timestamp.seconds);\r\n return messageTimestamp.isAfter(cutoffDate);\r\n });\r\n\r\n console.log(filteredMessages);\r\n }\r\n\r\n addNewMessage(event: Event, inputField: HTMLInputElement): void {\r\n const textarea = event.target as HTMLTextAreaElement;\r\n const now = Date.now();\r\n // Remove timestamps older than 10 seconds\r\n this.messageTimestamps = this.messageTimestamps.filter(timestamp => now - timestamp < 10000);\r\n\r\n if (this.messageTimestamps.length > 3) {\r\n\r\n const oldestTimestamp = Math.min(...this.messageTimestamps);\r\n const waitTime = 10 - Math.floor((now - oldestTimestamp) / 1000);\r\n\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: `You can only send 3 messages every 10 seconds. Please wait ${waitTime} seconds to send the next message.`,\r\n });\r\n\r\n return;\r\n } else {\r\n this.messageTimestamps.push(now); // Add current timestamp\r\n }\r\n\r\n let val = inputField.value?.trim();\r\n\r\n if (val.length) {\r\n // Convert line breaks (\\n) from textarea into
tags for HTML rendering\r\n val = val.replace(/\\n/g, '
');\r\n\r\n // Create a temporary div element to parse the HTML string\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = val; // Set the HTML input (with
) directly into the div\r\n\r\n if (this.editMessageMode()) {\r\n this.editMessageObj.content = tempDiv.innerHTML;\r\n this.chatService.editMessage(this.currentChatId, this.editMessageObj.id, this.editMessageObj, this.user, this.editMessageisLastMessage);\r\n } else {\r\n\r\n // Send the sanitized HTML content with line breaks and formatting\r\n this.sendMessage(tempDiv.innerHTML);\r\n }\r\n this.editMessageMode.set(false);\r\n }\r\n\r\n inputField.value = '';\r\n\r\n setTimeout(() => {\r\n textarea.rows = 1;\r\n textarea.value = '';\r\n // textarea.style.height = '24px'; // Reset the height to its original value\r\n this.adjustParentHeight();\r\n }, 30);\r\n }\r\n\r\n deleteMessage(message: [Message, boolean]) {\r\n console.log(message);\r\n if(message[0].isUploadFile) {\r\n this.chatService.deleteChatFilesFromLibraryFolder(message[0].content).subscribe({\r\n next: (res) => {\r\n console.log(res);\r\n this.chatService.deleteMessage(this.currentChatId, message[0], this.user, message[1]);\r\n },\r\n error: () => {\r\n this.chatService.deleteMessage(this.currentChatId, message[0], this.user, message[1]);\r\n }\r\n });\r\n } else {\r\n this.chatService.deleteMessage(this.currentChatId, message[0], this.user, message[1]);\r\n }\r\n\r\n }\r\n\r\n editMessage(message: any) {\r\n this.editMessageMode.set(true);\r\n console.log(message);\r\n this.editMessageObj = message[0];\r\n this.editMessageisLastMessage = message[1];\r\n if (this.autoResizeTextArea) {\r\n const formattedContent = this.editMessageObj.content.replace(//gi, '\\n');\r\n this.autoResizeTextArea.nativeElement.value = formattedContent; // Set the textarea value\r\n this.adjustParentHeight(); // Adjust the height of the textarea if necessary\r\n }\r\n }\r\n\r\n scrollToBottom(): void {\r\n try {\r\n setTimeout(() => {\r\n if (this.myScrollContainer() && this.myScrollContainer()!.nativeElement) {\r\n this.myScrollContainer()!.nativeElement.scrollTop = this.myScrollContainer()!.nativeElement.scrollHeight;\r\n }\r\n }, 10);\r\n } catch (err) { }\r\n }\r\n\r\n setUserActive(user: any) {\r\n this.activeUser = user;\r\n if (!this.activeUser) {\r\n return;\r\n }\r\n this.showInnerChat = true;\r\n this.chatService.currentRoom.set(this.activeUser);\r\n this.loadChatMessages(this.activeUser.classroomId);\r\n this.chatService.markLastMessagesAsRead(this.currentChatId, this.user.aspUserId);\r\n\r\n\r\n this.disableEditAndTextarea();\r\n // this.chatService.getChatMessages(this.activeUser.aspUserId);\r\n }\r\n\r\n refreshList(): void {\r\n this.currentTutorial = undefined;\r\n this.currentIndex = -1;\r\n // this.retrieveChats();\r\n }\r\n\r\n private getUnreadMessages() {\r\n // Reset unread count before starting the accumulation process\r\n this.chatService.unreadCount.set(0);\r\n\r\n const chatListsWithUnreadCounts = {} as any;\r\n\r\n this.chatsList().forEach((classroom: any) => {\r\n this.chatService.getLastUnreadMessagesCountForUser(classroom.classroomId, this.user.aspUserId)\r\n .subscribe(count => {\r\n const chatListWithUnreadCount = {\r\n classroom: classroom,\r\n unreadCount: count\r\n };\r\n\r\n chatListsWithUnreadCounts[classroom.classroomId] = chatListWithUnreadCount;\r\n\r\n console.log(`Unread messages count for classroom ${classroom.classroomId} for user \r\n ${this.user.firstName + ' ' + this.user.lastName} with aspUserId ${this.user.aspUserId}: ${count}`);\r\n const totalUnreadCount = Object.values(chatListsWithUnreadCounts).reduce((acc, current: any) => acc + current.unreadCount, 0) as number;\r\n this.chatService.unreadCount.set(totalUnreadCount);\r\n });\r\n\r\n });\r\n }\r\n\r\n retrieveChats(classrooms: any[]): void {\r\n\r\n // Wait for all the subscriptions to complete\r\n this.getUnreadMessages();\r\n\r\n // Initialize an object to hold the last messages for sorting\r\n const lastMessages = this.lastMessagesSubject.getValue();\r\n\r\n classrooms.forEach(classroom => {\r\n // Retrieve unread message count for the classroom\r\n // this.chatService.getUnreadMessagesCount(classroom.classroomId, this.user.aspUserId).subscribe(count => {\r\n // console.log(`Total getUnreadMessagesCount unread messages count for user ${this.user.aspUserId}: ${count}`);\r\n // });\r\n // Retrieve the last message for the classroom itself\r\n this.chatService.getLastMessage(classroom.id).subscribe({\r\n next: (message: any) => {\r\n lastMessages[classroom.id] = message;\r\n this.updateChatsListSorting(lastMessages);\r\n },\r\n error: (err) => {\r\n console.error(`Failed to retrieve last message for classroom ${classroom.id}`, err);\r\n }\r\n });\r\n\r\n // If the classroom has more than one student, retrieve last messages for individual chats\r\n classroom.classroomStudents.forEach((student: any) => {\r\n let chatId = `teacher-${classroom.teacher.id}-student-${student.aspUserId}`;\r\n if (classroom.chatType === ChatType.CLASSROOM) {\r\n chatId = `${classroom.id}`;\r\n }\r\n if (classroom.chatType === ChatType.USER) {\r\n if (this.authService.isStudent) {\r\n chatId = `teacher-${classroom.teacher.id}-student-${this.user.id}`;\r\n }\r\n }\r\n\r\n console.log(`Retrieving ${chatId}`);\r\n this.chatService.getLastMessage(chatId).subscribe({\r\n next: (message: any) => {\r\n lastMessages[chatId as any] = message;\r\n this.updateChatsListSorting(lastMessages);\r\n },\r\n error: (err) => {\r\n console.error(`Failed to retrieve last message for student ${student.id} in classroom ${classroom.id}`, err);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n updateChatsListSorting(lastMessages: any): void {\r\n this.chatsList.set(this.chatsList().sort((a: any, b: any) => {\r\n const aLastMessage = lastMessages[a.classroomId]?.lastMessageAt?.seconds || 0;\r\n const bLastMessage = lastMessages[b.classroomId]?.lastMessageAt?.seconds || 0;\r\n return bLastMessage - aLastMessage;\r\n }));\r\n\r\n this.lastMessagesSubject.next(lastMessages);\r\n this.chatListsLoaded.set(true);\r\n }\r\n\r\n private listenChatListsLoaded() {\r\n toObservable(this.chatListsLoaded, {\r\n injector: this.injector\r\n }).subscribe({\r\n next: (chatListsLoaded) => {\r\n console.log(chatListsLoaded);\r\n if (chatListsLoaded) {\r\n setTimeout(() => {\r\n if (!this.bubbleMode() && !this.isTabletOrMobile) {\r\n this.setUserActive(this.filteredChats()[0]);\r\n }\r\n }, 100);\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n private sortUserListByChats(chats: any) {\r\n\r\n // Create a map of userId to the latest timestamp of their chats\r\n const userTimestampMap: { [key: string]: string } = {};\r\n\r\n chats.forEach((chat: any) => {\r\n chat.participants.forEach((participant: string) => {\r\n // Update the map with the latest timestamp for each user\r\n if (!userTimestampMap[participant] || userTimestampMap[participant] < chat.lastMessageAt) {\r\n userTimestampMap[participant] = chat.lastMessageAt;\r\n }\r\n });\r\n });\r\n\r\n // Sort the chatsList by the latest timestamp of their chats\r\n\r\n }\r\n\r\n findAvatarUrl(aspUserId: string): string | null {\r\n for (let classroom of this.chatsList()) {\r\n // Check if the teacher matches the aspUserId\r\n if (classroom.teacher && classroom.teacher.aspUserId === aspUserId) {\r\n return classroom.teacher;\r\n }\r\n\r\n // Check if any student matches the aspUserId\r\n for (let student of classroom.classroomStudents) {\r\n if (student.aspUserId === aspUserId) {\r\n return student;\r\n }\r\n }\r\n }\r\n return null; // Return null if no match is found\r\n }\r\n\r\n\r\n getUserFullNameAndInitials(aspUserId: string): any | null {\r\n for (let classroom of this.chatsList()) {\r\n // Check if the teacher matches the aspUserId\r\n if (classroom.teacher && classroom.teacher.aspUserId === aspUserId) {\r\n const fullName = classroom.teacher.firstName + ' ' + classroom.teacher.lastName;\r\n const initials = classroom.teacher.firstName.charAt(0) + classroom.teacher.lastName.charAt(0);\r\n return { fullName, initials };\r\n }\r\n\r\n // Check if any student matches the aspUserId\r\n for (let student of classroom.classroomStudents) {\r\n if (student.aspUserId === aspUserId) {\r\n const fullName = student.firstName + ' ' + student.lastName;\r\n const initials = student.firstName.charAt(0) + student.lastName.charAt(0);\r\n return { fullName, initials };\r\n }\r\n }\r\n }\r\n return null; // Return null if no match is found\r\n }\r\n\r\n sendMessage(content: string, isFileFromLibrary: boolean = false, isUploadFile: boolean = false) {\r\n const message: Message = {\r\n senderId: this.user.aspUserId,\r\n content: content,\r\n timestamp: serverTimestamp(),\r\n readBy: [this.user.aspUserId],\r\n isFileFromLibrary: isFileFromLibrary,\r\n isUploadFile: isUploadFile,\r\n readStatus: { [this.user.aspUserId]: true }\r\n\r\n };\r\n\r\n console.log(this.user);\r\n this.chatService.addMessage(this.currentChatId, message, this.user);\r\n this.chatService.markMessagesAsRead(this.currentChatId, this.user.aspUserId);\r\n }\r\n\r\n isImage(filePath: string): boolean {\r\n const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg', '.tiff', '.ico', '.jfif', '.avif'];\r\n const fileExtension = filePath.split('.').pop()?.toLowerCase();\r\n return imageExtensions.includes(`.${fileExtension}`);\r\n }\r\n\r\n goToChat() {\r\n this.showInnerChat = true;\r\n }\r\n\r\n openFileUploadDialog() {\r\n\r\n const divToShowDialog = this.bubbleMode() ? 'mainContainerSideMenuBelow' : 'containerLayout';\r\n this.libraryService.isPreviewingFromChat.set(true);\r\n this.userService.setNewFileUpload({});\r\n setTimeout(() => {\r\n const myElement = document.getElementById(divToShowDialog);\r\n const dialogWidth = myElement!.getBoundingClientRect().width - 10;\r\n this.generalService.openDialogWithComponent(this.dialogService, ChatUploadFileDialogComponent, dialogWidth.toFixed(),\r\n {\r\n action: 'upload',\r\n dialogsubTitle: '',\r\n dialogTitle: 'Upload to library...',\r\n }, divToShowDialog, (result: any) => {\r\n console.log(result);\r\n this.chatService.showUploadFile.set(false);\r\n this.libraryService.checkedLibraryFiles.set([]);\r\n this.libraryService.isPreviewingFromChat.set(false);\r\n // this.dialogService.getInstance(result).close();\r\n // this.generalService.destroyComponent(ChatUploadFileDialogComponent);;\r\n if (result && Array.isArray(result)) {\r\n result.forEach((item: any) => {\r\n this.sendMessage(item.path, true, true);\r\n });\r\n setTimeout(() => {\r\n this.scrollToBottom();\r\n }, 1000);\r\n console.log(result);\r\n // this.moveFile(result.map.map);\r\n }\r\n }, myElement!.getBoundingClientRect().height - 290 + 'px');\r\n }, 100);\r\n\r\n }\r\n\r\n\r\n onPaste(event: any) {\r\n const items = (event.clipboardData || event.originalEvent.clipboardData).items;\r\n let blob = null;\r\n for (const item of items) {\r\n if (item.type.indexOf('image') === 0) {\r\n blob = item.getAsFile();\r\n this.onBasicUploadAuto(blob, true);\r\n console.log(blob); // Prints your files\r\n }\r\n }\r\n }\r\n\r\n recognizeImage(imageData: string | ArrayBuffer | null) {\r\n // Simulate an API call\r\n this.imageInfo = 'Recognized Text: \"Example text from image\"'; // Mock recognition result\r\n\r\n // Example of a real API call\r\n /*\r\n this.http.post('YOUR_API_ENDPOINT', { image: imageData }).subscribe(response => {\r\n this.imageInfo = response.recognizedText; // Update with actual response\r\n });\r\n */\r\n }\r\n\r\n loadOnlineStatus() {\r\n\r\n this.chatService.setUserStatus(this.user.aspUserId, 'online');\r\n\r\n // Set the user status to offline when the component is destroyed\r\n window.addEventListener('beforeunload', () => {\r\n this.chatService.setUserStatus(this.user.aspUserId, 'offline');\r\n });\r\n\r\n // Subscribe to online users\r\n this.chatService.getOnlineUsers().subscribe(users => {\r\n this.onlineUsers = users;\r\n\r\n console.log(this.onlineUsers);\r\n });\r\n }\r\n\r\n isUserOnline(userId: string) {\r\n return this.onlineUsers.some(user => user.id === userId);\r\n }\r\n\r\n loadMobileLayoutCheck() {\r\n this.subs.sink = this.generalService.deviceKind.pipe(\r\n switchMap(res => {\r\n this.isTabletOrMobile = !res.w992up;\r\n if (!res.w1024up) {\r\n return of(0);\r\n } else {\r\n return of(null);\r\n }\r\n })\r\n ).subscribe((res) => {\r\n if (res === 0) {\r\n } else if (res !== 0) {\r\n const menuHeight = res;\r\n }\r\n });\r\n }\r\n\r\n showLeftSideMobile() {\r\n if (this.isTabletOrMobile && this.showInnerChat) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n showRightSideMobile() {\r\n if (this.isTabletOrMobile && !this.showInnerChat) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n showBackUsers() {\r\n this.showInnerChat = false;\r\n }\r\n\r\n autoResize(textArea: HTMLTextAreaElement): void {\r\n textArea.style.height = 'auto'; // Reset height to auto to shrink when deleting text\r\n textArea.style.height = textArea.scrollHeight + 'px'; // Set height to the scrollHeight of the content\r\n }\r\n\r\n disableEditAndTextarea() {\r\n this.editMessageMode.set(false);\r\n }\r\n\r\n resetTextarea() {\r\n this.autoResizeTextArea.nativeElement.value = '';\r\n // this.adjustHeight(this.autoResizeTextArea.nativeElement);\r\n this.adjustParentHeight();\r\n }\r\n\r\n countLastMessageCount(lastMessage: any) {\r\n if (!lastMessage) {\r\n return;\r\n }\r\n if (lastMessage.unreadCounts) {\r\n return lastMessage.unreadCounts[this.user.aspUserId];\r\n } else {\r\n return 0;\r\n }\r\n }\r\n}\r\n","@defer(on viewport) {\r\n\r\n@if (!bubbleMode()) {\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n Chat\r\n \r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n\r\n \r\n\r\n\r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n @if (messages().length === 0) {\r\n \r\n }\r\n \r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n}\r\n}@placeholder {\r\nloading...\r\n}\r\n\r\n\r\n\r\n@if (bubbleMode()) {\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n Chat\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n @if (!showInnerChat) {\r\n \r\n }\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n @if (messages().length === 0) {\r\n \r\n }\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n}\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n @if (isUserOnline(getChatGroupAspUserId(activeUser))) {\r\n \r\n }\r\n
\r\n
\r\n {{activeUser?.chatName}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n @if (editMessageMode()) {\r\n \r\n
Edit Message
\r\n\r\n \r\n \r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n 0; else notUploading\">\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
    \r\n \"\"\r\n
    \r\n
  • \r\n
  • \r\n \r\n
    \r\n 0; else notUpload\">\r\n \r\n \r\n \r\n \r\n\r\n \r\n \"\"\r\n \r\n\r\n\r\n \r\n \r\n
    \r\n
  • \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n
\r\n\r\n \"\"\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n @if (isUserOnline(getChatGroupAspUserId(chatGroup))) {\r\n \r\n }\r\n
\r\n @if (countLastMessageCount((lastMessages$ | async)?.[chatGroup.classroomId]) > 0) {\r\n
{{countLastMessageCount((lastMessages$ | async)?.[chatGroup.classroomId])}}
\r\n }\r\n \r\n
\r\n\r\n\r\n \r\n {{chatGroup.chatName}}\r\n \r\n \r\n @if((lastMessages$ | async)?.[chatGroup.classroomId]?.lastMessageDeleted) {\r\n File deleted\r\n } @else {\r\n File\r\n }\r\n \r\n\r\n \r\n @if((lastMessages$ | async)?.[chatGroup.classroomId]?.lastMessageDeleted) {\r\n Message deleted\r\n } @else {\r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n {{(lastMessages$\r\n | async)?.[chatGroup.classroomId]?.lastMessageAt?.seconds * 1000 |\r\n date:\r\n 'short'}}\r\n
\r\n
\r\n
\r\n\r\n\r\n
    \r\n
  • \r\n
    \r\n \r\n
    \r\n No messages yet. Feel free to start the conversation with\r\n {{activeUser?.relatedName}}\r\n \r\n \r\n
  • \r\n
\r\n
\r\n\r\n\r\n @if (chatGroup?.chatType === chatType.CLASSROOM && chatGroup?.classroomStudents.length > 1) {\r\n Group\r\n } @else if (chatGroup?.chatType === chatType.USER) {\r\n Private\r\n } @else {\r\n Private\r\n }\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { LibraryComponent } from './library/library.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '', component: LibraryComponent,\r\n },\r\n\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LibraryRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { LibraryRoutingModule } from './library-routing.module';\r\nimport { LibraryComponent } from './library/library.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SharedModule } from 'src/app/shared/shared.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { LibraryFileRowItemComponent } from './library/components/library-file-row-item/library-file-row-item.component';\r\nimport { LibraryLeftSidebarComponent } from './library/components/library-left-sidebar/library-left-sidebar.component';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { LibraryFileActionsDialogComponent } from './library/components/library-file-actions-dialog/library-file-actions-dialog.component';\r\nimport { SingleLibraryComponent } from './library/components/single-library/single-library.component';\r\nimport { SingleLibraryFolderItemComponent } from './library/components/single-library-folder-item/single-library-folder-item.component';\r\nimport { FilterPipe } from 'src/app/core/pipes/filter.pipe';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n LibraryComponent,\r\n LibraryFileRowItemComponent,\r\n LibraryLeftSidebarComponent,\r\n LibraryFileActionsDialogComponent,\r\n SingleLibraryComponent,\r\n SingleLibraryFolderItemComponent,\r\n FilterPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n LibraryRoutingModule,\r\n SharedModule,\r\n FormsModule,\r\n ConfirmDialogModule,\r\n ],\r\n exports: [\r\n LibraryComponent,\r\n LibraryLeftSidebarComponent,\r\n SingleLibraryComponent,\r\n LibraryFileActionsDialogComponent,\r\n FilterPipe\r\n ],\r\n providers: [DynamicDialogRef]\r\n})\r\nexport class LibraryModule { }\r\n","\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n

{{this.dialogData.dialogsubTitle}}

\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n

{{this.dialogData.dialogsubTitle}}

\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n

{{this.dialogData.dialogsubTitle}}

\r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n
  • \r\n
    \r\n \r\n
    \r\n {{innerFolder.name}}\r\n
    \r\n
    \r\n
  • \r\n
    \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n

{{this.dialogData.dialogsubTitle}}

\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { switchMap, take } from 'rxjs/operators';\r\nimport { Level } from 'src/app/core/models/classroom.model';\r\nimport { Category } from 'src/app/core/models/homework.model';\r\nimport { Folder, Library, LibraryFile } from 'src/app/core/models/library.model';\r\nimport { UserRole } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { LibraryService } from 'src/app/core/services/library.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-library-file-actions-dialog',\r\n templateUrl: './library-file-actions-dialog.component.html',\r\n styleUrls: ['./library-file-actions-dialog.component.scss']\r\n})\r\nexport class LibraryFileActionsDialogComponent implements OnInit {\r\n\r\n private subs = new SubSink();\r\n role: UserRole = UserRole.NONE;\r\n UserRoles = UserRole;\r\n dialogData: any = {};\r\n sharedWithMap: any;\r\n selectedFolder!: Folder;\r\n term: any;\r\n libraryToAdd: Library = {} as Library;\r\n files = [] as LibraryFile[];\r\n modifiedFile = {} as LibraryFile;\r\n showEditRename = false;\r\n newFileName = '';\r\n constructor(\r\n private ref: DynamicDialogRef,\r\n private authService: AuthService,\r\n private userService: UserService,\r\n private generalService: GeneralService,\r\n private libraryService: LibraryService,\r\n private toastService: ToastService,\r\n private config: DynamicDialogConfig,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.role = this.authService.getLoggedInUser().role;\r\n this.dialogData = this.config.data.dialogData;\r\n console.log(this.dialogData);\r\n this.userService.setUploadFiles(true);\r\n this.files = [];\r\n if (this.dialogData.libraryFile) {\r\n this.newFileName = this.dialogData.libraryFile.name;\r\n this.modifiedFile = this.dialogData.libraryFile;\r\n }\r\n // this.sortFolders(this.dialogData.folders);\r\n // console.log((this.sortFolders(this.dialogData.folders)))\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.ref.destroy();\r\n }\r\n\r\n onDialogClose(data?: any) {\r\n console.log(data);\r\n this.ref.close(data);\r\n this.ref.destroy();\r\n }\r\n\r\n onCheckedList(event: any) {\r\n console.log(event);\r\n this.sharedWithMap = event;\r\n }\r\n\r\n onSendSharedWith() {\r\n this.onDialogClose({\r\n action: this.dialogData.action,\r\n map: this.sharedWithMap\r\n })\r\n }\r\n\r\n moveSelected(folder: Folder) {\r\n this.selectedFolder = folder;\r\n console.log(folder);\r\n }\r\n\r\n /**\r\n * Executes when the move is submitted.\r\n *\r\n * @param {type} paramName - description of parameter\r\n * @return {type} description of return value\r\n */\r\n onMoveSubmitted() {\r\n console.log(this.selectedFolder);\r\n this.onDialogClose({\r\n action: this.dialogData.action,\r\n libraryFile: this.dialogData.libraryFile,\r\n folder: this.selectedFolder\r\n })\r\n }\r\n\r\n /**\r\n * Retrieves the parent folders from the dialogData object.\r\n *\r\n * @return {Array} An array containing objects representing the parent folders,\r\n * their child folders, and the library files associated with each parent folder.\r\n */\r\n getParentFolders() {\r\n const parentFolders = this.dialogData.folders.filter((f: any) => !f.parent);\r\n return parentFolders.map((parent: any) => {\r\n const childFolders = this.dialogData.folders.filter((f: any) => f.parent === parent.name);\r\n const libraryFiles = parent.libraryFiles;\r\n return { parent, childFolders, libraryFiles };\r\n }).concat(this.dialogData.folders.filter((f: any) => f.parent));\r\n }\r\n\r\n /**\r\n * Sorts an array of folders by separating them into parent folders and child folders,\r\n * sorting the parent folders by name, and adding the child folders to their respective parent folders.\r\n *\r\n * @param {any[]} folders - The array of folders to be sorted.\r\n * @return {any[]} - The sorted array of folders.\r\n */\r\n sortFolders(folders: any[]): any[] {\r\n const sortedFolders: any[] = [];\r\n const parentFolders: any[] = [];\r\n const childFolders: any[] = [];\r\n \r\n // Separate parent folders and child folders\r\n folders.forEach(folder => {\r\n if (folder.parent === '') {\r\n parentFolders.push(folder);\r\n } else {\r\n childFolders.push(folder);\r\n }\r\n });\r\n \r\n // Sort parent folders by name\r\n parentFolders.sort((a, b) => a.name.localeCompare(b.name));\r\n \r\n // Add parent folders to sorted array\r\n parentFolders.forEach(folder => {\r\n sortedFolders.push(folder);\r\n const children = childFolders.filter(child => child.parent === folder.name);\r\n const sortedChildren = this.sortFolders(children);\r\n sortedChildren.forEach(child => {\r\n sortedFolders.push({...child, marginLeft: 10 });\r\n });\r\n });\r\n \r\n // Add child folders to sorted array\r\n childFolders.forEach(folder => {\r\n if (!sortedFolders.some(f => f.folderId === folder.folderId)) {\r\n sortedFolders.push({...folder, marginLeft: 10 });\r\n }\r\n });\r\n \r\n return sortedFolders;\r\n }\r\n\r\n /**\r\n * Uploads the finished event.\r\n *\r\n * @param {any} event - The event object.\r\n * @return {void} This function does not return anything.\r\n */\r\n uploadFinished(event: any) {\r\n this.files.push({ \r\n path: event.filePath.dbPath, \r\n levels: [], \r\n categories: [], \r\n name: event.filePath.dbPath, \r\n fileId: event.filePath.dbPath });\r\n console.log(this.files);\r\n }\r\n\r\n /**\r\n * Handles the event when a tag is chosen.\r\n *\r\n * @param {any} event - The event object containing information about the tag selection.\r\n */\r\n onTagChoosen(event: any) {\r\n let isLevel = event.isLevel;\r\n if (event.checked) {\r\n if (event.applyToAll) {\r\n for (let file of this.files) {\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n arrLibrary.push(event.tag)\r\n }\r\n } else {\r\n let file = this.files[event.file.index]\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n arrLibrary.push(event.tag)\r\n }\r\n } else {\r\n if (event.applyToAll) {\r\n for (let file of this.files) {\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n let index2 = arrLibrary.findIndex(((el: string) => el == event.tag));\r\n arrLibrary.splice(index2, 1);\r\n }\r\n } else {\r\n let file = this.files[event.file.index]\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n let index2 = arrLibrary.findIndex(((el: string) => el == event.tag));\r\n arrLibrary.splice(index2, 1);\r\n }\r\n }\r\n }\r\n\r\n onUploadedFilesSubmitted() {\r\n const params = {\r\n action: this.dialogData.action,\r\n libraryFiles: this.files,\r\n folder: this.dialogData.folder\r\n };\r\n console.log(params);\r\n this.onDialogClose(params)\r\n }\r\n\r\n /**\r\n * Retrieves the file name from a given file path.\r\n *\r\n * @param {string} filePath - The file path.\r\n * @return {string | undefined} The file name without extension if it exists, otherwise the entire file name.\r\n */\r\n getFileName(filePath: string): string | undefined {\r\n const fileNameWithPath = filePath.split('\\\\').pop();\r\n const fileNameParts = fileNameWithPath!.split('.');\r\n \r\n if (fileNameParts.length > 1) {\r\n const fileNameWithoutExtension = fileNameParts.slice(0, -1).join('.');\r\n return fileNameWithoutExtension;\r\n }\r\n \r\n return fileNameWithPath;\r\n }\r\n\r\n /**\r\n * A function that creates a deep copy of an object.\r\n *\r\n * @param {any} obj - The object to be deep copied.\r\n * @return {any} The deep copy of the object.\r\n */\r\n deepCopy(obj: any): any {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return obj;\r\n }\r\n \r\n let copy: any;\r\n \r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0; i < obj.length; i++) {\r\n copy[i] = this.deepCopy(obj[i]);\r\n }\r\n } else {\r\n copy = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n copy[key] = this.deepCopy(obj[key]);\r\n }\r\n }\r\n }\r\n \r\n return copy;\r\n }\r\n\r\n onChooseTag(checkbox: any) {\r\n const libraryFile = this.deepCopy(this.modifiedFile);\r\n\r\n if (checkbox.checked) {\r\n if (checkbox.isCategory) {\r\n // Update categories in libraryFile\r\n libraryFile.categories.push(checkbox.tag);\r\n }\r\n if (checkbox.isLevel) {\r\n // Update levels in libraryFile\r\n libraryFile.levels.push(checkbox.tag);\r\n }\r\n } else {\r\n if (checkbox.isCategory) {\r\n // Remove category from libraryFile\r\n libraryFile.categories = libraryFile.categories.filter((category: Category) => category !== checkbox.tag);\r\n }\r\n if (checkbox.isLevel) {\r\n // Remove level from libraryFile\r\n libraryFile.levels = libraryFile.levels.filter((level: Level) => level !== checkbox.tag);\r\n }\r\n }\r\n\r\n this.modifiedFile = libraryFile;\r\n }\r\n\r\n onTagsSubmitted() {\r\n const libraryFile = this.deepCopy(this.modifiedFile);\r\n const newLevels = {\r\n fileId: libraryFile.fileId,\r\n levels: this.modifiedFile.levels\r\n }\r\n const newCategories = {\r\n fileId: libraryFile.fileId,\r\n categories: this.modifiedFile.categories\r\n }\r\n this.rename(this.modifiedFile.fileId!, this.newFileName);\r\n this.subs.add(this.libraryService.editFileLevels(newLevels).pipe(\r\n switchMap((res) => {\r\n console.log(res);\r\n return this.libraryService.editFileCategories(newCategories);\r\n })\r\n ).subscribe((res) => {\r\n console.log(res);\r\n const params = {\r\n action: this.dialogData.action,\r\n result: this.modifiedFile,\r\n };\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Library file saved successfully.'\r\n });\r\n console.log(this.modifiedFile);\r\n this.onDialogClose(params);\r\n }));\r\n }\r\n\r\n rename(fileId: number, newName: string) {\r\n this.subs.add(this.libraryService.updateLibraryFileName(fileId, newName).pipe(take(1)).subscribe(res => {\r\n this.modifiedFile.name = this.newFileName;\r\n }));\r\n }\r\n}\r\n","\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {{firstListItemTitle}}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {{classroomService.getFormattedStudentNames(classroom.classroomStudents)}}\r\n {{classroom.language}} - {{classroom.teacher.firstName}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
    \r\n
  • \r\n \r\n {{classroom.language}} -\r\n \r\n \r\n \r\n {{classroom.totalHours}} hours available \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n {{firstListItemTitle}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n {{classroomService.getFormattedStudentNames(classroom.classroomStudents)}}\r\n {{classroom.language}} - {{classroom.teacher.firstName}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\nimport { ScrollPanel } from 'primeng/scrollpanel';\r\nimport { Classroom } from 'src/app/core/models/classroom.model';\r\nimport { FilterPipe } from 'src/app/core/pipes/filter.pipe';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ClassroomService } from 'src/app/core/services/classroom.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-library-left-sidebar',\r\n templateUrl: './library-left-sidebar.component.html',\r\n styleUrls: ['./library-left-sidebar.component.scss'],\r\n providers: [FilterPipe]\r\n})\r\nexport class LibraryLeftSidebarComponent implements OnInit {\r\n private subs = new SubSink();\r\n isCollapsed = false;\r\n showActiveClassrooms = false;\r\n term: any;\r\n @Input() libFolders: any;\r\n @Input() classrooms: any;\r\n @Input() autoSelectFirstClassroom = false;\r\n @Input() leftSideHeight!: string;\r\n @Input() firstListItemTitle = 'My Library';\r\n @Input() showMyNotes = false;\r\n @Output() myFilesSelected = new EventEmitter();\r\n @Output() classroomSelected = new EventEmitter();\r\n @Output() collapsed = new EventEmitter();\r\n @ViewChild('myFilesDiv', { static: false }) public myFilesDiv = {} as ElementRef;\r\n @ViewChild('op', { static: false }) dayOverlayPanel: OverlayPanel = {} as OverlayPanel;\r\n @ViewChild('scrollPanel', { static: true }) scrollPanel: ScrollPanel = {} as ScrollPanel;\r\n filteredClassRooms: Classroom[] = [];\r\n selectedClassroom = {} as Classroom;\r\n isLarge = false;\r\n constructor(\r\n public classroomService: ClassroomService,\r\n public authService: AuthService,\r\n private generalService: GeneralService,\r\n private layoutService: LayoutService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(this.layoutService.sideMenuHeight.pipe().subscribe(res => {\r\n }));\r\n this.subs.add(this.generalService.deviceKind.pipe().subscribe(res => {\r\n if (res) {\r\n this.isLarge = res.w992up as boolean;\r\n if (res.w768up) {\r\n // this.renderer.addClass(this.document.getElementsByClassName('app')[0], 'h-full');\r\n } else {\r\n }\r\n }\r\n }));\r\n }\r\n\r\n ngOnChanges(): void {\r\n // Set the filteredClassRooms array to the classrooms array\r\n this.filteredClassRooms = this.classrooms;\r\n \r\n // Check if the user is a student\r\n if (this.authService.isStudent) {\r\n // Set showActiveClassrooms to true\r\n this.showActiveClassrooms = false;\r\n this.toggleSwitch({ checked: false });\r\n }\r\n \r\n // Check if filteredClassRooms and user is a teacher\r\n if (this.filteredClassRooms && this.authService.isTeacher) {\r\n // Sort the classrooms array by first name and assign it to filteredClassRooms\r\n this.filteredClassRooms = this.classroomService.sortClassroomsByFirstName(this.classrooms);\r\n this.toggleSwitch({ checked: false });\r\n // Call toggleSwitch method with checked: false\r\n }\r\n \r\n // Prepare the collapsed state for the student\r\n this.prepareCollapsedForStudent();\r\n \r\n // Check if autoSelectFirstClassroom is true\r\n if (this.autoSelectFirstClassroom) {\r\n // Check if filteredClassRooms is not null or empty\r\n if (this.filteredClassRooms && !this.generalService.isNullishObject(this.filteredClassRooms)) {\r\n // Log the first element of filteredClassRooms to the console\r\n console.log(this.filteredClassRooms[0]);\r\n // Call classRoomSelected method with the first element of filteredClassRooms\r\n this.classRoomSelected(this.filteredClassRooms[0]);\r\n }\r\n } else {\r\n // Check if the user is a teacher\r\n if (this.authService.isTeacher) {\r\n // Call addMyFilesClass method\r\n this.addMyFilesClass();\r\n }\r\n }\r\n \r\n // Check if scrollPanel exists\r\n if (this.scrollPanel) {\r\n // Call refresh method on scrollPanel\r\n this.scrollPanel.refresh();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.prepareCollapsedForStudent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n get hasSelectedClassroom() {\r\n return Object.keys(this.selectedClassroom).length > 0;\r\n }\r\n\r\n onMyFilesSelected() {\r\n this.addMyFilesClass();\r\n this.selectedClassroom = {} as Classroom;\r\n this.myFilesSelected.emit(true);\r\n if (!this.generalService.isNullishObject(this.dayOverlayPanel)) {\r\n this.dayOverlayPanel.hide();\r\n }\r\n }\r\n\r\n classRoomSelected(classroom: Classroom) {\r\n if (this.authService.isTeacher) {\r\n this.removeMyFilesClass();\r\n }\r\n this.selectedClassroom = classroom;\r\n this.classroomSelected.emit(classroom);\r\n if (!this.generalService.isNullishObject(this.dayOverlayPanel)) {\r\n this.dayOverlayPanel.hide();\r\n }\r\n }\r\n\r\n removeClass() {\r\n [].forEach.call(document.getElementsByClassName('classroom-title'), (el: any) => {\r\n el.classList.remove('link-main-color-active');\r\n })\r\n }\r\n\r\n addMyFilesClass() {\r\n if (this.myFilesDiv && this.myFilesDiv.nativeElement) {\r\n this.myFilesDiv.nativeElement!.classList.add('link-main-color-active')\r\n }\r\n // document.getElementById('my-files')!.classList.add('link-main-color-active');\r\n }\r\n\r\n removeMyFilesClass() {\r\n const myFilesElement = document.getElementById('my-files');\r\n if (myFilesElement && myFilesElement.classList.contains('link-main-color-active')) {\r\n myFilesElement.classList.remove('link-main-color-active');\r\n }\r\n }\r\n\r\n collapseNotesLeftSide() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.collapsed.emit(this.isCollapsed);\r\n }\r\n\r\n toggleSwitch(event: { checked: boolean }) {\r\n if (!event.checked) {\r\n this.filteredClassRooms = this.classrooms.filter((el: Classroom) => el.status.toLowerCase() === this.classroomService.ClassroomStatuses.ON_GOING.toLowerCase());\r\n }\r\n else {\r\n this.filteredClassRooms = this.classrooms;\r\n }\r\n }\r\n\r\n prepareCollapsedForStudent() {\r\n if (this.authService.isStudent && this.filteredClassRooms && this.filteredClassRooms.length === 1) {\r\n // this.isCollapsed = false;\r\n this.collapseNotesLeftSide();\r\n }\r\n }\r\n\r\n toggleDropdown(event: Event) {\r\n event.stopPropagation(); // prevent the click event from bubbling up to the parent element\r\n const dropdown = document.querySelector('.dropdown-content');\r\n dropdown!.classList.toggle('show');\r\n }\r\n\r\n}\r\n","
  • \r\n {{classroom?.id}}\r\n \r\n \r\n \r\n
    \r\n
    \r\n {{getFileName(classroomFile.name)}}\r\n
    \r\n
    \r\n \r\n
    \r\n 0\" width=\"10\">\r\n \r\n {{ getUniqueSharedUsers() }}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{category}}\r\n \r\n
    1\">\r\n \r\n \r\n +{{classroomFile.categories.length - 1}}\r\n \r\n \r\n \r\n 2\" class=\"font-xs text-muted mt-2 more-circle\"\r\n [pTooltip]=\"(classroomFile.categories | slice:2).join(', ')\"\r\n tooltipPosition=\"top\">\r\n +{{classroomFile.categories.length - 2}}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n\r\n
  • \r\n\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { take } from 'rxjs/operators';\r\nimport { Classroom } from 'src/app/core/models/classroom.model';\r\nimport { LibraryService } from 'src/app/core/services/library.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { LibraryFileActionsDialogComponent } from '../library-file-actions-dialog/library-file-actions-dialog.component';\r\nimport { Folder, LibraryFile } from 'src/app/core/models/library.model';\r\nimport { User } from 'src/app/core/models/user.model';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\n\r\n@Component({\r\n selector: 'app-library-file-row-item',\r\n templateUrl: './library-file-row-item.component.html',\r\n styleUrls: ['./library-file-row-item.component.scss'],\r\n providers: [DialogService]\r\n})\r\nexport class LibraryFileRowItemComponent implements OnInit, OnDestroy {\r\n\r\n @Input() classroom = {} as Classroom;\r\n @Input() classroomFile: any = {} as any;\r\n @Input() folders: any;\r\n @Input() appendDialogActionsTo = 'allFiles';\r\n @Input() showGroupActions = false;\r\n @Input() hasLimitedOptions = false;\r\n @Input() availableActions: string[] = [] as string[];\r\n @Input() isSmallScreen = false;\r\n @Input() showSharedWithUsers = true;\r\n @Input() isInTab = false;\r\n @Input() classroomStudents: any;\r\n\r\n @Output() fileDeleted = new EventEmitter();\r\n @Output() libraryChecked = new EventEmitter();\r\n @Output() fileUnshared = new EventEmitter();\r\n libraryFiles: any;\r\n StudentIdsToSend: string[] = [];\r\n isDisabled = false;\r\n isDisabledWholeClass = false;\r\n fileURL: string | undefined;\r\n moveFileId = 0;\r\n moveFolderId = 0;\r\n isMoveRadioCheked = false;\r\n showRename: boolean = false;\r\n refs: DynamicDialogRef[] = [];\r\n private subs = new SubSink();\r\n checked: boolean = false;\r\n sharedWithUsers = [];\r\n menuItems: MenuItem[] = [];\r\n isLarge = false;\r\n hasMultipleCategoriesSlice = 1;\r\n constructor(\r\n public libraryService: LibraryService,\r\n private generalService: GeneralService,\r\n private dialogService: DialogService,\r\n private toastService: ToastService,\r\n private authService: AuthService,\r\n private http: HttpClient,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.showSharedWithUsers) {\r\n this.getUsersLibraryHasBeenSharedWith();\r\n }\r\n this.subs.sink = this.libraryService.showGroupActions.subscribe(res => {\r\n if (!res) {\r\n this.checked = false;\r\n }\r\n // if (this.libraryService.isPreviewingFromChat()) {\r\n // this.checked = true;\r\n // }\r\n });\r\n \r\n this.subs.add(this.generalService.deviceKind.pipe().subscribe(res => {\r\n if (res) {\r\n if (res.w768up) {\r\n this.isLarge = true;\r\n this.hasMultipleCategoriesSlice = 2;\r\n }\r\n }\r\n }));\r\n this.prepareMenuItemsForItem(this.classroomFile);\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onSelect(studentId: string) {\r\n this.isDisabled = false;\r\n if (this.StudentIdsToSend.indexOf(studentId) !== -1)\r\n this.StudentIdsToSend.splice(this.StudentIdsToSend.indexOf(studentId), 1);\r\n else\r\n this.StudentIdsToSend.push(studentId);\r\n\r\n if (this.isDisabledWholeClass && this.StudentIdsToSend.length === 0)\r\n this.isDisabledWholeClass = false;\r\n else\r\n this.isDisabledWholeClass = true;\r\n }\r\n\r\n showMoveFilePopup(fileId: any) {\r\n document.getElementById('lib-file-share-menu-' + fileId)!.style.display = 'none';\r\n document.getElementById('lib-file-move-menu-' + fileId)!.style.display = 'block';\r\n document.getElementById('lib-file-move-menu-' + fileId)!.style.top = '55%';\r\n }\r\n\r\n // openSharedByFileMenu(fileId: any) {\r\n // alert(fileId);\r\n // [].forEach.call(document.getElementsByClassName('lib-file-sharedby-menu'), (el: any) => {\r\n // el.style.display = 'none';\r\n // })\r\n // setTimeout(() => {\r\n // document.getElementById('lib-file-sharedby-menu-' + fileId)!.style.display = 'flex';\r\n // document.getElementById('lib-file-sharedby-menu-' + fileId)!.style.top = (880 + document.getElementById('lib-file-sharedby-menu-' + fileId)!.offsetTop) + \"px\";\r\n // }, 100);\r\n // // this.showShare = true;\r\n // }\r\n\r\n // showSharedByMoveFilePopup(fileId: any) {\r\n // document.getElementById('lib-file-sharedby-move-menu-' + fileId)!.style.display = 'block';\r\n // document.getElementById('lib-file-sharedby-move-menu-' + fileId)!.style.top = '55%';\r\n // }\r\n\r\n getFileName(path: string) {\r\n if (path) {\r\n let n = path.lastIndexOf(\"/\");\r\n if (n === -1)\r\n n = path.lastIndexOf(\"\\\\\");\r\n let result = path.substring(n + 1);\r\n return result;\r\n }\r\n return path\r\n }\r\n\r\n prepareMenuItemsForItem(item: any) {\r\n let context: LibraryFile = item;\r\n\r\n const menuItems: MenuItem[] = [\r\n {\r\n label: 'View', icon: 'pi pi-fw pi-external-link',\r\n command: (event) => {\r\n this.openFileInNewTab(context.path);\r\n }\r\n },\r\n {\r\n label: 'Copy URL', icon: 'pi pi-fw pi-copy',\r\n command: (event) => {\r\n this.copyURL(context.path);\r\n }\r\n },\r\n {\r\n label: 'Download', icon: 'pi pi-fw pi-cloud-download',\r\n command: (event) => {\r\n this.downloadFile(context.path);\r\n }\r\n },\r\n {\r\n label: 'Share', icon: 'pi pi-fw pi-share-alt',\r\n command: (event) => {\r\n if (this.authService.isStudent) {\r\n this.shareWithTeacher(context);\r\n } else {\r\n const currentSelectedClassroom = this.libraryService.getCurrentSelectedClassroom()\r\n if (Object.keys(currentSelectedClassroom).length > 0) {\r\n const classroomStudents = this.libraryService.getCurrentSelectedClassroom().classroomStudents;\r\n // if only one student, share immediately\r\n if (classroomStudents.length === 1 && this.authService.isTeacher) {\r\n let send: any = {\r\n fileIds: [context.fileId],\r\n classroomId: this.libraryService.getCurrentSelectedClassroom().id,\r\n studentIds: [classroomStudents[0].aspUserId]\r\n }\r\n this.sendShareToApi(send);\r\n }\r\n } else {\r\n this.openDialogWithComponent(LibraryFileActionsDialogComponent,\r\n {\r\n action: 'shareWith',\r\n dialogsubTitle: 'Share \"' + this.getFileName(context.name) + '\" with...',\r\n dialogTitle: 'Share file with...',\r\n libraryFile: context\r\n });\r\n }\r\n\r\n console.log(this.libraryService.getCurrentSelectedClassroom().classroomStudents);\r\n // this.openDialogWithComponent(LibraryFileActionsDialogComponent,\r\n // {\r\n // action: 'shareWith',\r\n // dialogsubTitle: 'Share \"' + this.getFileName(context.name) + '\" with...',\r\n // dialogTitle: 'Share file with...',\r\n // libraryFile: context\r\n // });\r\n }\r\n }\r\n },\r\n {\r\n label: 'Unshare', icon: 'pi pi-fw pi-share-alt',\r\n command: (event) => {\r\n let send: any = {\r\n fileId: this.classroomFile.fileId!,\r\n classroomId: this.libraryService.getCurrentSelectedClassroom().id,\r\n studentIds: [this.libraryService.getCurrentSelectedClassroom().teacher?.aspUserId]\r\n }\r\n if (this.authService.isStudent) {\r\n this.sendUnShareToApi(send);\r\n } else {\r\n \r\n this.sendUnShareToApi(send);\r\n // this.openDialogWithComponent(LibraryFileActionsDialogComponent,\r\n // {\r\n // action: 'unShareWith',\r\n // dialogsubTitle: 'Share \"' + this.getFileName(context.name) + '\" with...',\r\n // dialogTitle: 'Share file with...',\r\n // libraryFile: context\r\n // });\r\n }\r\n }\r\n },\r\n {\r\n label: 'Move', icon: 'pi pi-fw pi-folder-open',\r\n command: (event) => {\r\n this.openDialogWithComponent(LibraryFileActionsDialogComponent,\r\n {\r\n action: 'move',\r\n dialogsubTitle: 'Move \"' + this.getFileName(context.name) + '\" to folder...',\r\n dialogTitle: 'Move file to folder',\r\n libraryFile: context,\r\n folders: this.folders\r\n });\r\n }\r\n },\r\n {\r\n label: 'Edit', icon: 'pi pi-fw pi-file-edit',\r\n command: (event) => {\r\n this.generalService.openDialogWithComponent(this.dialogService, LibraryFileActionsDialogComponent, 440,\r\n {\r\n action: 'editFileLevelsCategories',\r\n dialogsubTitle: '',\r\n dialogTitle: 'Edit Library File',\r\n libraryFile: context,\r\n }, null, (result: any) => {\r\n console.log(result);\r\n if (result && result.action === 'editFileLevelsCategories') {\r\n if (!this.generalService.isNullishObject(result)) {\r\n\r\n console.log(this.classroomFile);\r\n console.log(result);\r\n this.classroomFile = { ...result.result };\r\n context = { ...result.result };\r\n }\r\n }\r\n });\r\n }\r\n },\r\n {\r\n label: 'Delete', icon: 'pi pi-fw pi-trash',\r\n command: (event) => {\r\n this.deleteFile(item.fileId);\r\n }\r\n }\r\n ];\r\n\r\n this.menuItems = menuItems.filter((menuItem: MenuItem) => {\r\n const menuLabel = menuItem.label as string;\r\n return this.availableActions.includes(menuLabel);\r\n });\r\n\r\n }\r\n\r\n showSharePopup(fileId: number) {\r\n document.getElementById('lib-file-move-menu-' + fileId)!.style.display = 'none';\r\n document.getElementById('lib-file-share-menu-' + fileId)!.style.display = 'block';\r\n document.getElementById('lib-file-share-menu-' + fileId)!.style.top = '25%';\r\n }\r\n\r\n rename(fileId: number, newName: string) {\r\n // const input = document.getElementById('fileName') as HTMLInputElement | null;\r\n // console.log(input?.value)\r\n // this.classroomFile.name = input!.value\r\n this.subs.add(this.libraryService.updateLibraryFileName(fileId, newName).pipe(take(1)).subscribe(res => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'File name name has been updated.'\r\n });\r\n console.log(res)\r\n // this.showRename = !this.showRename\r\n }));\r\n }\r\n\r\n checkLibraryItem(el: any) {\r\n this.checked = !this.checked;\r\n // let bg = this.checked ? '#2d2a4b' : 'white';\r\n // el!.style.backgroundColor = bg;\r\n if (this.checked) {\r\n this.libraryService.checkedLibraries.push(this.classroomFile);\r\n this.libraryChecked.emit({ checked: true, file: this.classroomFile })\r\n } else {\r\n this.libraryService.checkedLibraries = this.libraryService.checkedLibraries.filter((el: LibraryFile) => {\r\n return !(el.path == this.classroomFile.path)\r\n });\r\n this.libraryChecked.emit({ checked: false, file: this.classroomFile })\r\n }\r\n }\r\n\r\n getUniqueSharedUsers(): string {\r\n // exclude from sharedWithUsers if not in classroomStudents\r\n const filteredUsers = this.sharedWithUsers.filter((user: User) => {\r\n return this.classroomStudents.find((student: User) => {\r\n return student.aspUserId === user.aspUserId;\r\n });\r\n });\r\n\r\n const uniqueNames = Object.values(filteredUsers.reduce((acc: any, user: any) => {\r\n if (!acc[user.aspUserId]) {\r\n acc[user.aspUserId] = user.firstName;\r\n }\r\n return acc;\r\n }, {}));\r\n return uniqueNames.join(', ');\r\n }\r\n\r\n private onWholeClassSelect() {\r\n if (this.isDisabled)\r\n this.isDisabled = false;\r\n else\r\n this.isDisabled = true;\r\n\r\n if (this.StudentIdsToSend.length === 0) {\r\n this.classroom.classroomStudents.forEach((student: { id: string; }) => {\r\n this.StudentIdsToSend.push(student.id);\r\n });\r\n }\r\n else\r\n this.StudentIdsToSend = [];\r\n }\r\n\r\n private moveFile(libraryFile: LibraryFile, moveFolder: Folder) {\r\n this.subs.add(this.libraryService.moveFileToFolder(libraryFile.fileId!, moveFolder.folderId!).subscribe((response) => {\r\n if (!this.generalService.isNullishObject(response)) {\r\n\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'File moved successfully.'\r\n });\r\n this.libraryService.setUpdateFolderListener(libraryFile, moveFolder);\r\n this.libraryService.setUpdateListener(true);\r\n }\r\n }));\r\n this.ngOnInit();\r\n }\r\n\r\n private copyURL(filePath: any) {\r\n this.fileURL = environment.apiUrl + \"/\" + filePath;\r\n const selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = this.fileURL;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'File path copied successfully.'\r\n });\r\n }\r\n\r\n private deleteFile(fileId: any) {\r\n this.fileDeleted.emit(this.classroomFile);\r\n this.ngOnDestroy();\r\n }\r\n\r\n private getUsersLibraryHasBeenSharedWith() {\r\n if (this.classroomFile.fileId) {\r\n return this.subs.add(this.libraryService.getUsersLibraryHasBeenSharedWith(this.classroomFile.fileId!).pipe(take(1)).subscribe(res => {\r\n this.sharedWithUsers = res\r\n }))\r\n }\r\n return []\r\n }\r\n\r\n private shareWithTeacher(context: any) {\r\n let send: any = {\r\n fileIds: [context.fileId],\r\n classroomId: this.libraryService.getCurrentSelectedClassroom().id,\r\n studentIds: [this.libraryService.getCurrentSelectedClassroom().teacher?.aspUserId]\r\n }\r\n this.sendShareToApi(send);\r\n }\r\n\r\n private shareLibraryFile(map: any) {\r\n console.log(this.classroomFile);\r\n map.forEach((users: User[], classroomId: number) => {\r\n let ids: string[] = []\r\n let fileIds: number[] = []\r\n for (let user of users) {\r\n ids.push(user.aspUserId!)\r\n }\r\n fileIds.push(this.classroomFile.fileId!)\r\n let send: any = {\r\n fileIds: fileIds,\r\n classroomId: classroomId,\r\n studentIds: ids\r\n }\r\n this.sendShareToApi(send);\r\n });\r\n }\r\n\r\n private unShareLibraryFile(map: any) {\r\n console.log(this.classroomFile);\r\n map.forEach((users: User[], classroomId: number) => {\r\n let ids: string[] = []\r\n let fileIds: number[] = []\r\n for (let user of users) {\r\n ids.push(user.aspUserId!)\r\n }\r\n fileIds.push(this.classroomFile.fileId!)\r\n let send: any = {\r\n fileId: this.classroomFile.fileId!,\r\n classroomId: classroomId\r\n }\r\n this.sendUnShareToApi(send);\r\n });\r\n }\r\n\r\n openFileInNewTab(url: string): void {\r\n const fileURL = environment.apiUrl + \"/\" + url;\r\n window.open(fileURL, '_blank');\r\n }\r\n\r\n private sendShareToApi(sendParams: any) {\r\n this.subs.add(this.libraryService.shareFileWithClassUsers(sendParams).pipe(take(1)).subscribe(res => {\r\n\r\n console.log(this.classroom);\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Library file has been shared.'\r\n });\r\n if (this.authService.isTeacher) {\r\n this.libraryService.setCurrentSelectedClassroomId(parseInt(sendParams.classroomId));\r\n }\r\n }));\r\n }\r\n\r\n private sendUnShareToApi(sendParams: any) {\r\n console.log(this.classroom);\r\n this.subs.add(this.libraryService.unShareLibrary(sendParams).pipe(take(1)).subscribe(res => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Library file has been unshared.'\r\n });\r\n this.fileUnshared.emit(res);\r\n this.libraryService.setCurrentSelectedClassroomId(parseInt(sendParams.classroomId));\r\n }));\r\n }\r\n\r\n private openDialogWithComponent(component: any, dialogData?: any, width = 360) {\r\n\r\n this.generalService.openDialogWithComponent(this.dialogService, component, 400, dialogData, null, (result: any) => {\r\n if (result && result.action === 'shareWith') {\r\n this.shareLibraryFile(result.map.map);\r\n } else if (result && result.action === 'unShareWith') {\r\n this.unShareLibraryFile(result.map.map);\r\n } else if (result && result.action === 'move') {\r\n this.moveFile(result.libraryFile, result.folder);\r\n }\r\n });\r\n\r\n // this.refs.forEach(ref => ref.close());\r\n // this.refs = [];\r\n // const element = document.querySelector('#' + this.appendDialogActionsTo);\r\n // const rect = element!.getBoundingClientRect();\r\n // const centerX = rect.left + rect.width / 2 - width / 2;\r\n // const centerY = rect.top;\r\n // const dialogRef = (this.dialogService.open(component, {\r\n // header: '',\r\n // width: width + 'px',\r\n // showHeader: false,\r\n // dismissableMask: true,\r\n // modal: true,\r\n // contentStyle: {\r\n // \"max-width\": \"100%\", \"max-height\": \"400px\", \"overflow\": \"auto\", \"border-radius\": \"10px\", \"padding\": \"0px\",\r\n // },\r\n // style: { 'left': `${centerX}px`, 'top': `${centerY}px`, 'position': `fixed` },\r\n // baseZIndex: 10000,\r\n // maskStyleClass: 'transparent-mask',\r\n // data: { dialogData: dialogData },\r\n // }));\r\n // this.refs.push(dialogRef);\r\n // dialogRef.onClose.subscribe((data: any) => {\r\n // console.log('Dialog closed with data:', data);\r\n // if (data) {\r\n // switch (data.action) {\r\n // case 'rename':\r\n // this.rename(data.libraryFile.fileId, data.libraryFile.name);\r\n // break;\r\n // case 'shareWith':\r\n // this.shareLibraryFiles(data.map.map);\r\n // break;\r\n // case 'move':\r\n // this.moveFile(data.libraryFile.fileId, data.folder.folderId);\r\n // break;\r\n\r\n // default:\r\n // break;\r\n // }\r\n // }\r\n // });\r\n }\r\n \r\n private downloadFile(url: string): void {\r\n const fileURL = environment.apiUrl + \"/\" + url;\r\n this.subs.add(this.http.get(fileURL, { responseType: 'blob' })\r\n .subscribe((blob: Blob) => { // Specify the type of blob as Blob\r\n const link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = this.getFileName(fileURL);\r\n link.click();\r\n }));\r\n }\r\n\r\n}\r\n","\r\n\r\n
    \r\n\r\n
    {{folder.name}}
    \r\n
    ","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { Folder } from \"src/app/core/models/library.model\";\r\n\r\n@Component({\r\n selector: \"app-single-library-folder-item\",\r\n templateUrl: \"./single-library-folder-item.component.html\",\r\n styleUrls: [\"./single-library-folder-item.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SingleLibraryFolderItemComponent implements OnInit {\r\n @Input() hasLimitedOptions = false;\r\n @Input() folder = {} as Folder;\r\n @Output() deleteFolder = new EventEmitter();\r\n @Output() openFolder = new EventEmitter();\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n getFolderContextMenu(item: any): MenuItem[] {\r\n const context = item;\r\n return [\r\n {\r\n label: \"Delete folder\",\r\n icon: \"pi pi-fw pi-trash\",\r\n command: (event) => {\r\n this.deleteFolder.emit(context);\r\n },\r\n },\r\n ];\r\n }\r\n\r\n openFolderClicked() {\r\n this.openFolder.emit(this.folder);\r\n }\r\n}\r\n","\r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n 1\">\r\n 4\" (onChange)=\"onTabChangeFilterFilesPerStudent($event)\" class=\"w-full\">\r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Share\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Move\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Delete\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Share\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n {{libraryToAdd.folder.name}}\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n\r\n\r\n
    \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n\r\n 1\" (click)=\"openFolder(folderPath[folderPath.length-2])\"\r\n src=\"/assets/icons/arr-left.svg\" height=\"18\" class=\"pointer\">\r\n  \r\n\r\n \r\n
    \r\n\r\n \r\n  \r\n\r\n \r\n  \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"file\r\n

    \r\n \r\n No files found.\r\n \r\n \r\n No files found.\r\n \r\n

    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n

    \r\n \r\n Upload your first file!\r\n

    \r\n
    \r\n
    \r\n
    0\">\r\n
      \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n\r\n hi\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { filter, switchMap, take, tap } from 'rxjs/operators';\r\nimport { Classroom, ClassroomType } from 'src/app/core/models/classroom.model';\r\nimport { HomeworkTask } from 'src/app/core/models/homework.model';\r\nimport { Folder, FoldersWithFiles, Library, LibraryFile, UploadFilesToFolderRequest } from 'src/app/core/models/library.model';\r\nimport { User, UserRole } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ClassroomService } from 'src/app/core/services/classroom.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { LibraryService } from 'src/app/core/services/library.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SubSink } from 'subsink';\r\nimport {MessageService} from 'primeng/api';\r\nimport { forkJoin } from 'rxjs';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { LibraryFileActionsDialogComponent } from '../library-file-actions-dialog/library-file-actions-dialog.component';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { FilterPipe } from 'src/app/core/pipes/filter.pipe';\r\n\r\n@Component({\r\n selector: 'app-single-library',\r\n templateUrl: './single-library.component.html',\r\n styleUrls: ['./single-library.component.scss'],\r\n providers: [DialogService, FilterPipe]\r\n})\r\nexport class SingleLibraryComponent implements OnInit {\r\n\r\n @ViewChild('addLibrary', {static: true}) public addLibrary: any;\r\n @ViewChild('leftSide', {static: true}) public leftSide: any;\r\n @ViewChild('mainWrapper', {static: true}) public mainWrapper: any;\r\n \r\n @Input() showHeader = true;\r\n teacherClassrooms: any;\r\n sharedByMeLibFolders: any;\r\n sharedWithMeLibFolders: any;\r\n isMyFiles = false;\r\n showShare: boolean = false;\r\n StudentIdsToSend: string[] = [];\r\n folderPath: Folder[] = [this.libraryService.rootFolder];\r\n fileURL: string | undefined;\r\n classroomId: number | undefined;\r\n isDisabled = false;\r\n isDisabledWholeClass = false;\r\n isMoveRadioCheked = false;\r\n moveFileId = 0;\r\n moveFolderId = 0; \r\n items!: MenuItem[];\r\n UserRoles = UserRole;\r\n public role: string = \"\";\r\n public loggedInUser: User = {} as User;\r\n @Input() inHomework: boolean = false;\r\n @Input() task: HomeworkTask = {} as HomeworkTask;\r\n @Input() classroomIdToAddLib: number = 0;\r\n @Input() classroomStudents: any;\r\n @Input() withClassroom = false;\r\n @Input() canUpload = true;\r\n @Input() canShare = true;\r\n @Input() hasLimitedOptions = false;\r\n @Input() availableActions = [];\r\n @Input() leftSideHeight!: number;\r\n @Input() libraryTitle = 'My Files';\r\n @Input() isInTab = false;\r\n @Input() extraGradientClass = 'purple';\r\n @Input() fileListHeight = 0;\r\n \r\n\r\n private subs = new SubSink()\r\n term: any;\r\n showFilters: boolean = false;\r\n showGroupActions: boolean = false;\r\n showAddLibrary: boolean = false;\r\n foldersWithFiles: FoldersWithFiles[] = [];\r\n @Input() allLibrariesWithFiles: FoldersWithFiles[] = [];\r\n @Input() title: string = \"\";\r\n currentPathLibraries: Library[] = [];\r\n innerFolders: Folder[] = [];\r\n libraryToAdd: Library = {} as Library;\r\n folderName: string = \"\";\r\n showInput: boolean = false;\r\n user: User = {} as User;\r\n folders: Folder[] = []\r\n inClassroom: boolean = true;\r\n showingMine: boolean = true;\r\n files: LibraryFile[] = [];\r\n filteredFiles: LibraryFile[] = [];\r\n libsSharedWith: FoldersWithFiles[] = [];\r\n libsSharedBy: FoldersWithFiles[] = [];\r\n studentsToShareWith: any[] = [];\r\n deleteFolderConfirmData = {\r\n showDialog: false,\r\n message: 'Delete folder?'\r\n }\r\n deleteFileConfirmData = {\r\n showDialog: false,\r\n message: 'Delete File?'\r\n }\r\n deleteMultipleFilesConfirmData = {\r\n showDialog: false,\r\n message: 'Delete selected files?'\r\n }\r\n isLeftsideCollapsed: any;\r\n checkedLibraryFiles: LibraryFile[] = [];\r\n isSmallScreen = false;\r\n currentUploadFolder = {} as Folder;\r\n classroomStudentsIds = [];\r\n constructor(\r\n private libraryService: LibraryService,\r\n private classroomService: ClassroomService,\r\n private generalService: GeneralService,\r\n public authService: AuthService,\r\n private confirmationService: ConfirmationService,\r\n private toastService: ToastService,\r\n private layoutService: LayoutService,\r\n private dialogService: DialogService,\r\n private userService: UserService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n // if (this.libraryService.isPreviewingFromChat()) {\r\n // this.libraryService.setGroupActions(true);\r\n // }\r\n // set unique student ids...\r\n if (this.classroomStudents) {\r\n this.classroomStudents = Array.from(new Set(this.classroomStudents.map((student: any) => student.aspUserId)))\r\n .map(aspUserId => this.classroomStudents.find((student: any) => student.aspUserId === aspUserId)) as User[];\r\n this.classroomStudentsIds = this.classroomStudents.map((student: any) => student.aspUserId);\r\n }\r\n if (this.classroomStudents && this.classroomStudents.length === 1) {\r\n this.setStudentsToShareWith(this.classroomStudents[0].aspUserId);\r\n }\r\n this.oncollapseNotesLeftSideChanged(true);\r\n console.log(this.classroomIdToAddLib);\r\n // this.generalService.slideNativeElements(true, this.addLibrary.nativeElement);\r\n this.loggedInUser = this.authService.getLoggedInUser();\r\n this.role = this.authService.getUserRole();\r\n this.items = [\r\n {\r\n label: 'Add New', icon: 'pi pi-fw pi-plus',\r\n command: (event) => {\r\n }\r\n },\r\n { label: 'Remove', icon: 'pi pi-fw pi-minus' }\r\n ];\r\n\r\n this.subs.sink = this.generalService.deviceKind.subscribe(deviceKind => {\r\n this.isSmallScreen = !deviceKind.w768up;\r\n });\r\n\r\n this.subs.sink = this.libraryService.showGroupActions.subscribe(res => {\r\n this.showGroupActions = res\r\n })\r\n\r\n this.subs.sink = this.layoutService.sideMenuHeight.subscribe((res) => {\r\n // this.leftSide.nativeElement.style.maxHeight = (res - 100 + 'px');\r\n // this.mainWrapper.nativeElement.style.height = (res -60 + 'px');\r\n\r\n // this.classroomWrapper.nativeElement.style.height = (res - extraHeight.wrapper + 'px');\r\n // this.scrollHeight = (res - extraHeight.scrollWrapper + 'px');/assets/icons/library/arrow-left.svg\r\n });\r\n\r\n this.subs.sink = this.libraryService.updateFolderListener.subscribe(res => {\r\n if (res.folder.folderId! > 0) {\r\n for (let lib of this.allLibrariesWithFiles) {\r\n let found: boolean = false;\r\n for (let file of lib.libraryFiles) {\r\n if (file.fileId == res.libraryFile.fileId) {\r\n found = true;\r\n }\r\n }\r\n if (found) {\r\n lib.folderId = res.folder.folderId!\r\n lib.name = res.folder.name\r\n lib.parent = res.folder.parent\r\n }\r\n }\r\n\r\n this.openFolder(this.libraryToAdd.folder);\r\n }\r\n })\r\n\r\n this.initOpenFolderListener();\r\n\r\n this.getClassRooms();\r\n\r\n // IRAKLIS SOURCE\r\n\r\n this.subs.sink = this.libraryService.updateListener.subscribe(res => {\r\n if (res) {\r\n this.getFoldersWithFiles();\r\n }\r\n })\r\n\r\n this.subs.sink = this.libraryService.deleteListener.subscribe(res => {\r\n if (res > 0) {\r\n\r\n for (let lib of this.allLibrariesWithFiles) {\r\n let found: boolean = false;\r\n for (let file of lib.libraryFiles) {\r\n if (file.fileId == res) {\r\n found = true;\r\n }\r\n }\r\n if (found) {\r\n lib.libraryFiles = lib.libraryFiles.filter(el => el.fileId != res)\r\n }\r\n }\r\n\r\n this.getFoldersWithFiles();\r\n }\r\n })\r\n this.libraryToAdd = this.libraryService.initializeEmptyLibraryObject()\r\n this.user = this.authService.getLoggedInUser();\r\n this.role = this.user.role!\r\n }\r\n\r\n ngOnChanges() {\r\n this.initFiles();\r\n this.getFoldersWithFiles();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.libraryService.setGroupActions(false);\r\n }\r\n\r\n openShareDialog() {\r\n if (this.checkedLibraryFiles.length === 0) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please choose at least one file!'\r\n });\r\n return;\r\n }\r\n this.libraryService.openDialogWithComponent(this.dialogService, LibraryFileActionsDialogComponent, 400, \r\n {\r\n action: 'shareWithMultiple',\r\n dialogsubTitle: 'Share multiple with...',\r\n dialogTitle: 'Share file with...',\r\n }, 'allFiles', (result: any) => {\r\n if (result && result.action === 'shareWithMultiple') {\r\n this.shareLibraryFiles(result.map.map);\r\n }\r\n });\r\n }\r\n\r\n shareMultipleLibraryFiles() {\r\n }\r\n\r\n onLibraryChecked(event: any) {\r\n console.log(event);\r\n if (event.checked) {\r\n this.checkedLibraryFiles.push(event.file)\r\n } else {\r\n this.checkedLibraryFiles = this.checkedLibraryFiles.filter(el => el.path != event.file.path)\r\n }\r\n this.libraryService.checkedLibraryFiles.set(this.checkedLibraryFiles);\r\n console.log(this.checkedLibraryFiles);\r\n }\r\n\r\n shareLibraryFiles(map: any) {\r\n map.forEach((users: User[], classroomId: number) => {\r\n let ids: string[] = []\r\n let fileIds: number[] = []\r\n for (let user of users) {\r\n ids.push(user.aspUserId!)\r\n }\r\n for (let lib of this.checkedLibraryFiles) {\r\n fileIds.push(lib.fileId!)\r\n }\r\n let send: any = {\r\n fileIds: fileIds,\r\n classroomId: classroomId,\r\n studentIds: ids\r\n }\r\n this.sendShareToApi(send);\r\n });\r\n }\r\n\r\n sendShareToApi(sendParams: LibraryFile[]) {\r\n this.libraryService.shareFileWithClassUsers(sendParams).pipe(take(1)).subscribe(res => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Library has been sent.'\r\n });\r\n })\r\n }\r\n\r\n onShowAddLibrary() {\r\n this.showAddLibrary = !this.showAddLibrary\r\n this.libraryToAdd.folder = this.folderPath[this.folderPath.length - 1];\r\n // this.generalService.slideNativeElements(this.showAddLibrary, this.addLibrary.nativeElement);\r\n }\r\n\r\n deleteFolderSelected(folder: Folder) {\r\n this.deleteFolder(folder.folderId);\r\n }\r\n\r\n openFolderSelected(folder: Folder) {\r\n this.openFolder(folder);\r\n }\r\n\r\n getClassRooms(){\r\n this.subs.add(this.classroomService.getLMSUserClassrooms(this.loggedInUser.id).subscribe((response)=>{\r\n this.teacherClassrooms = response;\r\n }));\r\n }\r\n\r\n // createLibFolder(){\r\n // this.libraryService.createFolder().subscribe( (response) => {\r\n\r\n // });\r\n // }\r\n\r\n\r\n deleteLibFolder(folderId: number){\r\n this.libraryService.deleteFolder(folderId).subscribe( (response) => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Folder Deleted successfully.'\r\n });\r\n });\r\n }\r\n\r\n getFileName(path: string) {\r\n if (path) {\r\n let n = path.lastIndexOf(\"/\");\r\n if(n === -1)\r\n n = path.lastIndexOf(\"\\\\\");\r\n let result = path.substring(n + 1);\r\n return result;\r\n }\r\n return path\r\n }\r\n\r\n showSharePopup(fileId: number){\r\n document.getElementById('lib-file-move-menu-' + fileId)!.style.display = 'none';\r\n document.getElementById('lib-file-share-menu-' + fileId)!.style.display = 'block';\r\n document.getElementById('lib-file-share-menu-' + fileId)!.style.top = '25%';\r\n }\r\n \r\n // shareLibraryFiles(fileId: number, classroomID: number) {\r\n // let fileIds = []\r\n // fileIds.push(fileId)\r\n // let body: any = {\r\n // fileIds: fileIds,\r\n // classroomId: this.classroomId,\r\n // studentIds: this.StudentIdsToSend\r\n // }\r\n // if (this.StudentIdsToSend.length === 0){\r\n\r\n // }\r\n // else{\r\n // this.libraryService.shareFileWithClassUsers(body).pipe(take(1)).subscribe(res => {\r\n\r\n // })\r\n // }\r\n // this.ngOnInit();\r\n // }\r\n\r\n onFolderSelect(fileId: any, folderId: any){\r\n this.isMoveRadioCheked = true;\r\n this.moveFileId = fileId;\r\n this.moveFolderId = folderId;\r\n }\r\n\r\n moveFile(){\r\n this.moveFileAPI(this.moveFileId, this.moveFolderId);\r\n // this.libraryService.moveFileToFolder(this.moveFileId, this.moveFolderId).subscribe( (response) => {\r\n // this.toastService.setShowToastmessage({\r\n // severity: 'success',\r\n // summary: '',\r\n // detail: 'File moved successfully.'\r\n // });\r\n // });\r\n this.ngOnInit();\r\n }\r\n\r\n // IRAKLIS SOURCE\r\n\r\n initFiles() {\r\n this.filteredFiles = [];\r\n let i = 0;\r\n for (let folderWithFiles of this.foldersWithFiles) {\r\n for (let libraryFile of folderWithFiles.libraryFiles) {\r\n libraryFile.dummyId = i;\r\n i++;\r\n this.filteredFiles.push(libraryFile)\r\n }\r\n }\r\n this.files = this.filteredFiles;\r\n }\r\n\r\n getFoldersWithFiles() {\r\n this.initializeFilesWithFolders(this.allLibrariesWithFiles);\r\n }\r\n\r\n initializeFilesWithFolders(res: FoldersWithFiles[]) {\r\n this.allLibrariesWithFiles = res;\r\n this.folders = [];\r\n for (const lib of this.allLibrariesWithFiles) {\r\n const folder: Folder = {\r\n name: lib.name,\r\n parent: lib.parent,\r\n folderId: lib.folderId,\r\n };\r\n if (!this.folders.some(el => el.name === folder.name && el.parent === folder.parent)) {\r\n this.folders.push(folder);\r\n }\r\n }\r\n this.foldersWithFiles = this.libraryService.getLibrariesOnRootFolders(this.allLibrariesWithFiles);\r\n this.initFiles();\r\n this.getInnerFolders('home');\r\n }\r\n\r\n getInnerFolders(parent: string) {\r\n this.innerFolders = []\r\n let copyFolders = this.allLibrariesWithFiles.filter(el => el.parent == parent)\r\n for (let innerFolder of copyFolders) {\r\n if (!this.innerFolders.some(el => el.parent == innerFolder.parent && el.name == innerFolder.name)) {\r\n this.innerFolders.push(innerFolder)\r\n }\r\n }\r\n }\r\n\r\n openFolder(folder: Folder) {\r\n if (!folder) {\r\n this.getInnerFolders('home')\r\n return;\r\n }\r\n\r\n this.libraryToAdd.folder = folder\r\n console.log(this.libraryToAdd.folder);\r\n this.foldersWithFiles = this.libraryService.getLibrariesOfFolder(folder, this.allLibrariesWithFiles);\r\n this.initFiles()\r\n if (folder.name == 'home') {\r\n this.getInnerFolders('home')\r\n } else {\r\n this.getInnerFolders(folder.name)\r\n }\r\n this.folderPath = this.libraryService.getFolderPathOfFolder(folder, [], this.folders);\r\n this.folderPath.unshift(this.libraryService.rootFolder)\r\n this.libraryToAdd.folder = this.folderPath[this.folderPath.length - 1];\r\n }\r\n\r\n deleteFolder(id: any) {\r\n const folderToDelete = this.innerFolders.filter(el => el.folderId === id);\r\n this.libraryService.setFolderToDelete(folderToDelete[0]);\r\n this.deleteFolderConfirmData.showDialog = true;\r\n this.deleteFolderConfirmData.message = 'Delete the folder \"' + folderToDelete[0].name + '\"?';\r\n // this.libraryService.deleteFolder(id).pipe(take(1)).subscribe(res => {\r\n // this.innerFolders = this.innerFolders.filter(el => el.folderId != id)\r\n // console.log(this.innerFolders)\r\n\r\n // })\r\n }\r\n\r\n onRejectFolderDelete(event: any) {\r\n this.libraryService.setFolderToDelete({} as Folder);\r\n this.deleteFolderConfirmData.showDialog = false;\r\n }\r\n\r\n onAcceptFolderDelete(event: any) {\r\n this.libraryService.deleteFolder(this.libraryService.getFolderToDelete().folderId).pipe(take(1)).subscribe(res => {\r\n this.innerFolders = this.innerFolders.filter(el => el.folderId != this.libraryService.getFolderToDelete().folderId)\r\n console.log(this.innerFolders)\r\n \r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Folder has been deleted.'\r\n });\r\n this.removeFolderByFolderId(this.libraryService.getFolderToDelete())\r\n this.libraryService.setFolderToDelete({} as Folder);\r\n this.libraryService.setUpdateListener(true);\r\n })\r\n this.deleteFolderConfirmData.showDialog = false;\r\n }\r\n\r\n onTagChoosen(event: any) {\r\n let isLevel = event.isLevel;\r\n if (event.checked) {\r\n if (event.applyToAll) {\r\n for (let file of this.libraryToAdd.libraryFiles) {\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n arrLibrary.push(event.tag)\r\n }\r\n } else {\r\n let file = this.libraryToAdd.libraryFiles[event.file.index]\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n arrLibrary.push(event.tag)\r\n }\r\n } else {\r\n if (event.applyToAll) {\r\n for (let file of this.libraryToAdd.libraryFiles) {\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n let index2 = arrLibrary.findIndex(((el: string) => el == event.tag));\r\n arrLibrary.splice(index2, 1);\r\n }\r\n } else {\r\n let file = this.libraryToAdd.libraryFiles[event.file.index]\r\n let arrLibrary: string[] = isLevel ? file.levels : file.categories;\r\n let index2 = arrLibrary.findIndex(((el: string) => el == event.tag));\r\n arrLibrary.splice(index2, 1);\r\n }\r\n }\r\n }\r\n onCreateFolder() {\r\n this.libraryService.getUserCreatedLibFolders().pipe(take(1)).subscribe(res => {\r\n let found = false;\r\n for (let r of res) {\r\n if (r.parent == this.folderPath[this.folderPath.length - 1].name && r.name == this.folderName) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n this.showInput = false;\r\n let newFolder: Folder = {\r\n parent: this.folderPath[this.folderPath.length - 1].name,\r\n name: this.folderName\r\n }\r\n this.libraryService.createFolder(newFolder).pipe(take(1)).subscribe(res => {\r\n this.innerFolders.push(res)\r\n this.allLibrariesWithFiles.push({\r\n parent: this.folderPath[this.folderPath.length - 1].name,\r\n name: this.folderName,\r\n libraryFiles: [],\r\n createdBy: this.user,\r\n folderId: 10000\r\n });\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Folder created.'\r\n });\r\n this.folderName = '';\r\n this.libraryService.setUpdateListener(true);\r\n })\r\n } else {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Folder already exists.'\r\n });\r\n }\r\n })\r\n }\r\n\r\n createFolder() {\r\n this.showInput = !this.showInput;\r\n }\r\n \r\n onShowUploadDialog() {\r\n const targetElementName = this.libraryService.isPreviewingFromChat() ? 'notifications-overview' : 'mainContentColumn';\r\n const myElement = document.getElementById(targetElementName);\r\n // this.libraryToAdd = this.libraryService.initializeEmptyLibraryObject();\r\n // this.libraryToAdd.libraryFiles = [];\r\n this.userService.setNewFileUpload({});\r\n console.log(myElement!.getBoundingClientRect().width);\r\n const dialogWidth = myElement!.getBoundingClientRect().width - 10;\r\n\r\n this.generalService.openDialogWithComponent(this.dialogService, LibraryFileActionsDialogComponent, \r\n dialogWidth.toFixed(), \r\n {\r\n action: 'upload',\r\n dialogsubTitle: '',\r\n dialogTitle: 'Upload to library...',\r\n folder: this.libraryToAdd.folder,\r\n libraryToAdd: this.libraryToAdd,\r\n }, targetElementName, (result: any) => {\r\n if (result && result.action === 'upload') {\r\n console.log(result);\r\n this.libraryToAdd.libraryFiles = result.libraryFiles;\r\n this.onSubmit();\r\n // this.moveFile(result.map.map);\r\n }\r\n }, myElement!.getBoundingClientRect().height - 90 + 'px');\r\n }\r\n \r\n onSubmit() {\r\n if (this.libraryToAdd.libraryFiles.length > 0) {\r\n this.libraryToAdd.classroom = this.classroomIdToAddLib;\r\n let toSend: UploadFilesToFolderRequest = {\r\n folderId: this.libraryToAdd.folder.folderId!,\r\n classroomId: this.classroomIdToAddLib,\r\n name: this.libraryToAdd.folder.name,\r\n parent: this.libraryToAdd.folder.parent,\r\n libFiles: this.libraryToAdd.libraryFiles,\r\n StudentIds: this.studentsToShareWith\r\n }\r\n\r\n // return;\r\n if (this.classroomIdToAddLib > 0) {\r\n this.libraryService.uploadClassroomFilesToFolder(toSend).pipe(take(1)).subscribe(res => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your files have been uploaded to Classroom library.'\r\n });\r\n\r\n this.userService.setUploadFiles(true);\r\n this.mapLibraryToAddFiles(res);\r\n this.e()\r\n })\r\n } else {\r\n this.libraryService.uploadFilesToFolder(toSend).pipe(take(1)).subscribe((res: any) => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your files have been uploaded to library folder: ' + toSend.name\r\n });\r\n\r\n this.currentUploadFolder = this.innerFolders.filter(el => el.folderId === toSend.folderId)[0]\r\n this.userService.setUploadFiles(true);\r\n this.mapLibraryToAddFiles(res);\r\n this.e()\r\n console.log(this.currentUploadFolder);\r\n // this.libraryService.setOpenFolderListener(currentFolder[0]);\r\n // this.libraryService.setUpdateFolderListener(toSend.libFiles[0], currentFolder[0])\r\n \r\n })\r\n }\r\n\r\n } else {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please add files'\r\n });\r\n }\r\n }\r\n\r\n e() {\r\n\r\n this.filteredFiles.concat(this.libraryToAdd.libraryFiles)\r\n this.foldersWithFiles.push({\r\n folderId: this.libraryToAdd.folder.folderId!,\r\n name: this.libraryToAdd.folder.name,\r\n parent: this.libraryToAdd.folder.parent,\r\n libraryFiles: this.libraryToAdd.libraryFiles,\r\n createdBy: this.user\r\n })\r\n // this.getFoldersWithFiles();\r\n // this.showAddLibrary = !this.showAddLibrary\r\n // this.generalService.slideNativeElements(this.showAddLibrary, this.addLibrary.nativeElement);\r\n\r\n console.log(this.filteredFiles);\r\n this.allLibrariesWithFiles.push({\r\n folderId: this.libraryToAdd.folder.folderId!,\r\n name: this.libraryToAdd.folder.name,\r\n parent: this.libraryToAdd.folder.parent,\r\n libraryFiles: this.libraryToAdd.libraryFiles,\r\n createdBy: this.user\r\n })\r\n // this.files.push(this.files[this.files.length - 1]);\r\n this.initFiles()\r\n this.libraryToAdd = this.libraryService.initializeEmptyLibraryObject();\r\n // this.libraryToAdd.libraryFiles = [];\r\n\r\n // this.libraryService.setUpdateListener(true)\r\n this.userService.setNewFileUpload({});\r\n }\r\n\r\n // addes also fileId to a new uploaded file in the library\r\n mapLibraryToAddFiles(res: any) {\r\n this.libraryToAdd.libraryFiles = res.libFiles.map((file: {}, index: number) => ({\r\n ...file,\r\n fileId: res.fileIds![index]\r\n }));\r\n }\r\n\r\n uploadFinished(event: any) {\r\n console.log(event);\r\n this.libraryToAdd.libraryFiles?.push({ \r\n path: event.filePath.dbPath, \r\n levels: [], \r\n categories: [], \r\n name: event.filePath.dbPath, \r\n fileId: event.filePath.dbPath });\r\n }\r\n\r\n /**\r\n This method is triggered when a file is deleted from the classroom files.\r\n It filters out the deleted file from the libraryFiles array of each folder in the allLibrariesWithFiles array.\r\n @param {any} event - The event object containing the ID of the deleted file.\r\n @returns {void}\r\n */\r\n onFileDeleted(event: any) {\r\n this.deleteFileConfirmData.showDialog = true;\r\n this.deleteFileConfirmData.message = 'Delete file \"' + event.name + '\"?';\r\n // this.allLibrariesWithFiles = this.allLibrariesWithFiles..filter(file => file.fileId !== libFile.fileId);\r\n this.libraryService.setLibraryFile(event);\r\n }\r\n\r\n deleteFile(fileId : any) {\r\n this.subs.add(this.libraryService.delete(fileId).subscribe(res => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Files has been deleted successfully.'\r\n });\r\n }));\r\n }\r\n\r\n moveMultipleFiles() {\r\n if (this.checkedLibraryFiles.length === 0) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please choose at least one file!'\r\n });\r\n return;\r\n }\r\n this.libraryService.openDialogWithComponent(this.dialogService, LibraryFileActionsDialogComponent, 400, \r\n {\r\n action: 'moveMultiple',\r\n dialogsubTitle: 'Move Files to folder...',\r\n dialogTitle: 'Choose folder...',\r\n folders: this.folders\r\n }, null, (result: any) => {\r\n if (result && result.action === 'moveMultiple') {\r\n console.log(result);\r\n console.log(this.checkedLibraryFiles);\r\n this.checkedLibraryFiles.forEach(libFile => {\r\n this.moveFileAPI(libFile.fileId!, result.folder.folderId);\r\n this.libraryService.setUpdateListener(true)\r\n });\r\n // this.moveFile(result.map.map);\r\n }\r\n });\r\n }\r\n\r\n deleteMultipleFiles() {\r\n if (this.checkedLibraryFiles.length === 0) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please choose at least one file!'\r\n });\r\n return;\r\n }\r\n this.deleteMultipleFilesConfirmData.showDialog = true;\r\n this.deleteMultipleFilesConfirmData.message = 'Delete the selected files ?';\r\n }\r\n\r\n onAcceptFileDeleteMultiple(event: any) {\r\n const libFiles = this.checkedLibraryFiles;\r\n libFiles.forEach(libFile => {\r\n this.filterDelteFromLibraryFiles(libFile.fileId);\r\n this.deleteFileAPI(libFile);\r\n });\r\n this.deleteFileConfirmData.showDialog = false;\r\n this.deleteMultipleFilesConfirmData.showDialog = false;\r\n this.checkedLibraryFiles = [];\r\n }\r\n\r\n filterDelteFromLibraryFiles(...fileIds: any[]) {\r\n if (fileIds.length === 1) {\r\n this.filteredFiles = this.filteredFiles.filter(el => el.fileId !== fileIds[0]);\r\n } else {\r\n this.filteredFiles = this.filteredFiles.filter(el => !fileIds.includes(el.fileId));\r\n }\r\n }\r\n \r\n onRejectFileDelete(event: any) {\r\n this.deleteFileConfirmData.showDialog = false;\r\n this.deleteMultipleFilesConfirmData.showDialog = false;\r\n this.libraryService.setLibraryFile({} as LibraryFile);\r\n }\r\n\r\n onAcceptFileDelete(event: any) {\r\n const libFile = this.libraryService.getLibraryFile();\r\n this.filterDelteFromLibraryFiles(libFile.fileId);\r\n this.deleteFileAPI(libFile);\r\n }\r\n\r\n private deleteFileAPI(libFile: LibraryFile) {\r\n this.subs.add(this.libraryService.delete(libFile.fileId).subscribe((res: boolean) => {\r\n\r\n if (res) {\r\n this.deleteFileConfirmData.showDialog = false;\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Files has been deleted successfully..'\r\n });\r\n this.removeLibraryFileByFileId(libFile);\r\n }\r\n\r\n }));\r\n }\r\n\r\n private removeLibraryFileByFileId(libFile: LibraryFile) {\r\n this.allLibrariesWithFiles = this.allLibrariesWithFiles.map(file => {\r\n const filteredLibraryFiles = file.libraryFiles.filter(libraryFile => libraryFile.fileId !== libFile.fileId);\r\n return { ...file, libraryFiles: filteredLibraryFiles };\r\n });\r\n }\r\n\r\n private removeFolderByFolderId(folder: Folder) {\r\n this.allLibrariesWithFiles = this.allLibrariesWithFiles.filter(file => {\r\n return file.folderId !== folder.folderId;\r\n });\r\n }\r\n\r\n private moveFileAPI(fileId: number, moveFolderId: number) {\r\n this.subs.add(this.libraryService.moveFileToFolder(fileId, moveFolderId).subscribe( (response) => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'File moved successfully.'\r\n });\r\n this.checkedLibraryFiles = [];\r\n this.showGroupActions = false;\r\n // this.openFolder(this.libraryToAdd.folder);\r\n \r\n this.libraryService.setUpdateListener(true)\r\n }));\r\n }\r\n\r\n oncollapseNotesLeftSideChanged(event: any) {\r\n this.isLeftsideCollapsed = event;\r\n }\r\n\r\n setGroupActions() {\r\n this.showGroupActions = !this.showGroupActions;\r\n // this.libraryService.setGroupActions(this.showGroupActions);\r\n setTimeout(() => {\r\n // this.libraryService.setGroupActions(this.showGroupActions);\r\n }, 300);\r\n }\r\n\r\n onTabChangeFilterFilesPerStudent(event: any) {\r\n if (event.index > 0) {\r\n this.studentsToShareWith = [];\r\n const currentStudent = this.classroomStudents[event.index - 1];\r\n this.setStudentsToShareWith(this.classroomStudents[event.index - 1].aspUserId);\r\n\r\n this.filteredFiles = this.files.filter(folder =>\r\n folder.sharedWith!.id === currentStudent.aspUserId\r\n );\r\n } else {\r\n this.filteredFiles = this.files;\r\n this.setStudentsToShareWith();\r\n }\r\n }\r\n\r\n setStudentsToShareWith(studentId?: string) {\r\n this.studentsToShareWith = studentId? [studentId] : this.classroomStudents.map((user: User) => user.aspUserId);\r\n }\r\n\r\n getFilteredFiles(unique = false) {\r\n if (!unique) {\r\n return this.filteredFiles;\r\n } else {\r\n const uniqueFilteredFiles = this.filteredFiles = this.filteredFiles.filter((file, index, self) =>\r\n index === self.findIndex((f) => (\r\n f.fileId === file.fileId\r\n )));\r\n return uniqueFilteredFiles;\r\n }\r\n }\r\n\r\n onFileUnshared(event: any) {\r\n console.log(event);\r\n this.libraryService.setUpdateListener(true)\r\n }\r\n\r\n initOpenFolderListener() {\r\n this.subs.sink = this.libraryService.libraryUpdatedListener.subscribe((res: boolean) => {\r\n if ((res && this.currentUploadFolder)) {\r\n if (!this.generalService.isNullishObject(this.currentUploadFolder)) {\r\n\r\n this.openFolder(this.currentUploadFolder);\r\n console.log(this.libraryToAdd.folder);\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n}","\r\n\r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    ","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { filter, startWith, switchMap, take, tap } from 'rxjs/operators';\r\nimport { Classroom, ClassroomType } from 'src/app/core/models/classroom.model';\r\nimport { HomeworkTask } from 'src/app/core/models/homework.model';\r\nimport { Folder, FoldersWithFiles, Library, LibraryFile, UploadFilesToFolderRequest } from 'src/app/core/models/library.model';\r\nimport { User, UserRole } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ClassroomService } from 'src/app/core/services/classroom.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { LibraryService } from 'src/app/core/services/library.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SubSink } from 'subsink';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-library',\r\n templateUrl: './library.component.html',\r\n styleUrls: ['./library.component.scss'],\r\n providers: [ConfirmationService],\r\n})\r\nexport class LibraryComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('addLibrary', { static: true }) public addLibrary: any;\r\n @ViewChild('leftSide', { static: true }) public leftSide = {} as ElementRef;\r\n @ViewChild('mainWrapper', { static: true }) public mainWrapper = {} as ElementRef;\r\n\r\n @Input() showHeader = true;\r\n teacherClassrooms: any;\r\n sharedByMeLibFolders: any;\r\n sharedWithMeLibFolders: any;\r\n classroomFiles: any;\r\n classroomStudents: any;\r\n isMyFiles = false;\r\n showShare: boolean = false;\r\n StudentIdsToSend: string[] = [];\r\n folderPath: Folder[] = [this.libraryService.rootFolder];\r\n fileURL: string | undefined;\r\n classroomId: number | undefined;\r\n isDisabled = false;\r\n isDisabledWholeClass = false;\r\n isMoveRadioCheked = false;\r\n moveFileId = 0;\r\n moveFolderId = 0;\r\n items!: MenuItem[];\r\n UserRoles = UserRole;\r\n public role: string = \"\";\r\n public loggedInUser: User = {} as User;\r\n @Input() inHomework: boolean = false;\r\n @Input() task: HomeworkTask = {} as HomeworkTask;\r\n @Input() classroomIdToAddLib: number = 0;\r\n @Input() selectedClassroom = {} as Classroom;\r\n\r\n private subs = new SubSink()\r\n term: any;\r\n showFilters: boolean = false;\r\n showGroupActions: boolean = false;\r\n showAddLibrary: boolean = false;\r\n foldersWithFiles: FoldersWithFiles[] = [];\r\n @Input() allLibrariesWithFiles: FoldersWithFiles[] = [];\r\n @Input() title: string = \"\";\r\n currentPathLibraries: Library[] = [];\r\n innerFolders: Folder[] = [];\r\n libraryToAdd: Library = {} as Library;\r\n folderName: string = \"\";\r\n showInput: boolean = false;\r\n user: User = {} as User;\r\n folders: Folder[] = []\r\n inClassroom: boolean = true;\r\n showingMine: boolean = true;\r\n files: LibraryFile[] = [];\r\n libsSharedWith: FoldersWithFiles[] = [];\r\n libsSharedBy: FoldersWithFiles[] = [];\r\n deleteFolderConfirmData = {\r\n showDialog: false,\r\n message: 'Delete folder?'\r\n }\r\n deleteFileConfirmData = {\r\n showDialog: false,\r\n message: 'Delete File?'\r\n }\r\n isLoading = true;\r\n isLarge = false;\r\n isLeftsideCollapsed: any;\r\n myLibs: FoldersWithFiles[] = [];\r\n leftSideHeight = 0;\r\n tab1checked = true;\r\n tab2checked = false;\r\n teacherClassrooms$!: Observable;\r\n\r\n constructor(\r\n private libraryService: LibraryService,\r\n private classroomService: ClassroomService,\r\n private generalService: GeneralService,\r\n public authService: AuthService,\r\n private confirmationService: ConfirmationService,\r\n private toastService: ToastService,\r\n private layoutService: LayoutService,\r\n private cdr: ChangeDetectorRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.subs.add(this.generalService.deviceKind.pipe().subscribe(res => {\r\n if (res && res.w768up) {\r\n this.isLarge = true;\r\n }\r\n }));\r\n\r\n // this.generalService.slideNativeElements(true, this.addLibrary.nativeElement);\r\n this.loggedInUser = this.authService.getLoggedInUser();\r\n this.role = this.authService.getUserRole();\r\n\r\n this.subs.add(this.libraryService.updateFolderListener.subscribe(res => {\r\n if (res.folder.folderId! > 0) {\r\n for (let lib of this.allLibrariesWithFiles) {\r\n let found: boolean = false;\r\n for (let file of lib.libraryFiles) {\r\n if (file.fileId == res.libraryFile.fileId) {\r\n found = true;\r\n }\r\n }\r\n if (found) {\r\n lib.folderId = res.folder.folderId!\r\n lib.name = res.folder.name\r\n lib.parent = res.folder.parent\r\n }\r\n }\r\n }\r\n }));\r\n\r\n this.initUpdateListener();\r\n this.initClassroomUpdateListener();\r\n this.loadLibFolders();\r\n this.getTeacherClassRooms();\r\n\r\n // IRAKLIS SOURCE\r\n this.libraryToAdd = this.libraryService.initializeEmptyLibraryObject()\r\n this.user = this.authService.getLoggedInUser();\r\n this.role = this.user.role!\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.subs.sink = this.generalService.deviceKind.pipe(\r\n take(2),\r\n switchMap(res => {\r\n console.log(res);\r\n if (res.is576 || res.is992) {\r\n return of(0);\r\n } else {\r\n return this.layoutService.sideMenuHeight;\r\n }\r\n }),\r\n startWith(0),\r\n ).subscribe(height => {\r\n const heightOffset = this.authService.isStudent ? 120 : 115;\r\n if (height !== 0) {\r\n this.leftSideHeight = height - heightOffset;\r\n if (this.mainWrapper) {\r\n this.mainWrapper.nativeElement.style.height = (height + 80 + 'px');\r\n }\r\n if (this.leftSide) {\r\n this.leftSide.nativeElement.style.maxHeight = (height - 100 + 'px');\r\n }\r\n this.cdr.detectChanges();\r\n } else {\r\n this.leftSideHeight = 585;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.hasSelectedClassroom) {\r\n this.onClassRoomSelected(this.selectedClassroom);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n this.libraryService.setCurrentSelectedClassroomId(0)\r\n this.libraryService.setCurrentSelectedClassroom({} as Classroom);\r\n this.libraryService.setMyLibrariesListener(true)\r\n }\r\n\r\n get hasSelectedClassroom() {\r\n return (this.selectedClassroom && Object.keys(this.selectedClassroom).length > 0);\r\n }\r\n\r\n initUpdateListener() {\r\n this.subs.add(this.libraryService.updateListener.subscribe(res => {\r\n if (res) {\r\n this.isLoading = false;\r\n this.loadLibFolders();\r\n }\r\n }));\r\n }\r\n\r\n initClassroomUpdateListener() {\r\n this.subs.add(this.libraryService.currentSelectedClassroomId.subscribe(res => {\r\n if (res != 0) {\r\n console.log(res);\r\n this.loadLibraryData(res);\r\n }\r\n }));\r\n }\r\n\r\n loadLibFolders() {\r\n this.subs.add(this.libraryService.getUserCreatedLibFolders().subscribe(res => {\r\n this.isLoading = false;\r\n this.myLibs = res;\r\n this.libraryService.setLibraryUpdatedListener(true);\r\n }));\r\n }\r\n\r\n loadLibraryData(classroomId: number, showLoading = false) {\r\n if (showLoading) {\r\n this.isLoading = true;\r\n }\r\n this.inClassroom = classroomId !== 0;\r\n this.libsSharedWith = [];\r\n this.libsSharedBy = [];\r\n const requests = [\r\n this.libraryService.getShareWithMeLibFolders(classroomId),\r\n this.libraryService.getClassroomFiles(classroomId),\r\n this.libraryService.getSharedByMeLibFolders(classroomId)\r\n ];\r\n this.subs.add(forkJoin(requests).subscribe(([sharedWith, classroomFiles, sharedBy]) => {\r\n this.isLoading = false;\r\n if (this.authService.isTeacher) {\r\n this.libsSharedWith = sharedWith;\r\n this.libsSharedBy = sharedBy;\r\n } else {\r\n this.libsSharedWith = sharedWith;\r\n this.libsSharedBy = classroomFiles;\r\n }\r\n }));\r\n }\r\n\r\n onShowAddLibrary() {\r\n this.showAddLibrary = !this.showAddLibrary\r\n this.libraryToAdd.folder = this.folderPath[this.folderPath.length - 1];\r\n this.generalService.slideNativeElements(this.showAddLibrary, this.addLibrary.nativeElement);\r\n }\r\n\r\n\r\n getTeacherClassRooms() {\r\n this.teacherClassrooms$ = this.classroomService.getLMSUserClassrooms(this.loggedInUser.id);\r\n // this.subs.add(this.classroomService.getLMSUserClassrooms(this.loggedInUser.id).subscribe((response) => {\r\n // this.teacherClassrooms = response;\r\n // }));\r\n // this.subs.add(this.classroomService.getLMSUserClassrooms(this.loggedInUser.id).subscribe((response) => {\r\n // this.teacherClassrooms = response;\r\n // }));\r\n }\r\n\r\n\r\n // createLibFolder(){\r\n // this.libraryService.createFolder().subscribe( (response) => {\r\n // });\r\n // }\r\n\r\n deleteLibFolder(folderId: number) {\r\n this.subs.add(this.libraryService.deleteFolder(folderId).subscribe((response) => {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Folder Deleted successfully.'\r\n });\r\n }));\r\n }\r\n\r\n onClassRoomSelected(classroom: Classroom) {\r\n if (!classroom) {\r\n return;\r\n }\r\n const classroomId = parseInt(classroom.id);\r\n this.isLoading = true;\r\n this.isMyFiles = true;\r\n this.classroomId = classroomId;\r\n this.classroomStudents = classroom.classroomStudents;\r\n\r\n this.libraryService.setCurrentSelectedClassroomId(parseInt(classroom.id));\r\n this.libraryService.setCurrentSelectedClassroom(classroom);\r\n this.libraryService.setMyLibrariesListener(false)\r\n this.loadLibraryData(classroomId);\r\n }\r\n\r\n getFileName(path: string) {\r\n if (path) {\r\n let n = path.lastIndexOf(\"/\");\r\n if (n === -1)\r\n n = path.lastIndexOf(\"\\\\\");\r\n let result = path.substring(n + 1);\r\n return result;\r\n }\r\n return path\r\n }\r\n\r\n\r\n // IRAKLIS SOURCE\r\n\r\n\r\n getLibFolders() {\r\n this.isMyFiles = false;\r\n this.loadLibFolders();\r\n // this.removeClass()\r\n this.libraryService.setCurrentSelectedClassroomId(0)\r\n this.libraryService.setCurrentSelectedClassroom({} as Classroom);\r\n this.libraryService.setMyLibrariesListener(true)\r\n // this.libraryService.getUserCreatedLibFolders().subscribe( (response) => {\r\n // this.allLibrariesWithFiles = response;\r\n // this.classroomFiles = this.allLibrariesWithFiles;\r\n // this.getFoldersWithFiles();\r\n // });\r\n }\r\n\r\n oncollapseNotesLeftSideChanged(event: any) {\r\n console.log(event);\r\n this.isLeftsideCollapsed = event;\r\n }\r\n\r\n setGroupActions() {\r\n this.showGroupActions = !this.showGroupActions;\r\n setTimeout(() => {\r\n this.libraryService.setGroupActions(this.showGroupActions);\r\n }, 300);\r\n }\r\n\r\n onTabChange(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n if (target.id === 'tab-1') {\r\n // this.libraryService.setshowUploadAction(false);\r\n // this.libraryService.setshowGroupAction(true);\r\n \r\n this.tab1checked = true;\r\n this.tab2checked = false;\r\n console.log('Tab 1 is checked');\r\n } else if (target.id === 'tab-2') {\r\n // this.libraryService.setshowUploadAction(true);\r\n // this.libraryService.setshowGroupAction(true);\r\n console.log('Tab 2 is checked');\r\n this.tab1checked = false;\r\n this.tab2checked = true;\r\n }\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n Notifications\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    Filter by category
    \r\n
      \r\n \r\n
    • \r\n \r\n {{filterType.name}}\r\n
    • \r\n
      \r\n
    • \r\n Extras\r\n From:\r\n \r\n\r\n To:\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
      \r\n \"bell\"\r\n
      \r\n You don’t have any notifications yet\r\n
      \r\n
      \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TopMenuContainerLayoutComponent } from 'src/app/shared/layout/top-menu-container-layout/top-menu-container-layout.component';\r\nimport { NotificationOverviewComponent } from './components/notification-overview/notification-overview.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '', component: TopMenuContainerLayoutComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: NotificationOverviewComponent,\r\n },\r\n ]\r\n},\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class NotificationsRoutingModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { NotificationService } from 'src/app/core/services/notification.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-notification-overview',\r\n templateUrl: './notification-overview.component.html',\r\n styleUrls: ['./notification-overview.component.scss']\r\n})\r\nexport class NotificationOverviewComponent implements OnInit, OnDestroy {\r\n\r\n filterTypes = [\r\n {\r\n name: 'All',\r\n type: '',\r\n },\r\n {\r\n name: 'Lessons',\r\n type: 'Lessons',\r\n },\r\n {\r\n name: 'Packages',\r\n type: 'Packages',\r\n },\r\n {\r\n name: 'Availability',\r\n type: 'DaysOff',\r\n },\r\n {\r\n name: 'Trials',\r\n type: 'Trials',\r\n },\r\n {\r\n name: 'Student Actions',\r\n type: 'Student',\r\n },\r\n {\r\n name: 'Homework',\r\n type: 'Homework',\r\n },\r\n ];\r\n fromDate = '';\r\n toDate = '';\r\n currentDate = new Date();\r\n notifications: any[] = [];\r\n searchValue: string = '';\r\n currentFilterType: string = '';\r\n filteredNotifications: any[] = [];\r\n isTablet = false;\r\n showFiltersTablet = false;\r\n unreadNotifications: any[] = [];\r\n isLoadingNotifications = true;\r\n private subs = new SubSink();\r\n constructor(\r\n private notificationService: NotificationService,\r\n private generalService: GeneralService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.subs.sink = this.notificationService.get()\r\n .pipe(switchMap((notifications: any) => {\r\n this.notifications = notifications;\r\n this.filteredNotifications = this.notifications.reverse();\r\n\r\n // Filter notifications to get only the unread ones\r\n this.unreadNotifications = this.notifications.filter(\r\n (notification) => !notification.isRead\r\n );\r\n\r\n // Get an array of IDs for the unread notifications\r\n const unreadNotificationIds = this.unreadNotifications.map(\r\n (notification) => notification.id\r\n );\r\n\r\n // Use the IDs of the unread notifications to mark them as read\r\n return this.notificationService.markAsReadBulk(unreadNotificationIds);\r\n })).subscribe(\r\n () => {\r\n this.isLoadingNotifications = false;\r\n },\r\n (error) => {\r\n this.isLoadingNotifications = false;\r\n }\r\n );\r\n\r\n this.subs.sink = this.generalService.deviceKind.subscribe(res => {\r\n this.isTablet = res.is1024;\r\n console.log(this.isTablet);\r\n this.showFiltersTablet = this.isTablet;\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n applyFilter(filterType: string) {\r\n console.log(`Filter type: ${filterType}`);\r\n // Update the current filter type\r\n this.currentFilterType = filterType;\r\n // Filter the notifications based on the selected filter type and search value\r\n this.filteredNotifications = this.notifications.filter(notification => {\r\n let dateCheck = true;\r\n\r\n // If a fromDate and toDate were selected, check if the notification's creation date is in range\r\n if (this.fromDate && this.toDate) {\r\n // Add 1 to the from and to dates to ensure that notifications created on the exact date are included\r\n const dateFrom = new Date(this.fromDate).setDate(new Date(this.fromDate).getDate() + 1);\r\n const dateTo = new Date(this.toDate).setDate(new Date(this.toDate).getDate() + 1);\r\n\r\n // Get the creation date of the notification\r\n const createdAt = new Date(this.generalService.convertWithoutTimeAndZ(notification.createdAt));\r\n\r\n // Check if the creation date falls within the selected range\r\n dateCheck = createdAt >= new Date(dateFrom) && createdAt <= new Date(dateTo);\r\n }\r\n // Check if the notification's description includes the search value (case-insensitive)\r\n let searchCheck = this.searchValue === '' || (notification.description.toLowerCase().includes(this.searchValue.toLowerCase()));\r\n\r\n // Check if the notification's type matches the selected filter type\r\n let filterCategoryCheck = !filterType || notification.type === this.currentFilterType;\r\n // Return the notification if it passes all three checks (date, search, and filter type)\r\n return dateCheck && searchCheck && filterCategoryCheck;\r\n });\r\n }\r\n\r\n onSearchInput(event: any): void {\r\n this.searchValue = event.target.value;\r\n this.applyFilter(this.currentFilterType);\r\n }\r\n\r\n onFromDateSelection(event: any): void {\r\n this.fromDate = this.generalService.convertToIsoDate(event);\r\n this.applyFilter('');\r\n }\r\n\r\n onToDateSelection(event: any): void {\r\n this.toDate = this.generalService.convertToIsoDate(event);\r\n this.applyFilter('');\r\n }\r\n\r\n removeNotificationSelected(notificationId: number) {\r\n this.subs.sink = this.notificationService.delete(notificationId).subscribe((res) => {\r\n if (res) {\r\n this.filteredNotifications = this.filteredNotifications.filter(item => item.id !== notificationId);\r\n }\r\n });\r\n }\r\n\r\n onCalendarClose(event: any) {\r\n console.log(event);\r\n }\r\n\r\n toggleFilterVisibility() {\r\n this.showFiltersTablet = !this.showFiltersTablet;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NotificationsRoutingModule } from './notifications-routing.module';\r\nimport { NotificationOverviewComponent } from './components/notification-overview/notification-overview.component';\r\nimport { SharedModule } from 'src/app/shared/shared.module';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n NotificationOverviewComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n NotificationsRoutingModule,\r\n FormsModule,\r\n SharedModule,\r\n InputTextModule,\r\n CalendarModule,\r\n ]\r\n})\r\nexport class NotificationsModule { }\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    * E-mail
    \r\n \r\n
    * Email is required
    \r\n
    \r\n
    \r\n
    * Phone
    \r\n \r\n
    * Phone is required
    \r\n
    \r\n
    \r\n
    * Skype
    \r\n \r\n
    * Skype is required
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Next
    \r\n
    ","import { Location } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Teacher } from 'src/app/core/models/teacher.model';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-contact-info',\r\n templateUrl: './contact-info.component.html',\r\n styleUrls: ['./contact-info.component.scss']\r\n})\r\nexport class ContactInfoComponent implements OnInit {\r\n private subs = new SubSink();\r\n public form: UntypedFormGroup = new UntypedFormGroup({});\r\n public isTablet: boolean = false;\r\n public teacher: Teacher = this.teacherService.dummyTeacher;\r\n tryToSave: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private teacherService: TeacherApplicationService,\r\n private router: Router,\r\n private location: Location\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(this.teacherService.submitOnMenuClickListener.subscribe(res => {\r\n if (res) {\r\n this.onSubmit();\r\n }\r\n }));\r\n this.teacherService.setCurrentStepIndex(1);\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n this.isTablet = res.is1024;\r\n }));\r\n this.form = new UntypedFormGroup({\r\n email: new UntypedFormControl(this.teacher.email, {\r\n validators: [Validators.required]\r\n }),\r\n phone: new UntypedFormControl(this.teacher.phone, {\r\n validators: [Validators.required]\r\n }),\r\n skype: new UntypedFormControl(this.teacher.skype, {\r\n validators: [Validators.required]\r\n })\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false)\r\n }\r\n\r\n onSubmit() {\r\n this.tryToSave = true;\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n this.teacher!.email = this.form.value.email\r\n this.teacher!.phone = this.form.value.phone\r\n this.teacher!.skype = this.form.value.skype\r\n this.router.navigateByUrl('/teacher/education', { replaceUrl: true });\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/info', { replaceUrl: true });\r\n }\r\n\r\n ifFieldValid(field: string) {\r\n this.teacherService.setStepValid(1, this.form, 'teacher-contact-route');\r\n return ((this.form.get(field)?.invalid && this.form.get(field)?.touched) || (this.tryToSave && this.form.get(field)?.invalid))\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    0}\">\r\n
    \r\n
    Degrees / Diplomas *\r\n
    \r\n \r\n
    \r\n
    0\" class=\"hvr-grow\">\r\n \r\n
    \r\n
    \r\n \r\n
    * Degrees / Diplomas is required\r\n
    \r\n
    \r\n\r\n
    \r\n
    Institute *
    \r\n \r\n
    Institute is required\r\n
    \r\n
    \r\n
    \r\n
    Upload Degree/Diploma
    \r\n
    \r\n
    Upload File\r\n \"cloud-icon\"\r\n
    \r\n
    \r\n
    \r\n
    Add files
    \r\n \r\n
    \r\n
    \r\n Upload Degree/Diploma\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    Upload File\r\n \"cloud-icon\"\r\n
    \r\n \r\n
    \r\n \r\n {{getFileName(form.value.education[i].fileUploads[skillIndex].filePath)}}\r\n \"trash-white.svg\"\r\n
    \r\n
    \r\n
    \r\n
    Add files
    \r\n \r\n
    \r\n
    \r\n Upload Degree/Diploma\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Teacher, TeacherApplicationEducation, TeacherApplicationStep2, TeacherEducation } from 'src/app/core/models/teacher.model';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'app-education',\r\n templateUrl: './education.component.html',\r\n styleUrls: ['./education.component.scss']\r\n})\r\nexport class EducationComponent implements OnInit {\r\n\r\n private subs = new SubSink();\r\n public form: UntypedFormGroup = new UntypedFormGroup({});\r\n public isTablet: boolean = false;\r\n public teacher: Teacher = this.teacherService.dummyTeacher;\r\n tryToSave: boolean = false;\r\n isLoading: boolean = false;\r\n speakLanguageCounter: number = 0;\r\n public error: boolean = false;\r\n public UPLOAD_TEACHER_APPLICATION_FILES_URL = '/LMS/UploadTeacherApplicationFiles';\r\n teacherEducation: TeacherEducation[] = [];\r\n showFileUpload: boolean[] = [];\r\n formChanged = false;\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private teacherService: TeacherApplicationService,\r\n private toastService: ToastService,\r\n private authService: AuthService,\r\n private confirmationService: ConfirmationService,\r\n private router: Router,\r\n private fb: UntypedFormBuilder,\r\n private location: Location\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setCurrentStepIndex(1);\r\n this.subs.add(this.teacherService.submitOnMenuClickListener.subscribe(res => {\r\n if (res) {\r\n this.onSubmit();\r\n }\r\n }));\r\n\r\n this.subs.add(this.teacherService.getTeacherApplicationStep2().subscribe(res => {\r\n if (res) {\r\n this.updateStepFormValues(res);\r\n }\r\n if (res.education === null) {\r\n this.addEducation({} as TeacherApplicationEducation)\r\n }\r\n \r\n this.initFormChangedListener();\r\n }));\r\n\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n this.isTablet = res.is1024;\r\n }));\r\n this.form = new UntypedFormGroup({\r\n education: new UntypedFormArray([]),\r\n });\r\n this.teacherEducation = this.teacher.education\r\n this.teacherEducation.forEach(element => {\r\n this.showFileUpload.push(false)\r\n this.education.push(this.fb.group(element))\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false);\r\n }\r\n\r\n get education(): UntypedFormArray {\r\n return this.form.get('education') as UntypedFormArray;\r\n }\r\n\r\n /**\r\nUpdate the form values for step 2 of the teacher application\r\n@param {TeacherApplicationStep2} teacherApplicationStep2 - The data for step 2 of the teacher application\r\n*/\r\n updateStepFormValues(teacherApplicationStep2: TeacherApplicationStep2) {\r\n\r\n if (!this.generalService.isNullishObject(teacherApplicationStep2.education)) {\r\n teacherApplicationStep2.education.forEach((element, index) => {\r\n this.addEducation(element);\r\n element.fileUploads.forEach(fileUploadElement => {\r\n this.addEducationFileField(index, fileUploadElement.filePath);\r\n });\r\n });\r\n console.log(teacherApplicationStep2.education);\r\n\r\n }\r\n }\r\n\r\n /**\r\n Add an education to the form\r\n @param {TeacherApplicationEducation} element - The education to add to the form\r\n */\r\n addEducation(element: TeacherApplicationEducation) {\r\n const group = new UntypedFormGroup({\r\n name: new UntypedFormControl(element ? element.name : '', Validators.required),\r\n institute: new UntypedFormControl(element ? element.institute : '', Validators.required),\r\n fileUploads: this.fb.array([])\r\n });\r\n this.education.push(group);\r\n }\r\n\r\n /**\r\n Remove an education from the form\r\n @param {number} index - The index of the education to remove\r\n */\r\n removeEducation(index: number) {\r\n this.education.removeAt(index);\r\n }\r\n \r\n\r\n initFormChangedListener() {\r\n this.subs.add(this.form.valueChanges.subscribe(val => {\r\n console.log(val);\r\n this.formChanged = true;\r\n }));\r\n }\r\n\r\n /**\r\n Submit the form data\r\n */\r\n onSubmit() {\r\n this.tryToSave = true;\r\n if (!this.form.valid) {\r\n this.error = true;\r\n return;\r\n }\r\n this.formChanged = false;\r\n this.subs.add(this.teacherService.updateTeacherApplicationStep2(this.form.value).subscribe(res => {\r\n if (res) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your Education info were updated.'\r\n });\r\n }\r\n this.router.navigateByUrl('/teacher/experience', { replaceUrl: true });\r\n }));\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ifFieldValid(i: number) {\r\n this.teacherService.setStepValid(1, this.form, 'teacher-education-route');\r\n return ((this.tryToSave && (this.form.get('education')).controls[i].invalid))\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/info', { replaceUrl: true });\r\n }\r\n\r\n /**\r\n * Handles the completion of a file upload\r\n *\r\n * @param {filePath: { dbPath: string; }} event - Event object containing information about the uploaded file\r\n * @param {number} i - Index of the file in the array of files\r\n *\r\n */\r\n uploadFinished(event: { filePath: { dbPath: string; } }, i: number) {\r\n this.hideFileUpload(i);\r\n this.addEducationFileField(i, event.filePath.dbPath);\r\n }\r\n\r\n /**\r\n * Opens the file upload dialog\r\n *\r\n * @param {number} fileIndex - Index of the file in the array of files\r\n *\r\n */\r\n openFileUploadDialog(fileIndex: number) {\r\n this.showFileUpload[fileIndex] = true\r\n document.getElementById('blur_bg')?.classList.add('yes-visibility');\r\n }\r\n\r\n /**\r\n Hides the file upload for a specific index.\r\n @param {number} fileIndex - The index of the file upload to be hidden.\r\n */\r\n hideFileUpload(fileIndex: number) {\r\n this.showFileUpload[fileIndex] = false;\r\n document.getElementById('blur_bg')?.classList.remove('yes-visibility');\r\n }\r\n\r\n /**\r\n Get the file name from a file path\r\n @param {string} fileName - The file path\r\n @returns {string} The file name\r\n */\r\n getFileName(fileName: string): string {\r\n return this.generalService.getFileName2(fileName);\r\n }\r\n\r\n removeEmployee(empIndex: number) {\r\n this.education.removeAt(empIndex);\r\n }\r\n\r\n educationfilePaths(empIndex: number): UntypedFormArray {\r\n return this.education\r\n .at(empIndex)\r\n .get('fileUploads') as UntypedFormArray;\r\n }\r\n\r\n newFilePathFormGroup(name: string): UntypedFormGroup {\r\n return this.fb.group({\r\n filePath: name\r\n });\r\n }\r\n\r\n addEducationFileField(empIndex: number, name: string) {\r\n this.educationfilePaths(empIndex).push(this.newFilePathFormGroup(name));\r\n }\r\n\r\n removeEducationFileField(empIndex: number, skillIndex: number, filename: string) {\r\n this.educationfilePaths(empIndex).removeAt(skillIndex);\r\n this.subs.add(this.teacherService.deleteTeacherApplicationFiles(filename).subscribe(result => {\r\n console.log(result);\r\n }));\r\n }\r\n \r\n canDeactivate(): Observable | boolean {\r\n if (this.formChanged) {\r\n return new Observable((observer: any) => {\r\n this.confirmationService.confirm({\r\n header: '',\r\n key: 'stepLeaveConfirmation',\r\n message: 'Are you sure you want to leave this page? Your changes will be lost.',\r\n accept: () => {\r\n observer.next(true);\r\n observer.complete();\r\n },\r\n reject: () => {\r\n observer.next(false);\r\n observer.complete();\r\n }\r\n });\r\n });\r\n } else {\r\n return (true);\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n Additional Languages you speak & levels *\r\n
    \r\n \r\n +\r\n
    \r\n
    \r\n \r\n \r\n \r\n –\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    {{language.name}}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    {{level.levelName}}
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n * Language & Level fields are required\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n Languages you teach & levels *\r\n
    \r\n \r\n +\r\n
    \r\n \r\n \r\n \r\n \r\n –\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    {{language.name}}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    {{level.levelName}}
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n * Language & Level fields are required\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Describe your teaching methods *\r\n
    \r\n \r\n
    \r\n * Teaching Methods are required\r\n
    \r\n
    \r\n
    \r\n
    \r\n Years of experience as teacher *\r\n
    \r\n \r\n
    \r\n * Years of experience field is required\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n ","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { Observable } from 'rxjs';\r\nimport { Language } from 'src/app/core/models/general.model';\r\nimport { LanguageLevel, Teacher, TeacherApplicationStep3 } from 'src/app/core/models/teacher.model';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-experience',\r\n templateUrl: './experience.component.html',\r\n styleUrls: ['./experience.component.scss']\r\n})\r\nexport class ExperienceComponent implements OnInit {\r\n private subs = new SubSink();\r\n public form: UntypedFormGroup = new UntypedFormGroup({});\r\n public teacherLanguagesSpeak: LanguageLevel[] = [];\r\n public teacherLanguagesTeach: LanguageLevel[] = [];\r\n public languageSpeakError: boolean = false;\r\n public languageTeachError: boolean = false;\r\n public teacher?: Teacher;\r\n public isLoading: boolean = true;\r\n public tryToSave: boolean = false;\r\n public languages: Language[] = this.generalService.languages;\r\n public availableLanguageLevels: any[] = this.generalService.getLanguageLevels();\r\n public filteredLanguageSpeakLevels: any[] = [];\r\n public filteredLanguageTeachLevels: any[] = [];\r\n disableSpeakLevelsDropdown: boolean[] = [true];\r\n disableTeachLevelsDropdown: boolean[] = [true];\r\n formChanged = false;\r\n\r\n teachLevelOptions = [\r\n {\r\n levelName: \"I teach only beginner-level students (A1 - B1)\",\r\n \"showOnlyOnCode\": [],\r\n \"visible\": true\r\n },\r\n {\r\n levelName: \"I teach only advanced-level students (B2 - C2)\",\r\n \"showOnlyOnCode\": [],\r\n \"visible\": true\r\n },\r\n {\r\n levelName: \"I teach all levels (A1 - C2)\",\r\n \"showOnlyOnCode\": [],\r\n \"visible\": true\r\n },\r\n ];\r\n\r\n constructor(\r\n private fb: UntypedFormBuilder,\r\n private router: Router,\r\n private teacherService: TeacherApplicationService,\r\n private generalService: GeneralService,\r\n private toast: ToastService,\r\n private confirmationService: ConfirmationService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setCurrentStepIndex(2);\r\n\r\n this.subs.add(this.teacherService.getTeacherApplicationStep3().subscribe(res => {\r\n this.isLoading = false;\r\n this.createForm();\r\n this.updateStepFormValues(res);\r\n this.initFormChangedListener();\r\n }));\r\n\r\n this.subs.add(this.teacherService.submitOnMenuClickListener.subscribe(res => {\r\n if (res) {\r\n this.onSubmit();\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false);\r\n }\r\n\r\n get languagesSpeakForm(): UntypedFormArray {\r\n return this.form.get('languagesSpeakForm') as UntypedFormArray;\r\n }\r\n\r\n get languagesTeachForm(): UntypedFormArray {\r\n return this.form.get('languagesTeachForm') as UntypedFormArray;\r\n }\r\n\r\n /**\r\n * Initializes the form for the application\r\n *\r\n */\r\n createForm() {\r\n this.form = new UntypedFormGroup({\r\n methods: new UntypedFormControl(null, {\r\n validators: [Validators.required]\r\n }),\r\n years: new UntypedFormControl(1, {\r\n validators: [Validators.required]\r\n }),\r\n languagesSpeakForm: new UntypedFormArray([]),\r\n languagesTeachForm: new UntypedFormArray([])\r\n });\r\n }\r\n\r\n /**\r\n * Updates the form values for the step 3 of the teacher application process\r\n *\r\n * @param {TeacherApplicationStep3} object - Object containing the updated values for the form\r\n *\r\n */\r\n updateStepFormValues(object: TeacherApplicationStep3) {\r\n\r\n this.form.get('methods')?.patchValue(object.teachingMethods);\r\n this.form.get('years')?.patchValue(object.yearsExperience);\r\n if (this.generalService.isNullishObject(object.languageSpeak)) {\r\n this.addLanguageSpeak()\r\n } else {\r\n this.filteredLanguageSpeakLevels = [];\r\n\r\n object.languageSpeak.forEach((element, index) => {\r\n const elementFound = this.availableLanguageLevels.filter(i => {\r\n return ((i.levelName === element.level.levelName));\r\n });\r\n element.level = elementFound[0];\r\n this.disableSpeakLevelsDropdown[index] = false;\r\n this.setfilteredLanguageSpeakLevels(index, element.language.code);\r\n this.languagesSpeakForm.push(this.fb.group(element))\r\n });\r\n }\r\n if (this.generalService.isNullishObject(object.languageTeach)) {\r\n this.addLanguageTeach();\r\n } else {\r\n\r\n // this.filteredLanguageTeachLevels = this.teachLevelOptions;\r\n object.languageTeach.forEach((element, index) => {\r\n\r\n const elementFound = this.teachLevelOptions.filter(i => {\r\n return ((i.levelName === element.level.levelName));\r\n });\r\n element.level = elementFound[0];\r\n\r\n // element.level = {\r\n // levelName: element.levelName,\r\n // }\r\n\r\n console.log(element);\r\n this.disableTeachLevelsDropdown[index] = false;\r\n this.setfilteredLanguageTeachLevels(index);\r\n this.languagesTeachForm.push(this.fb.group(element))\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sets the filtered language speak levels based on the language code\r\n *\r\n * @param {number} index - Index of the language in the array of languages\r\n * @param {string} [languageCode] - Code of the language to filter the levels for\r\n *\r\n */\r\n setfilteredLanguageSpeakLevels(index: number, languageCode?: string) {\r\n this.filteredLanguageSpeakLevels[index] = this.availableLanguageLevels.\r\n filter(i => {\r\n return ((i.showOnlyOnCode.length === 0) || (i.showOnlyOnCode.includes(languageCode)));\r\n });\r\n console.log(index, this.filteredLanguageSpeakLevels[index]);\r\n }\r\n\r\n /**\r\n * Sets the filtered language teach levels\r\n *\r\n * @param {number} index - Index of the language in the array of languages\r\n *\r\n */\r\n setfilteredLanguageTeachLevels(index: number, languageCode?: string) {\r\n \r\n this.filteredLanguageTeachLevels[index] = this.teachLevelOptions.\r\n filter(i => {\r\n return (i);\r\n });\r\n console.log(index, this.filteredLanguageTeachLevels[index]);\r\n // this.filteredLanguageTeachLevels[index] = this.availableLanguageLevels.\r\n // filter(i => {\r\n // return (i.visible);\r\n // });\r\n }\r\n\r\n /**\r\n * Adds a new form group for spoken languages\r\n *\r\n * @throws {Error} If FormGroup or FormControl classes are not defined\r\n */\r\n addLanguageSpeak() {\r\n if (!UntypedFormGroup || !UntypedFormControl) {\r\n throw new Error('FormGroup or FormControl classes are not defined');\r\n }\r\n const group = new UntypedFormGroup({\r\n language: new UntypedFormControl('', Validators.required),\r\n level: new UntypedFormControl('', Validators.required),\r\n hasBusinessLevel: new UntypedFormControl(false)\r\n });\r\n this.languagesSpeakForm.push(group);\r\n this.disableSpeakLevelsDropdown[this.languagesSpeakForm.length - 1] = true;\r\n }\r\n\r\n /**\r\n * Removes a form group for spoken languages\r\n *\r\n * @param {number} index - Index of the form group in the form array\r\n */\r\n removeLanguageSpeak(index: number) {\r\n this.languagesSpeakForm.removeAt(index);\r\n }\r\n\r\n /**\r\n * Adds a new form group for taught languages\r\n *\r\n * @throws {Error} If FormGroup or FormControl classes are not defined\r\n */\r\n addLanguageTeach() {\r\n if (!UntypedFormGroup || !UntypedFormControl) {\r\n throw new Error('FormGroup or FormControl classes are not defined');\r\n }\r\n const group = new UntypedFormGroup({\r\n language: new UntypedFormControl('', Validators.required),\r\n level: new UntypedFormControl('', Validators.required),\r\n hasBusinessLevel: new UntypedFormControl(false)\r\n });\r\n this.languagesTeachForm.push(group);\r\n this.disableTeachLevelsDropdown[this.languagesTeachForm.length - 1] = true;\r\n }\r\n\r\n /**\r\n * Removes a form group for taught languages\r\n *\r\n * @param {number} index - Index of the form group in the form array\r\n */\r\n removeLanguageTeach(index: number) {\r\n this.languagesTeachForm.removeAt(index);\r\n }\r\n\r\n onSubmit() {\r\n this.tryToSave = true;\r\n this.languageSpeakError = this.form.controls.languagesSpeakForm.status === 'INVALID' ? true : false;\r\n this.languageTeachError = this.form.controls.languagesTeachForm.status === 'INVALID' ? true : false;\r\n\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n\r\n const experienceValuesToSubmit = {\r\n languageSpeak: this.form.value.languagesSpeakForm,\r\n languageTeach: this.form.value.languagesTeachForm,\r\n yearsExperience: this.form.value.years,\r\n teachingMethods: this.form.value.methods,\r\n };\r\n\r\n this.subs.add(this.teacherService.updateAPITeacherApplicationStep3(experienceValuesToSubmit).subscribe(res => {\r\n console.log(res);\r\n if (res) {\r\n this.toast.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your Experience info were updated.'\r\n });\r\n this.router.navigateByUrl('/teacher/resume', { replaceUrl: true });\r\n }\r\n }));\r\n }\r\n\r\n ifFieldValid(field: string) {\r\n this.teacherService.setStepValid(2, this.form, 'teacher-experience-route');\r\n return ((this.form.get(field)?.invalid && this.form.get(field)?.touched) || (this.tryToSave && this.form.get(field)?.invalid))\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/education', { replaceUrl: true });\r\n }\r\n\r\n /**\r\n Handles the change in language selection for speaking.\r\n @param {Object} event - The event object containing the selected language code.\r\n @param {number} languageIndex - The index of the selected language in the list.\r\n @returns {void}\r\n */\r\n handleSpeakLanguageChange(event: { value: { code: string } }, languageIndex: number) {\r\n this.disableSpeakLevelsDropdown[languageIndex] = false;\r\n this.filteredLanguageSpeakLevels[languageIndex] = this.availableLanguageLevels.\r\n filter(i => {\r\n return (i.showOnlyOnCode.length === 0) || (i.showOnlyOnCode.includes(event.value.code));\r\n });\r\n }\r\n\r\n /**\r\n Handles the change in language selection for teaching.\r\n @param {Object} event - The event object containing the selected language code.\r\n @param {number} languageIndex - The index of the selected language in the list.\r\n @returns {void}\r\n */\r\n handleTeachLanguageChange(event: { value: { code: string } }, languageIndex: number) {\r\n this.disableTeachLevelsDropdown[languageIndex] = false;\r\n // this.filteredLanguageTeachLevels[languageIndex] = this.availableLanguageLevels.\r\n // filter(i => {\r\n // return (i.showOnlyOnCode.length === 0) || (i.showOnlyOnCode.includes(event.value.code));\r\n // });\r\n }\r\n\r\n initFormChangedListener() {\r\n this.subs.add(this.form.valueChanges.subscribe(val => {\r\n if(this.form.dirty) {\r\n console.log(val);\r\n this.formChanged = true;\r\n }\r\n }));\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.formChanged && !this.tryToSave) {\r\n return new Observable((observer: any) => {\r\n this.confirmationService.confirm({\r\n header: '',\r\n key: 'stepLeaveConfirmation',\r\n message: 'Are you sure you want to leave this page? Your changes will be lost.',\r\n accept: () => {\r\n observer.next(true);\r\n observer.complete();\r\n },\r\n reject: () => {\r\n observer.next(false);\r\n observer.complete();\r\n }\r\n });\r\n });\r\n } else {\r\n return (true);\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    First Name *
    \r\n \r\n
    * First Name is required
    \r\n
    \r\n
    \r\n
    Last Name *
    \r\n \r\n
    * Last Name is required
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    Preffered Name *
    \r\n \r\n
    * Preffered name is required
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    Country of Origin *
    \r\n \r\n \r\n
    \r\n \r\n
    {{country.name}}
    \r\n
    \r\n
    \r\n
    \r\n
    * Country of Origin is required
    \r\n
    \r\n\r\n\r\n
    \r\n
    Country of Residency *
    \r\n \r\n \r\n
    \r\n \r\n
    {{country.name}}
    \r\n
    \r\n
    \r\n
    \r\n
    * Country of Residency is required
    \r\n
    \r\n\r\n
    \r\n
    Timezone *
    \r\n \r\n \r\n
    \r\n
    {{timezone.text}}
    \r\n
    * Timezone is required
    \r\n
    \r\n
    \r\n
    \r\n
    * Timezone is required
    \r\n
    \r\n
    \r\n
    Date of Birth *
    \r\n\r\n \r\n
    * Date of Birth is required
    \r\n
    \r\n
    \r\n \r\n
    Native Speaker in * \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    {{language.name}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n 0\">\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Please select your Native languages\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    Enter your contact info
    \r\n
    \r\n
    \r\n
    E-mail *
    \r\n \r\n
    * Email is required
    \r\n
    \r\n
    \r\n
    Phone *
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Phone is required
    \r\n
    \r\n
    \r\n
    Skype *
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { NgForm, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { Observable, of } from 'rxjs';\r\nimport { Country, Language, Timezone } from 'src/app/core/models/general.model';\r\nimport { Teacher, TeacherApplicationStep1, TeacherApplicationStep1Native } from 'src/app/core/models/teacher.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-general-info',\r\n templateUrl: './general-info.component.html',\r\n styleUrls: ['./general-info.component.scss'],\r\n})\r\nexport class GeneralInfoComponent implements OnInit {\r\n @ViewChild('opportunityForm', { static: true }) ngForm: NgForm = {} as NgForm;\r\n private subs = new SubSink();\r\n public form: UntypedFormGroup = new UntypedFormGroup({});\r\n public isTablet: boolean = false;\r\n public timezones: Timezone[] = this.generalService.getTimezones();\r\n public countries: Country[] = this.generalService.getCountries();\r\n public phoneCodes: any[] = this.generalService.getPhoneCodes();\r\n public languages: Language[] = this.generalService.languages;\r\n public selectedOriginCountry?: Country;\r\n public selectedTimezone?: Timezone;\r\n public selectedLanguage?: Language;\r\n public tryToSave: boolean = false;\r\n public isLoading: boolean = true;\r\n public teacher?: Teacher;\r\n public teacherStep1?: TeacherApplicationStep1;\r\n public selectedCountry: string = \"\";\r\n public maxBirthdateTime = new Date();\r\n public formattedBirthDate: string = \"\";\r\n private nativeLanguagesModel: { name: string }[] = [];\r\n private formChanged = false;\r\n public selectedPhoneCode: any | undefined = {} as any | undefined;\r\n\r\n constructor(\r\n private router: Router,\r\n private fb: UntypedFormBuilder,\r\n private generalService: GeneralService,\r\n private teacherService: TeacherApplicationService,\r\n private authService: AuthService,\r\n private toast: ToastService,\r\n private confirmationService: ConfirmationService\r\n ) { }\r\n\r\n get nativeLanguages(): UntypedFormArray {\r\n return this.form.get('nativeLanguages') as UntypedFormArray;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isLoading = true;\r\n this.subs.add(this.teacherService.submitOnMenuClickListener.subscribe(res => {\r\n if (res) {\r\n this.onSubmit();\r\n }\r\n }));\r\n\r\n\r\n console.log(this.maxBirthdateTime);\r\n const date = new Date();\r\n\r\n const newDate = (this.maxBirthdateTime.setFullYear(this.maxBirthdateTime.getFullYear() - 18));\r\n this.maxBirthdateTime = new Date(newDate);\r\n this.teacherService.setCurrentStepIndex(0);\r\n this.teacher = this.teacherService.dummyTeacher;\r\n\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n this.isTablet = res.is1024;\r\n }));\r\n\r\n this.subs.add(this.teacherService.getTeacherApplicationStepsStatus().subscribe(stepsStatuses => {\r\n if (!stepsStatuses.step1) {\r\n this.prepareSelectedPhoneCodeFromIP();\r\n } \r\n }));\r\n\r\n this.subs.add(this.teacherService.getTeacherApplicationStep1(this.authService.getUserId()!).subscribe(res => {\r\n console.log(res);\r\n this.updateStep1TeacherInfoFormValues(res);\r\n this.initFormChangedListener();\r\n this.isLoading = false;\r\n }));\r\n\r\n // updating title for mobile header text\r\n // this.generalService.updateMobileMenuTitle(this.teacherService.getStepsTitle(0));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false);\r\n }\r\n\r\n onSubmit() {\r\n this.tryToSave = true;\r\n\r\n let invalidInputs = '';\r\n for (const controlName in this.form.controls) {\r\n if (this.form.controls.hasOwnProperty(controlName)) {\r\n const control = this.form.controls[controlName];\r\n if (control.invalid) {\r\n invalidInputs += `${controlName}, `;\r\n }\r\n }\r\n }\r\n\r\n let detailMessage = 'Please enter all required fields to continue.';\r\n if (invalidInputs !== '') {\r\n invalidInputs = invalidInputs.slice(0, -2); // Remove the trailing comma and space\r\n\r\n if (invalidInputs !== '') {\r\n detailMessage += `Invalid input for the following fields: ${invalidInputs}`;\r\n }\r\n }\r\n if (!this.form.valid) {\r\n this.toast.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: detailMessage\r\n });\r\n return;\r\n }\r\n this.formChanged = false;\r\n const teacherApplicationStep1FormData: TeacherApplicationStep1 = {\r\n firstName: this.form.value.firstName,\r\n lastName: this.form.value.lastName,\r\n prefferedName: this.form.value.prefferedName,\r\n countryOrigin: { name: this.form.value.countryOrigin.name, flagUrl: this.form.value.countryOrigin.image },\r\n countryResidency: { name: this.form.value.countryResidency.name, flagUrl: this.form.value.countryResidency.image },\r\n nativeLanguages: this.form.value.nativeLanguages,\r\n timeZone: this.form.value.timeZone?.utc[0],\r\n birth: this.generalService.convertDateStringToIsoFormatWithZeroTime(this.formattedBirthDate),\r\n email: this.form.value.email,\r\n phone: this.form.value.phone,\r\n phoneCode: this.form.value.phoneCode.code,\r\n skype: this.form.value.skype,\r\n }\r\n this.subs.add(this.teacherService.updateAPITeacherApplicationStep1(teacherApplicationStep1FormData).subscribe(res => {\r\n if (res) {\r\n this.toast.setShowToastmessage({ severity: 'success', summary: '', detail: 'Your General details were saved.' });\r\n // this.toastr.success(\"Your general info were updated.\")\r\n this.router.navigateByUrl('/teacher/education', { replaceUrl: true });\r\n }\r\n }));\r\n\r\n }\r\n\r\n updateStep1TeacherInfoFormValues(teacherStep1Object: TeacherApplicationStep1) {\r\n\r\n if (this.isValidDate(teacherStep1Object.birth)) {\r\n this.formattedBirthDate = this.generalService.formatDateToDMY(teacherStep1Object.birth);\r\n } else {\r\n this.formattedBirthDate = this.generalService.formatDateToDMY(this.maxBirthdateTime.toString());\r\n }\r\n\r\n if (!this.generalService.isNullishObject(teacherStep1Object.phoneCode)) {\r\n this.selectedPhoneCode = this.phoneCodes.filter(el => el.code === teacherStep1Object.phoneCode)[0];\r\n }\r\n\r\n this.form = new UntypedFormGroup({\r\n birth: new UntypedFormControl(this.formattedBirthDate, {\r\n validators: [Validators.required]\r\n }),\r\n prefferedName: new UntypedFormControl(teacherStep1Object.prefferedName, {\r\n validators: [Validators.required]\r\n }),\r\n firstName: new UntypedFormControl(teacherStep1Object.firstName, {\r\n validators: [Validators.required]\r\n }),\r\n lastName: new UntypedFormControl(teacherStep1Object.lastName, {\r\n validators: [Validators.required]\r\n }),\r\n email: new UntypedFormControl(teacherStep1Object.email, {\r\n validators: [Validators.required, Validators.email]\r\n }),\r\n phoneCode: new UntypedFormControl(this.selectedPhoneCode, {\r\n validators: [Validators.required]\r\n }),\r\n phone: new UntypedFormControl(teacherStep1Object.phone, {\r\n validators: [Validators.required]\r\n }),\r\n skype: new UntypedFormControl(teacherStep1Object.skype || '-', {\r\n validators: [Validators.required]\r\n }),\r\n nativeLanguages: new UntypedFormArray([], {\r\n validators: [Validators.required]\r\n }),\r\n timeZone: new UntypedFormControl(\r\n this.timezones.find(el => el.utc.includes(teacherStep1Object.timeZone!)), {\r\n validators: [Validators.required]\r\n }),\r\n countryOrigin: new UntypedFormControl(\r\n !this.generalService.isNullishObject(teacherStep1Object.countryOrigin) ?\r\n this.countries.filter(el => el.name === teacherStep1Object.countryOrigin.name)[0] : null, {\r\n validators: [Validators.required]\r\n }),\r\n countryResidency: new UntypedFormControl(\r\n !this.generalService.isNullishObject(teacherStep1Object.countryResidency) ?\r\n this.countries.filter(el => el.name === teacherStep1Object.countryResidency.name)[0] : null, {\r\n validators: [Validators.required]\r\n }),\r\n });\r\n\r\n if (!this.generalService.isNullishObject(teacherStep1Object.nativeLanguages)) {\r\n teacherStep1Object.nativeLanguages.forEach(element => {\r\n this.addnativeLanguage(element.native);\r\n });\r\n } else {\r\n this.nativeLanguagesModel.forEach(element => {\r\n this.nativeLanguages.push(this.fb.group(element))\r\n });\r\n\r\n if (this.nativeLanguagesModel.length === 0) {\r\n this.addnativeLanguage({})\r\n }\r\n }\r\n\r\n }\r\n\r\n onBirthDateSelected(event: any) {\r\n console.log(event);\r\n let d = new Date(Date.parse(event));\r\n this.formattedBirthDate = this.generalService.formatDateToDMY(event);\r\n }\r\n\r\n isConfirm(field: string) {\r\n return ((this.form.get(field)?.invalid && this.form.get(field)?.touched) || (this.tryToSave && this.form.get(field)?.invalid) || (this.form.value.password !== this.form.value.confirm && this.form.get(field)?.touched))\r\n }\r\n\r\n onOriginChange(event: any) {\r\n setTimeout(() => {\r\n this.selectedLanguage = event.value\r\n }, 100);\r\n }\r\n\r\n onCountryChange(event: any) {\r\n setTimeout(() => {\r\n this.selectedCountry = event.value\r\n }, 100);\r\n }\r\n\r\n onTimeZoneChange(event: any) {\r\n setTimeout(() => {\r\n this.selectedTimezone = event.value\r\n }, 100);\r\n }\r\n\r\n onPhoneCodeChange(event: any) {\r\n setTimeout(() => {\r\n this.selectedPhoneCode = event.value;\r\n console.log(this.selectedPhoneCode);\r\n }, 100);\r\n }\r\n\r\n initFormChangedListener() {\r\n this.subs.add(this.form.valueChanges.subscribe(val => {\r\n if (this.form.dirty) {\r\n this.formChanged = true;\r\n }\r\n }));\r\n }\r\n\r\n ifFieldValid(field: string) {\r\n this.teacherService.setStepValid(0, this.form, 'teacher-info-route')\r\n return ((this.form.get(field)?.invalid && this.form.get(field)?.touched) || (this.tryToSave && this.form.get(field)?.invalid))\r\n }\r\n\r\n ifNativeLanguagesFieldValid(i: number) {\r\n this.teacherService.setStepValid(0, this.form, 'teacher-info-route');\r\n return ((this.tryToSave && (this.form.get('nativeLanguages')).controls[i].invalid))\r\n }\r\n\r\n addnativeLanguage(objectValue: object) {\r\n if (this.nativeLanguages.length < 3) {\r\n const group = new UntypedFormGroup({\r\n native: new UntypedFormControl(objectValue, Validators.required),\r\n });\r\n this.nativeLanguages.push(group);\r\n }\r\n }\r\n\r\n removeNativeLanguage(index: number) {\r\n this.nativeLanguages.removeAt(index);\r\n }\r\n\r\n isValidDate(dateValue: string) {\r\n const date = new Date(dateValue);\r\n if (isNaN(date.getTime()) || date.getFullYear() < 1000) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n findCountryImage(phoneCode: string) {\r\n return this.generalService.findCountryImage(phoneCode);\r\n }\r\n\r\n private prepareSelectedPhoneCodeFromIP() {\r\n this.generalService.getCountryCode().subscribe((res: any) => {\r\n if (res) {\r\n console.log(res);\r\n this.selectedPhoneCode = this.phoneCodes.filter(el => el.iso === res.country_code)[0];\r\n }\r\n });\r\n }\r\n\r\n canDeactivate(): Observable | boolean {\r\n if (this.formChanged) {\r\n return new Observable((observer: any) => {\r\n this.confirmationService.confirm({\r\n header: '',\r\n key: 'stepLeaveConfirmation',\r\n message: 'Are you sure you want to leave this page? Your changes will be lost.',\r\n accept: () => {\r\n observer.next(true);\r\n observer.complete();\r\n },\r\n reject: () => {\r\n observer.next(false);\r\n observer.complete();\r\n }\r\n });\r\n });\r\n } else {\r\n return (true);\r\n }\r\n }\r\n}\r\n\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ConfirmationService, Message } from 'primeng/api';\r\nimport { Observable } from 'rxjs';\r\nimport { TeacherApplicationStep4Response } from 'src/app/core/models/teacher.model';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-resume',\r\n templateUrl: './resume.component.html',\r\n styleUrls: ['./resume.component.scss']\r\n})\r\nexport class ResumeComponent implements OnInit, OnDestroy {\r\n public UPLOAD_TEACHER_CV_URL = '/LMS/UploadTeacherCVAsync';\r\n public UPLOAD_TEACHER_PICTURE_URL = '/LMS/UploadTeacherPictureAsync';\r\n filesUploaded: boolean = false;\r\n submitted: boolean = false;\r\n msgs: Message[] = [];\r\n submittedFiles: { cv: string; profilePicture: string } = {} as { cv: string; profilePicture: string };\r\n fileUploadChanged = false;\r\n private subs = new SubSink();\r\n constructor(\r\n private router: Router,\r\n private teacherService: TeacherApplicationService,\r\n private toastService: ToastService,\r\n private generalService: GeneralService,\r\n private confirmationService: ConfirmationService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setCurrentStepIndex(3);\r\n this.subs.add(this.teacherService.getTeacherApplicationStep4().subscribe((res: TeacherApplicationStep4Response) => {\r\n this.submittedFiles = res;\r\n this.teacherService.setStepValidWithBoolean(3, this.areFilesSubmitted(), 'teacher-resume-route');\r\n\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false);\r\n }\r\n\r\n /**\r\n Submits the resume information.\r\n @returns {void}\r\n */\r\n submitResume() {\r\n if (!this.areFilesSubmitted()) {\r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please upload both files for your Resume.'\r\n });\r\n } else {\r\n this.toastService.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your Resume is updated.'\r\n });\r\n this.fileUploadChanged = false;\r\n this.router.navigateByUrl('/teacher/availability', {\r\n replaceUrl: true\r\n });\r\n }\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/experience', { replaceUrl: true });\r\n }\r\n\r\n getFileName(fileName: string): string {\r\n return this.generalService.getFileName2(fileName);\r\n }\r\n\r\n /**\r\n @function\r\n @desc Handles the event when a file upload has finished.\r\n @param {any} event - The event object that is returned after the file upload has finished.\r\n @param {string} fileKind - A string indicating the type of file that was uploaded, either 'cv' or 'profilePicture'.\r\n @returns {void}\r\n */\r\n uploadFinished(event: any, fileKind: string) {\r\n console.log('',fileKind);\r\n switch (fileKind) {\r\n case 'cv':\r\n this.submittedFiles.cv = event.filePath.dbPath;\r\n break;\r\n case 'photo':\r\n console.log('',event.filePath.dbPath);\r\n this.submittedFiles.profilePicture = event.filePath.dbPath;\r\n break;\r\n default:\r\n break;\r\n }\r\n this.fileUploadChanged = true;\r\n this.teacherService.setStepValidWithBoolean(3, this.areFilesSubmitted(), 'teacher-resume-route');\r\n }\r\n\r\n /**\r\n Deletes a file from the list of submitted files.\r\n @param {Event} event - The event that triggers this function.\r\n @param {string} fileKind - The type of file to be deleted, either 'cv' or 'profilePicture'.\r\n @returns {void}\r\n */\r\n deleteFileClicked(event: Event, fileKind: string) {\r\n this.submittedFiles[fileKind === 'cv' ? 'cv' : 'profilePicture'] = '';\r\n }\r\n\r\n /**\r\n Check if files (CV and profile picture) are submitted\r\n @returns {boolean} Returns true if both CV and profile picture files are submitted, false otherwise.\r\n */\r\n areFilesSubmitted(): boolean {\r\n return (this.submittedFiles.cv !== '' && this.submittedFiles.profilePicture !== '');\r\n }\r\n \r\n canDeactivate(): Observable | boolean {\r\n if (this.fileUploadChanged) {\r\n return new Observable((observer: any) => {\r\n this.confirmationService.confirm({\r\n header: '',\r\n key: 'stepLeaveConfirmation',\r\n message: 'Are you sure you want to leave this page? Your changes will be lost.',\r\n accept: () => {\r\n observer.next(true);\r\n observer.complete();\r\n },\r\n reject: () => {\r\n observer.next(false);\r\n observer.complete();\r\n }\r\n });\r\n });\r\n } else {\r\n return (true);\r\n }\r\n }\r\n}\r\n","
    \r\n \r\n \r\n \r\n
    \r\n\r\n\r\n
    \r\n \r\n \r\n
    ","
    \r\n
    \r\n
    General Info
    \r\n
    \r\n
    \r\n
    First Name
    \r\n
    \r\n {{teacherApplication.step1.firstName}}\r\n
    \r\n
    \r\n
    \r\n
    Last Name
    \r\n
    \r\n {{teacherApplication.step1.lastName}}\r\n
    \r\n
    \r\n
    \r\n
    Preffered Name
    \r\n
    \r\n {{teacherApplication.step1.prefferedName}}\r\n
    \r\n
    \r\n
    \r\n
    Country of Origin
    \r\n
    \r\n {{teacherApplication.step1.countryOrigin.name}}\r\n
    \r\n
    \r\n
    \r\n
    Country of Residency
    \r\n
    \r\n {{teacherApplication.step1.countryResidency.name}}\r\n
    \r\n
    \r\n
    \r\n
    Date of Birth
    \r\n
    \r\n {{teacherApplication.step1.birth | date: 'dd-MM-yyy'}}\r\n
    \r\n
    \r\n
    \r\n
    Timezone
    \r\n
    \r\n {{teacherApplication.step1.timeZone}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Native Languages
    \r\n
    \r\n \r\n {{nativeLanguage['native'].name}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    Contact Info
    \r\n
    \r\n
    \r\n
    \r\n
    E-mail
    \r\n
    \r\n {{teacherApplication.step1.email}}\r\n
    \r\n
    \r\n
    \r\n
    Phone
    \r\n
    \r\n {{teacherApplication.step1.phoneCode}}\r\n {{teacherApplication.step1.phone}}\r\n
    \r\n
    \r\n
    \r\n
    Skype
    \r\n
    \r\n {{teacherApplication.step1.skype}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Education
    \r\n
    \r\n \r\n
    \r\n
    Degree
    \r\n
    \r\n {{education.name}}\r\n
    \r\n
    \r\n
    \r\n
    Institute
    \r\n
    \r\n {{education.institute}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    Degree / Diploma
    \r\n
    \r\n \r\n \r\n {{(this.generalService.getFileName2(file.filePath))}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    Experience & Skills
    \r\n
    \r\n
    \r\n
    Teaching Language
    \r\n \r\n
    \r\n {{experience.language.name}}\r\n
    \r\n
    \r\n {{experience.level.levelName}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Speaking Language
    \r\n \r\n
    \r\n {{experience.language.name}}\r\n
    \r\n
    \r\n {{experience.level.levelName}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Years of teaching experience
    \r\n
    \r\n {{teacherApplication.step3.yearsExperience}}\r\n
    \r\n
    \r\n
    \r\n
    Teaching Method
    \r\n
    \r\n {{teacherApplication.step3.teachingMethods}}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    Resume
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    Availability
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Days
    \r\n
    Time
    \r\n
    \r\n \r\n
    Monday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n
    \r\n \r\n
    Tuesday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n
    \r\n \r\n
    Wednesday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n
    \r\n \r\n
    Thursday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n
    \r\n \r\n
    Friday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n \r\n \r\n
    Saturday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n \r\n \r\n
    Sunday
    \r\n
    \r\n {{available.from}} - {{available.to}}\r\n
    \r\n \r\n
    \r\n
    Hours/Week
    \r\n
    \r\n
    \r\n
    \r\n {{teacherApplication.step5.hours}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { Teacher, TeacherApplicationReview, TeacherApplicationStepsStatus, UserAvailabilityStep5 } from 'src/app/core/models/teacher.model';\r\nimport { UserAvailability, UserAvailabilityType } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-review',\r\n templateUrl: './review.component.html',\r\n styleUrls: ['./review.component.scss']\r\n})\r\nexport class ReviewComponent implements OnInit, OnDestroy {\r\n public teacherApplication: TeacherApplicationReview = {} as TeacherApplicationReview;\r\n public isAgreement1Checked: boolean = false;\r\n public isAgreement2Checked: boolean = false;\r\n private subs = new SubSink();\r\n private submitTeacher: Teacher = {} as Teacher;\r\n hideBottomLayout = false;\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private toastService: ToastService,\r\n private teacherService: TeacherApplicationService,\r\n public generalService: GeneralService,\r\n public authService: AuthService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setCurrentStepIndex(5);\r\n this.checkQueryParamsForBottomLayout();\r\n this.subs.add(this.teacherService.getTeacherApplicationStep6().subscribe((teacherApplicationReview: TeacherApplicationReview) => {\r\n this.teacherApplication = teacherApplicationReview;\r\n console.log(this.teacherService.stepsStatuses);\r\n }));\r\n\r\n // this.subs.add(this.teacherService.getTeacherApplicationStepsStatus().subscribe((stepsStatus: TeacherApplicationStepsStatus) => {\r\n // console.log(stepsStatus);\r\n // }));\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n updateAgreement1(event: any) {\r\n this.isAgreement1Checked = event.checked;\r\n }\r\n\r\n updateAgreement2(event: any) {\r\n this.isAgreement2Checked = event.checked;\r\n }\r\n\r\n onSubmit() {\r\n if (!this.isAgreement1Checked || !this.isAgreement2Checked) {\r\n \r\n this.toastService.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Please check the terms and conditions and personal information agreement.'\r\n });\r\n return;\r\n }\r\n\r\n this.teacherService.registerTeacher({ teacherId: this.authService.getUserId() });\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/availability', { replaceUrl: true });\r\n }\r\n\r\n /**\r\n * Subscribe to query parameters in the current route to determine if bottom layout should be hidden.\r\n * \r\n * @param {Params} queryparams - Query parameters in the current route.\r\n */\r\n private checkQueryParamsForBottomLayout(): void {\r\n this.subs.add(this.route.queryParams.subscribe((queryparams: Params) => {\r\n if (queryparams && queryparams.buttons) {\r\n this.hideBottomLayout = queryparams.buttons === '1';\r\n }\r\n }));\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Application\r\n Progress\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Username
    \r\n
    \r\n {{loggenInUser.email}}\r\n
    \r\n
    \r\n
    \r\n
    {{statusDateText}}
    \r\n
    {{formattedSubmittedDate}}\r\n
    \r\n
    \r\n
    \r\n
    Application status
    \r\n
    \r\n \r\n
    \r\n {{formatStatusNameText()}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n What now?
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n The change of your status will determine the following course of\r\n action.\r\n
    \r\n
    \r\n
    \r\n \r\n
    Application Received
    \r\n
    \r\n
    \r\n Your application has been successfully submitted and is currently under review by our team.\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Under Consideration
    \r\n
    \r\n
    \r\n We have completed the initial review of your application, and we will be in touch to schedule a Skype interview once suitable tutor positions become available.\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    No Longer Under Consideration
    \r\n
    \r\n
    \r\n Your application is no longer under consideration. Thank you for your interest. We genuinely appreciate the time and effort you invested in the application process.\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    For any inquiries please contact us
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { TeacherStatus, TeacherStatusResponse } from 'src/app/core/models/teacher.model';\r\nimport { User } from 'src/app/core/models/user.model';\r\nimport { NavigationExtras, Router } from '@angular/router';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { SubSink } from 'subsink';\r\nimport { of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\n@Component({\r\n selector: 'app-status',\r\n templateUrl: './status.component.html',\r\n styleUrls: ['./status.component.scss']\r\n})\r\nexport class StatusComponent implements OnInit, OnDestroy {\r\n public statusIcon: string = \"\";\r\n public statusCssClass: string = \"\";\r\n public statusDateText: string = '';\r\n public currentStatus: TeacherStatusResponse = {} as TeacherStatusResponse;\r\n public loggenInUser: User = {} as User;\r\n private subs = new SubSink();\r\n showReviewLink = false;\r\n showWithdrawLink = false;\r\n formattedSubmittedDate = new Date().toString() || null;\r\n constructor(\r\n private authService: AuthService,\r\n private teacherService: TeacherApplicationService,\r\n public generalService: GeneralService,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setStep(\"status\");\r\n this.teacherService.setShowApplicationProgressMenu(false);\r\n\r\n this.subs.add(this.authService.getTeacherStatus().subscribe((response: TeacherStatusResponse) => {\r\n // removing all texct after space for date string response\r\n this.formattedSubmittedDate = response.dateSubmited.substring(0, response.dateSubmited.indexOf(' '));\r\n\r\n this.setTeacherStatusBasedOnResponse(response);\r\n }));\r\n\r\n this.subs.add(this.teacherService.shouldRetrieveTeacherStatus\r\n .pipe(\r\n switchMap((shouldRetrieve: boolean) => {\r\n if (shouldRetrieve) {\r\n return this.authService.getTeacherStatus();\r\n }\r\n return of(null);\r\n })\r\n ).subscribe((res: TeacherStatusResponse | null) => {\r\n if (res) {\r\n this.setTeacherStatusBasedOnResponse(res);\r\n }\r\n }));\r\n\r\n this.loggenInUser = this.authService.getLoggedInUser()!;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.teacherService.setShowWithdrawConfirmationDialog(false);\r\n this.subs.unsubscribe();\r\n }\r\n\r\n /**\r\n * Set the teacher's application status\r\n *\r\n * @async\r\n * @returns {void}\r\n */\r\n setTeacherStatusBasedOnResponse(teacherStatusResponse: TeacherStatusResponse) {\r\n this.currentStatus = teacherStatusResponse;\r\n\r\n switch (this.currentStatus.status.toLowerCase()) {\r\n case TeacherStatus.RECEIVED.toLowerCase():\r\n this.statusIcon = \"status-received-blue.svg\";\r\n this.statusCssClass = 'received-bottom';\r\n this.statusDateText = 'Applied on';\r\n this.showReviewLink = true;\r\n this.showWithdrawLink = true;\r\n break;\r\n case TeacherStatus.CONSIDERATION.toLowerCase():\r\n this.statusIcon = \"accept.svg\";\r\n this.statusCssClass = 'consideration';\r\n this.statusDateText = 'Applied on';\r\n this.showReviewLink = true;\r\n this.showWithdrawLink = true;\r\n break;\r\n case TeacherStatus.REJECTED.toLowerCase():\r\n case TeacherStatus.NO_LONGER_CONSIDERED.toLowerCase():\r\n this.statusDateText = 'Applied on';\r\n this.statusIcon = \"reject.svg\";\r\n this.statusCssClass = 'rejected';\r\n break;\r\n case TeacherStatus.NEW.toLowerCase():\r\n case TeacherStatus.INCOMPLETE.toLowerCase():\r\n this.statusIcon = \"warning-status.svg\";\r\n this.statusCssClass = 'received';\r\n this.statusDateText = 'Started on';\r\n this.showReviewLink = false;\r\n this.showWithdrawLink = false;\r\n break;\r\n case TeacherStatus.APPROVED.toLowerCase():\r\n this.statusIcon = \"accept.svg\";\r\n this.statusCssClass = 'consideration';\r\n this.statusDateText = 'Applied on';\r\n this.showReviewLink = true;\r\n break;\r\n case TeacherStatus.WITHDRAWN.toLowerCase():\r\n this.showReviewLink = false;\r\n this.showWithdrawLink = false;\r\n this.statusIcon = \"reject.svg\";\r\n this.statusCssClass = 'consideration';\r\n this.statusDateText = 'Withdrawn on';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Navigates to the review page for the teacher application\r\n *\r\n */\r\n goToReviewPage() {\r\n this.router.navigateByUrl('/teacher/review?buttons=1', { replaceUrl: true });\r\n this.teacherService.setShowApplicationProgressMenu(true);\r\n }\r\n\r\n /**\r\n * Calls restart Application from API & \r\n * navigates to the review page for the teacher application\r\n */\r\n restartApplicationAndgoToStatusInfoPage() {\r\n this.subs.add(this.teacherService.restartTeacherApplication().subscribe((response: boolean) => {\r\n if (response) {\r\n this.router.navigateByUrl('/teacher/info', { replaceUrl: true });\r\n this.teacherService.setShowApplicationProgressMenu(true);\r\n }\r\n }));\r\n }\r\n\r\n /**\r\n * Navigates to the review page for the teacher application\r\n *\r\n */\r\n goToStatusInfoPage() {\r\n this.router.navigateByUrl('/teacher/info', { replaceUrl: true });\r\n this.teacherService.setShowApplicationProgressMenu(true);\r\n }\r\n\r\n /**\r\n * Handles the click event for the withdraw button\r\n *\r\n */\r\n handleWithdrawal() {\r\n this.teacherService.setShowWithdrawConfirmationDialog(true);\r\n }\r\n isEmpty(obj: Record): boolean {\r\n return Object.keys(obj).length === 0;\r\n }\r\n\r\n isIncomplete(status: string) {\r\n return status.toLowerCase() === TeacherStatus.INCOMPLETE.toLowerCase();\r\n }\r\n\r\n isRejected(status: string) {\r\n return status.toLowerCase() === TeacherStatus.REJECTED.toLowerCase();\r\n }\r\n\r\n isWithdrawn(status: string) {\r\n return status.toLowerCase() === TeacherStatus.WITHDRAWN.toLowerCase();\r\n }\r\n\r\n isConsidered(status: string) {\r\n return status.toLowerCase() === TeacherStatus.CONSIDERATION.toLowerCase();\r\n }\r\n\r\n isNoLongerConsidered(status: string) {\r\n return status.toLowerCase() === TeacherStatus.NO_LONGER_CONSIDERED.toLowerCase();\r\n }\r\n\r\n isApproved(status: string) {\r\n return status.toLowerCase() === TeacherStatus.APPROVED.toLowerCase();\r\n }\r\n\r\n isReceived(status: string) {\r\n return status.toLowerCase() === TeacherStatus.RECEIVED.toLowerCase();\r\n }\r\n\r\n formatStatusNameText() {\r\n return this.generalService.convertCamelCase(this.currentStatus.status).toLowerCase() === TeacherStatus.RECEIVED.toLowerCase() ? 'Application Received' :\r\n this.generalService.convertCamelCase(this.currentStatus.status);\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n Availability\r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n ","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { SubSink } from 'subsink';\r\nimport { TeacherApplicationStepsStatus } from 'src/app/core/models/teacher.model';\r\n\r\n@Component({\r\n selector: 'app-teacher-menu',\r\n templateUrl: './teacher-menu.component.html',\r\n styleUrls: ['./teacher-menu.component.scss']\r\n})\r\nexport class TeacherMenuComponent implements OnInit {\r\n private subs = new SubSink();\r\n private currentIndex: number = 0;\r\n public currentStepsStatus = {} as TeacherApplicationStepsStatus;\r\n public showButtonsInsteadOfMenu = false;\r\n @ViewChild('teacherMenuItems') public teacherMenuItems: ElementRef = {} as ElementRef;\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private teacherService: TeacherApplicationService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.subs.add(this.teacherService.currentStepIndex.pipe(switchMap(ev => {\r\n this.currentIndex = ev;\r\n return this.teacherService.getTeacherApplicationStepsStatus();\r\n })\r\n ).subscribe(stepsStatus => {\r\n this.currentStepsStatus = stepsStatus;\r\n this.teacherService.setStepStatuses(stepsStatus);\r\n console.log(this.currentStepsStatus);\r\n }));\r\n\r\n this.route.queryParams.subscribe(\r\n (queryparams: Params) => {\r\n // check if has to show buttons instead of sidebar menu items\r\n if (queryparams && queryparams.buttons) {\r\n if (queryparams.buttons === '1') {\r\n this.showButtonsInsteadOfMenu = true;\r\n } else {\r\n this.showButtonsInsteadOfMenu = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe()\r\n }\r\n\r\n /**\r\n Navigates to a specific teacher section and sets the step.\r\n @param {string} section The section to navigate to.\r\n @param {number} stepIndex The step index.\r\n @param {*} el The HTML element.\r\n @memberof TeacherApplicationMenuComponent\r\n */\r\n navigateToTeacherSection(section: string, stepIndex: number, el: any) {\r\n let stepsValid = this.teacherService.stepsValid;\r\n // if (stepsValid[this.currentIndex]) {\r\n this.teacherService.setStep(section);\r\n // this.teacherService.setSubmitOnMenuClickListener(true);\r\n this.router.navigateByUrl('/teacher/' + section, { replaceUrl: true });\r\n\r\n }\r\n\r\n /**\r\n Navigates to the previous page.\r\n @memberof TeacherApplicationMenuComponent\r\n */\r\n backClicked() {\r\n this.location.back();\r\n }\r\n\r\n /**\r\n Handles the go back icon event.\r\n @param {*} event The event.\r\n @memberof TeacherApplicationMenuComponent\r\n */\r\n goBackIcon(event: any) {\r\n console.log(event);\r\n }\r\n\r\n /**\r\n Confirms the teacher's intent to withdraw their application.\r\n @memberof TeacherApplicationMenuComponent\r\n */\r\n confirmWithdraw() {\r\n this.teacherService.setShowWithdrawConfirmationDialog(true);\r\n // this.goToStatusPage();\r\n }\r\n\r\n /**\r\n * Navigates to the status page of the teacher's application\r\n */\r\n goToStatusPage() {\r\n this.showButtonsInsteadOfMenu = false;\r\n this.router.navigateByUrl('/teacher/status', { replaceUrl: true });\r\n } \r\n\r\n routeIsActive(routePath: string) {\r\n return this.router.url == routePath;\r\n }\r\n\r\n arePreviousStepsCompleted(steps: { [key: string]: boolean }, currentStep: string): boolean {\r\n const previousSteps = Object.keys(steps).slice(0, Object.keys(steps).indexOf(currentStep));\r\n return previousSteps.every(step => steps[step]);\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Application Progress\r\n \r\n
    \r\n
    \r\n
    \r\n {{step}}\r\n
    {{stepIndex}} /{{totalSteps}} \r\n Steps
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n

    {{headerText}}

    \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n
    \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n","import { Location } from '@angular/common';\r\nimport { AfterContentChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { WindowService } from 'src/app/core/services/window.service';\r\nimport { SubSink } from 'subsink';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-teacher-application',\r\n templateUrl: './teacher-application.component.html',\r\n styleUrls: ['./teacher-application.component.scss'],\r\n providers: []\r\n})\r\nexport class TeacherApplicationComponent implements OnInit, AfterViewInit, AfterContentChecked {\r\n\r\n @ViewChild('leftSideTeacherApplication') public leftSideTeacherApplication: any;\r\n private subs = new SubSink();\r\n public step: string = \"\";\r\n public stepIndex: number = 0;\r\n public totalSteps: number = 0;\r\n public applicationProgress: boolean = false;\r\n public isTablet = false;\r\n headerText = 'Withdraw your Application';\r\n canDisplayConfirmDialog = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private teacherService: TeacherApplicationService,\r\n private windowService: WindowService,\r\n private generalService: GeneralService,\r\n private confirmationService: ConfirmationService,\r\n private changeDetector: ChangeDetectorRef,\r\n private element: ElementRef,\r\n private router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n const width = this.windowService.windowRef.innerWidth;\r\n this.totalSteps = this.teacherService.stepsValid.length;\r\n\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n this.isTablet = res.is768;\r\n // this.prepareStepsCounterText();\r\n }));\r\n\r\n this.subs.add(this.teacherService.currentStepIndex.subscribe(res => {\r\n this.stepIndex = res + 1;\r\n this.step = this.teacherService.getStepsTitle(res);\r\n }));\r\n\r\n this.subs.add(this.teacherService.showApplicationProgressMenu.subscribe((shouldShow: boolean) => {\r\n if (shouldShow) {\r\n this.applicationProgress = true;\r\n } else {\r\n this.applicationProgress = false;\r\n }\r\n }));\r\n\r\n this.subs.add(this.teacherService.showWithdrawConfirmationDialog.subscribe((shouldShowDialog: boolean) => {\r\n if (shouldShowDialog) {\r\n this.canDisplayConfirmDialog = true;\r\n this.confirmWithdraw();\r\n }\r\n }));\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n prepareStepsCounterText() {\r\n // put div contents into another divs contents for mobile view\r\n const firstDivContent = this.element.nativeElement.querySelector(\".step-heading-count-steps\") as HTMLDivElement;\r\n const firstDivConten = this.element.nativeElement.querySelector('.item-active-teacher');\r\n if (firstDivConten && this.isTablet) {\r\n firstDivConten.appendChild(firstDivContent)\r\n } else {\r\n firstDivConten.removeChild(firstDivConten.firstDivContent);\r\n }\r\n }\r\n\r\n confirmWithdraw() {\r\n this.confirmationService.confirm({\r\n message: 'Are you sure you want to withdraw your application?',\r\n dismissableMask: true,\r\n accept: () => {\r\n this.afterAcceptWithDrawApplication();\r\n },\r\n reject: () => {\r\n console.log('rejected');\r\n }\r\n });\r\n }\r\n\r\n afterAcceptWithDrawApplication() {\r\n this.subs.add(this.teacherService.withdrawnTeacherApplication().subscribe((response: boolean) => {\r\n if (response) {\r\n this.teacherService.setShouldRetrieveTeacherStatus(true);\r\n this.router.navigate(['/teacher/status']);\r\n }\r\n }));\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TeacherApplicationDeactivateGuard } from 'src/app/core/guards/teacher-application.guard';\r\nimport { TopMenuContainerLayoutComponent } from 'src/app/shared/layout/top-menu-container-layout/top-menu-container-layout.component';\r\nimport { ContactInfoComponent } from './contact-info/contact-info.component';\r\nimport { EducationComponent } from './education/education.component';\r\nimport { ExperienceComponent } from './experience/experience.component';\r\nimport { GeneralInfoComponent } from './general-info/general-info.component';\r\nimport { ResumeComponent } from './resume/resume.component';\r\nimport { ReviewComponent } from './review/review.component';\r\nimport { StatusComponent } from './status/status.component';\r\nimport { TeacherApplicationComponent } from './teacher-application.component';\r\nimport { TeacherAvailabilityComponent } from './teacher-availability/teacher-availability.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '', component: TopMenuContainerLayoutComponent,\r\n \r\n children: [\r\n {\r\n path: '',\r\n component: TeacherApplicationComponent,\r\n \r\n children: [\r\n {\r\n path: 'info',\r\n component: GeneralInfoComponent,\r\n canDeactivate: [TeacherApplicationDeactivateGuard],\r\n },\r\n { path: 'contact', component: ContactInfoComponent, },\r\n { path: 'education', component: EducationComponent,\r\n canDeactivate: [TeacherApplicationDeactivateGuard] },\r\n { path: 'experience', component: ExperienceComponent,\r\n canDeactivate: [TeacherApplicationDeactivateGuard], },\r\n { path: 'resume', component: ResumeComponent,\r\n canDeactivate: [TeacherApplicationDeactivateGuard] },\r\n { path: 'availability', component: TeacherAvailabilityComponent, },\r\n { path: 'review', component: ReviewComponent, },\r\n { path: 'status', component: StatusComponent, },\r\n ]\r\n },\r\n ]\r\n },\r\n];\r\n// const routes: Routes = [\r\n// { path: 'info', component: GeneralInfoComponent, },\r\n// { path: 'contact', component: ContactInfoComponent, },\r\n// { path: 'education', component: EducationComponent, },\r\n// { path: 'experience', component: ExperienceComponent, },\r\n// { path: 'resume', component: ResumeComponent, },\r\n// { path: 'availability', component: TeacherAvailabilityComponent, },\r\n// { path: 'review', component: ReviewComponent, },\r\n// { path: 'status', component: StatusComponent, },\r\n// ];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TeacherApplicationRoutingModule { }","import { Component, Input, OnInit } from '@angular/core';\r\nimport { User } from 'src/app/core/models/user.model';\r\n\r\n@Component({\r\n selector: 'app-teacher-availability',\r\n templateUrl: './teacher-availability.component.html',\r\n styleUrls: ['./teacher-availability.component.scss']\r\n})\r\nexport class TeacherAvailabilityComponent implements OnInit {\r\n @Input() user?: User\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n}\r\n","\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TeacherApplicationComponent } from './teacher-application.component';\r\nimport { GeneralInfoComponent } from './general-info/general-info.component';\r\nimport { TeacherApplicationRoutingModule } from './teacher-application-routing.module';\r\nimport { TeacherMenuComponent } from './teacher-menu/teacher-menu.component';\r\nimport { ContactInfoComponent } from './contact-info/contact-info.component';\r\nimport { EducationComponent } from './education/education.component';\r\nimport { ExperienceComponent } from './experience/experience.component';\r\nimport { ResumeComponent } from './resume/resume.component';\r\nimport { ReviewComponent } from './review/review.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { DndDirective } from 'src/app/core/directives/dnd.directive';\r\nimport { SharedModule } from 'src/app/shared/shared.module';\r\nimport { TeacherAvailabilityComponent } from './teacher-availability/teacher-availability.component';\r\nimport { StatusComponent } from './status/status.component';\r\nimport {CalendarModule} from 'primeng/calendar';\r\nimport {ProgressSpinnerModule} from 'primeng/progressspinner';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport {RippleModule} from 'primeng/ripple';\r\nimport { TeacherApplicationDeactivateGuard } from 'src/app/core/guards/teacher-application.guard';\r\n@NgModule({\r\n declarations: [\r\n TeacherApplicationComponent,\r\n GeneralInfoComponent,\r\n TeacherMenuComponent,\r\n ContactInfoComponent,\r\n EducationComponent,\r\n ExperienceComponent,\r\n ResumeComponent,\r\n TeacherAvailabilityComponent,\r\n ReviewComponent,\r\n StatusComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TeacherApplicationRoutingModule,\r\n ReactiveFormsModule,\r\n DropdownModule,\r\n FormsModule,\r\n SharedModule,\r\n CalendarModule,\r\n ProgressSpinnerModule,\r\n ButtonModule,\r\n ConfirmDialogModule,\r\n RippleModule,\r\n ],\r\n exports: [\r\n TeacherApplicationComponent,\r\n ],\r\n providers: [ConfirmationService, TeacherApplicationDeactivateGuard]\r\n})\r\nexport class TeacherApplicationModule { }\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Choose date & time available\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Monday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Tuesday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Wednesday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Thursday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Friday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Saturday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Sunday\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n 0\" class=\"more-arrow\" src=\"/assets/icons/availability-day-more-arrow.svg\" \r\n alt=\"availability-day-more\" />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    * Invalid Format\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Choose hours per week *\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    {{time}}
    \r\n
    \r\n
    \r\n
    \r\n
    * Hours per week is required
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    ","import { Location } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { Form, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AvailabilityTime, Teacher } from 'src/app/core/models/teacher.model';\r\nimport { User, UserAvailability, UserAvailabilityHours, UserAvailabilityType } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { CalendarService } from 'src/app/core/services/calendar.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { TeacherApplicationService } from 'src/app/core/services/teacher-application.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-availability',\r\n templateUrl: './availability.component.html',\r\n styleUrls: ['./availability.component.scss']\r\n})\r\nexport class AvailabilityComponent implements OnInit {\r\n @Input() user: User = {} as User;\r\n @Input() showHours: boolean = true;\r\n @Input() isDialog: boolean = false;\r\n private subs = new SubSink();\r\n public form: UntypedFormGroup = new UntypedFormGroup({});\r\n public teacher?: Teacher | User;\r\n weekDays = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];\r\n\r\n public teacherAvailability?: UserAvailability;\r\n public teacherAvailabilityMon: { from: string, to: string }[] = [];\r\n public teacherAvailabilityTue: { from: string, to: string }[] = [];\r\n public teacherAvailabilityWed: { from: string, to: string }[] = [];\r\n public teacherAvailabilityThu: { from: string, to: string }[] = [];\r\n public teacherAvailabilityFri: { from: string, to: string }[] = [];\r\n public teacherAvailabilitySat: { from: string, to: string }[] = [];\r\n public teacherAvailabilitySun: { from: string, to: string }[] = [];\r\n\r\n public hourOptions: string[] = ['5-10', '10-15', '15-20', '20-25', '25-30', '30-35', '35-40']\r\n public selectedHours: string = \"5-10\";\r\n\r\n public tryToSave: boolean = false;\r\n defaultDate: Date = new Date(\"January 31 2024 00:00\");\r\n constructor(\r\n private fb: UntypedFormBuilder,\r\n private router: Router,\r\n private location: Location,\r\n private teacherService: TeacherApplicationService,\r\n private userService: UserService,\r\n private toast: ToastService,\r\n private authService: AuthService,\r\n private calendarService: CalendarService,\r\n private generalService: GeneralService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.teacherService.setCurrentStepIndex(4);\r\n this.subs.add(this.teacherService.updateAvailabilityListener.subscribe(res => {\r\n this.teacherAvailabilityMon = [];\r\n this.teacherAvailabilityTue = [];\r\n this.teacherAvailabilityWed = [];\r\n this.teacherAvailabilityThu = [];\r\n this.teacherAvailabilityFri = [];\r\n this.teacherAvailabilitySat = [];\r\n this.teacherAvailabilitySun = [];\r\n this.teacher = this.user ? this.authService.getLoggedInUser()! : this.teacherService.dummyTeacher;\r\n this.teacherAvailability = this.teacher?.availability;\r\n this.form = new UntypedFormGroup({\r\n mon: new UntypedFormArray([]),\r\n tue: new UntypedFormArray([]),\r\n wed: new UntypedFormArray([]),\r\n thu: new UntypedFormArray([]),\r\n fri: new UntypedFormArray([]),\r\n sat: new UntypedFormArray([]),\r\n sun: new UntypedFormArray([]),\r\n mondayActive: new UntypedFormControl(false),\r\n tuesdayActive: new UntypedFormControl(false),\r\n wednesdayActive: new UntypedFormControl(false),\r\n thursdayActive: new UntypedFormControl(false),\r\n fridayActive: new UntypedFormControl(false),\r\n saturdayActive: new UntypedFormControl(false),\r\n sundayActive: new UntypedFormControl(false),\r\n hours: new UntypedFormControl(this.teacher?.hours_per_week ? this.teacher?.hours_per_week : this.hourOptions[0], {\r\n validators: [Validators.required]\r\n }),\r\n });\r\n\r\n }));\r\n\r\n\r\n this.subs.add(this.teacherService.submitOnMenuClickListener.subscribe(res => {\r\n if (res) {\r\n this.onSubmit();\r\n }\r\n }));\r\n\r\n if (this.isDialog) {\r\n this.userService.getUserAvailability(this.user.aspUserId!).subscribe((res: AvailabilityTime) => {\r\n if (res) {\r\n this.updateDaysFields(res);\r\n }\r\n });\r\n } else {\r\n this.subs.add(this.teacherService.getTeacherApplicationStep5().subscribe((res: AvailabilityTime) => {\r\n if (res) {\r\n this.updateDaysFields(res);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n this.teacherService.setSubmitOnMenuClickListener(false)\r\n }\r\n\r\n /**\r\n * Handle the change event of the time picker control\r\n * @param {any} $event - The change event data\r\n * @param {FormArray} formArray - The form array that contains the time picker control\r\n * @param {any} i - The index of the control in the form array\r\n * @param {string} property - The property name to be updated with the selected time\r\n */\r\n timePickChanged($event: any, formArray: UntypedFormArray, i: any, property: string) {\r\n const dd = new Date($event);\r\n\r\n const timeConverted: Record = {} as Record;\r\n timeConverted[property] = dd.toLocaleString('en-US', {\r\n hour12: false,\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n const timeArray = timeConverted[property].split(\":\");\r\n console.log(timeArray);\r\n if (timeArray[0] <= '23') {\r\n console.log(dd)\r\n console.log(timeConverted);\r\n let controls = this.form.controls;\r\n formArray.at(i).patchValue(\r\n timeConverted\r\n )\r\n \r\n return false;\r\n } else {\r\n formArray.at(i).patchValue(\r\n {from: '00:00', to: '00:'+timeArray[1]}\r\n )\r\n return false;\r\n \r\n }\r\n }\r\n\r\n updateDaysFields(availability: any) {\r\n\r\n this.form.get('mondayActive')?.patchValue(availability.mondayActive || !this.hasEmptyFromOrTo(availability!.mon));\r\n this.form.get('tuesdayActive')?.patchValue(availability.tuesdayActive || !this.hasEmptyFromOrTo(availability!.tue));\r\n this.form.get('wednesdayActive')?.patchValue(availability.wednesdayActive || !this.hasEmptyFromOrTo(availability!.wed));\r\n this.form.get('thursdayActive')?.patchValue(availability.thursdayActive || !this.hasEmptyFromOrTo(availability!.thu));\r\n this.form.get('fridayActive')?.patchValue(availability.fridayActive || !this.hasEmptyFromOrTo(availability!.fri));\r\n this.form.get('saturdayActive')?.patchValue(availability.saturdayActive || !this.hasEmptyFromOrTo(availability!.sat));\r\n this.form.get('sundayActive')?.patchValue(availability.sundayActive || !this.hasEmptyFromOrTo(availability!.sun));\r\n this.form.get('hours')?.patchValue(availability.hours);\r\n\r\n const mondayActive = this.form.get('mondayActive')?.value;\r\n const tuesdayActive = this.form.get('tuesdayActive')?.value;\r\n const wednesdayActive = this.form.get('wednesdayActive')?.value;\r\n const thursdayActive = this.form.get('thursdayActive')?.value;\r\n const fridayActive = this.form.get('fridayActive')?.value;\r\n const saturdayActive = this.form.get('saturdayActive')?.value;\r\n const sundayActive = this.form.get('sundayActive')?.value;\r\n\r\n\r\n if (availability?.mon && mondayActive) {\r\n for (let m of availability!.mon) {\r\n this.teacherAvailabilityMon.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.tue && tuesdayActive) {\r\n for (let m of availability!.tue) {\r\n this.teacherAvailabilityTue.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.wed && wednesdayActive) {\r\n for (let m of availability!.wed) {\r\n this.teacherAvailabilityWed.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.thu && thursdayActive) {\r\n for (let m of availability!.thu) {\r\n this.teacherAvailabilityThu.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.fri && fridayActive) {\r\n for (let m of availability!.fri) {\r\n this.teacherAvailabilityFri.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.sat && saturdayActive) {\r\n for (let m of availability!.sat) {\r\n this.teacherAvailabilitySat.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n if (availability?.sun && sundayActive) {\r\n for (let m of availability!.sun) {\r\n this.teacherAvailabilitySun.push(\r\n {\r\n from: m.from,\r\n to: m.to\r\n }\r\n )\r\n }\r\n }\r\n\r\n this.teacherAvailabilityMon?.forEach(element => {\r\n this.mon.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilityMon.length === 0) {\r\n this.addMon()\r\n }\r\n\r\n this.teacherAvailabilityTue?.forEach(element => {\r\n this.tue.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilityTue?.length === 0) {\r\n this.addTue()\r\n }\r\n\r\n this.teacherAvailabilityWed?.forEach(element => {\r\n this.wed.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilityWed?.length === 0) {\r\n this.addWed()\r\n }\r\n\r\n this.teacherAvailabilityThu?.forEach(element => {\r\n this.thu.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilityThu?.length === 0) {\r\n this.addThu()\r\n }\r\n\r\n this.teacherAvailabilityFri?.forEach(element => {\r\n this.fri.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilityFri?.length === 0) {\r\n this.addFri()\r\n }\r\n\r\n this.teacherAvailabilitySat?.forEach(element => {\r\n this.sat.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilitySat?.length === 0) {\r\n this.addSat()\r\n }\r\n\r\n this.teacherAvailabilitySun?.forEach(element => {\r\n this.sun.push(this.fb.group(element))\r\n });\r\n\r\n if (this.teacherAvailabilitySun.length === 0) {\r\n this.addSun()\r\n }\r\n }\r\n\r\n initCheckboxChangedListener(event: any, dayParam: any, dayActive: any) {\r\n if (!event.checked) {\r\n dayParam.controls?.forEach((element: any, index: number) => {\r\n console.log(element);\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.form.setControl(dayActive, this.fb.array([group]));\r\n });\r\n\r\n }\r\n }\r\n\r\n removeDay(name: string, index: number) {\r\n switch (name) {\r\n case 'mon':\r\n this.removeMon(index);\r\n break;\r\n case 'tue':\r\n this.removeTue(index);\r\n break;\r\n case 'wed':\r\n this.removeWed(index);\r\n break;\r\n case 'thu':\r\n this.removeThu(index);\r\n break;\r\n case 'fri':\r\n this.removeFri(index);\r\n break;\r\n case 'sat':\r\n this.removeSat(index);\r\n break;\r\n case 'sun':\r\n this.removeSun(index);\r\n break;\r\n }\r\n }\r\n // TODO: unused, see if can be used, else delete\r\n processDay(day: string) {\r\n day = day.toLowerCase();\r\n const availability = [`teacherAvailability${day}`];\r\n let list: UntypedFormGroup[] = [];\r\n availability?.forEach(element => {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n list.push(this.fb.group(group));\r\n });\r\n }\r\n\r\n // TODO: unused, see if can be used, else delete\r\n add(day: string) {\r\n const dayString = day.toString();\r\n const control = this.form.get(dayString.toLowerCase()) as UntypedFormArray;\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n (control).push(group);\r\n }\r\n\r\n addMon() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.mon.push(group);\r\n }\r\n\r\n removeMon(index: number) {\r\n console.log('remove',index);\r\n this.mon.removeAt(index);\r\n }\r\n\r\n addTue() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.tue.push(group);\r\n }\r\n\r\n removeTue(index: number) {\r\n this.tue.removeAt(index);\r\n }\r\n\r\n addWed() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.wed.push(group);\r\n }\r\n\r\n removeWed(index: number) {\r\n this.wed.removeAt(index);\r\n }\r\n\r\n addThu() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.thu.push(group);\r\n }\r\n\r\n removeThu(index: number) {\r\n this.thu.removeAt(index);\r\n }\r\n\r\n addFri() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.fri.push(group);\r\n }\r\n\r\n removeFri(index: number) {\r\n this.fri.removeAt(index);\r\n }\r\n\r\n addSat() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.sat.push(group);\r\n }\r\n\r\n removeSat(index: number) {\r\n this.sat.removeAt(index);\r\n }\r\n\r\n addSun() {\r\n const group = new UntypedFormGroup({\r\n from: new UntypedFormControl(''),\r\n to: new UntypedFormControl('')\r\n });\r\n this.sun.push(group);\r\n }\r\n\r\n removeSun(index: number) {\r\n this.sun.removeAt(index);\r\n }\r\n\r\n get mon(): UntypedFormArray {\r\n return this.form.get('mon') as UntypedFormArray;\r\n }\r\n\r\n get tue(): UntypedFormArray {\r\n return this.form.get('tue') as UntypedFormArray;\r\n }\r\n\r\n get wed(): UntypedFormArray {\r\n return this.form.get('wed') as UntypedFormArray;\r\n }\r\n\r\n get thu(): UntypedFormArray {\r\n return this.form.get('thu') as UntypedFormArray;\r\n }\r\n\r\n get fri(): UntypedFormArray {\r\n return this.form.get('fri') as UntypedFormArray;\r\n }\r\n\r\n get sat(): UntypedFormArray {\r\n return this.form.get('sat') as UntypedFormArray;\r\n }\r\n\r\n get sun(): UntypedFormArray {\r\n return this.form.get('sun') as UntypedFormArray;\r\n }\r\n\r\n onSubmit() {\r\n this.tryToSave = true;\r\n\r\n // if (!this.form.valid) {\r\n // return;\r\n // }\r\n\r\n let availability: UserAvailability = {\r\n id: \"string\",\r\n type: UserAvailabilityType.AVAILABLE,\r\n mon: [],\r\n tue: [],\r\n wed: [],\r\n thu: [],\r\n fri: [],\r\n sat: [],\r\n sun: [],\r\n };\r\n\r\n const days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];\r\n const activeDay = ['mondayActive', 'tuesdayActive', 'wednesdayActive', 'thursdayActive', 'fridayActive', 'saturdayActive', 'sundayActive'];\r\n const controls = this.form.controls;\r\n for (let day of days) {\r\n const castedDay = day as keyof UserAvailability;\r\n if (Array.isArray(availability[castedDay])) {\r\n for (let availabilitySlot of controls[day].value) {\r\n for (let activeDayFormValue of activeDay) {\r\n if (this.form.get(activeDayFormValue)!.value) {\r\n (availability[castedDay] as UserAvailabilityHours[]).push({ from: availabilitySlot.from, to: availabilitySlot.to });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // console.log(this.form.value);\r\n\r\n if (this.isDialog) {\r\n this.subs.add(this.teacherService.updateTeacherAvailability(this.form.value).subscribe(res => {\r\n if (res) {\r\n this.toast.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your Availability info were updated.'\r\n });\r\n this.calendarService.setToggleOverlayListener(true);\r\n this.calendarService.setUpdateListener(true);\r\n }\r\n }));\r\n } else {\r\n\r\n this.subs.add(this.teacherService.updateAPITeacherApplicationStep5(this.form.value).subscribe(res => {\r\n if (res) {\r\n this.toast.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Your Availability info were updated.'\r\n });\r\n this.router.navigateByUrl('/teacher/review', { replaceUrl: true });\r\n }\r\n if (!res) {\r\n this.toast.setShowToastmessage({\r\n severity: 'warn',\r\n summary: '',\r\n detail: 'Previous steps must be completed first.'\r\n });\r\n }\r\n }));\r\n if (this.user) {\r\n this.user!.availability = availability;\r\n this.user!.hours_per_week = this.selectedHours\r\n console.log(this.user)\r\n this.userService.updateUserListener();\r\n this.subs.add(this.teacherService.updateAvailability(this.user.availability).subscribe(res => {\r\n localStorage.setItem(\"user\", JSON.stringify(this.user));\r\n this.teacherService.setUpdateAvailabilityForSchedulerClickListener(true)\r\n }));\r\n this.toast.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Availability has been updated.'\r\n });\r\n }\r\n else {\r\n this.teacher!.availability = availability;\r\n this.teacher!.hours_per_week = this.selectedHours\r\n // this.router.navigateByUrl('/teacher/(teacher:review)', { replaceUrl: true });\r\n }\r\n }\r\n }\r\n\r\n checkFormat(from: string, to: string) {\r\n const isFromValid = from.length === 5 && from.indexOf(\":\") === 2;\r\n const isToValid = to.length === 5 && to.indexOf(\":\") === 2;\r\n\r\n return isFromValid && isToValid;\r\n }\r\n\r\n async reload(url: string): Promise {\r\n await this.router.navigateByUrl('.', { skipLocationChange: true });\r\n return this.router.navigateByUrl(url);\r\n }\r\n\r\n onHoursChange(event: any) {\r\n setTimeout(() => {\r\n this.selectedHours = event.value\r\n }, 100);\r\n }\r\n\r\n checkValidity(time: string) {\r\n if (time.length === 0) return 1\r\n let split = time.split(':');\r\n let hours = parseInt(split[0]);\r\n let minutes = parseInt(split[1]);\r\n return (hours && minutes);\r\n }\r\n\r\n /**\r\n * Check if the given field is valid or not.\r\n * @param {string} field - The field to check its validity.\r\n * @returns {boolean} - Returns `true` if the field is invalid, and `false` otherwise.\r\n */\r\n ifFieldValid(field: string): boolean {\r\n let control = this.form.get(field);\r\n let isNotValid = false;\r\n\r\n if ((control as UntypedFormArray).controls) {\r\n for (let c of (control as UntypedFormArray).controls) {\r\n let from = (c as UntypedFormGroup).controls.from.value.toString();\r\n let to = (c as UntypedFormGroup).controls.to.value.toString();\r\n isNotValid = isNotValid || (this.tryToSave && control!.touched && (isNaN(this.checkValidity(from)) || isNaN(this.checkValidity(to))));\r\n }\r\n } else {\r\n isNotValid = this.form.get(field)!.invalid && (this.tryToSave || this.form.get(field)!.touched);\r\n }\r\n\r\n if ((control as UntypedFormArray).controls?.length === 0) {\r\n isNotValid = false;\r\n }\r\n\r\n // if (this.router.url.includes('teacher')) {\r\n // this.teacherService.setStepValidWithBoolean(4, isNotValid, 'teacher-availability-route');\r\n // }\r\n\r\n return isNotValid;\r\n }\r\n\r\n goBack() {\r\n this.router.navigateByUrl('/teacher/resume', { replaceUrl: true });\r\n }\r\n\r\n private hasEmptyFromOrTo(data: { from: string, to: string }[]): boolean {\r\n if (this.generalService.isNullishObject(data)) {\r\n return true;\r\n }\r\n if (data.length === 0) {\r\n return true; // Empty array\r\n }\r\n for (const item of data) {\r\n if (item.from.trim() === '' || item.to.trim() === '') {\r\n return true; // Empty from or to\r\n }\r\n }\r\n return false; // No empty from or to\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-block-viewer',\r\n template: `\r\n
    \r\n
    \r\n \r\n \r\n {{header}}\r\n {{secondaryTitleRight}}\r\n New\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n`,\r\n styleUrls: ['./block-viewer.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class BlockViewerComponent implements OnInit {\r\n\r\n @Input() header!: string;\r\n @Input() headerBackgroundImage!: string;\r\n @Input() containerClass!: string;\r\n @Input() blockClass!: string;\r\n @Input() headerBlockClass!: string;\r\n @Input() headerClass!: string;\r\n @Input() headerTextClass!: string;\r\n @Input() previewStyle!: object;\r\n @Input() actionButtonText!: string;\r\n @Input() actionButtonRoute!: string;\r\n @Input() secondaryTitleRight!: string;\r\n @Input() new: boolean = false;\r\n @Input() disabledButton: boolean = false;\r\n @Input() containerHeight!: number;\r\n @Input() headerIcon!: string;\r\n @Input() showCloseDialogIcon = false;\r\n @Input() backButtonLabel = '';\r\n @Input() tooltipLabel = '';\r\n @Output() closeDialogEvent = new EventEmitter();\r\n\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n actionRoute(event: any) {\r\n this.router.navigate([this.actionButtonRoute]);\r\n }\r\n\r\n closeDialogIconClicked() {\r\n this.closeDialogEvent.emit();\r\n }\r\n\r\n\r\n goBack() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    Students List
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {{getClassroomTitle(classroom)}}
    \r\n \r\n
    \r\n
    1\">\r\n
    \r\n
    \r\n
    \r\n {{user.firstName}} {{user.lastName}}
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Classroom, ClassroomType } from 'src/app/core/models/classroom.model';\r\nimport { User } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ClassroomService } from 'src/app/core/services/classroom.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-classrooms-check-list',\r\n templateUrl: './classrooms-check-list.component.html',\r\n styleUrls: ['./classrooms-check-list.component.scss']\r\n})\r\nexport class ClassroomsCheckListComponent implements OnInit {\r\n @ViewChild('list') public list: any;\r\n @Output() checkedList = new EventEmitter<{ usersChecked: User[], classroomsChecked: Classroom[], classroom: Classroom, map: Map, classroomUsers: Map }>();\r\n @Output() close = new EventEmitter<{}>();\r\n @Input() usersAssignedTo: User[] = [];\r\n @Input() classroomsAssignedTo: Classroom[] = [];\r\n @Input() preselectedClassroom: Classroom = {} as Classroom;\r\n @Input() showBlur: boolean = false;\r\n @Input() note: boolean = false;\r\n private subs = new SubSink();\r\n public classrooms: Classroom[] = [];\r\n public term: any;\r\n public firstOpen: boolean = true;\r\n\r\n @Input() public test: Map = new Map()\r\n @Input() public classroomUsers: Map = new Map()\r\n\r\n @Input() public already: User[] = []\r\n\r\n @Input() disapear: boolean = false;\r\n\r\n constructor(\r\n private classroomService: ClassroomService,\r\n private authService: AuthService,\r\n private generalService: GeneralService,\r\n ) { }\r\n ngOnInit(): void {\r\n this.classrooms = this.classroomService.sessionUserClassrooms\r\n this.subs.sink = this.classroomService.getLMSUserClassrooms(this.authService.getUserId()!).subscribe(res => {\r\n this.classrooms = res;\r\n this.classroomService.sessionUserClassrooms = res;\r\n\r\n if (this.preselectedClassroom && !this.generalService.isNullishObject(this.preselectedClassroom)) {\r\n this.classrooms = this.classrooms.filter((el: Classroom) => { return this.preselectedClassroom.id === el.id })\r\n }\r\n })\r\n }\r\n ngAfterViewInit() {\r\n this.closeOnClickOutside();\r\n }\r\n\r\n ngAfterContentInit() {\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n getClassroomTitle(classroom: Classroom) {\r\n if (this.authService.isStudent) {\r\n return this.generalService.getShortFullName(classroom.teacher);\r\n } else {\r\n return this.classroomService.getFormattedStudentNames(classroom.classroomStudents);\r\n }\r\n }\r\n\r\n addClassroom(event: any, classroom: Classroom) {\r\n for (let user of classroom.classroomStudents) {\r\n this.checkUser({ checked: false }, user, classroom);\r\n }\r\n if (event.checked) {\r\n for (let user of classroom.classroomStudents) {\r\n this.checkUser({ checked: true }, user, classroom);\r\n }\r\n }\r\n }\r\n\r\n checkUser(event: any, user: User, classroom: Classroom) {\r\n // let already = this.usersAssignedTo.some(el => el.aspUserId == user.id);\r\n // if (!already) {\r\n let al = this.already.find(el => el.id == user.id)\r\n let checked = event.checked;\r\n if (checked) {\r\n this.usersAssignedTo.push(user)\r\n } else {\r\n this.usersAssignedTo = this.usersAssignedTo.filter((el: User) => { return user.id !== el.id })\r\n }\r\n let foundUnchecked = false;\r\n for (let user of classroom.classroomStudents) {\r\n if (!this.isUserChecked(user, classroom)) {\r\n foundUnchecked = true;\r\n }\r\n }\r\n if (foundUnchecked) {\r\n this.classroomsAssignedTo = this.classroomsAssignedTo.filter((el: Classroom) => { return classroom.id !== el.id })\r\n } else {\r\n this.classroomsAssignedTo.push(classroom);\r\n }\r\n let classroomUsers: User[] = [];\r\n\r\n\r\n if (this.test.has(classroom.id)) {\r\n classroomUsers = this.test.get(classroom.id)!;\r\n }\r\n\r\n if (checked) {\r\n classroomUsers?.push(user)\r\n } else {\r\n classroomUsers = classroomUsers?.filter((el: User) => { return user.id !== el.id })\r\n }\r\n\r\n console.log(classroomUsers)\r\n\r\n if (!checked) {\r\n this.test.delete(classroom.id);\r\n } else {\r\n this.test.set(classroom.id, classroomUsers!)\r\n }\r\n\r\n\r\n if (classroomUsers.length > 0) {\r\n this.classroomUsers.set(classroom.id, { classroom: classroom, users: classroomUsers! })\r\n } else {\r\n this.classroomUsers.delete(classroom.id)\r\n }\r\n this.isClassroomChecked(classroom)\r\n this.checkedList.emit({ usersChecked: this.usersAssignedTo, classroomsChecked: this.classroomsAssignedTo, classroom: classroom, map: this.test, classroomUsers: this.classroomUsers })\r\n // }\r\n }\r\n\r\n alreadyAssigned(user: User) {\r\n if (this.already) {\r\n return this.already.some(el => el.aspUserId == user.id || el.id == user.id);\r\n }\r\n return false;\r\n }\r\n\r\n alreadyAssignedFromUsers(users: User[]) {\r\n if (this.already) {\r\n for (let user of users) {\r\n if (this.already.some(el => el.aspUserId == user.id || el.id == user.id))\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n\r\n isUserChecked(user: User, classroom: Classroom) {\r\n let isChecked = false;\r\n if (this.test.has(classroom.id)) {\r\n let classroomUsers = this.test.get(classroom.id)!;\r\n if (classroomUsers.some((el: User) => el.id == user.id)) {\r\n isChecked = true;\r\n }\r\n }\r\n return isChecked\r\n }\r\n\r\n isClassroomChecked(classroom: Classroom) {\r\n let isChecked = false;\r\n if (this.test.has(classroom.id)) {\r\n let classroomUsers = this.test.get(classroom.id)!;\r\n if (classroomUsers.length == classroom.classroomStudents.length) {\r\n isChecked = true;\r\n }\r\n }\r\n return isChecked\r\n }\r\n\r\n closeList() {\r\n this.close.emit();\r\n }\r\n\r\n closeOnClickOutside() {\r\n document.addEventListener('click', (event: any) => {\r\n setTimeout(() => {// i dont know why..\r\n let ignoreClickOnMeElement = this.list;\r\n var isClickInsideElement = ignoreClickOnMeElement.nativeElement.contains(event.target);\r\n if (!isClickInsideElement && !this.firstOpen) {\r\n // this.closeList();\r\n }\r\n this.firstOpen = false;\r\n }, 0);\r\n });\r\n }\r\n\r\n getuniqueClassroomStudents(classroomStudents: User[]) {\r\n return Array.from(new Set(classroomStudents.map((student: any) => student.aspUserId)))\r\n .map(aspUserId => classroomStudents.find((student: any) => student.aspUserId === aspUserId)) as User[];\r\n }\r\n\r\n}\r\n","\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n\r\n\r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    HOME
    \r\n
    COURSES
    \r\n
    ABOUT
    \r\n
    PRICING
    \r\n
    CONTACT
    \r\n
    MYLINGOBUSINESS
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    0\" class=\"count-indicator\">{{notifications.length}}
    \r\n
    \r\n \r\n \r\n \r\n
    {{loggenInUser.firstName}}\r\n {{loggenInUser.lastName | slice:0:1}}.
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n \r\n
    • \r\n Dashboard\r\n
    • \r\n
    • \r\n Settings\r\n
    • \r\n \r\n \r\n
    • \r\n
      Logout
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, ElementRef, HostListener, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\nimport { Notification } from 'src/app/core/models/notification.model';\r\nimport { User } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ChatService } from 'src/app/core/services/chat.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { NotificationService } from 'src/app/core/services/notification.service';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n chatService = inject(ChatService);\r\n dropdownOpen: boolean = false;\r\n public backend_url = environment.apiUrl\r\n loggenInUser: User = {} as User;\r\n userPhoto: string = \"\";\r\n notifications: Notification[] = [];\r\n unreadNotifications: Notification[] = [];\r\n subs = new SubSink()\r\n overlayActive = false;\r\n userOverlayActive = false;\r\n @ViewChild('overlayPanel', { static: false }) public overlayPanel: any;\r\n @ViewChild('scaleHeader', { static: true }) public ratingDetails: any;\r\n constructor(\r\n public generalService: GeneralService,\r\n private authService: AuthService,\r\n private userService: UserService,\r\n private notificationService: NotificationService,\r\n private router: Router,\r\n private elementRef: ElementRef,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.closeProdileDropdownOnClickOutside();\r\n // this.closeNotificationsDropdownOnClickOutside();\r\n\r\n this.loggenInUser = this.authService.getLoggedInUser();\r\n this.userPhoto = this.userService.getUserPhoto(this.authService.getLoggedInUser());\r\n\r\n this.subs.add(this.userService.update.subscribe(res => {\r\n if (!res) {\r\n return;\r\n }\r\n this.userPhoto = this.authService.getUserPhoto()\r\n this.loggenInUser = this.authService.getLoggedInUser()\r\n }));\r\n this.subs.add(this.notificationService.get().subscribe((res: any) => {\r\n this.notifications = res.reverse();\r\n // Filter notifications to get only the unread ones\r\n this.unreadNotifications = this.notifications.filter(\r\n (notification) => !notification.isRead\r\n );\r\n }));\r\n\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n if (res.w992up && !res.w1366up) {\r\n\r\n // this.generalService.scaleElementDown(this.ratingDetails, 'unset', 1);\r\n } else {\r\n // this.generalService.scaleElementReset(this.ratingDetails);\r\n }\r\n }));\r\n \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n handleDropdown() {\r\n !this.dropdownOpen ? document.getElementById('profile-dropdown')!.style.visibility = \"visible\" : document.getElementById('profile-dropdown')!.style.visibility = \"hidden\";\r\n this.dropdownOpen = !this.dropdownOpen\r\n document.getElementById('profile-dropdown')!.classList.toggle('active');\r\n }\r\n\r\n closeDropdown() {\r\n if (document.getElementById('profile-dropdown')) {\r\n document.getElementById('profile-dropdown')!.style.visibility = \"hidden\";\r\n this.dropdownOpen = false;\r\n document.getElementById('profile-dropdown')!.classList.remove('active');\r\n }\r\n }\r\n\r\n closeProdileDropdownOnClickOutside() {\r\n let ignoreClickOnMeElement = document.getElementById('header');\r\n document.onclick = (event: any) => {\r\n var isClickInsideElement = ignoreClickOnMeElement?.contains(event.target!);\r\n if (!isClickInsideElement) {\r\n this.closeDropdown()\r\n }\r\n };\r\n }\r\n\r\n logout() {\r\n this.chatService.setUserStatus(this.loggenInUser!.aspUserId!, 'offline');\r\n this.authService.logout();\r\n \r\n }\r\n\r\n navigateToTeacherSection(section: string) {\r\n if (this.userOverlayActive) {\r\n this.userOverlayActive = false;\r\n }\r\n // this.overlayPanel.hide();\r\n this.router.navigateByUrl('/user-profile/' + section);\r\n return false;\r\n }\r\n\r\n toggleNotificationOverlay(event: any) {\r\n this.overlayActive = !this.overlayActive;\r\n const unreadNotificationIds = this.unreadNotifications.map(\r\n (notification) => notification.id\r\n );\r\n this.subs.sink = this.notificationService.markAsReadBulk(unreadNotificationIds).subscribe((res: any) => {\r\n if (res) {\r\n this.unreadNotifications = [];\r\n }\r\n }, (error) => {});\r\n }\r\n\r\n toggleUserMenuOverlay(event: any) {\r\n this.userOverlayActive = !this.userOverlayActive;\r\n console.log(this.userOverlayActive);\r\n }\r\n \r\n \r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement: any) {\r\n // console.log('targetElement.classList.contains(notaa)', targetElement.classList.contains('notaa'));\r\n if (!targetElement.classList.contains('notaa')) {\r\n this.overlayActive = false;\r\n // this.userOverlayActive = false;\r\n // console.log('isClickInsideElement', targetElement);\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n // Click occurred outside of the element\r\n // Do something here, like hide a dropdown menu or close a modal\r\n }\r\n }\r\n if (!targetElement.classList.contains('notaa2')) {\r\n // this.overlayActive = false;\r\n this.userOverlayActive = false;\r\n // console.log('isClickInsideElement', targetElement);\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n // Click occurred outside of the element\r\n // Do something here, like hide a dropdown menu or close a modal\r\n }\r\n }\r\n\r\n \r\n }\r\n\r\n onClicka(event: MouseEvent) {\r\n if (!this.elementRef.nativeElement.contains(event.target)) {\r\n this.overlayActive = false;\r\n this.userOverlayActive = false;\r\n // The click occurred outside of the element\r\n // Do something here, like hide a dropdown menu or close a modal\r\n }\r\n }\r\n closeNotificationsDropdownOnClickOutside() {\r\n let ignoreClickOnMeElement = document.querySelector('.note-badge');\r\n document.onclick = (event: any) => {\r\n // console.log(event.target);\r\n var isClickInsideElement = ignoreClickOnMeElement?.contains(event.target!);\r\n if (!isClickInsideElement) {\r\n // this.overlayActive = false;\r\n }\r\n };\r\n }\r\n}\r\n","\r\n\r\n \r\n\r\n\r\n \r\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'g-header-back-button',\r\n templateUrl: './g-header-back-button.component.html',\r\n styleUrls: ['./g-header-back-button.component.scss'],\r\n})\r\nexport class GHeaderBackButtonComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n isMobile = false;\r\n @Input() label = 'Back'; \r\n\r\n constructor(private generalService: GeneralService) { }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(this.generalService.deviceKind.subscribe((res)=> {\r\n this.isMobile = res.w576down;\r\n console.log(this.isMobile );\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n buttonClicked() {\r\n\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g-level-circle',\r\n templateUrl: './g-level-circle.component.html',\r\n styleUrls: ['./g-level-circle.component.scss'],\r\n})\r\nexport class GLevelCircleComponent implements OnInit {\r\n\r\n @Input() name = 'A1';\r\n @Input() size = 'base';\r\n @Input() textSize!: string;\r\n @Input() extraClass = '';\r\n @Input() scale = 1;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get extraDutchCssClass() {\r\n return this.name ? this.name.includes('NT') ? 'dutch' : '' : null;\r\n }\r\n}\r\n","
    \r\n {{name}}\r\n
    ","\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { ChangeDetectionStrategy, Component, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-top-menu-container-layout',\r\n templateUrl: './top-menu-container-layout.component.html',\r\n styleUrls: ['./top-menu-container-layout.component.scss'],\r\n})\r\nexport class TopMenuContainerLayoutComponent implements OnInit, OnDestroy {\r\n\r\n isBelow768 = false;\r\n @ViewChild('scale',{static:true}) public ratingDetails: any;\r\n @ViewChild('heada',{static:true}) public heada: any;\r\n private subs = new SubSink();\r\n constructor(private generalService: GeneralService) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.subs.add(this.generalService.deviceKind.subscribe(res => {\r\n let zoomLevel = 1;\r\n if (res.w992up && !res.w1366up) {\r\n zoomLevel = 0.9;\r\n }\r\n this.isBelow768 = res.is768;\r\n console.log(res.is768)\r\n // if (res.w992up && !res.w1500up) {\r\n\r\n // this.generalService.scaleElementDown(this.heada.elementRef, \"unset\", zoomLevel, header);\r\n // this.generalService.scaleElementDown(this.ratingDetails, \"left top\", zoomLevel);\r\n // } else {\r\n // this.generalService.scaleElementReset(this.ratingDetails);\r\n // this.generalService.scaleElementReset(this.heada.elementRef, header);\r\n // }\r\n }));\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n // console.log(event);\r\n // this.updateZoom();\r\n // this.smaller();\r\n }\r\n\r\n private updateZoom() {\r\n const screenWidth = window.innerWidth;\r\n if (screenWidth <= 768) {\r\n document.body.classList.add('small-screen');\r\n } else {\r\n document.body.classList.remove('small-screen');\r\n }\r\n }\r\n\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class LoaderComponent implements OnInit, AfterViewInit {\r\n @Input() size = '320';\r\n @Input() scale = '1';\r\n @ViewChild('loaderEl', { static: true }) loaderEl: ElementRef = {} as ElementRef;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.addLottiePlayerToStep(this.loaderEl);\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n private addLottiePlayerToStep(el: ElementRef): void {\r\n const lottiePlayer = `
    `;\r\n el.nativeElement.innerHTML = lottiePlayer;\r\n }\r\n\r\n}\r\n","\r\n
    ","
    \r\n
    \r\n \"mlt-logo-white\"\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n\r\n
    \r\n
    \r\n \r\n
      \r\n \r\n
    • \r\n
      \r\n \r\n \r\n \r\n \r\n
      \r\n\r\n {{item.title}}\r\n
    • \r\n
      \r\n \r\n
    • \r\n\r\n
      \r\n \r\n \r\n \r\n \r\n
      \r\n {{item.title}}\r\n
    • \r\n
      \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Let’s get social!

    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    ","import { DOCUMENT } from '@angular/common';\r\nimport { AfterContentChecked, ChangeDetectorRef, Component, EventEmitter, inject, Inject, Input, OnInit, Output, Renderer2 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { LeftMenuItem } from 'src/app/core/models/general.model';\r\nimport { Notification } from 'src/app/core/models/notification.model';\r\nimport { UserRole } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ChatService } from 'src/app/core/services/chat.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { NotificationService } from 'src/app/core/services/notification.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-mobile-menu',\r\n templateUrl: './mobile-menu.component.html',\r\n styleUrls: ['./mobile-menu.component.scss']\r\n})\r\nexport class MobileMenuComponent implements OnInit, AfterContentChecked {\r\n @Input() init: boolean = false;\r\n @Input() menuItems!: any;\r\n @Output() opened = new EventEmitter();\r\n chatService = inject(ChatService);\r\n public role: UserRole = {} as UserRole;\r\n active = false;\r\n subs = new SubSink();\r\n mobileMenuTitle: string = '';\r\n burgerClasses = { burger: '', nava: '', overlay: '', body: '', menu: 'hidden' };\r\n extraMobileMenuItems = [] as LeftMenuItem[];\r\n unreadNotifications: Notification[] = [];\r\n socialLinks =\r\n {\r\n linkedin: 'https://gr.linkedin.com/company/mylingotrip',\r\n twitter: 'https://twitter.com/MyLingoTrip',\r\n facebook: 'https://www.facebook.com/mylingotrip',\r\n youtube: 'https://www.youtube.com/c/MyLingoTrip',\r\n instagram: 'https://www.instagram.com/mylingotrip/',\r\n };\r\n\r\n constructor(\r\n private router: Router,\r\n private generalService: GeneralService,\r\n private authService: AuthService,\r\n private changeDetector: ChangeDetectorRef,\r\n private layoutService: LayoutService,\r\n private notificationService: NotificationService,\r\n private renderer: Renderer2,\r\n @Inject(DOCUMENT) private document: Document,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // this.burgerClick();\r\n this.role = this.authService.getUserRole();\r\n this.menuItems = this.layoutService.getMenuItems();\r\n this.extraMobileMenuItems = this.layoutService.getExtraMobileMenuItems();\r\n\r\n this.subs.add(this.notificationService.get().subscribe((res: any) => {\r\n // Filter notifications to get only the unread ones\r\n this.unreadNotifications = res.filter(\r\n (notification: Notification) => !notification.isRead\r\n );\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.subs.sink = this.generalService.mobileMenuTitle.subscribe((res: string) => {\r\n this.mobileMenuTitle = res;\r\n this.changeDetector.detectChanges();\r\n })\r\n }\r\n onBurgerClicked() {\r\n this.active = !this.active;\r\n this.opened.emit();\r\n }\r\n toggleMobileMenuItems() {\r\n var mobileMenuItems = document.getElementById('mobile-menu-items');\r\n if (mobileMenuItems!.clientHeight) {\r\n mobileMenuItems!.style.height = \"0\";\r\n } else {\r\n mobileMenuItems!.style.height = window!.innerHeight + \"px\";\r\n }\r\n }\r\n\r\n logout() {\r\n this.authService.logout();\r\n }\r\n\r\n navigateTo(route: string) {\r\n this.onBurgerClicked();\r\n this.burgerClick();\r\n this.router.navigateByUrl(route, { replaceUrl: true });\r\n // this.router.navigate([route]);\r\n }\r\n\r\n burgerClick() {\r\n this.burgerClasses.burger = this.burgerClasses.burger === 'clicked' ? '' : 'clicked';\r\n this.burgerClasses.overlay = this.burgerClasses.overlay === 'show' ? '' : 'show';\r\n this.burgerClasses.nava = this.burgerClasses.nava === 'show' ? '' : 'show';\r\n this.burgerClasses.menu = this.burgerClasses.menu === 'hidden' ? '' : 'hidden';\r\n this.burgerClasses.body = 'overflow';\r\n\r\n if (this.burgerClasses.burger === 'clicked') {\r\n\r\n this.renderer.addClass(this.document.body, 'overflow-hidden');\r\n } else {\r\n\r\n this.renderer.removeClass(this.document.body, 'overflow-hidden');\r\n }\r\n }\r\n}\r\n","\r\n
  • \r\n
    \r\n \r\n {{notification.description}}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
  • \r\n
    \r\n\r\n\r\n
  • \r\n
    \r\n \r\n {{notification.description}}.\r\n
    \r\n
    \r\n {{notification.createdAt |\r\n date:'dd/MM/yyyy h:mm a'}}
    \r\n
    \r\n \r\n
    \r\n
  • \r\n
    ","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Notification } from 'src/app/core/models/notification.model';\r\n\r\n@Component({\r\n selector: 'app-notification-row-item',\r\n templateUrl: './notification-row-item.component.html',\r\n styleUrls: ['./notification-row-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NotificationRowItemComponent implements OnInit {\r\n @Input() notification = {} as Notification;\r\n @Input() slimStyle = false;\r\n @Input() textSizeClass = 'font-sm';\r\n @Output() removeNotification = new EventEmitter();\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n getNotifIcon(type: string) {\r\n return '/assets/icons/notifications/' + type + '.svg';\r\n }\r\n\r\n onNotificationIconError(event: Event) {\r\n const imgElement = event.target as HTMLImageElement;\r\n imgElement.src = '/assets/icons/notifications/notif-check.svg';\r\n }\r\n\r\n onRemoveNotification(notificationId: number) {\r\n this.removeNotification.emit(notificationId);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n
    \r\n \r\n

    {{headerText}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    {{headerText}}

    \r\n

    {{confirmMessage}}

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    {{headerText}}

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \"Button\r\n \r\n
    \r\n
    ","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { ConfirmDialogService } from 'src/app/core/services/confirm-dialog.service';\r\n\r\n@Component({\r\n selector: 'app-confirm-dialog',\r\n templateUrl: './confirm-dialog.component.html',\r\n styleUrls: ['./confirm-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ConfirmDialogComponent implements OnInit {\r\n\r\n @ViewChild('lottieAnim', { static: false }) lottieAnim: ElementRef = {} as ElementRef;\r\n @Input() width = {'max-width': '640px'};\r\n @Input() headerText?: string;\r\n @Input() confirmMessage?: string;\r\n @Input() confirmIcon?: string;\r\n @Input() acceptBtnLabel?: string;\r\n @Input() rejectBtnLabel?: string;\r\n @Input() rejectBtnIcon?: string | undefined = undefined;\r\n @Input() acceptBtnIcon?: string | undefined = undefined;\r\n @Input() showHeader?: boolean = false;\r\n @Input() dismissableMask?: boolean = true;\r\n @Input() dialogType?: string = 'header-with-image'; // Set the default dialog type\r\n @Input() headerClass?: string = 'text-center flex align-items-center flex-column '; //text-center flex align-items-center flex-row \r\n @Input() dialogKey = 'key1';\r\n @Input() acceptBtnImage = '';\r\n @Input() acceptBtnClass = 'cd-dialog-btn-accept';\r\n @Input() rejectBtnClass = 'cd-dialog-btn-reject';\r\n @Input() showConfirmIcon = true;\r\n \r\n @Output() confirmSelected = new EventEmitter();\r\n @Output() rejectSelected = new EventEmitter();\r\n constructor(\r\n private confirmationService: ConfirmationService,\r\n private confirmDialogService: ConfirmDialogService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.confirmationService.confirm({\r\n message: this.confirmMessage,\r\n dismissableMask: this.dismissableMask,\r\n accept: () => {\r\n this.confirmSelected.emit();\r\n console.log('accepted');\r\n this.confirmDialogService.onAcceptSelection(null);\r\n this.acceptBtnClass = 'cd-dialog-btn-accept';\r\n this.rejectBtnClass = 'cd-dialog-btn-reject';\r\n this.confirmDialogService.hide();\r\n this.confirmDialogService.resetProperties();\r\n },\r\n reject: () => {\r\n this.rejectSelected.emit();\r\n this.confirmDialogService.onRejectSelection(null);\r\n this.acceptBtnClass = 'cd-dialog-btn-accept';\r\n this.rejectBtnClass = 'cd-dialog-btn-reject';\r\n this.confirmDialogService.hide();\r\n this.confirmDialogService.resetProperties();\r\n console.log('rejected');\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.acceptBtnClass = 'cd-dialog-btn-accept';\r\n this.rejectBtnClass = 'cd-dialog-btn-reject';\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (this.dialogType === 'header-with-lottie' && this.lottieAnim) {\r\n setTimeout(() => {\r\n this.addLottiePlayerToStep(this.lottieAnim);\r\n }, 200); // Delay the loading of the animation by 1 second\r\n\r\n }\r\n }\r\n\r\n onClearSelected() {\r\n this.confirmDialogService.hide();\r\n this.confirmDialogService.resetProperties();\r\n }\r\n\r\n private addLottiePlayerToStep(step: ElementRef): void {\r\n const lottiePlayer = `
    `;\r\n step.nativeElement.innerHTML = lottiePlayer;\r\n }\r\n\r\n}\r\n","
    \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n\r\n
    {{selectedItemValue[flagFilter]}}
    \r\n
    {{selectedItemValue}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n \r\n \r\n
    {{ templateValue ? option[templateValue] : option }}
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\n\r\n@Component({\r\n selector: 'app-prime-input-dropdown',\r\n templateUrl: './prime-input-dropdown.component.html',\r\n styleUrls: ['./prime-input-dropdown.component.scss'],\r\n})\r\nexport class PrimeInputDropdownComponent implements OnInit {\r\n @Input() countries: any[] = [];\r\n @Input() placeholder!: string;\r\n @Input() inputName!: string;\r\n @Input() optionLabel!: string;\r\n @Input() filterBy!: string;\r\n @Input() className: string = 'dropdown-blue';\r\n @Input() isInvalidControl!: boolean;\r\n @Input() isValidControl!: boolean;\r\n @Input() styleClass = 'dropdown-blue white-bg rounded-less with-icon';\r\n @Input() parentForm!: FormGroup;\r\n @Input() templateValue!: any;\r\n @Input() selectedItemValue!: any;\r\n @Input() filter = true;\r\n @Input() withFlags = false;\r\n @Input() flagFilter!: any;\r\n @Input() showTextAfterImage = true;\r\n\r\n @Output() valueSelected = new EventEmitter();\r\n\r\n onValueChange(value: any) {\r\n this.valueSelected.emit(value);\r\n }\r\n\r\n constructor(private fb: FormBuilder,\r\n public generalService: GeneralService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.parentForm.addControl(this.inputName, new FormControl('', Validators.required));\r\n }\r\n\r\n findCountryImage(value: string) {\r\n let values = '';\r\n switch (this.flagFilter) {\r\n case 'code':\r\n values = this.generalService.findCountryImage(value);\r\n break;\r\n case 'name':\r\n values = this.generalService.findCountryImageByName(value);\r\n break;\r\n default:\r\n values = this.generalService.findCountryImageByName(value);\r\n break;\r\n }\r\n\r\n return values;\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ErrorComponent } from './error/error.component';\r\nimport { TestingComponent } from './testing/testing.component';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ClickOutsideDirective } from '../core/directives/click-outside.directive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { LessonDetailsComponent } from './lesson/lesson-details/lesson-details.component';\r\nimport { LessonPopupComponent } from './lesson/lesson-popup/lesson-popup.component';\r\nimport { LessonRatingComponent } from './lesson/lesson-rating/lesson-rating.component';\r\nimport { LessonsHistoryComponent } from './lesson/lessons-history/lessons-history.component';\r\nimport { ClassroomsCheckListComponent } from './classrooms-check-list/classrooms-check-list.component';\r\nimport { UploadFilesComponent } from './upload-files/upload-files.component';\r\nimport { AvailabilityComponent } from './availability/availability.component';\r\nimport { DndDirective } from '../core/directives/dnd.directive';\r\nimport { ImageCropperComponent, ImageCropperModule } from 'ngx-image-cropper';\r\nimport { ChooseTagsComponent } from './upload-files/choose-tags/choose-tags.component';\r\nimport { CircleLineComponent } from './circle-line/circle-line.component';\r\nimport { GoalComponent } from './goal/goal.component';\r\nimport { CreateGoalComponent } from './goal/create-goal/create-goal.component';\r\nimport { ViewGoalsComponent } from './goal/view-goals/view-goals.component';\r\nimport { RescheduleComponent } from './calendar/reschedule/reschedule.component';\r\nimport { WindowService } from '../core/services/window.service';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport {TooltipModule} from 'primeng/tooltip';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToastComponent } from './prime/toast/toast.component';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ConfirmDialogComponent } from './prime/confirm-dialog/confirm-dialog.component';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport {MenuModule} from 'primeng/menu';\r\nimport { BlockViewerComponent } from './block-viewer/block-viewer.component';\r\nimport { LessonRowItemComponent } from './lesson/lesson-row-item/lesson-row-item.component';\r\nimport {ScrollPanelModule} from 'primeng/scrollpanel';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport {OverlayPanelModule} from 'primeng/overlaypanel';\r\nimport { HeaderComponent } from './header/header.component';\r\nimport { MenuComponent } from './menu/menu.component';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { TopMenuContainerLayoutComponent } from './layout/top-menu-container-layout/top-menu-container-layout.component';\r\nimport { LoginContainerLayoutComponent } from './layout/login-container-layout/login-container-layout.component';\r\nimport { SideMenuContainerLayoutComponent } from './layout/side-menu-container-layout/side-menu-container-layout.component';\r\nimport { MobileMenuComponent } from './mobile-menu/mobile-menu.component';\r\nimport { MobileLeftMenuComponent } from './layout/mobile-left-menu/mobile-left-menu.component';\r\nimport { DeferModule } from 'primeng/defer';\r\nimport { PrimeInputDropdownComponent } from './prime/input/prime-input-dropdown/prime-input-dropdown.component';\r\nimport { CalendarAgendaComponent } from './prime/prime/calendar-agenda/calendar-agenda.component';\r\nimport { LessonScheduleBoxComponent } from './lesson/lesson-schedule-box/lesson-schedule-box.component';\r\nimport { GoalStepsBoxComponent } from './goal/goal-steps-box/goal-steps-box.component';\r\nimport { TextCallToActionButtonComponent } from './prime/text-call-to-action-button/text-call-to-action-button.component';\r\nimport { LoaderComponent } from './loader/loader.component';\r\nimport { ClassroomCardComponent } from './classroom/classroom-card/classroom-card.component';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { MiniLessonInfoCardComponent } from './lesson/mini-lesson-info-card/mini-lesson-info-card.component';\r\nimport {CarouselModule} from 'primeng/carousel';\r\nimport {InputSwitchModule} from 'primeng/inputswitch';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { GButtonComponent } from './layout/g-button/g-button.component';\r\nimport { RateQuestionItemComponent } from './classroom/rate-question-item/rate-question-item.component';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { GAccordionComponent } from './layout/g-accordion/g-accordion.component';\r\nimport {ProgressBarModule} from 'primeng/progressbar';\r\nimport {TabViewModule} from 'primeng/tabview';\r\nimport { GLevelCircleComponent } from './layout/g-level-circle/g-level-circle.component';\r\nimport { TeacherClassroomMiniCardComponent } from './classroom/teacher-classroom-mini-card/teacher-classroom-mini-card.component';\r\nimport { ClassroomLevelFiltersComponent } from './classroom/classroom-level-filters/classroom-level-filters.component';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { StepsComponent } from '../modules/dashboard/dashboard-goals/steps/steps.component';\r\nimport { StepsModule } from 'primeng/steps';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { SliderModule } from 'primeng/slider';\r\nimport { RadioButtonModule as PrimeNgRadioButtonModule } from 'primeng/radiobutton';\r\nimport { ClassroomStatusFiltersComponent } from './classroom/classroom-status-filters/classroom-status-filters.component';\r\nimport { ProgressStatisticsComponent } from './progress-statistics/progress-statistics.component';\r\n// import { ProgressBarComponent } from './progress-bar/progress-bar.component';\r\nimport { ShareButtonComponent } from './share-button/share-button.component';\r\nimport { GHeaderBackButtonComponent } from './layout/g-header-back-button/g-header-back-button.component';\r\nimport { GAccordionItemComponent } from './layout/g-accordion-item/g-accordion-item.component';\r\nimport { LessonRatingRangeSliderComponent } from './lesson/lesson-rating/lesson-rating-range-slider/lesson-rating-range-slider.component';\r\nimport { NotificationRowItemComponent } from './notification/notification-row-item/notification-row-item.component'\r\nimport { DisableOnClickDirective } from '../core/directives/button-disable.directive';\r\nimport { MultiHandleSliderComponent } from './multi-handle-slider/multi-handle-slider.component';\r\nimport { BuyPackageSuggestionBoxComponent } from '../modules/classroom/packages/buy-package/buy-package-suggestion-box/buy-package-suggestion-box.component';\r\n@NgModule({\r\n declarations: [\r\n ErrorComponent,\r\n TestingComponent,\r\n ClickOutsideDirective,\r\n LessonPopupComponent,\r\n LessonRatingComponent,\r\n LessonDetailsComponent,\r\n LessonsHistoryComponent,\r\n ClassroomsCheckListComponent,\r\n UploadFilesComponent,\r\n AvailabilityComponent,\r\n DndDirective,\r\n ChooseTagsComponent,\r\n CircleLineComponent,\r\n GoalComponent,\r\n CreateGoalComponent,\r\n ViewGoalsComponent,\r\n RescheduleComponent,\r\n ToastComponent,\r\n ConfirmDialogComponent,\r\n BlockViewerComponent,\r\n LessonRowItemComponent,\r\n HeaderComponent,\r\n MenuComponent,\r\n TopMenuContainerLayoutComponent,\r\n LoginContainerLayoutComponent,\r\n SideMenuContainerLayoutComponent,\r\n MobileMenuComponent,\r\n MobileLeftMenuComponent,\r\n PrimeInputDropdownComponent,\r\n CalendarAgendaComponent,\r\n LessonScheduleBoxComponent,\r\n GoalStepsBoxComponent,\r\n TextCallToActionButtonComponent,\r\n ClassroomCardComponent,\r\n MiniLessonInfoCardComponent,\r\n GButtonComponent,\r\n RateQuestionItemComponent,\r\n GAccordionComponent,\r\n GLevelCircleComponent,\r\n TeacherClassroomMiniCardComponent,\r\n ClassroomLevelFiltersComponent,\r\n StepsComponent,\r\n ClassroomStatusFiltersComponent,\r\n ProgressStatisticsComponent,\r\n // ProgressBarComponent,\r\n ShareButtonComponent,\r\n GHeaderBackButtonComponent,\r\n GAccordionItemComponent,\r\n LessonRatingRangeSliderComponent,\r\n NotificationRowItemComponent,\r\n DisableOnClickDirective,\r\n MultiHandleSliderComponent,\r\n BuyPackageSuggestionBoxComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n DropdownModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ImageCropperModule,\r\n CalendarModule,\r\n TooltipModule,\r\n MessageModule,\r\n MessagesModule,\r\n ToastModule,\r\n InputTextModule,\r\n RippleModule,\r\n ConfirmDialogModule,\r\n MenuModule,\r\n ScrollPanelModule,\r\n PanelMenuModule,\r\n OverlayPanelModule,\r\n BadgeModule,\r\n DeferModule,\r\n ChipModule,\r\n CarouselModule,\r\n InputSwitchModule,\r\n AccordionModule,\r\n ProgressBarModule,\r\n TabViewModule,\r\n TagModule,\r\n CheckboxModule,\r\n StepsModule,\r\n DialogModule,\r\n SliderModule,\r\n PrimeNgRadioButtonModule,\r\n InputSwitchModule,\r\n LoaderComponent,\r\n ],\r\n exports: [\r\n LessonPopupComponent,\r\n LessonRatingComponent,\r\n LessonDetailsComponent,\r\n LessonsHistoryComponent,\r\n ClassroomsCheckListComponent,\r\n UploadFilesComponent,\r\n AvailabilityComponent,\r\n CircleLineComponent,\r\n GoalComponent,\r\n CreateGoalComponent,\r\n ViewGoalsComponent,\r\n ToastComponent,\r\n ConfirmDialogComponent,\r\n BlockViewerComponent,\r\n LessonRowItemComponent,\r\n HeaderComponent,\r\n MenuComponent,\r\n TopMenuContainerLayoutComponent,\r\n LoginContainerLayoutComponent,\r\n SideMenuContainerLayoutComponent,\r\n MobileMenuComponent,\r\n PrimeInputDropdownComponent,\r\n CalendarAgendaComponent,\r\n LessonScheduleBoxComponent,\r\n GoalStepsBoxComponent,\r\n TextCallToActionButtonComponent,\r\n LoaderComponent,\r\n ClassroomCardComponent,\r\n MiniLessonInfoCardComponent,\r\n TestingComponent,\r\n GButtonComponent,\r\n RateQuestionItemComponent,\r\n ButtonModule,\r\n ChipModule,\r\n AccordionModule,\r\n GAccordionComponent,\r\n ProgressBarModule,\r\n TabViewModule,\r\n GLevelCircleComponent,\r\n TeacherClassroomMiniCardComponent,\r\n ClassroomLevelFiltersComponent,\r\n StepsComponent,\r\n DialogModule,\r\n CheckboxModule,\r\n InputSwitchModule,\r\n SliderModule,\r\n PrimeNgRadioButtonModule,\r\n ProgressStatisticsComponent,\r\n ShareButtonComponent,\r\n MenuModule,\r\n InputSwitchModule,\r\n ClassroomStatusFiltersComponent,\r\n ScrollPanelModule,\r\n OverlayPanelModule,\r\n GHeaderBackButtonComponent,\r\n GAccordionItemComponent,\r\n TooltipModule,\r\n ChooseTagsComponent,\r\n NotificationRowItemComponent,\r\n DisableOnClickDirective,\r\n MultiHandleSliderComponent,\r\n ImageCropperComponent,\r\n BuyPackageSuggestionBoxComponent,\r\n ],\r\n providers: [\r\n WindowService,\r\n MessageService,\r\n ConfirmationService,\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Level } from '../models/classroom.model';\r\nimport { Category, Homework, HomeworkPostRequest, HomeworkStatus, HomeworkTask, HomeworkTaskFile, HomeworkTaskToSend, Proportion, UpdateHomeworkReq } from '../models/homework.model';\r\nimport { LibraryFile } from '../models/library.model';\r\nimport { User } from '../models/user.model';\r\nimport { GeneralService } from './general.service';\r\nimport { LibraryService } from './library.service';\r\nimport { UserService } from './user.service';\r\nconst BACKEND_URL = environment.apiUrl;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HomeworkService {\r\n public homeworkToAdd: Homework = {} as Homework;\r\n\r\n private tagToAll$: BehaviorSubject<{ tag: string, add: boolean }> = new BehaviorSubject<{ tag: string, add: boolean }>({} as { tag: string, add: boolean });\r\n public readonly tagToAll: Observable<{ tag: string, add: boolean }> = this.tagToAll$.asObservable();\r\n\r\n private submitListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly submitListener: Observable = this.submitListener$.asObservable();\r\n\r\n private isTaskFormValid$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly isTaskFormValid: Observable = this.isTaskFormValid$.asObservable();\r\n\r\n private updateListener$: BehaviorSubject = new BehaviorSubject(false);\r\n public readonly updateListener: Observable = this.updateListener$.asObservable();\r\n\r\n private showFormListener$: BehaviorSubject<{ show: boolean, homework: Homework }> = new BehaviorSubject<{ show: boolean, homework: Homework }>({ show: false, homework: {} as Homework });\r\n public readonly showFormListener: Observable<{ show: boolean, homework: Homework }> = this.showFormListener$.asObservable();\r\n\r\n setTagToAll(tagToAll: { tag: string, add: boolean }) {\r\n this.tagToAll$.next(tagToAll)\r\n }\r\n\r\n constructor(\r\n private userService: UserService,\r\n private libraryService: LibraryService,\r\n private http: HttpClient,\r\n private generalService: GeneralService\r\n ) { }\r\n\r\n setSubmitListener(listen: boolean) {\r\n this.submitListener$.next(listen);\r\n }\r\n\r\n setShowFormListener(listen: boolean, homework: Homework) {\r\n this.showFormListener$.next({ show: listen, homework: homework });\r\n }\r\n\r\n setIsTaskFormValid(listen: boolean) {\r\n this.isTaskFormValid$.next(listen);\r\n }\r\n\r\n setUpdateListener(listen: boolean) {\r\n this.updateListener$.next(listen);\r\n }\r\n\r\n createHomework(homework: Homework) {\r\n let homeworkTasksToSend: HomeworkTaskToSend[] = []\r\n let assignedToIds: string[] = [];\r\n for (let user of homework.assignedTo) {\r\n assignedToIds.push(user.id)\r\n }\r\n for (let task of homework.homeWorkTasks) {\r\n let libraryFileIds: number[] = []\r\n for (let library of task.libraries!) {\r\n libraryFileIds.push(library.fileId!)\r\n }\r\n let homeworkTaskToSend = {\r\n title: task.title,\r\n finished: false,\r\n assignedTo: task.assignedTo!.id,\r\n studentFiles: [],\r\n teacherFiles: task.teacherFiles,\r\n link: task.link,\r\n rate: task.rate,\r\n proportion: task.proportion,\r\n dismissed: false,\r\n libraryFileIds: libraryFileIds,\r\n classroomId: parseInt(task.assignedToUserInClassroom!)\r\n }\r\n homeworkTasksToSend.push(homeworkTaskToSend)\r\n }\r\n let deadline = homework.deadLine;\r\n if(homework.deadLine == null){\r\n deadline = \"No Deadline\"\r\n }\r\n let homeworkToSend: HomeworkPostRequest = {\r\n title: homework.title,\r\n description: homework.description,\r\n deadLine: deadline as string,\r\n status: homework.status,\r\n state: homework.state,\r\n levels: homework.levels,\r\n categories: homework.categories,\r\n homeWorkTasks: homeworkTasksToSend\r\n };\r\n\r\n return this.http.post(BACKEND_URL + \"/Homework/CreateHomeWork\", homeworkToSend)\r\n }\r\n\r\n updateHomeworkState(homework: Homework, state: string) {\r\n return this.http.post(BACKEND_URL + `/HomeWork/UpdateHomeworkState?HomeworkId=${homework.id}`, state)\r\n }\r\n\r\n updateHomeworkStatus(homework: Homework, status: string) {\r\n return this.http.post(BACKEND_URL + `/HomeWork/UpdateHomeworkStatus?HomeworkId=${homework.id}`, { status: status })\r\n }\r\n\r\n deleteHomework(homework: Homework) {\r\n return this.http.post(BACKEND_URL + `/HomeWork/DeleteHomework?hwId=${homework.id}`, {})\r\n }\r\n\r\n deleteTaskFromHomework(taskId: string) {\r\n return this.http.post(BACKEND_URL + `/HomeWork/DeleteTaskFromHomework?homeWorkTaskId=${taskId}`, {})\r\n }\r\n\r\n compareFn(a: Homework, b: Homework) {\r\n if (a.state == 'Pending' && b.state != 'Pending')\r\n return -1;\r\n return 1;\r\n };\r\n\r\n getHomeworks(): Observable {\r\n return this.http.get(BACKEND_URL + `/HomeWork/GetHomeworks`).pipe(\r\n map(x => {\r\n let sortByPending: Homework[] = [];\r\n for (let hw of x) {\r\n hw.deadLine = hw.deadLine != 'No Deadline' ? new Date(hw.deadLine) : \"No Deadline\"\r\n for (let task of hw.homeWorkTasks) {\r\n for (let lib of task.libraries!) {\r\n let f: HomeworkTaskFile = {\r\n filePath: lib.path,\r\n levels: lib.levels,\r\n categories: lib.categories\r\n }\r\n task.teacherFiles.push(f)\r\n }\r\n }\r\n if (hw.status == 'Pending') {\r\n sortByPending.push(hw)\r\n }\r\n }\r\n for (let hw of x) {\r\n if (hw.status != 'Pending') {\r\n sortByPending.push(hw)\r\n }\r\n }\r\n return sortByPending;\r\n }))\r\n }\r\n\r\n updateTaskFinished(finished: boolean, taskId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateTaskFinished?taskId=${taskId}&finished=${finished}`, {})\r\n }\r\n\r\n updateTaskRate(rate: number, taskId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateTaskRate?taskId=${taskId}&rate=${rate}`, {})\r\n }\r\n\r\n addStudentFileToTask(filePath: number, taskId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateTaskRate?taskId=${taskId}&filePath=${filePath}`, {})\r\n }\r\n\r\n updateTaskProportion(proportion: string, taskId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateTaskProportion?taskId=${taskId}&proportion=${proportion}`, {})\r\n }\r\n\r\n updateHomework(updateReq: UpdateHomeworkReq) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateHomework?homeWorkId=${updateReq.id}`, updateReq)\r\n }\r\n\r\n addTaskToHomework(task: HomeworkTaskToSend, hwId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/AddTaskToHomework?homeWorkId=${hwId}`, task)\r\n }\r\n\r\n updateTaskDetails(task: HomeworkTaskToSend, hwId: string) {\r\n return this.http.post(BACKEND_URL + `​/HomeWork/UpdateTaskDetails?homeWorkTaskId=${task.id}`, task)\r\n }\r\n\r\n getHomeworkColor(homework: Homework) {\r\n if (homework.status.includes(HomeworkStatus.COMPLETED_RATED)) {\r\n return \"#3F37C9\"\r\n }\r\n if (homework.status.includes(HomeworkStatus.COMPLETED_UNRATED)) {\r\n return \"#3F37C9\"\r\n }\r\n if (homework.status.includes(HomeworkStatus.COMPLETED_PARTIALLY_RATED)) {\r\n return \"#3F37C9\"\r\n }\r\n if (homework.status.includes(HomeworkStatus.PARTIALLY_COMPLETED_PARTIALLY_RATED)) {\r\n return \"#4895EF\"\r\n }\r\n if (homework.status.includes(HomeworkStatus.COMPLETED_PARTIALLY_UNRATED)) {\r\n return \"#4895EF\"\r\n }\r\n if (homework.status.includes(HomeworkStatus.PENDING)) {\r\n return \"#7209B7\"\r\n }\r\n return \"#4895EF\"\r\n }\r\n\r\n getStatusOnUpdateFinishedTaskOrRate(tasks: HomeworkTask[]) {\r\n let status = \"\";\r\n let countRatedTasks: number = 0;\r\n let countCompleted: number = 0;\r\n let countDismissed: number = 0;\r\n for (let task of tasks) {\r\n if (task.rate! > 0) {\r\n countRatedTasks++\r\n }\r\n if (task.finished) {\r\n countCompleted++\r\n }\r\n if (task.dismissed) {\r\n countCompleted++\r\n }\r\n }\r\n if (countCompleted == 0) {\r\n status = HomeworkStatus.PENDING\r\n }\r\n if (countCompleted == tasks.length && countRatedTasks == tasks.length) {\r\n status = HomeworkStatus.COMPLETED_RATED\r\n }\r\n if (countCompleted == tasks.length && countRatedTasks == 0) {\r\n status = HomeworkStatus.COMPLETED_UNRATED\r\n }\r\n if (countCompleted >= 0 && countCompleted < tasks.length && countRatedTasks == tasks.length) {\r\n status = HomeworkStatus.PARTIALLY_COMPLETED_RATED\r\n }\r\n if (countCompleted == 0 && countCompleted < tasks.length && countRatedTasks == tasks.length) {\r\n status = HomeworkStatus.NO_COMPLETED_RATED\r\n }\r\n if (countCompleted == tasks.length && countRatedTasks > 0 && countRatedTasks < tasks.length) {\r\n status = HomeworkStatus.COMPLETED_PARTIALLY_RATED\r\n }\r\n if (countCompleted >= 0 && countCompleted < tasks.length && countRatedTasks > 0 && countRatedTasks < tasks.length) {\r\n status = HomeworkStatus.PARTIALLY_COMPLETED_PARTIALLY_RATED\r\n }\r\n if (countCompleted >= 0 && countCompleted < tasks.length && countRatedTasks == 0) {\r\n status = HomeworkStatus.COMPLETED_PARTIALLY_UNRATED\r\n }\r\n if (countDismissed > 0) {\r\n status += \" Dismissed\"\r\n }\r\n return status;\r\n }\r\n\r\n initiateHomeworkObject(): Homework {\r\n this.homeworkToAdd = {\r\n title: \"\",\r\n description: \"\",\r\n homeWorkTasks: [],\r\n pinned: false,\r\n deadLine: new Date,\r\n status: \"\",\r\n submitted: null,\r\n assignedTo: [],\r\n levels: [],\r\n categories: [],\r\n state: \"\",\r\n classroom: 0,\r\n }\r\n return this.homeworkToAdd\r\n }\r\n\r\n initiateHomeworkTaskObject(): HomeworkTask {\r\n return {\r\n title: \"\",\r\n finished: false,\r\n teacherFiles: [],\r\n studentFiles: [],\r\n link: \"\",\r\n assignedTo: undefined,\r\n assignedToClassroom: undefined, // TODO THIS IS FOR ME ONLY\r\n libraries: [],\r\n rate: 0,\r\n proportion: \"\"\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Category, Homework } from 'src/app/core/models/homework.model';\r\nimport { Library, LibraryFile } from 'src/app/core/models/library.model';\r\nimport { HomeworkService } from 'src/app/core/services/homework.service';\r\n\r\n@Component({\r\n selector: 'app-choose-tags',\r\n templateUrl: './choose-tags.component.html',\r\n styleUrls: ['./choose-tags.component.scss']\r\n})\r\nexport class ChooseTagsComponent implements OnInit {\r\n @Input() applyToAll: boolean = false;\r\n @Input() file: File = {} as File;\r\n @Input() libraryFile: LibraryFile = {} as LibraryFile;\r\n @Output() chooseTag = new EventEmitter();\r\n @Output() tagsSubmitted = new EventEmitter();\r\n tagsToAll: string[] = []\r\n\r\n\r\n constructor(\r\n private homeworkService: HomeworkService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n console.log(this.libraryFile);\r\n this.homeworkService.tagToAll.subscribe(res => {\r\n if (res.tag !== \"\") {\r\n if (res.add) {\r\n this.tagsToAll.push(res.tag)\r\n } else {\r\n let taskIndex = this.tagsToAll.findIndex(((el: any) => {\r\n return el == res.tag\r\n }));\r\n this.tagsToAll.splice(taskIndex, 1);\r\n }\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(){\r\n this.homeworkService.setTagToAll({ tag: \"\", add: false })\r\n }\r\n\r\n onChooseTag(event: any, tag: string, isLevel: boolean, isCategory: boolean) {\r\n this.chooseTag.emit({\r\n checked: event.checked,\r\n tag: tag,\r\n isLevel: isLevel,\r\n isCategory: isCategory,\r\n applyToAll: this.applyToAll,\r\n file: this.file\r\n })\r\n if (this.applyToAll) {\r\n this.homeworkService.setTagToAll({ tag: tag, add: event.checked })\r\n }\r\n }\r\n\r\n getIsChecked(el: string) {\r\n return this.tagsToAll.includes(el);\r\n }\r\n\r\n getIsCheckedCategory(el: any) {\r\n return this.libraryFile && this.libraryFile.categories ? this.libraryFile.categories.includes(el) : this.tagsToAll.includes(el);\r\n }\r\n\r\n getIsCheckedLevel(el: any) {\r\n return this.libraryFile && this.libraryFile.levels ? this.libraryFile.levels.includes(el) : this.tagsToAll.includes(el);\r\n }\r\n\r\n onTagsSubmitted() {\r\n this.tagsSubmitted.emit();\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Level:\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Categories:\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import {\r\n Directive,\r\n Output,\r\n Input,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDnd]'\r\n})\r\nexport class DndDirective {\r\n @HostBinding('class.fileover') fileOver: boolean = false;\r\n @Output() fileDropped = new EventEmitter();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    {{title}}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n Drag and drop files here or\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    No file chosen
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n\r\n\r\n\r\n\r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n \r\n \r\n {{ this.generalService.getFileNameAndExtension(file?.file.name) }}\r\n \r\n

    \r\n

    \r\n {{ formatBytes(file?.file.size) }}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    1\">\r\n You have selected {{files.length}} files\r\n
    \r\n
    \r\n Tags  apply to all\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    ","import { Component, OnInit, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { HttpEventType, HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { base64ToFile, ImageCroppedEvent, ImageCropperComponent } from 'ngx-image-cropper';\r\nimport { UserService } from 'src/app/core/services/user.service';\r\nimport { SubSink } from 'subsink';\r\nimport { LibraryService } from 'src/app/core/services/library.service';\r\nimport { FocusTrap } from '@angular/cdk/a11y';\r\nimport { Homework, HomeworkTask } from 'src/app/core/models/homework.model';\r\nimport { Classroom } from 'src/app/core/models/classroom.model';\r\nimport { User } from 'src/app/core/models/user.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { GeneralService } from 'src/app/core/services/general.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nexport interface MyFile {\r\n file: File,\r\n progress: number,\r\n index: number\r\n}\r\n@Component({\r\n selector: 'app-upload-files',\r\n templateUrl: './upload-files.component.html',\r\n styleUrls: ['./upload-files.component.scss']\r\n})\r\nexport class UploadFilesComponent implements OnInit {\r\n @Input() isProfile?: boolean = false;\r\n @Input() isTeacherApplication?: boolean = false;\r\n @Input() isSick?: boolean = false;\r\n @Input() files: any[] = [];\r\n @Input() teacherFilesLength: number = 0;\r\n @Input() postUrl: string = \"\";\r\n @Input() title: string = \"\";\r\n @Input() buttonUI: boolean = false;\r\n @Input() dndUI: boolean = false;\r\n @Input() checkboxUI: boolean = false;\r\n @Input() multiple: boolean = true;\r\n @Input() showSubmitButton: boolean = false;\r\n @Input() inHomeworkTask: boolean = false;\r\n @Input() homeworkTaskStudentId: string = \"\";\r\n @Input() assignToClassroom?: Classroom;\r\n @Input() assignToUser?: User;\r\n @Input() task?: HomeworkTask;\r\n @Input() filePath?: string;\r\n @Input() fileDropImage?: string;\r\n @Input() fileDropImageWidth?: number;\r\n @Input() fileAfterImage?: string;\r\n @Input() fileAfterImageWidth?: string;\r\n @Input() clearFiles: boolean = false;\r\n @Output() onUploadFinished = new EventEmitter();\r\n @Output() onDeleteFileClicked = new EventEmitter();\r\n @Output() tagChoosen = new EventEmitter();\r\n @Output() onSubmit = new EventEmitter();\r\n private subs = new SubSink();\r\n public progress: number[] = [];\r\n public message: string = \"\";\r\n public showCropper = false;\r\n imageChangedEvent: any;\r\n croppedImage: any = \"\";\r\n profileFile: File = {} as File;\r\n profileFileName: string = \"\";\r\n uploadedFile: any = \"\";\r\n sanitizer = inject(DomSanitizer);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private userService: UserService,\r\n private libraryService: LibraryService,\r\n private toast: ToastService,\r\n private authService: AuthService,\r\n public generalService: GeneralService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // this.uploadFile([{lastModified: 1680183216555,\r\n // lastModifiedDate\r\n // : \r\n // 'Thu Mar 30 2023 16:33:36 GMT+0300 (Eastern European Summer Time)',\r\n // name : \"calendar (-41.png\",\r\n // size: 323,\r\n // type : \"image/png\",\r\n // webkitRelativePath: \"\"}])\r\n // this is happening because of cropped image. we cannot imidiatly upload it until the user presses save at profile info component\r\n this.subs.sink = this.userService.updateProfile.subscribe(res => {\r\n if (res) {\r\n console.log(this.profileFile)\r\n this.uploadFile(this.profileFile);\r\n }\r\n })\r\n this.subs.sink = this.userService.uploadFiles.subscribe(res => {\r\n if (res) {\r\n this.files = [];\r\n }\r\n })\r\n this.subs.sink = this.userService.newFileUpload.subscribe(res => {\r\n if (res && !this.generalService.isObjectEmpty(res)) {\r\n console.log(res);\r\n this.files.push(res);\r\n this.upload(res as MyFile);\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n //when we land to this cocmponent the value must be false so it wont get called in ngOnInit\r\n this.userService.setUpdateProfile(false);\r\n this.subs.unsubscribe();\r\n }\r\n\r\n /**\r\n * on file drop handler\r\n */\r\n onFileDropped($event: any) {\r\n this.uploadFile($event);\r\n }\r\n\r\n /**\r\n * Delete file from files list\r\n * @param index (File index)\r\n */\r\n deleteFile(index: number) {\r\n this.onDeleteFileClicked.emit({ file: this.files[index] });\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * handle file from browsing\r\n */\r\n fileBrowseHandlerProfile(event: any) {\r\n this.profileFileName = event.target.files[0].name;\r\n this.showCropper = true;\r\n this.imageChangedEvent = event;\r\n // document.getElementById('cropped-img')!.style.borderColor = \"var(--main-color)\";\r\n }\r\n\r\n /**\r\n * handle file from browsing\r\n */\r\n fileBrowseHandler(event: any) {\r\n console.log(event);\r\n this.uploadFile(event);\r\n }\r\n\r\n public uploadFile = (files: any) => {\r\n console.log(files);\r\n if (this.isProfile && !files.name) {\r\n this.onUploadFinished.emit({ filePath: \"\", levels: [], categories: [] });\r\n return;\r\n }\r\n if (!this.isProfile && files.length === 0) {\r\n return;\r\n }\r\n if (!this.isProfile && !this.isTeacherApplication) {\r\n for (const file of files) {\r\n let myFile: MyFile = {\r\n file: file,\r\n progress: 0,\r\n index: this.teacherFilesLength\r\n }\r\n this.teacherFilesLength++;\r\n // this.files.push(myFile);\r\n this.userService.setNewFileUpload(myFile);\r\n }\r\n }\r\n if (!this.isProfile && this.isTeacherApplication) {\r\n for (const file of files) {\r\n let myFile: MyFile = {\r\n file: file,\r\n progress: 0,\r\n index: this.teacherFilesLength\r\n }\r\n // this.teacherFilesLength++;\r\n // this.files.push(myFile);\r\n // this.userService.setNewFileUpload(myFile);\r\n this.upload(myFile)\r\n }\r\n } else {\r\n let myFile: MyFile = {\r\n file: files,\r\n progress: 0,\r\n index: this.teacherFilesLength\r\n }\r\n this.upload(myFile)\r\n }\r\n }\r\n\r\n upload(myFile: MyFile) {\r\n let headers: any;\r\n const formData = new FormData();\r\n formData.append('file', myFile.file, this.replaceSpecialCharactersForFilename(myFile.file.name));\r\n headers = new HttpHeaders({\r\n 'documentType': myFile.file.name.split('.').pop()!,\r\n \"Authorization\": \"Bearer \" + this.authService.getToken(),\r\n });\r\n\r\n console.log(headers);\r\n if (this.assignToClassroom) {\r\n for (let user of this.assignToClassroom.users) {\r\n let endpointExtras = this.inHomeworkTask ? \"?studentId=\" + user.id : \"\";\r\n this.uploadRequest(headers, endpointExtras, formData, myFile)\r\n }\r\n } else if (this.assignToUser) {\r\n let endpointExtras = \"?studentId=\" + this.assignToUser.id!;\r\n console.log(endpointExtras)\r\n this.uploadRequest(headers, endpointExtras, formData, myFile)\r\n } else {\r\n let endpointExtras = this.inHomeworkTask ? \"?studentId=\" + this.homeworkTaskStudentId : \"\";\r\n this.uploadRequest(headers, endpointExtras, formData, myFile)\r\n }\r\n\r\n }\r\n\r\n uploadRequest(headers: HttpHeaders, endpointExtras: string, formData: FormData, myFile: MyFile) {\r\n this.subs.add(this.http.post(environment.apiUrl + this.postUrl + endpointExtras, formData, {\r\n headers: headers,\r\n reportProgress: true,\r\n observe: 'events'\r\n })\r\n .subscribe(event => {\r\n console.log(event)\r\n if (event.type === HttpEventType.UploadProgress) {\r\n myFile.progress = Math.round(100 * event.loaded / event.total!);\r\n }\r\n else if (event.type === HttpEventType.Response) {\r\n\r\n this.toast.setShowToastmessage({\r\n severity: 'success',\r\n summary: '',\r\n detail: 'Uploaded successfully!'\r\n });\r\n this.uploadedFile = event.body;\r\n if (this.isProfile) {\r\n console.log('GEGEG');\r\n this.showCropper = false;\r\n }\r\n this.onUploadFinished.emit({ filePath: event.body, task: this.task });\r\n } else {\r\n }\r\n }, err => {\r\n console.log(err)\r\n }));\r\n }\r\n\r\n formatBytes(bytes: any, decimals: any) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n onChooseTag(event: any) {\r\n this.tagChoosen.emit(event);\r\n }\r\n\r\n imageCropped(event: ImageCroppedEvent) {\r\n console.log(event);\r\n this.croppedImage = this.sanitizer.bypassSecurityTrustUrl(event.objectUrl || event.base64 || '');\r\n const file = new File([event.blob!], this.profileFileName, { type: event.blob!.type });\r\n this.profileFile = new File([file], this.profileFileName);\r\n const reader = new FileReader();\r\n reader.onload = () => {//async code, will take a while\r\n this.croppedImage = reader.result as string;\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n imageLoaded(event: any) {\r\n console.log(event);\r\n // show cropper\r\n }\r\n\r\n cropperReady(event: any) {\r\n // cropper ready\r\n }\r\n\r\n loadImageFailed() {\r\n // show message\r\n }\r\n\r\n submit() {\r\n this.onSubmit.emit();\r\n }\r\n\r\n /**\r\n * Replaces special characters in a given filename with a specified replacement character.\r\n * @param {string} fileName - The original filename.\r\n * @returns {string} - The modified filename with special characters replaced.\r\n */\r\n private replaceSpecialCharactersForFilename(fileName: string): string {\r\n const specialCharacters = /[^\\w\\s.-]/g;\r\n const replacementCharacter = \"_\";\r\n\r\n return fileName.replace(specialCharacters, replacementCharacter);\r\n }\r\n\r\n}","export const environment = {\r\n production: true,\r\n apiUrl: \"https://api.mylingotrip.com\",\r\n leadDynoPrivateKey: '165d71696287208d956a45cffb6d8112b66f0e81',\r\n isChatEnabled: false,\r\n firebase: {\r\n apiKey: \"AIzaSyAS3J9uI0k2gtFBSI1daBcG2xbWJrBcCik\",\r\n authDomain: \"mylingotrip-d2338.firebaseapp.com\",\r\n projectId: \"mylingotrip-d2338\",\r\n storageBucket: \"mylingotrip-d2338.appspot.com\",\r\n messagingSenderId: \"618062748166\",\r\n appId: \"1:618062748166:web:83fa6d423e3d6913db0187\",\r\n measurementId: \"G-QF0X9YTHTL\"\r\n }\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AuthService } from \"../services/auth.service\";\r\n@Injectable()\r\nexport class UserInfoGuard {\r\n constructor(\r\n private authService: AuthService, \r\n private router: Router\r\n ) { }\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean | Observable | Promise {\r\n const isUserInfoFullefilled = this.authService.isUserInfoFullfileld();\r\n if (!isUserInfoFullefilled) {\r\n this.router.navigateByUrl('/profile/(profile:info)', { replaceUrl: true });\r\n }\r\n return isUserInfoFullefilled//allow to go to router if true\r\n\r\n }\r\n\r\n}","import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.scss']\r\n})\r\nexport class NotFoundComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild('notFoundEl', { static: true }) notFoundEl: ElementRef = {} as ElementRef;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addLottiePlayerGraphic(this.notFoundEl);\r\n }\r\n\r\n private addLottiePlayerGraphic(el: ElementRef): void {\r\n const lottiePlayer = `
    `;\r\n el.nativeElement.innerHTML = lottiePlayer;\r\n }\r\n}\r\n","\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    ","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n All\r\n
    \r\n
    \r\n
    \r\n Ongoing\r\n
    \r\n
    \r\n
    \r\n Completed\r\n
    \r\n
    \r\n
    \r\n Dismissed\r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { take } from 'rxjs/operators';\r\nimport { Classroom, ClassroomType, Status } from 'src/app/core/models/classroom.model';\r\nimport { AuthService } from 'src/app/core/services/auth.service';\r\nimport { ClassroomService } from 'src/app/core/services/classroom.service';\r\nimport { slideInOut } from 'src/app/helpers/my-animations';\r\n\r\n@Component({\r\n selector: 'app-trial',\r\n templateUrl: './trial.component.html',\r\n styleUrls: ['./trial.component.scss'],\r\n animations: [slideInOut]\r\n})\r\nexport class TrialComponent implements OnInit {\r\n filteredClassrooms: Classroom[] = [];\r\n isLoading: boolean = true;\r\n public role: string = \"\";\r\n showActive: boolean = true;\r\n showCompelted: boolean = false;\r\n showDismissed: boolean = false;\r\n constructor(\r\n private classroomService: ClassroomService,\r\n private authService: AuthService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n //TODO HOW TO HANDLE TRIALS\r\n this.role = this.authService.getLoggedInUser().role;\r\n if (this.classroomService.sessionUserTrialClassrooms.length > 0) {\r\n this.isLoading = false;\r\n this.filteredClassrooms = this.classroomService.sessionUserTrialClassrooms\r\n } else {\r\n this.isLoading = true;\r\n }\r\n this.classroomService.getUserClassrooms(ClassroomType.TRIAL).pipe(take(1)).subscribe((res: Classroom[]) => {\r\n this.filteredClassrooms = res\r\n this.classroomService.sessionUserTrialClassrooms = res;\r\n this.isLoading = false;\r\n })\r\n }\r\n\r\n viewSection(section: string) {\r\n if (section === 'active') {\r\n document.getElementById('completed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('dismissed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('all')?.classList.remove('classrooms-header-active');\r\n document.getElementById('active')?.classList.add('classrooms-header-active');\r\n this.filteredClassrooms = this.classroomService.sessionUserTrialClassrooms.filter(el => el.status == Status.ON_GOING)\r\n } else if (section === 'completed') {\r\n document.getElementById('all')?.classList.remove('classrooms-header-active');\r\n document.getElementById('completed')?.classList.add('classrooms-header-active');\r\n document.getElementById('dismissed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('active')?.classList.remove('classrooms-header-active');\r\n this.filteredClassrooms = this.classroomService.sessionUserTrialClassrooms.filter(el => el.status == Status.COMPLETED)\r\n } else if (section === 'all') {\r\n document.getElementById('all')?.classList.add('classrooms-header-active');\r\n document.getElementById('completed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('dismissed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('active')?.classList.remove('classrooms-header-active');\r\n this.filteredClassrooms = this.classroomService.sessionUserTrialClassrooms\r\n } else {\r\n document.getElementById('all')?.classList.remove('classrooms-header-active');\r\n document.getElementById('completed')?.classList.remove('classrooms-header-active');\r\n document.getElementById('dismissed')?.classList.add('classrooms-header-active');\r\n document.getElementById('active')?.classList.remove('classrooms-header-active');\r\n this.filteredClassrooms = this.classroomService.sessionUserTrialClassrooms.filter(el => el.status == Status.DISMISSED)\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuard } from './core/guards/auth.guard';\r\nimport { TeacherGuard } from './core/guards/teacher.guard';\r\nimport { UserInfoGuard } from './core/guards/user.guard';\r\nimport { NotFoundComponent } from './modules/not-found/not-found.component';\r\nimport { TrialComponent } from './modules/trial/trial.component';\r\nimport { ProfileGuard } from './core/guards/profile.guard';\r\nimport { AppLayoutType } from './core/models/general.model';\r\nimport { LoggedInGuard } from './core/guards/logged-in.guard';\r\n// import { LibraryComponent } from './modules/library_old/library.component';\r\n\r\nconst routes: Routes = [\r\n { path: \"\", redirectTo: \"/dashboard\", pathMatch: \"full\" },\r\n {\r\n path: \"dashboard\",\r\n loadChildren: () =>\r\n import(\"./modules/dashboard/dashboard.module\").then(\r\n (m) => m.DashboardModule\r\n ),\r\n canActivate: [AuthGuard, TeacherGuard],\r\n data: { \r\n layout: AppLayoutType.Default,\r\n isDashboard: true },\r\n },\r\n {\r\n path: \"classrooms\",\r\n loadChildren: () =>\r\n import(\"./modules/classroom/classroom.module\").then(\r\n (m) => m.ClassroomModule\r\n ),\r\n canActivate: [AuthGuard, TeacherGuard],\r\n data: { gradient: \"classrooms-gradient.png\" },\r\n },\r\n {\r\n path: \"auth\",\r\n loadChildren: () =>\r\n import(\"./modules/auth/auth.module\").then((m) => m.AuthModule),\r\n canActivate: [LoggedInGuard],\r\n data: { layout: AppLayoutType.Center, hideLeftMenu: true, isAuth: true },\r\n },\r\n {\r\n path: \"certificates\",\r\n loadChildren: () =>\r\n import(\"./modules/shared-link/shared-link.module\").then(\r\n (m) => m.SharedLinkModule\r\n ),\r\n },\r\n {\r\n path: \"trials\",\r\n component: TrialComponent,\r\n canActivate: [AuthGuard, TeacherGuard],\r\n data: { gradient: \"dashboard-gradient.png\" },\r\n },\r\n // {\r\n // path: \"calendar\",\r\n // component: CalendarComponent,\r\n // canActivate: [AuthGuard, TeacherGuard],\r\n // data: { gradient: \"calendar-gradient.png\" },\r\n // },\r\n \r\n {\r\n path: \"calendar\",\r\n loadChildren: () =>\r\n import(\"./modules/calendar/calendar.module\").then(\r\n (m) => m.CalendarModule\r\n ),\r\n canActivate: [AuthGuard],\r\n data: {\r\n layout: AppLayoutType.Default,\r\n },\r\n },\r\n {\r\n path: \"teacher\",\r\n loadChildren: () =>\r\n import(\"./modules/teacher-application/teacher-application.module\").then(\r\n (m) => m.TeacherApplicationModule\r\n ),\r\n canActivate: [AuthGuard, TeacherGuard],\r\n data: {\r\n layout: AppLayoutType.Default,\r\n isTeacher: true,\r\n hideLeftMenu: true,\r\n gradient: \"profile-gradient.png\",\r\n },\r\n },\r\n {\r\n path: \"notifications\",\r\n loadChildren: () =>\r\n import(\"./modules/notifications/notifications.module\").then(\r\n (m) => m.NotificationsModule\r\n ),\r\n canActivate: [AuthGuard],\r\n data: {\r\n layout: AppLayoutType.Default,\r\n animation: \"Basic\",\r\n hideLeftMenu: true,\r\n gradient: \"profile-gradient.png\",\r\n },\r\n },\r\n {\r\n path: \"not-found\",\r\n component: NotFoundComponent,\r\n canActivate: [AuthGuard],\r\n data: { gradient: \"profile-gradient.png\" },\r\n },\r\n {\r\n path: \"user-profile\",\r\n loadChildren: () =>\r\n import(\"./modules/user-profile/user-profile.module\").then(\r\n (m) => m.UserProfileModule\r\n ),\r\n canActivate: [AuthGuard],\r\n data: { animation: \"Basic\", hideLeftMenu: true },\r\n },\r\n {\r\n path: \"meet\",\r\n loadChildren: () =>\r\n import(\"./modules/jitsi-meet/jitsi-meet.module\").then(\r\n (m) => m.JitsiMeetModule\r\n ),\r\n canActivate: [AuthGuard],\r\n },\r\n\r\n {\r\n path: \"chat\",\r\n loadChildren: () =>\r\n import(\"./modules/chat/chat.module\").then(\r\n (m) => m.ChatModule\r\n ),\r\n canActivate: [AuthGuard],\r\n data: {\r\n layout: AppLayoutType.Default,\r\n animation: \"Basic\",\r\n hideLeftMenu: true,\r\n gradient: \"profile-gradient.png\",\r\n },\r\n },\r\n {\r\n path: \"ai-chat\",\r\n loadComponent: () =>\r\n import(\"./modules/dashboard/lingolette-room/lingolette-room.component\").then(\r\n (m) => m.LingoletteRoomComponent\r\n ),\r\n canActivate: [AuthGuard],\r\n },\r\n // { path: 'dashboard', component: DashboardComponent, data: { \"isDashboard\": true, \"gradient\": \"dashboard-gradient.png\" } },\r\n // { path: 'classrooms', loadChildren: () => import('./modules/classroom/classroom.module').then(m => m.ClassroomModule), data: { \"gradient\": \"classrooms-gradient.png\" } },\r\n // { path: 'auth', loadChildren: () => import('./modules/auth/auth.module').then(m => m.AuthModule), data: { \"hideLeftMenu\": true, \"isAuth\": true } },\r\n // { path: 'trials', component: TrialComponent, data: { \"gradient\": \"dashboard-gradient.png\" } },\r\n // { path: 'notes', component: NoteComponent, data: { \"gradient\": \"notes-gradient.png\" } },\r\n // { path: 'library', component: LibraryComponent, data: { \"gradient\": \"library-gradient.png\" } },\r\n // { path: 'calendar', component: CalendarComponent, data: { \"gradient\": \"calendar-gradient.png\" } },\r\n // { path: 'homework', component: HomeworkComponent, data: { \"gradient\": \"homework-gradient.png\" } },\r\n // { path: 'profile', loadChildren: () => import('./modules/profile/profile.module').then(m => m.ProfileModule), data: { animation: 'Basic', \"isProfile\": true, \"hideLeftMenu\": true, \"gradient\": \"profile-gradient.png\" } },\r\n // { path: 'teacher', loadChildren: () => import('./modules/teacher-application/teacher-application.module').then(m => m.TeacherApplicationModule), data: { \"isTeacher\": true, \"hideLeftMenu\": true, \"gradient\": \"profile-gradient.png\" } },\r\n // { path: 'not-found', component: NotFoundComponent, data: { \"gradient\": \"profile-gradient.png\" } },\r\n { path: \"**\", redirectTo: \"/not-found\", pathMatch: \"full\" },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled' })],\r\n exports: [RouterModule],\r\n providers: [AuthGuard, UserInfoGuard, TeacherGuard, ProfileGuard]\r\n})\r\nexport class AppRoutingModule { }","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, ActivatedRoute } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AuthService } from \"src/app/core/services/auth.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LoggedInGuard {\r\n constructor(private authService: AuthService, private router: Router, private activatedRoute: ActivatedRoute) { }\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): Observable | Promise | boolean {\r\n\r\n this.authService.saveLeadDynoAffiliateIdFromRoute(next);\r\n // Assuming you have an AuthService with getIsAuth() method\r\n const isAuth = this.authService.getIsAuth();\r\n if (isAuth) {\r\n this.router.navigate(['/dashboard']);\r\n this.authService.setAuthStatusListener(true);\r\n return false; // Returning false to prevent navigation to the original requested route\r\n } else {\r\n this.authService.setAuthStatusListener(false);\r\n }\r\n return true;\r\n }\r\n}\r\n","import {\r\n transition,\r\n trigger,\r\n query,\r\n style,\r\n animate,\r\n group,\r\n animateChild\r\n } from '@angular/animations';\r\n export const slideInAnimation = trigger('routeAnimations', [\r\n transition('* => *', [\r\n query(':enter', [style({ opacity: 0, position: 'absolute' })], {\r\n optional: true,\r\n }),\r\n query(\r\n ':leave',\r\n [\r\n style({ opacity: 1 }),\r\n animate('0.3s', style({ opacity: 0, position: 'absolute' })),\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter',\r\n [\r\n style({ opacity: 0 }),\r\n animate('0.3s', style({ opacity: 1, position: 'relative' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ]);","\r\n \r\n
    \r\n
    \r\n \r\n

    {{ message.summary}}

    \r\n

    {{ message.detail}}

    \r\n
    \r\n
    \r\n
    \r\n
    ","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\nimport { ToastMessage } from 'src/app/core/models/general.model';\r\nimport { ToastService } from 'src/app/core/services/toast.service';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'app-prime-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrls: ['./toast.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToastComponent implements OnInit, OnDestroy {\r\n\r\n private subs = new SubSink();\r\n constructor(\r\n private toastService: ToastService,\r\n private messageService: MessageService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(this.toastService.showToastmessage.subscribe((toastMsg: ToastMessage) => {\r\n if (toastMsg) {\r\n const toast = {\r\n key: toastMsg.key || 'tc', life: toastMsg.life || 5000, severity: toastMsg.severity, summary: toastMsg.summary,\r\n detail: toastMsg.detail\r\n };\r\n this.messageService.add(toast);\r\n }\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n @if (authService.firebaseLoggedIn() && chatService.isChatEnabled()) {\r\n \r\n }","import { Location } from '@angular/common';\r\nimport { Component, HostListener, inject, Injector, OnInit, signal } from '@angular/core';\r\nimport { ActivatedRoute, Data, NavigationEnd, NavigationStart, Router, RoutesRecognized } from '@angular/router';\r\nimport { PrimeNGConfig } from 'primeng/api';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { filter, map, mergeMap, switchMap, take, tap } from 'rxjs/operators';\r\nimport { AppLayoutType } from './core/models/general.model';\r\nimport { AuthService } from './core/services/auth.service';\r\nimport { GeneralService } from './core/services/general.service';\r\nimport { slideInAnimation } from './helpers/route-animation';\r\nimport { ClassroomService } from './core/services/classroom.service';\r\nimport { UserService } from './core/services/user.service';\r\nimport { LayoutService } from './core/services/layout.service';\r\nimport { ConfirmDialogService } from './core/services/confirm-dialog.service';\r\nimport { ChatService } from './core/services/chat.service';\r\nimport { Classroom } from './core/models/classroom.model';\r\nimport { toObservable } from '@angular/core/rxjs-interop';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n animations: [slideInAnimation],\r\n providers: [\r\n TooltipModule\r\n ]\r\n})\r\nexport class AppComponent implements OnInit {\r\n\r\n private injector = inject(Injector);\r\n public title = 'frontend';\r\n public mt: number = 0;\r\n public routeIsDashboard: boolean = false;\r\n public routeIsProfile: boolean = false;\r\n public routeIsTeacher: boolean = false;\r\n public routeIsAuth: boolean = false;\r\n public hideLeftMenu: boolean = true;\r\n public oldValue: number = 0;\r\n public newValue: number = 0;\r\n public url: string = \"\";\r\n public showLeftMenu: boolean = false;\r\n public gradient: string = \"\";\r\n public routeData: Data = {} as Data;\r\n layout$: Observable = this.getLayoutType$();\r\n readonly AppLayoutType = AppLayoutType;\r\n private previousUrl: string = '';\r\n loggedIn = signal(false);\r\n chatService = inject(ChatService);\r\n user = this.authService.getLoggedInUser();\r\n userClassrooms = [] as Classroom[];\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n private generalService: GeneralService,\r\n public authService: AuthService,\r\n private primengConfig: PrimeNGConfig,\r\n private activatedRoute: ActivatedRoute,\r\n public classroomService: ClassroomService,\r\n private userService: UserService,\r\n private layoutService: LayoutService,\r\n public confirmDialogService: ConfirmDialogService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.primengConfig.ripple = true;\r\n\r\n this.router.events.subscribe((evt) => {\r\n\r\n if (evt instanceof NavigationStart) {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n if (evt instanceof NavigationEnd) {\r\n this.previousUrl = this.router.url;\r\n console.log(' url = this .router.url ', evt.url);\r\n if (evt.url.includes('chat')) {\r\n // this.chatService.showBubbleChat.set(false);\r\n } else {\r\n // this.chatService.showBubbleChat.set(true);\r\n }\r\n if (this.authService.getIsAuth()) {\r\n if (this.authService.isStudent) {\r\n this.handleStudentClassroomDataAndMenu();\r\n } else {\r\n this.layoutService.updateAllMenuItemsDisabledStatus(false);\r\n }\r\n }\r\n if (this.previousUrl !== evt.url) {\r\n console.log(evt.url);\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n [].forEach.call(document.getElementsByClassName('tawk-card-primary'), (el: any) => {\r\n el.style.setProperty(\"backgroundColor\", \"black\", \"important\");\r\n console.log(el)\r\n })\r\n }, 10000);\r\n this.authService.autoAuthUser();\r\n this.generalService.setDevice();\r\n this.getLayoutType$();\r\n\r\n this.layout$.subscribe((res) => {\r\n // console.log(res);\r\n });\r\n\r\n // this.getLayoutType$().subscribe((res)=>{\r\n // console.log(res);\r\n // });\r\n\r\n this.router.events.subscribe((data) => {\r\n if (data instanceof RoutesRecognized) {\r\n // console.log(data.state.root.firstChild!.data);\r\n\r\n this.routeData = data.state.root.firstChild!.data;\r\n }\r\n });\r\n\r\n this.authService.authStatusListener.subscribe(res => {\r\n console.log(res);\r\n this.loggedIn.set(res);\r\n if (res) {\r\n }\r\n });\r\n this.listenLoggedInUser();\r\n\r\n }\r\n\r\n getLayoutType$(): Observable {\r\n return this.router.events.pipe(\r\n filter((event) => event instanceof RoutesRecognized),\r\n map((ev: Data) => {\r\n // console.log(this.activatedRoute);\r\n return this.activatedRoute\r\n }),\r\n map((route) => {\r\n while (route.firstChild) route = route.firstChild\r\n\r\n // console.log(route);\r\n return route\r\n }),\r\n mergeMap((route) => route.data),\r\n map(({ layout }) => layout),\r\n )\r\n }\r\n\r\n getTopLeftGradientClass() {\r\n if (this.router.url.includes('dashboard')) {\r\n this.routeIsDashboard = true;\r\n return \"top-left-gradient\";\r\n }\r\n return \"top-left-gradient-big\"\r\n }\r\n\r\n checkOffset() {\r\n // var leftMenu = document.getElementById('left-menu');\r\n // var a = window.scrollY + leftMenu!?.clientHeight + document.getElementById('footer')!?.clientHeight + 100;\r\n // var body = document.body;\r\n // var html = document.documentElement;\r\n // var height = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\r\n // if (leftMenu !== null) {\r\n // if (a < height) {\r\n // leftMenu.style.position = \"fixed\";\r\n // leftMenu.style.top = html.clientHeight > 850 ? \"86px\" : \"70px\"; // see marginTop in .app-content class and check @media (max-height: 850px)\r\n // this.mt = window.scrollY;\r\n // } else {\r\n // leftMenu.style.position = \"absolute\";\r\n // leftMenu.style.top = this.mt + \"px\";\r\n // }\r\n // }\r\n }\r\n\r\n onActivate(event: Event) {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n @HostListener('window:scroll', ['$event'])\r\n onWindowScroll($event: any) {\r\n this.checkOffset();\r\n this.newValue = window.pageYOffset;\r\n this.generalService.gradientScale(this.newValue, this.oldValue, 'top-left-gradient')\r\n this.oldValue = this.newValue;\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this.generalService.setDevice();\r\n }\r\n\r\n backClicked() {\r\n this.location.back();\r\n }\r\n\r\n addActiveClassToProfileInfoInSillyWay(data: RoutesRecognized, url: string, id: string) {\r\n // Sorry :( but routerLinkActive is not working in profile-menu.component.ts\r\n if (data.url === url) {\r\n setTimeout(() => {\r\n document.getElementById(id)?.classList.add('item-active')\r\n }, 100);\r\n } else {\r\n document.getElementById(id)?.classList.remove('item-active')\r\n }\r\n }\r\n\r\n addActiveClassToTeacherInfoInSillyWay(data: RoutesRecognized, url: string, id: string) {\r\n // Sorry :( but routerLinkActive is not working in profile-menu.component.ts\r\n if (data.url === url) {\r\n setTimeout(() => {\r\n document.getElementById(id)?.classList.add('item-active-teacher')\r\n document.getElementById(id)?.classList.remove('inactive-item')\r\n }, 100);\r\n } else {\r\n document.getElementById(id)?.classList.remove('item-active-teacher')\r\n document.getElementById(id)?.classList.add('inactive-item')\r\n }\r\n }\r\n\r\n private handleStudentClassroomDataAndMenu() {\r\n this.userService.getUserHasPayment()\r\n .pipe(\r\n take(1),\r\n switchMap((res: any) => {\r\n return this.classroomService.getLMSUserClassrooms(this.authService.getLoggedInUser().id).pipe(\r\n tap((classrooms) => {\r\n this.classroomService.setUserClassrooms(classrooms);\r\n const isStudentActive = this.classroomService.isStudentActive(classrooms, res);\r\n this.layoutService.updateMenuItemDisabledStatus(\"Classrooms\", classrooms.length === 0);\r\n this.layoutService.updateMenuItemDisabledStatus(\"Guides\", true);\r\n if (isStudentActive) {\r\n this.layoutService.updateAllMenuItemsDisabledStatus(false);\r\n } else {\r\n this.layoutService.updateMenuItemClassroomToTrialsForStudent(classrooms);\r\n }\r\n console.log(classrooms);\r\n }),\r\n take(1)\r\n );\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private listenChatFromClassrooms() {\r\n this.classroomService.getLMSUserClassrooms(this.user.id).subscribe(res => {\r\n let totalUnreadCount = 0; // Initialize a variable to accumulate the total unread count\r\n console.log(res);\r\n this.classroomService.setUserClassrooms(res);\r\n const classroomObservables = res.map((element: Classroom) => {\r\n return this.chatService.getUnreadMessagesCount(element.id, this.user.aspUserId).pipe(\r\n tap(count => {\r\n console.log(`Unread messages count for classroom ${element.id} for user ${this.user.aspUserId}: ${count}`);\r\n })\r\n );\r\n });\r\n\r\n combineLatest(classroomObservables).subscribe(counts => {\r\n totalUnreadCount = (counts as number[]).reduce((acc, count) => acc + count, 0);\r\n this.chatService.unreadCount.set(totalUnreadCount); // Update the total count\r\n });\r\n });\r\n }\r\n\r\n private listenLoggedInUser() {\r\n toObservable(this.loggedIn, {\r\n injector: this.injector\r\n }).subscribe({\r\n next: (data) => {\r\n if (data) {\r\n // this.listenChatFromClassrooms();\r\n }\r\n }\r\n });\r\n\r\n toObservable(this.authService.firebaseLoggedIn, {\r\n injector: this.injector\r\n }).subscribe({\r\n next: (data) => {\r\n if (data) {\r\n }\r\n }\r\n });\r\n\r\n toObservable(this.authService.firebaseLogoutEvent, {\r\n injector: this.injector\r\n }).subscribe({\r\n next: (data) => {\r\n if (data) {\r\n this.chatService.signOutFromFirebase();\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n this.chatService.getFireBaseUser().subscribe({\r\n next: (user) => {\r\n if (user) {\r\n this.authService.firebaseLoggedIn.set(true);\r\n this.listenChatFromClassrooms();\r\n }\r\n },\r\n error: (error) => {\r\n console.log(error);\r\n alert(error);\r\n }\r\n });\r\n\r\n }\r\n\r\n}","import { HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AuthService } from \"../services/auth.service\";\r\n\r\n@Injectable()//so we can inject services into that service\r\n//this will take a request and allows us to continue\r\n//we manipulating an incoming request and we are adding our token in the autorization header\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthService) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n const authToken = this.authService.getToken();\r\n //manipualte the req to hold the token\r\n const authRequest = req.clone({\r\n headers: req.headers.set(\"Authorization\", \"Bearer \" + authToken)\r\n });\r\n return next.handle(authRequest);\r\n }\r\n}","import { HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { ToastService } from \"../services/toast.service\";\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private toastService: ToastService\r\n ) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler) {\r\n\r\n if (req.headers.has('X-Bypass-Error-Interceptor')) {\r\n return next.handle(req);\r\n }\r\n\r\n return next.handle(req).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n console.log(error)\r\n let errorMessage = \"An unknown error occured\";\r\n if (error.error && error.error.error && error.error.error.message) {\r\n errorMessage = error.error.error.message;\r\n }\r\n if (error.error && error.error.message) {\r\n errorMessage = error.error.message;\r\n }\r\n this.toastService.setShowToastmessage({\r\n severity: 'error',\r\n summary: '',\r\n detail: errorMessage\r\n });\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NotFoundComponent } from './not-found.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NotFoundComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule.forRoot([\r\n // your routes here\r\n ])\r\n ]\r\n})\r\nexport class NotFoundModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CertificateComponent } from './certificate.component';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { TableModule } from 'primeng/table';\r\nimport { CarouselModule } from 'primeng/carousel';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { SharedModule } from 'src/app/shared/shared.module';\r\n@NgModule({\r\n declarations: [\r\n CertificateComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TabViewModule,\r\n TableModule,\r\n CarouselModule,\r\n DialogModule,\r\n ButtonModule,\r\n SharedModule\r\n ]\r\n})\r\nexport class CertificateModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { FooterComponent } from './shared/footer/footer.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { ClassroomsFiltersModalComponent } from './modules/classroom/classrooms/classrooms-filters-modal/classrooms-filters-modal.component';\r\nimport { AuthModule } from './modules/auth/auth.module';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AuthInterceptor } from './core/interceptors/auth-interceptor';\r\nimport { ErrorInterceptor } from './core/interceptors/error.interceptor';\r\nimport { TeacherApplicationModule } from './modules/teacher-application/teacher-application.module';\r\nimport { NotFoundModule } from './modules/not-found/not-found.module';\r\nimport { CertificateModule } from './modules/certificate/certificate.module';\r\nimport { ToastService } from './core/services/toast.service';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { NotificationsModule } from './modules/notifications/notifications.module';\r\nimport {RippleModule} from 'primeng/ripple';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport {BadgeModule} from 'primeng/badge';\r\nimport { LocationStrategy, HashLocationStrategy } from '@angular/common';\r\nimport { DatePipe } from '@angular/common';\r\nimport { AngularFireModule } from '@angular/fire/compat';\r\nimport { AngularFirestoreModule } from '@angular/fire/compat/firestore';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ChatComponent } from './modules/chat/chat.component';\r\nimport { FirebaseAppModule } from '@angular/fire/app';\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n FooterComponent,\r\n ClassroomsFiltersModalComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n AuthModule,\r\n NotFoundModule,\r\n TeacherApplicationModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n CertificateModule,\r\n SharedModule,\r\n NotificationsModule,\r\n RippleModule,\r\n MenuModule,\r\n BadgeModule,\r\n AngularFireModule.initializeApp(environment.firebase),\r\n AngularFirestoreModule, // for firestore\r\n FirebaseAppModule,\r\n ChatComponent,\r\n ],\r\n providers: [\r\n // provideAppCheck(() =>\r\n // initializeAppCheck(undefined, {\r\n // provider: new ReCaptchaV3Provider('6Le24q4hAAAAALsdgBnyhXQxTU_Nqe1r-Jj3kHyX'),\r\n // isTokenAutoRefreshEnabled: true,\r\n // })\r\n // ),\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n {provide: LocationStrategy, useClass: HashLocationStrategy},\r\n // {\r\n // provide: RECAPTCHA_V3_SITE_KEY,\r\n // useValue: RECAPTCHA_V3_STACKBLITZ_KEY\r\n // },\r\n DatePipe,\r\n ToastService\r\n //TODO GOOGLE LOGIN\r\n\r\n // SocialAuthService,\r\n // {\r\n // provide: 'SocialAuthServiceConfig',\r\n // useValue: {\r\n // autoLogin: false,\r\n // providers: [\r\n // {\r\n // id: GoogleLoginProvider.PROVIDER_ID,\r\n // provider: new GoogleLoginProvider(\r\n // '883654869277-m2mlgsroh8vsmt0tg82lmo4cnt0cuqs3.apps.googleusercontent.com'\r\n // )\r\n // },\r\n // ],\r\n // } as SocialAuthServiceConfig\r\n // }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { 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\n// Import Firebase core functions\r\nimport { initializeApp } from 'firebase/app';\r\nimport { initializeAppCheck, ReCaptchaEnterpriseProvider, ReCaptchaV3Provider } from 'firebase/app-check';\r\nconst firebaseApp = initializeApp(environment.firebase);\r\n// Initialize Firebase App Check\r\nconst provider = new ReCaptchaV3Provider(\"6Le24q4hAAAAALsdgBnyhXQxTU_Nqe1r-Jj3kHyX\"); // Replace XXXXXXXXXXXXX with your registered debug token\r\n\r\n// const appCheck = initializeAppCheck(undefined, { provider, isTokenAutoRefreshEnabled: true });;\r\n// const provider = new ReCaptchaEnterpriseProvider(\"6Le24q4hAAAAALsdgBnyhXQxTU_Nqe1r-Jj3kHyX\"); // Replace XXXXXXXXXXXXX with your registered debug token\r\n// initializeAppCheck(firebaseApp, { appCheckProvider: appCheck, isTokenAutoRefreshEnabled: true });\r\n// E9EA4811-F061-40E8-9728-345C5650C67A\r\nif (environment.production) {\r\n enableProdMode();\r\n window.console.log = () => {};\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 85637,\n\t\"./af.js\": 85637,\n\t\"./ar\": 6777,\n\t\"./ar-dz\": 74508,\n\t\"./ar-dz.js\": 74508,\n\t\"./ar-kw\": 67504,\n\t\"./ar-kw.js\": 67504,\n\t\"./ar-ly\": 95373,\n\t\"./ar-ly.js\": 95373,\n\t\"./ar-ma\": 92412,\n\t\"./ar-ma.js\": 92412,\n\t\"./ar-ps\": 78823,\n\t\"./ar-ps.js\": 78823,\n\t\"./ar-sa\": 36670,\n\t\"./ar-sa.js\": 36670,\n\t\"./ar-tn\": 36448,\n\t\"./ar-tn.js\": 36448,\n\t\"./ar.js\": 6777,\n\t\"./az\": 23009,\n\t\"./az.js\": 23009,\n\t\"./be\": 28299,\n\t\"./be.js\": 28299,\n\t\"./bg\": 4685,\n\t\"./bg.js\": 4685,\n\t\"./bm\": 11171,\n\t\"./bm.js\": 11171,\n\t\"./bn\": 23590,\n\t\"./bn-bd\": 5841,\n\t\"./bn-bd.js\": 5841,\n\t\"./bn.js\": 23590,\n\t\"./bo\": 54309,\n\t\"./bo.js\": 54309,\n\t\"./br\": 54130,\n\t\"./br.js\": 54130,\n\t\"./bs\": 8033,\n\t\"./bs.js\": 8033,\n\t\"./ca\": 55294,\n\t\"./ca.js\": 55294,\n\t\"./cs\": 53028,\n\t\"./cs.js\": 53028,\n\t\"./cv\": 5807,\n\t\"./cv.js\": 5807,\n\t\"./cy\": 70342,\n\t\"./cy.js\": 70342,\n\t\"./da\": 38269,\n\t\"./da.js\": 38269,\n\t\"./de\": 11489,\n\t\"./de-at\": 42123,\n\t\"./de-at.js\": 42123,\n\t\"./de-ch\": 17757,\n\t\"./de-ch.js\": 17757,\n\t\"./de.js\": 11489,\n\t\"./dv\": 28152,\n\t\"./dv.js\": 28152,\n\t\"./el\": 7687,\n\t\"./el.js\": 7687,\n\t\"./en-au\": 46668,\n\t\"./en-au.js\": 46668,\n\t\"./en-ca\": 76798,\n\t\"./en-ca.js\": 76798,\n\t\"./en-gb\": 53615,\n\t\"./en-gb.js\": 53615,\n\t\"./en-ie\": 91364,\n\t\"./en-ie.js\": 91364,\n\t\"./en-il\": 79907,\n\t\"./en-il.js\": 79907,\n\t\"./en-in\": 70533,\n\t\"./en-in.js\": 70533,\n\t\"./en-nz\": 33190,\n\t\"./en-nz.js\": 33190,\n\t\"./en-sg\": 51096,\n\t\"./en-sg.js\": 51096,\n\t\"./eo\": 3962,\n\t\"./eo.js\": 3962,\n\t\"./es\": 37726,\n\t\"./es-do\": 65010,\n\t\"./es-do.js\": 65010,\n\t\"./es-mx\": 63654,\n\t\"./es-mx.js\": 63654,\n\t\"./es-us\": 59043,\n\t\"./es-us.js\": 59043,\n\t\"./es.js\": 37726,\n\t\"./et\": 25343,\n\t\"./et.js\": 25343,\n\t\"./eu\": 90728,\n\t\"./eu.js\": 90728,\n\t\"./fa\": 60787,\n\t\"./fa.js\": 60787,\n\t\"./fi\": 71771,\n\t\"./fi.js\": 71771,\n\t\"./fil\": 45335,\n\t\"./fil.js\": 45335,\n\t\"./fo\": 69761,\n\t\"./fo.js\": 69761,\n\t\"./fr\": 1670,\n\t\"./fr-ca\": 28991,\n\t\"./fr-ca.js\": 28991,\n\t\"./fr-ch\": 97280,\n\t\"./fr-ch.js\": 97280,\n\t\"./fr.js\": 1670,\n\t\"./fy\": 24203,\n\t\"./fy.js\": 24203,\n\t\"./ga\": 69858,\n\t\"./ga.js\": 69858,\n\t\"./gd\": 38605,\n\t\"./gd.js\": 38605,\n\t\"./gl\": 27365,\n\t\"./gl.js\": 27365,\n\t\"./gom-deva\": 33896,\n\t\"./gom-deva.js\": 33896,\n\t\"./gom-latn\": 95587,\n\t\"./gom-latn.js\": 95587,\n\t\"./gu\": 97950,\n\t\"./gu.js\": 97950,\n\t\"./he\": 92029,\n\t\"./he.js\": 92029,\n\t\"./hi\": 51897,\n\t\"./hi.js\": 51897,\n\t\"./hr\": 29816,\n\t\"./hr.js\": 29816,\n\t\"./hu\": 22253,\n\t\"./hu.js\": 22253,\n\t\"./hy-am\": 28196,\n\t\"./hy-am.js\": 28196,\n\t\"./id\": 51307,\n\t\"./id.js\": 51307,\n\t\"./is\": 95474,\n\t\"./is.js\": 95474,\n\t\"./it\": 23099,\n\t\"./it-ch\": 45807,\n\t\"./it-ch.js\": 45807,\n\t\"./it.js\": 23099,\n\t\"./ja\": 19127,\n\t\"./ja.js\": 19127,\n\t\"./jv\": 30182,\n\t\"./jv.js\": 30182,\n\t\"./ka\": 10758,\n\t\"./ka.js\": 10758,\n\t\"./kk\": 93444,\n\t\"./kk.js\": 93444,\n\t\"./km\": 72034,\n\t\"./km.js\": 72034,\n\t\"./kn\": 46223,\n\t\"./kn.js\": 46223,\n\t\"./ko\": 83064,\n\t\"./ko.js\": 83064,\n\t\"./ku\": 8714,\n\t\"./ku-kmr\": 10961,\n\t\"./ku-kmr.js\": 10961,\n\t\"./ku.js\": 8714,\n\t\"./ky\": 12062,\n\t\"./ky.js\": 12062,\n\t\"./lb\": 84796,\n\t\"./lb.js\": 84796,\n\t\"./lo\": 19279,\n\t\"./lo.js\": 19279,\n\t\"./lt\": 106,\n\t\"./lt.js\": 106,\n\t\"./lv\": 11840,\n\t\"./lv.js\": 11840,\n\t\"./me\": 42240,\n\t\"./me.js\": 42240,\n\t\"./mi\": 13588,\n\t\"./mi.js\": 13588,\n\t\"./mk\": 15518,\n\t\"./mk.js\": 15518,\n\t\"./ml\": 37823,\n\t\"./ml.js\": 37823,\n\t\"./mn\": 98657,\n\t\"./mn.js\": 98657,\n\t\"./mr\": 61285,\n\t\"./mr.js\": 61285,\n\t\"./ms\": 43014,\n\t\"./ms-my\": 86253,\n\t\"./ms-my.js\": 86253,\n\t\"./ms.js\": 43014,\n\t\"./mt\": 20167,\n\t\"./mt.js\": 20167,\n\t\"./my\": 47940,\n\t\"./my.js\": 47940,\n\t\"./nb\": 50014,\n\t\"./nb.js\": 50014,\n\t\"./ne\": 49023,\n\t\"./ne.js\": 49023,\n\t\"./nl\": 34208,\n\t\"./nl-be\": 71412,\n\t\"./nl-be.js\": 71412,\n\t\"./nl.js\": 34208,\n\t\"./nn\": 81354,\n\t\"./nn.js\": 81354,\n\t\"./oc-lnc\": 40870,\n\t\"./oc-lnc.js\": 40870,\n\t\"./pa-in\": 80389,\n\t\"./pa-in.js\": 80389,\n\t\"./pl\": 7342,\n\t\"./pl.js\": 7342,\n\t\"./pt\": 34774,\n\t\"./pt-br\": 73003,\n\t\"./pt-br.js\": 73003,\n\t\"./pt.js\": 34774,\n\t\"./ro\": 85333,\n\t\"./ro.js\": 85333,\n\t\"./ru\": 73451,\n\t\"./ru.js\": 73451,\n\t\"./sd\": 43921,\n\t\"./sd.js\": 43921,\n\t\"./se\": 59682,\n\t\"./se.js\": 59682,\n\t\"./si\": 80582,\n\t\"./si.js\": 80582,\n\t\"./sk\": 4348,\n\t\"./sk.js\": 4348,\n\t\"./sl\": 95337,\n\t\"./sl.js\": 95337,\n\t\"./sq\": 39358,\n\t\"./sq.js\": 39358,\n\t\"./sr\": 50683,\n\t\"./sr-cyrl\": 69382,\n\t\"./sr-cyrl.js\": 69382,\n\t\"./sr.js\": 50683,\n\t\"./ss\": 51156,\n\t\"./ss.js\": 51156,\n\t\"./sv\": 29855,\n\t\"./sv.js\": 29855,\n\t\"./sw\": 18536,\n\t\"./sw.js\": 18536,\n\t\"./ta\": 15373,\n\t\"./ta.js\": 15373,\n\t\"./te\": 37809,\n\t\"./te.js\": 37809,\n\t\"./tet\": 61297,\n\t\"./tet.js\": 61297,\n\t\"./tg\": 92527,\n\t\"./tg.js\": 92527,\n\t\"./th\": 85862,\n\t\"./th.js\": 85862,\n\t\"./tk\": 79331,\n\t\"./tk.js\": 79331,\n\t\"./tl-ph\": 44387,\n\t\"./tl-ph.js\": 44387,\n\t\"./tlh\": 3592,\n\t\"./tlh.js\": 3592,\n\t\"./tr\": 79732,\n\t\"./tr.js\": 79732,\n\t\"./tzl\": 99570,\n\t\"./tzl.js\": 99570,\n\t\"./tzm\": 83553,\n\t\"./tzm-latn\": 7699,\n\t\"./tzm-latn.js\": 7699,\n\t\"./tzm.js\": 83553,\n\t\"./ug-cn\": 25674,\n\t\"./ug-cn.js\": 25674,\n\t\"./uk\": 69974,\n\t\"./uk.js\": 69974,\n\t\"./ur\": 45773,\n\t\"./ur.js\": 45773,\n\t\"./uz\": 357,\n\t\"./uz-latn\": 77135,\n\t\"./uz-latn.js\": 77135,\n\t\"./uz.js\": 357,\n\t\"./vi\": 20043,\n\t\"./vi.js\": 20043,\n\t\"./x-pseudo\": 40767,\n\t\"./x-pseudo.js\": 40767,\n\t\"./yo\": 80150,\n\t\"./yo.js\": 80150,\n\t\"./zh-cn\": 21828,\n\t\"./zh-cn.js\": 21828,\n\t\"./zh-hk\": 86644,\n\t\"./zh-hk.js\": 86644,\n\t\"./zh-mo\": 79305,\n\t\"./zh-mo.js\": 79305,\n\t\"./zh-tw\": 31860,\n\t\"./zh-tw.js\": 31860\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"x_google_ignoreList":[132]}