before interface 13.11.2024

This commit is contained in:
krivoshein
2024-11-13 09:54:35 +03:00
parent f4ca58ce91
commit 61aaac2b1c
62 changed files with 1233 additions and 1047 deletions

Binary file not shown.

View File

@@ -1,78 +1,121 @@
# ninja log v5 # ninja log v5
939 1049 7525981713172857 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
1076 3519 7525981737859367 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
57 1294 7526001966157653 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
939 1049 7525981713172857 InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
17 56 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
1053 3234 7525981734783034 CMakeFiles/InstructorsAndTrainees.dir/commonview.cpp.obj 3bdbb777b1ca4f9f
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
1061 3402 7525981736671953 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogedittrainee.cpp.obj 544a146272360182 1061 3402 7525981736671953 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogedittrainee.cpp.obj 544a146272360182
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77 939 1049 7525981713172857 InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
1294 1665 7526001969842689 libInstructorsAndTrainees.dll d721655f2d9255b7 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77 17 402 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
13 253 7524942129142836 build.ninja 76aa11f472515be0 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
1073 3685 7525981739493337 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881 1053 3234 7525981734783034 CMakeFiles/InstructorsAndTrainees.dir/commonview.cpp.obj 3bdbb777b1ca4f9f
1064 2292 7525981725238885 CMakeFiles/InstructorsAndTrainees.dir/trainees/computersLocations.cpp.obj 7aaac6302b47a301 17 402 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
1079 3311 7525981735671562 CMakeFiles/InstructorsAndTrainees.dir/instructors/databaseinstructors.cpp.obj 50eb3e676aec3cc5 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
1294 1665 7526001969842689 libInstructorsAndTrainees.dll.a d721655f2d9255b7 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
1101 1321 7525981715851341 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp.obj 54d07c59b3f7a2cf 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
1012 3479 7520793522676004 CMakeFiles/InstructorsAndTrainees.dir/instructorsAndTrainees.cpp.obj ff3fcdc370580ca2 402 1698 7531838035821493 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77 61 1098 7531240543218859 CMakeFiles/InstructorsAndTrainees.dir/instructors/databaseinstructors.cpp.obj 50eb3e676aec3cc5
17 56 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77 17 402 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
17 56 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77 102 1804 7531837214477402 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
1093 3696 7525981739656070 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
17 56 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
1049 3541 7525981738084357 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
1070 3598 7525981738646009 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
13 41 0 CMakeFiles/clean.additional 7155004b3956b606
17 56 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
1067 3354 7525981736197679 CMakeFiles/InstructorsAndTrainees.dir/trainees/databasetrainees.cpp.obj b3eab31811ef0e17
17 56 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
1058 3194 7525981734239997 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogeditgroup.cpp.obj 4bd8bab8b1110ba7
1083 3690 7525981739594632 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
1098 3612 7525981738797694 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
1086 3403 7525981736691900 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogeditinstructor.cpp.obj e02fcfe10480c54f 1086 3403 7525981736691900 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogeditinstructor.cpp.obj e02fcfe10480c54f
41 51 0 clean 9c4b4372737ab8da 41 51 0 clean 9c4b4372737ab8da
17 56 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77 13 253 7531839302069843 build.ninja 76aa11f472515be0
89 1836 7531837214806736 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881
1064 2292 7525981725238885 CMakeFiles/InstructorsAndTrainees.dir/trainees/computersLocations.cpp.obj 7aaac6302b47a301
405 1768 7531838036529893 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100
17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
56 1112 7531242705228988 CMakeFiles/InstructorsAndTrainees.dir/trainees/databasetrainees.cpp.obj b3eab31811ef0e17
17 402 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
1012 3479 7520793522676004 CMakeFiles/InstructorsAndTrainees.dir/instructorsAndTrainees.cpp.obj ff3fcdc370580ca2
1101 1321 7525981715851341 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp.obj 54d07c59b3f7a2cf
1112 1469 7531242708771354 libInstructorsAndTrainees.dll.a d721655f2d9255b7
17 402 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
1112 1469 7531242708771354 libInstructorsAndTrainees.dll d721655f2d9255b7
17 402 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
105 1888 7531837215325145 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
92 1870 7531837215145617 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
81 1983 7531837216272616 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
17 402 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 402 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
1058 3194 7525981734239997 CMakeFiles/InstructorsAndTrainees.dir/trainees/dialogeditgroup.cpp.obj 4bd8bab8b1110ba7
1090 3335 7525981736006531 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogauthorizationinstructor.cpp.obj f1f85077e88e8c7 1090 3335 7525981736006531 CMakeFiles/InstructorsAndTrainees.dir/instructors/dialogauthorizationinstructor.cpp.obj f1f85077e88e8c7
1051 3803 7525981740695693 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100 17 402 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
19 57 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77 13 41 0 CMakeFiles/clean.additional 7155004b3956b606
19 57 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77 86 1871 7531837215155595 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
19 57 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77 98 2027 7531837216691491 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77 939 1049 7525981713172857 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/EWIEGA46WW/qrc_resources.cpp f2ed85aad0f78c7c
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77 17 353 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
19 57 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77 17 353 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
19 57 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
57 1303 7526014018240729 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
1303 1677 7526014021949564 libInstructorsAndTrainees.dll d721655f2d9255b7 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
1303 1677 7526014021949564 libInstructorsAndTrainees.dll.a d721655f2d9255b7 17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
17 353 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
382 1964 7531839339498391 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
378 2067 7531839340529769 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
369 2099 7531839340850124 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
354 2126 7531839341109418 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
359 2160 7531839341449390 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
366 2161 7531839341449390 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881
375 2210 7531839341950869 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
356 2212 7531839341970816 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100
363 2272 7531839342578795 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
17 54 0 CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
17 54 0 InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/CMakeFiles/InstructorsAndTrainees_autogen 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/mocs_compilation.cpp 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/ui_instructorsandtraineeswidget.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_editortrainees.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogeditgroup.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_dialogedittrainee.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/trainees/ui_viewertrainees.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_viewerinstructors.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_editorinstructors.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogeditinstructor.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/instructors/ui_dialogauthorizationinstructor.h 325fc9931da2ad77
17 54 0 D:/LMS/DB_IaT/Debug64/InstructorsAndTrainees_autogen/include/tasks/ui_taskswidget.h 325fc9931da2ad77
61 1646 7531839533616695 CMakeFiles/InstructorsAndTrainees.dir/trainees/databasetrainees.cpp.obj b3eab31811ef0e17
73 1706 7531839534240696 CMakeFiles/InstructorsAndTrainees.dir/instructors/databaseinstructors.cpp.obj 50eb3e676aec3cc5
79 1722 7531839534380323 CMakeFiles/InstructorsAndTrainees.dir/instructors/instructorsview.cpp.obj d1fea9a96fa095b1
64 1741 7531839534601666 CMakeFiles/InstructorsAndTrainees.dir/trainees/viewertrainees.cpp.obj 99b246ecbf2b6f9b
69 1807 7531839535259884 CMakeFiles/InstructorsAndTrainees.dir/instructors/viewerinstructors.cpp.obj 2aa58696f5232c4b
54 1819 7531839535390685 CMakeFiles/InstructorsAndTrainees.dir/InstructorsAndTrainees_autogen/mocs_compilation.cpp.obj 639ec716a2902c9f
83 1852 7531839535709841 CMakeFiles/InstructorsAndTrainees.dir/tasks/taskswidget.cpp.obj 187ec526627f696e
76 1855 7531839535739769 CMakeFiles/InstructorsAndTrainees.dir/instructors/editorinstructors.cpp.obj b8e3d2e3a65912a8
59 1861 7531839535800849 CMakeFiles/InstructorsAndTrainees.dir/trainees/editortrainees.cpp.obj 2e9a885629b6e173
67 1866 7531839535859449 CMakeFiles/InstructorsAndTrainees.dir/trainees/traineesview.cpp.obj a6ea1bfa14213881
56 1976 7531839536960691 CMakeFiles/InstructorsAndTrainees.dir/instructorsandtraineeswidget.cpp.obj 8e8beb29ba6ba100
1976 2385 7531839541029361 libInstructorsAndTrainees.dll d721655f2d9255b7
1976 2385 7531839541029361 libInstructorsAndTrainees.dll.a d721655f2d9255b7

View File

@@ -1,12 +1,17 @@
# Generated by CMake. Changes will be overwritten. # Generated by CMake. Changes will be overwritten.
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.cpp
uic:ui_dialogedittrainee.h uic:ui_dialogedittrainee.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.h D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.h
mmc:Q_OBJECT mmc:Q_OBJECT
uic:ui_dialogeditgroup.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.cpp
@@ -15,47 +20,42 @@ D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.cpp
uic:ui_instructorsandtraineeswidget.h uic:ui_instructorsandtraineeswidget.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsandtraineeswidget.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsAndTrainees_global.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructorsAndTrainees_global.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.cpp
uic:ui_viewerinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.cpp
uic:ui_viewertrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogeditgroup.h
mmc:Q_OBJECT
uic:ui_dialogeditgroup.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.cpp
uic:ui_editortrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.h
mmc:Q_OBJECT mmc:Q_OBJECT
uic:ui_dialogeditinstructor.h uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/instructorsview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.cpp
uic:ui_editortrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogauthorizationinstructor.h
mmc:Q_OBJECT mmc:Q_OBJECT
uic:ui_dialogauthorizationinstructor.h uic:ui_dialogauthorizationinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/editortrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.h D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.h D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/traineesview.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/dialogedittrainee.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/viewertrainees.cpp
uic:ui_viewertrainees.h
D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.h
mmc:Q_OBJECT
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/viewerinstructors.cpp
uic:ui_viewerinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/databasetrainees.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/tasks/taskswidget.cpp
uic:ui_taskswidget.h uic:ui_taskswidget.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/editorinstructors.cpp
uic:ui_editorinstructors.h uic:ui_editorinstructors.h
D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/commonview.cpp
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp D:/LMS/DB_IaT/InstructorsAndTrainees/trainees/computersLocations.cpp
uic:ui_dialogeditinstructor.h
D:/LMS/DB_IaT/InstructorsAndTrainees/instructors/databaseinstructors.h
mmc:Q_OBJECT

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-11-06T16:05:43. --> <!-- Written by QtCreator 4.11.1, 2024-11-13T09:53:44. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@@ -6,8 +6,6 @@ DataBaseInstructors::DataBaseInstructors(DataBaseLMS* dbLMS):
adminMode(false) adminMode(false)
{ {
this->dbLMS = dbLMS; this->dbLMS = dbLMS;
LoadInstructorsPSQL();
} }
DataBaseInstructors::~DataBaseInstructors() DataBaseInstructors::~DataBaseInstructors()
@@ -15,229 +13,91 @@ DataBaseInstructors::~DataBaseInstructors()
} }
void DataBaseInstructors::LoadInstructorsPSQL()
{
listOfInstructors.clear();
listOfInstructors = dbLMS->selectAllInstructors();
QApplication::beep();
}
bool DataBaseInstructors::AuthorizationInstructor(QString login, QString password) bool DataBaseInstructors::AuthorizationInstructor(QString login, QString password)
{ {
//Инструкторы if(! dbLMS->transactionBegin())
for(int i = 0; i < listOfInstructors.count(); i++) return false;
if(int id = dbLMS->selectInstructorID(login, password))
{ {
if(listOfInstructors[i].getArchived()) if(dbLMS->updateInstructorLoggedIn(id, true))
continue; return dbLMS->transactionEnd();
if(listOfInstructors[i].getLogin() == login && listOfInstructors[i].getPassword() == password)
{
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(true);
int id = dbLMS->updateInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return true;
}
else
return false;
}
} }
dbLMS->transactionEnd();
return false; return false;
} }
bool DataBaseInstructors::deAuthorizationInstructor(QString login) bool DataBaseInstructors::deAuthorizationInstructor(QString login)
{ {
//Инструкторы if(! dbLMS->transactionBegin())
for(int i = 0; i < listOfInstructors.count(); i++) return false;
if(int id = dbLMS->selectInstructorID(login))
{ {
if(listOfInstructors[i].getArchived()) if(dbLMS->updateInstructorLoggedIn(id, false))
continue; return dbLMS->transactionEnd();
if(listOfInstructors[i].getLogin() == login)
{
Instructor instructor = listOfInstructors[i];
instructor.setLoggedIn(false);
int id = dbLMS->updateInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return true;
}
else
return false;
}
} }
dbLMS->transactionEnd();
return false; return false;
} }
QList<Instructor> DataBaseInstructors::getListInstructors()
{
return dbLMS->selectAllInstructors();
}
Instructor DataBaseInstructors::getInstructor(int id) Instructor DataBaseInstructors::getInstructor(int id)
{ {
//Инструкторы return dbLMS->selectInstructor(id);
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i];
}
return Instructor();
} }
QString DataBaseInstructors::getNameInstructorByLogin(QString login)
{
for(Instructor instructor : listOfInstructors)
{
if(instructor.getLogin() == login)
return instructor.getName();
}
return QString(QStringLiteral(""));
}
/*
QString DataBaseInstructors::getAuthorizedInstructorName()
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getLoggedIn())
return listOfInstructors[i].getName();
}
return QStringLiteral("");
}*/
int DataBaseInstructors::newInstructor() int DataBaseInstructors::newInstructor()
{ {
Instructor instructor; return dbLMS->insertInstructor();
instructor.setName(generateDefaultNameInstructor());
instructor.setLogin(generateDefaultLoginInstructor());
instructor.setPassword(QStringLiteral("<password>"));
instructor.setIsAdmin(false);
instructor.setArchived(false);
instructor.setLoggedIn(false);
int id = dbLMS->insertInstructor(instructor);
if(id)
{
LoadInstructorsPSQL();
return id;
}
else
return 0;
} }
int DataBaseInstructors::deleteInstructor(int id) int DataBaseInstructors::deleteInstructor(int id)
{ {
//Инструкторы return dbLMS->deleteInstructor(id);
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
{
int id_del = dbLMS->deleteInstructor(id);
if(id_del)
{
LoadInstructorsPSQL();
return id_del;
}
else
return 0;
}
}
return 0;
} }
int DataBaseInstructors::editInstructor(Instructor instructor) int DataBaseInstructors::editInstructor(Instructor instructor)
{ {
//Инструкторы //Проверка дублирования логина и имени
for(int i = 0; i < listOfInstructors.count(); i++) QList<Instructor> listInstructors = dbLMS->selectAllInstructors();
for(Instructor exist_instructor : listInstructors)
{ {
if(listOfInstructors[i].getID() == instructor.getID()) if(instructor.getLogin() == exist_instructor.getLogin() && instructor.getID() != exist_instructor.getID())
{ {//Логин уже существует!
if( (!checkExistNameInstructor(instructor.getName()) || instructor.getName() == listOfInstructors[i].getName()) && QMessageBox::critical(nullptr, tr("Editing error!"),
(!checkExistLoginInstructor(instructor.getLogin()) || instructor.getLogin() == listOfInstructors[i].getLogin()) ) tr("An existing instructor login has been entered.\nThe changes will not be accepted."));
{ return 0;
int id = dbLMS->updateInstructor(instructor); }
if(id) if(instructor.getName() == exist_instructor.getName() && instructor.getID() != exist_instructor.getID())
{ {//Имя уже существует
LoadInstructorsPSQL(); QMessageBox::warning(nullptr, tr("Editing warning!"),
return id; tr("An existing instructor name has been entered."));
} //return 0;
else
return 0;
}
} }
} }
return 0;
return dbLMS->updateInstructor(instructor);
} }
bool DataBaseInstructors::isAdmin(int id) bool DataBaseInstructors::isAdmin(int id)
{ {
//Инструкторы return dbLMS->selectInstructorIsAdmin(id);
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getIsAdmin();
}
return false;
} }
bool DataBaseInstructors::isArchived(int id) bool DataBaseInstructors::isArchived(int id)
{ {
//Инструкторы return dbLMS->selectInstructorArchived(id);
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getID() == id)
return listOfInstructors[i].getArchived();
}
return false;
} }
QString DataBaseInstructors::generateDefaultNameInstructor() bool DataBaseInstructors::existLogin(QString login)
{ {
int numInstructor = 0;
QString name;
do
{
name = QStringLiteral("<") + tr("Instructor") + QStringLiteral(" ") + QString::number(++numInstructor) + QStringLiteral(">");
}while(checkExistNameInstructor(name));
return name;
}
bool DataBaseInstructors::checkExistNameInstructor(QString name)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getName() == name)
return true;
}
return false;
}
QString DataBaseInstructors::generateDefaultLoginInstructor()
{
int numInstructor = 0;
QString login;
do
{
login = QStringLiteral("<I") + QString::number(++numInstructor) + QStringLiteral(">");
}while(checkExistLoginInstructor(login));
return login;
}
bool DataBaseInstructors::checkExistLoginInstructor(QString login)
{
//Инструкторы
for(int i = 0; i < listOfInstructors.count(); i++)
{
if(listOfInstructors[i].getLogin() == login)
return true;
}
return false;
} }

View File

@@ -5,10 +5,8 @@
#include <QObject> #include <QObject>
#include "instructorsAndTrainees_global.h" #include "instructorsAndTrainees_global.h"
#include "instructor.h" #include "instructor.h"
#include "databaselms.h" #include "databaselms.h"
class DataBaseInstructors : QObject class DataBaseInstructors : QObject
{ {
Q_OBJECT Q_OBJECT
@@ -17,19 +15,12 @@ public:
DataBaseInstructors(DataBaseLMS* dbLMS); DataBaseInstructors(DataBaseLMS* dbLMS);
~DataBaseInstructors(); ~DataBaseInstructors();
void LoadInstructorsPSQL();
bool AuthorizationInstructor(QString login, QString password); bool AuthorizationInstructor(QString login, QString password);
bool deAuthorizationInstructor(QString login); bool deAuthorizationInstructor(QString login);
QList<Instructor> getListInstructors(){ return listOfInstructors; } //Для загрузки QList<Instructor> getListInstructors();
Instructor getInstructor(int id); Instructor getInstructor(int id);
QString getNameInstructorByLogin(QString login);
//QString getAuthorizedInstructorName();
int newInstructor(); int newInstructor();
int deleteInstructor(int id); int deleteInstructor(int id);
int editInstructor(Instructor instructor); int editInstructor(Instructor instructor);
@@ -37,19 +28,10 @@ public:
bool isAdmin(int id); bool isAdmin(int id);
bool isArchived(int id); bool isArchived(int id);
bool existLogin(QString login);
private: private:
QString generateDefaultNameInstructor();
bool checkExistNameInstructor(QString name);
QString generateDefaultLoginInstructor();
bool checkExistLoginInstructor(QString login);
private:
QList<Instructor> listOfInstructors;
bool adminMode; bool adminMode;
DataBaseLMS* dbLMS; DataBaseLMS* dbLMS;
}; };

View File

@@ -12,6 +12,9 @@ EditorInstructors::EditorInstructors(DataBaseInstructors* db, bool adminMode, QW
preparationTreeWidget(ui->treeWidget); preparationTreeWidget(ui->treeWidget);
setNotLoggedInVisible(true); setNotLoggedInVisible(true);
loadInstructorsFromDB(); loadInstructorsFromDB();
if(adminMode)
ui->btnArchive->click();
} }
EditorInstructors::~EditorInstructors() EditorInstructors::~EditorInstructors()
@@ -21,9 +24,11 @@ EditorInstructors::~EditorInstructors()
void EditorInstructors::on_btnNewInstructor_clicked() void EditorInstructors::on_btnNewInstructor_clicked()
{ {
int id = dbInstructors->newInstructor(); if(int id = dbInstructors->newInstructor())
loadInstructorsFromDB(); {
setCurrentInstructor(id); loadInstructorsFromDB();
setCurrentInstructor(id);
}
} }
void EditorInstructors::on_btnDeleteInstructor_clicked() void EditorInstructors::on_btnDeleteInstructor_clicked()
@@ -36,7 +41,7 @@ void EditorInstructors::on_btnDeleteInstructor_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(0).toInt(); int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt();
if(dbInstructors->isAdmin(id)) if(dbInstructors->isAdmin(id))
{//Это Админ! {//Это Админ!
@@ -46,8 +51,8 @@ void EditorInstructors::on_btnDeleteInstructor_clicked()
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete it anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{ {
dbInstructors->deleteInstructor(id); if(dbInstructors->deleteInstructor(id))
loadInstructorsFromDB(); loadInstructorsFromDB();
} }
} }
} }
@@ -63,9 +68,11 @@ void EditorInstructors::on_btnToOrFromArchive_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(0).toInt(); int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt();
Instructor instructor = dbInstructors->getInstructor(id); Instructor instructor = dbInstructors->getInstructor(id);
if(instructor.getID() == 0)
return;
if(instructor.getArchived()) if(instructor.getArchived())
{//Архивный {//Архивный
@@ -103,29 +110,45 @@ void EditorInstructors::on_btnEdit_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран Инструктор {//Выбран Инструктор
int id = treeItemCurrent->text(0).toInt(); int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt();
DialogEditInstructor dlg(this); DialogEditInstructor dlg(this);
dlg.setInstructor(dbInstructors->getInstructor(id));
switch( dlg.exec() ) Instructor instructor = dbInstructors->getInstructor(id);
if(instructor.getID() == 0)
return;
dlg.setInstructor(instructor);
while (true)
{ {
case QDialog::Accepted: switch( dlg.exec() )
{
if(int id_edit = dbInstructors->editInstructor(dlg.getInstructor()))
{ {
loadInstructorsFromDB(); case QDialog::Accepted:
setCurrentInstructor(id_edit); {
Instructor instructor_edit = dlg.getInstructor();
if(int id_edit = dbInstructors->editInstructor(instructor_edit))
{//Отредактировано
loadInstructorsFromDB();
setCurrentInstructor(id_edit);
return;
}
else
{
dlg.setInstructor(instructor_edit);
continue;
}
break;
}
case QDialog::Rejected:
return;
break;
default:
return;
break;
} }
else
QMessageBox::critical(this, tr("Editing error!"),
tr("An existing instructor name or login has been entered.\nThe changes will not be accepted."));
break;
}
case QDialog::Rejected:
break;
default:
break;
} }
} }
} }
@@ -148,7 +171,7 @@ void EditorInstructors::on_treeWidget_currentItemChanged(QTreeWidgetItem *curren
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбран инструктор {//Выбран инструктор
int id = current->text(0).toInt(); int id = current->text(ColumnsTreeInsructors::clmn_ID).toInt();
if(dbInstructors->isArchived(id)) if(dbInstructors->isArchived(id))
{//Архивный {//Архивный
@@ -189,7 +212,7 @@ void EditorInstructors::setCurrentInstructor(int id)
{ {
QTreeWidgetItem * item = treeWidget->topLevelItem(i); QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr) if(item != nullptr)
if(item->text(0).toInt() == id) if(item->text(ColumnsTreeInsructors::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
break; break;

View File

@@ -2,9 +2,9 @@
#include <QTranslator> #include <QTranslator>
#include "instructorsview.h" #include "instructorsview.h"
InstructorsView::InstructorsView(DataBaseInstructors* db, TypeView type, bool adminMode, QWidget *parent): InstructorsView::InstructorsView(DataBaseInstructors* dbInstructors, TypeView type, bool adminMode, QWidget *parent):
CommonView(type, adminMode, parent), CommonView(type, adminMode, parent),
dbInstructors(db) dbInstructors(dbInstructors)
{ {
} }
@@ -22,30 +22,39 @@ void InstructorsView::preparationTreeWidget(QTreeWidget* tree)
treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;")); treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;"));
treeWidget->setColumnWidth(0, 50); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_ID, 50);
treeWidget->setColumnWidth(1, 250); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Instructor, 250);
treeWidget->setColumnWidth(2, 100); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Login, 100);
treeWidget->setColumnWidth(3, 100); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Password, 100);
treeWidget->setColumnWidth(4, 100); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Administrator, 100);
treeWidget->setColumnWidth(5, 80); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Archived, 80);
treeWidget->setColumnWidth(6, 80); treeWidget->setColumnWidth(ColumnsTreeInsructors::clmn_Logged, 80);
if(typeView == TypeView::onlyView) if(typeView == TypeView::onlyView)
{//onlyView {//onlyView
treeWidget->setColumnHidden(2, true); treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
treeWidget->setColumnHidden(3, true); //treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Login, true);
treeWidget->setColumnHidden(5, true); treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Administrator, true);
} }
else else
{//control {//control
treeWidget->setColumnHidden(5, true); if(adminMode)
{
archiveVisible = true;
notLoggedInVisible = true;
}
else
{
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeInsructors::clmn_Archived, true);
}
} }
} }
void InstructorsView::loadInstructorsFromDB() void InstructorsView::loadInstructorsFromDB()
{ {
dbInstructors->LoadInstructorsPSQL();
if(treeWidget == nullptr) if(treeWidget == nullptr)
return; return;
@@ -59,43 +68,46 @@ void InstructorsView::loadInstructorsFromDB()
{ {
QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget); QTreeWidgetItem *ItemInstructor = new QTreeWidgetItem(treeWidget);
ItemInstructor->setText(0, QString::number(instructor.getID())); ItemInstructor->setText(ColumnsTreeInsructors::clmn_ID, QString::number(instructor.getID()));
ItemInstructor->setText(1, instructor.getName()); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Instructor, instructor.getName());
ItemInstructor->setText(2, instructor.getLogin()); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Login, instructor.getLogin());
ItemInstructor->setText(3, instructor.getPassword()); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, instructor.getPassword());
//Сокрытие пароля
ItemInstructor->setText(ColumnsTreeInsructors::clmn_Password, QStringLiteral("******"));
if(instructor.getArchived()) if(instructor.getArchived())
{//Архивный {//Архивный
ItemInstructor->setText(5, tr("yes")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("yes"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/instructorArchive.png"))); ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/icons/instructorArchive.png")));
setItemColorArchive(ItemInstructor); setItemColorArchive(ItemInstructor);
} }
else else
{//Не Архивный {//Не Архивный
ItemInstructor->setText(5, tr("no")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Archived, tr("no"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/instructor.png"))); ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/icons/instructor.png")));
setItemColorNoArchive(ItemInstructor); setItemColorNoArchive(ItemInstructor);
} }
if(instructor.getIsAdmin()) if(instructor.getIsAdmin())
{//Админ {//Админ
ItemInstructor->setText(4, tr("yes")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("yes"));
ItemInstructor->setIcon(1, QIcon(QStringLiteral(":/icons/admin.png"))); ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Instructor, QIcon(QStringLiteral(":/icons/admin.png")));
} }
else else
{//Не Админ {//Не Админ
ItemInstructor->setText(4, tr("no")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Administrator, tr("no"));
} }
if(instructor.getLoggedIn()) if(instructor.getLoggedIn())
{//Залогинен {//Залогинен
ItemInstructor->setText(6, tr("yes")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("yes"));
ItemInstructor->setIcon(6, QIcon(QStringLiteral(":/icons/circleGreen.png"))); ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGreen.png")));
} }
else else
{//Не Залогинен {//Не Залогинен
ItemInstructor->setText(6, tr("no")); ItemInstructor->setText(ColumnsTreeInsructors::clmn_Logged, tr("no"));
ItemInstructor->setIcon(6, QIcon(QStringLiteral(":/icons/circleGray.png"))); ItemInstructor->setIcon(ColumnsTreeInsructors::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGray.png")));
} }
//Скрываем архивных (при необходимости) //Скрываем архивных (при необходимости)
@@ -110,7 +122,7 @@ void InstructorsView::loadInstructorsFromDB()
} }
treeWidget->setSortingEnabled(true); treeWidget->setSortingEnabled(true);
treeWidget->sortItems(1, Qt::SortOrder::AscendingOrder); treeWidget->sortItems(ColumnsTreeInsructors::clmn_Instructor, Qt::SortOrder::AscendingOrder);
treeWidget->expandAll(); treeWidget->expandAll();
if(typeView == TypeView::control) if(typeView == TypeView::control)
@@ -123,7 +135,7 @@ void InstructorsView::loadInstructorsFromDB()
void InstructorsView::reSetHeadTreeWidget() void InstructorsView::reSetHeadTreeWidget()
{ {
QStringList listHeaders = {tr("ID"), tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged")}; QStringList listHeaders = {tr("Instructor"), tr("Login"), tr("Password"), tr("Administrator"), tr("Archived"), tr("Logged"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders); treeWidget->setHeaderLabels(listHeaders);
} }

View File

@@ -12,7 +12,18 @@ class InstructorsView: public CommonView
Q_OBJECT Q_OBJECT
public: public:
InstructorsView(DataBaseInstructors* db, TypeView type, bool adminMode, QWidget *parent = nullptr); InstructorsView(DataBaseInstructors* dbInstructors, TypeView type, bool adminMode, QWidget *parent = nullptr);
protected:
enum ColumnsTreeInsructors{
clmn_Instructor = 0,
clmn_Login,
clmn_Password,
clmn_Administrator,
clmn_Archived,
clmn_Logged,
clmn_ID
};
protected: protected:
void preparationTreeWidget(QTreeWidget* tree); void preparationTreeWidget(QTreeWidget* tree);

View File

@@ -66,7 +66,7 @@ void ViewerInstructors::on_btnEditorInstructors_clicked()
QHBoxLayout *layout = new QHBoxLayout(dialog); QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorInstructors); layout->addWidget(&editorInstructors);
dialog->setWindowTitle(tr("Editor of instructors")); dialog->setWindowTitle(tr("Editor of instructors"));
dialog->setMinimumSize(1400, 800); dialog->setMinimumSize(1600, 800);
dialog->exec(); dialog->exec();
loadInstructorsFromDB(); loadInstructorsFromDB();

View File

@@ -7,7 +7,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::InstructorsAndTraineesWidget), ui(new Ui::InstructorsAndTraineesWidget),
adminMode(false), adminMode(false),
loginInstructorLoggedIn(QStringLiteral("")) loginInstructorLoggedInLocal(QStringLiteral(""))
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -25,13 +25,13 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
ui->verticalLayout->addWidget(m_viewerTrainees); ui->verticalLayout->addWidget(m_viewerTrainees);
ui->verticalLayout->addWidget(m_viewerInstructors); ui->verticalLayout->addWidget(m_viewerInstructors);
m_viewerTrainees->setMinimumSize(1400, 700); m_viewerTrainees->setMinimumSize(1600, 700);
m_viewerInstructors->setMinimumSize(1400, 400); m_viewerInstructors->setMinimumSize(1600, 400);
} }
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget() InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
{ {
deAuthorizationInstructor(loginInstructorLoggedIn); deAuthorizationInstructor(loginInstructorLoggedInLocal);
delete m_viewerInstructors; delete m_viewerInstructors;
delete m_viewerTrainees; delete m_viewerTrainees;
@@ -57,7 +57,7 @@ bool InstructorsAndTraineesWidget::authorizationInstructorLocal(QWidget* parent)
if(dataBaseInstructors->AuthorizationInstructor(login, password)) if(dataBaseInstructors->AuthorizationInstructor(login, password))
{ {
loginInstructorLoggedIn = login; loginInstructorLoggedInLocal = login;
if(login == QStringLiteral("admin")) if(login == QStringLiteral("admin"))
adminMode = true; adminMode = true;
@@ -82,9 +82,9 @@ bool InstructorsAndTraineesWidget::authorizationInstructorLocal(QWidget* parent)
return false; return false;
} }
bool InstructorsAndTraineesWidget::authorizationCompleted() bool InstructorsAndTraineesWidget::authorizationIsCompleted()
{ {
if(loginInstructorLoggedIn == QStringLiteral("")) if(loginInstructorLoggedInLocal == QStringLiteral(""))
return false; return false;
else else
return true; return true;

View File

@@ -7,6 +7,7 @@
#include "databaseinstructors.h" #include "databaseinstructors.h"
#include "viewertrainees.h" #include "viewertrainees.h"
#include "viewerinstructors.h" #include "viewerinstructors.h"
#include "interfacedatabaselms.h"
namespace Ui { namespace Ui {
class InstructorsAndTraineesWidget; class InstructorsAndTraineesWidget;
@@ -23,7 +24,7 @@ public:
public: public:
//Авторизация инструктора локальная //Авторизация инструктора локальная
bool authorizationInstructorLocal(QWidget* parent = nullptr); bool authorizationInstructorLocal(QWidget* parent = nullptr);
bool authorizationCompleted(); bool authorizationIsCompleted();
//Авторизация обучаемого на клиенте //Авторизация обучаемого на клиенте
bool authorizationTrainee(QString login, QString password, QString classroom_name = QStringLiteral(""), QString computer_name = QStringLiteral("")); bool authorizationTrainee(QString login, QString password, QString classroom_name = QStringLiteral(""), QString computer_name = QStringLiteral(""));
@@ -45,7 +46,7 @@ private:
ViewerInstructors* m_viewerInstructors; ViewerInstructors* m_viewerInstructors;
bool adminMode; bool adminMode;
QString loginInstructorLoggedIn; QString loginInstructorLoggedInLocal;
}; };
#endif // INSTRUCTORSANDTRAINEESWIDGET_H #endif // INSTRUCTORSANDTRAINEESWIDGET_H

View File

@@ -27,12 +27,15 @@ void TasksWidget::slot_LanguageChanged(QString language)
void TasksWidget::viewListTasksForTrainee(QString login) void TasksWidget::viewListTasksForTrainee(QString login)
{ {
QStringList listTasks; /*
QList<QString> listTasks;
QStringList strListTasks;
listTasks = pDbTrainees->getTasks(login); listTasks = pDbTrainees->getTasks(login);
ui->listWidgetTasks->clear(); ui->listWidgetTasks->clear();
ui->listWidgetTasks->addItems(listTasks); ui->listWidgetTasks->addItems(listTasks);
*/
} }
void TasksWidget::changeEvent(QEvent *event) void TasksWidget::changeEvent(QEvent *event)

View File

@@ -2,23 +2,10 @@
#include <QApplication> #include <QApplication>
#include <QMessageBox> #include <QMessageBox>
DataBaseTrainees::DataBaseTrainees(DataBaseLMS* dbLMS) DataBaseTrainees::DataBaseTrainees(DataBaseLMS* dbLMS):
adminMode(false)
{ {
listOfColorGroup.append(QColor(170, 190, 170));
listOfColorGroup.append(QColor(180, 180, 220));
listOfColorGroup.append(QColor(240, 220, 230));
listOfColorGroup.append(QColor(85, 170, 127));
listOfColorGroup.append(QColor(170, 115, 120));
listOfColorGroup.append(QColor(110, 160, 170));
listOfColorGroup.append(QColor(110, 170, 130));
listOfColorGroup.append(QColor(170, 170, 120));
listOfColorGroup.append(QColor(160, 170, 45));
listOfColorGroup.append(QColor(170, 140, 60));
listOfColorGroup.append(QColor(200, 200, 200));
this->dbLMS = dbLMS; this->dbLMS = dbLMS;
LoadTraineesGroupsPSQL();
} }
DataBaseTrainees::~DataBaseTrainees() DataBaseTrainees::~DataBaseTrainees()
@@ -26,430 +13,181 @@ DataBaseTrainees::~DataBaseTrainees()
} }
void DataBaseTrainees::LoadTraineesGroupsPSQL() void DataBaseTrainees::transactionBegin()
{ {
listOfTrainees.clear(); dbLMS->transactionBegin();
listOfGroups.clear(); }
listOfTrainees = dbLMS->selectAllTrainees(); void DataBaseTrainees::transactionEnd()
listOfGroups = dbLMS->selectAllGroups(); {
dbLMS->transactionEnd();
QApplication::beep();
} }
bool DataBaseTrainees::AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name) bool DataBaseTrainees::AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{ {
//Обучаемые if(! dbLMS->transactionBegin())
for(int i = 0; i < listOfTrainees.count(); i++) return false;
if(int id = dbLMS->selectTraineeID(login, password))
{ {
if(listOfTrainees[i].getArchived()) if(dbLMS->updateTraineeLoggedIn(id, true))
continue; return dbLMS->transactionEnd();
if(listOfTrainees[i].getLogin() == login && listOfTrainees[i].getPassword() == password)
{
Trainee trainee = listOfTrainees[i];
trainee.setLoggedIn(true);
//trainee.setLearnClass(learnClass);
//trainee.setComputer(computer);
int id = dbLMS->updateTrainee(trainee);
if(id)
{
LoadTraineesGroupsPSQL();
return true;
}
else
return false;
}
} }
dbLMS->transactionEnd();
return false; return false;
} }
bool DataBaseTrainees::deAuthorizationTrainee(QString login) bool DataBaseTrainees::deAuthorizationTrainee(QString login)
{ {
//Обучаемые if(! dbLMS->transactionBegin())
for(int i = 0; i < listOfTrainees.count(); i++) return false;
if(int id = dbLMS->selectTraineeID(login))
{ {
if(listOfTrainees[i].getArchived()) if(dbLMS->updateTraineeLoggedIn(id, false))
continue; return dbLMS->transactionEnd();
if(listOfTrainees[i].getLogin() == login)
{
Trainee trainee = listOfTrainees[i];
trainee.setLoggedIn(false);
//trainee.setLearnClass(QStringLiteral(""));
//trainee.setComputer(QStringLiteral(""));
int id = dbLMS->updateTrainee(trainee);
if(id)
{
LoadTraineesGroupsPSQL();
return true;
}
else
return false;
}
} }
dbLMS->transactionEnd();
return false; return false;
} }
/* QList<Task> DataBaseTrainees::getTasks(int id)
void DataBaseTrainees::setTasks(QString login, QStringList tasks)
{ {
//Обучаемые return dbLMS->selectTasksOfTrainee(id);
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getLogin() == login)
listOfTrainees[i].setTasks(tasks);
}
}*/
QStringList DataBaseTrainees::getTasks(QString login)
{
QStringList tasksStrList;
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getLogin() == login)
{
QList<Task> tasks = listOfTrainees[i].getTasks();
for(Task task: tasks)
{
tasksStrList.append(task.getName());
}
}
}
return tasksStrList;
} }
QString DataBaseTrainees::getNameTraineeOnComputer(QString computer_name) QString DataBaseTrainees::getNameTraineeOnComputer(QString computer_name)
{ {
/*
for(Trainee trainee : listOfTrainees) for(Trainee trainee : listOfTrainees)
{ {
if(trainee.getComputer().getName() == computer_name) if(trainee.getComputer().getName() == computer_name)
return trainee.getName(); return trainee.getName();
} }*/
return QString(QStringLiteral("")); return QString(QStringLiteral(""));
} }
Trainee DataBaseTrainees::getTraineeOnComputer(QString computer_name) Trainee DataBaseTrainees::getTraineeOnComputer(QString computer_name)
{ {
/*
for(Trainee trainee : listOfTrainees) for(Trainee trainee : listOfTrainees)
{ {
if(trainee.getComputer().getName() == computer_name) if(trainee.getComputer().getName() == computer_name)
return trainee; return trainee;
} }*/
return Trainee(); return Trainee();
} }
QString DataBaseTrainees::getNameTraineeByLogin(QString login) QString DataBaseTrainees::getNameTraineeByLogin(QString login)
{ {
/*
for(Trainee trainee : listOfTrainees) for(Trainee trainee : listOfTrainees)
{ {
if(trainee.getLogin() == login) if(trainee.getLogin() == login)
return trainee.getName(); return trainee.getName();
} }*/
return QString(QStringLiteral("")); return QString(QStringLiteral(""));
} }
/*
QColor DataBaseTrainees::getColorGroupByLogin(QString login)
{
QString nameTrainee = getNameTraineeByLogin(login);
Trainee trainee = getTrainee(nameTrainee);
QString nameGroup = trainee.getGroup();
Group group = getGroup(nameGroup);
return getColorGroup(group.getColor());
}*/
QList<Trainee> DataBaseTrainees::getListTraineesInGroup(int id) QList<Trainee> DataBaseTrainees::getListTraineesInGroup(int id)
{ {
QList<Trainee> listTrainees; QList<Trainee> listTrainees;
/*
for(Trainee trainee : listOfTrainees) for(Trainee trainee : listOfTrainees)
{ {
if(trainee.getGroup().getID() == id) if(trainee.getGroup().getID() == id)
listTrainees.append(trainee); listTrainees.append(trainee);
} }
*/
return listTrainees; return listTrainees;
} }
QList<Group> DataBaseTrainees::getListGroups() QList<Group> DataBaseTrainees::getListGroups()
{ {
return listOfGroups; return dbLMS->selectAllGroups();
} }
/*
QColor DataBaseTrainees::getColorGroup(Group::ColorGroup numColor)
{
if(numColor > listOfColorGroup.count() - 1)
return listOfColorGroup.at(Group::ColorGroup::colorAther);
return listOfColorGroup.at(numColor); QList<Trainee> DataBaseTrainees::getListTrainees()
}*/ {
return dbLMS->selectAllTrainees();
}
Trainee DataBaseTrainees::getTrainee(int id) Trainee DataBaseTrainees::getTrainee(int id)
{ {
//Обучаемые return dbLMS->selectTrainee(id);
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getID() == id)
return listOfTrainees[i];
}
return Trainee();
} }
Group DataBaseTrainees::getGroup(int id) Group DataBaseTrainees::getGroup(int id)
{ {
//Группы return dbLMS->selectGroup(id);
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getID() == id)
return listOfGroups[i];
}
return Group();
} }
int DataBaseTrainees::newGroup() int DataBaseTrainees::newGroup()
{ {
Group group; return dbLMS->insertGroup();
group.setName(generateDefaultNameGroup());
int id = dbLMS->insertGroup(group);
if(id)
{
LoadTraineesGroupsPSQL();
return id;
}
else
return 0;
} }
int DataBaseTrainees::deleteGroup(int id) int DataBaseTrainees::deleteGroup(int id)
{ {
//Группы return dbLMS->deleteGroup(id);
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getID() == id)
{
int id_del = dbLMS->deleteGroup(id);
if(id_del)
{
LoadTraineesGroupsPSQL();
return id_del;
}
else
return 0;
}
}
return 0;
} }
int DataBaseTrainees::editGroup(Group group) int DataBaseTrainees::editGroup(Group group)
{ {
//Группы //Проверка дублирования имени
for(int i = 0; i < listOfGroups.count(); i++) QList<Group> listGroups = dbLMS->selectAllGroups();
for(Group exist_group : listGroups)
{ {
if(listOfGroups[i].getID() == group.getID()) if(group.getName() == exist_group.getName() && group.getID() != exist_group.getID())
{ {//Имя уже существует
if(!checkExistNameGroup(group.getName()) || group.getName() == listOfGroups[i].getName()) QMessageBox::critical(nullptr, tr("Editing error!"),
{ tr("An existing group name has been entered."));
int id = dbLMS->updateGroup(group); return 0;
if(id)
{
LoadTraineesGroupsPSQL();
return id;
}
else
return 0;
}
else
{
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing group name has been entered.\nThe changes will not be accepted."));
return 0;
}
} }
} }
return 0;
return dbLMS->updateGroup(group);
} }
int DataBaseTrainees::newTrainee(int id_group) int DataBaseTrainees::newTrainee(int id_group)
{ {
Trainee trainee; return dbLMS->insertTrainee(id_group);
Group group;
group.setID(id_group);
trainee.setGroup(group);
trainee.setName(generateDefaultNameTrainee());
trainee.setLogin(generateDefaultLoginTrainee());
trainee.setPassword(QStringLiteral("<password>"));
trainee.setArchived(false);
trainee.setLoggedIn(false);
int id = dbLMS->insertTrainee(trainee);
if(id)
{
LoadTraineesGroupsPSQL();
return id;
}
else
return 0;
} }
int DataBaseTrainees::deleteTrainee(int id) int DataBaseTrainees::deleteTrainee(int id)
{ {
//Обучаемые return dbLMS->deleteTrainee(id);
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getID() == id)
{
int id_del = dbLMS->deleteTrainee(id);
if(id_del)
{
LoadTraineesGroupsPSQL();
return id_del;
}
return 0;
}
}
return 0;
} }
int DataBaseTrainees::editTrainee(Trainee trainee) int DataBaseTrainees::editTrainee(Trainee trainee)
{ {
//Обучаемые //Проверка дублирования логина и имени
for(int i = 0; i < listOfTrainees.count(); i++) QList<Trainee> listTrainees = dbLMS->selectAllTrainees();
for(Trainee exist_trainee : listTrainees)
{ {
if(listOfTrainees[i].getID() == trainee.getID()) if(trainee.getLogin() == exist_trainee.getLogin() && trainee.getID() != exist_trainee.getID())
{ {//Логин уже существует!
if( (!checkExistNameTrainee(trainee.getName()) || trainee.getName() == listOfTrainees[i].getName()) && QMessageBox::critical(nullptr, tr("Editing error!"),
(!checkExistLoginTrainee(trainee.getLogin()) || trainee.getLogin() == listOfTrainees[i].getLogin()) ) tr("An existing trainee login has been entered.\nThe changes will not be accepted."));
{ return 0;
int id = dbLMS->updateTrainee(trainee); }
if(id) if(trainee.getName() == exist_trainee.getName() && trainee.getID() != exist_trainee.getID())
{ {//Имя уже существует
LoadTraineesGroupsPSQL(); QMessageBox::warning(nullptr, tr("Editing warning!"),
return id; tr("An existing trainee name has been entered."));
} //return 0;
else
return 0;
}
else
{
QMessageBox::critical(nullptr, tr("Editing error!"),
tr("An existing trainee's name or login has been entered.\nThe changes will not be accepted."));
return 0;
}
} }
} }
return 0;
return dbLMS->updateTrainee(trainee);
} }
bool DataBaseTrainees::isArchived(int id) bool DataBaseTrainees::isArchived(int id)
{ {
//Обучаемые return dbLMS->selectTraineeArchived(id);
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getID()== id)
return listOfTrainees[i].getArchived();
}
return false;
} }
QString DataBaseTrainees::generateDefaultNameGroup()
{
int numGroup = 0;
QString name;
do
{
name = tr("Group") + QStringLiteral(" ") + QString::number(++numGroup);
}while(checkExistNameGroup(name));
return name;
}
QString DataBaseTrainees::generateDefaultNameTrainee()
{
int numTrainee = 0;
QString name;
do
{
name = QStringLiteral("<") + tr("Trainee") + QStringLiteral(" ") + QString::number(++numTrainee) + QStringLiteral(">");
}while(checkExistNameTrainee(name));
return name;
}
bool DataBaseTrainees::checkExistNameGroup(QString name)
{
//Группы
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getName() == name)
return true;
}
return false;
}
bool DataBaseTrainees::checkExistNameTrainee(QString name)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getName() == name)
return true;
}
return false;
}
QString DataBaseTrainees::generateDefaultLoginTrainee()
{
int numTrainee = 0;
QString login;
do
{
login = QStringLiteral("<O") + QString::number(++numTrainee) + QStringLiteral(">");
}while(checkExistLoginTrainee(login));
return login;
}
bool DataBaseTrainees::checkExistLoginTrainee(QString login)
{
//Обучаемые
for(int i = 0; i < listOfTrainees.count(); i++)
{
if(listOfTrainees[i].getLogin() == login)
return true;
}
return false;
}
/*
Group::ColorGroup DataBaseTrainees::generateDefaultColorGroup()
{
for(int i = 0; i < Group::ColorGroup::countColor; i++)
{
Group::ColorGroup color = (Group::ColorGroup)i;
if(!checkExistColorGroup(color))
return color;
}
return Group::ColorGroup::colorAther;
}*/
/*
bool DataBaseTrainees::checkExistColorGroup(Group::ColorGroup color)
{
//Группы
for(int i = 0; i < listOfGroups.count(); i++)
{
if(listOfGroups[i].getColor() == color)
return true;
}
return false;
}*/

View File

@@ -19,25 +19,28 @@ public:
DataBaseTrainees(DataBaseLMS* dbLMS); DataBaseTrainees(DataBaseLMS* dbLMS);
~DataBaseTrainees(); ~DataBaseTrainees();
void LoadTraineesGroupsPSQL(); //void LoadTraineesGroupsPSQL();
void transactionBegin();
void transactionEnd();
bool AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name); bool AuthorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name);
bool deAuthorizationTrainee(QString login); bool deAuthorizationTrainee(QString login);
//void setTasks(QString login, QStringList tasks); //void setTasks(QString login, QStringList tasks);
QStringList getTasks(QString login); QList<Task> getTasks(int id);
QString getNameTraineeOnComputer(QString computer_name); QString getNameTraineeOnComputer(QString computer_name);
Trainee getTraineeOnComputer(QString computer_name); Trainee getTraineeOnComputer(QString computer_name);
QString getNameTraineeByLogin(QString login); QString getNameTraineeByLogin(QString login);
//QColor getColorGroupByLogin(QString login);
QList<Trainee> getListTraineesInGroup(int id); QList<Trainee> getListTraineesInGroup(int id);
QList<Group> getListGroups(); QList<Group> getListGroups();
QList<Trainee> getListTrainees();
Trainee getTrainee(int id); Trainee getTrainee(int trainee_id);
Group getGroup(int id); Group getGroup(int group_id);
int newGroup(); int newGroup();
int deleteGroup(int id); int deleteGroup(int id);
@@ -50,20 +53,7 @@ public:
bool isArchived(int id); bool isArchived(int id);
private: private:
QString generateDefaultNameGroup(); bool adminMode;
QString generateDefaultNameTrainee();
bool checkExistNameGroup(QString name);
bool checkExistNameTrainee(QString name);
QString generateDefaultLoginTrainee();
bool checkExistLoginTrainee(QString login);
private:
QList<Trainee> listOfTrainees;
QList<Group> listOfGroups;
QList<QColor> listOfColorGroup;
DataBaseLMS* dbLMS; DataBaseLMS* dbLMS;
}; };

View File

@@ -13,6 +13,9 @@ EditorTrainees::EditorTrainees(DataBaseTrainees* db, bool adminMode, QWidget *pa
preparationTreeWidget(ui->treeWidget); preparationTreeWidget(ui->treeWidget);
setNotLoggedInVisible(true); setNotLoggedInVisible(true);
loadTraineesFromDB(); loadTraineesFromDB();
if(adminMode)
ui->btnArchive->click();
} }
EditorTrainees::~EditorTrainees() EditorTrainees::~EditorTrainees()
@@ -22,9 +25,11 @@ EditorTrainees::~EditorTrainees()
void EditorTrainees::on_btnNewGroup_clicked() void EditorTrainees::on_btnNewGroup_clicked()
{ {
int id = dbTrainees->newGroup(); if(int id = dbTrainees->newGroup())
loadTraineesFromDB(); {
setCurrentGroup(id); loadTraineesFromDB();
setCurrentGroup(id);
}
} }
void EditorTrainees::on_btnDeleteGroup_clicked() void EditorTrainees::on_btnDeleteGroup_clicked()
@@ -36,7 +41,7 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent(); QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = treeItemCurrent->text(0).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
if(dbTrainees->getListTraineesInGroup(id_group).count() > 0) if(dbTrainees->getListTraineesInGroup(id_group).count() > 0)
{ {
@@ -67,7 +72,7 @@ void EditorTrainees::on_btnNewTrainee_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent(); QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа. Можно добавить Обучаемого {//Выбрана группа. Можно добавить Обучаемого
int id_group = treeItemCurrent->text(0).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
if(int id = dbTrainees->newTrainee(id_group)) if(int id = dbTrainees->newTrainee(id_group))
{ {
loadTraineesFromDB(); loadTraineesFromDB();
@@ -91,8 +96,8 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
if(treeItemParent != nullptr) if(treeItemParent != nullptr)
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(0).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
int id_group = treeItemParent->text(0).toInt(); int id_group = treeItemParent->text(ColumnsTreeTrainees::clmn_ID).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{ {
@@ -120,9 +125,11 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
if(treeItemParent != nullptr) if(treeItemParent != nullptr)
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(0).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
Trainee trainee = dbTrainees->getTrainee(id_trainee); Trainee trainee = dbTrainees->getTrainee(id_trainee);
if(trainee.getID() == 0)
return;
if(trainee.getArchived()) if(trainee.getArchived())
{//Архивный {//Архивный
@@ -168,61 +175,89 @@ void EditorTrainees::on_btnEdit_clicked()
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = treeItemCurrent->text(0).toInt(); int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
DialogEditGroup dlg(this); DialogEditGroup dlg(this);
dlg.setGroup(dbTrainees->getGroup(id_group));
switch( dlg.exec() ) Group group = dbTrainees->getGroup(id_group);
if(group.getID() == 0)
return;
dlg.setGroup(group);
while (true)
{ {
case QDialog::Accepted: switch( dlg.exec() )
{
if(int id = dbTrainees->editGroup(dlg.getGroup()))
{//Отредактировано
loadTraineesFromDB();
setCurrentGroup(id);
}
else
{ {
//Ошибка редактирования case QDialog::Accepted:
} {
Group group_edit = dlg.getGroup();
break; if(int id = dbTrainees->editGroup(group_edit))
} {//Отредактировано
case QDialog::Rejected: loadTraineesFromDB();
break; setCurrentGroup(id);
default: return;
break; }
else
{
dlg.setGroup(group_edit);
continue;
}
break;
}
case QDialog::Rejected:
return;
break;
default:
return;
break;
}
} }
} }
else else
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = treeItemCurrent->text(0).toInt(); int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
DialogEditTrainee dlg(this); DialogEditTrainee dlg(this);
dlg.setTrainee(dbTrainees->getTrainee(id_trainee));
switch( dlg.exec() ) Trainee trainee = dbTrainees->getTrainee(id_trainee);
if(trainee.getID() == 0)
return;
dlg.setTrainee(trainee);
while (true)
{ {
case QDialog::Accepted: switch( dlg.exec() )
{ {
if(int id = dbTrainees->editTrainee(dlg.getTrainee())) case QDialog::Accepted:
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(id);
}
else
{ {
//Ошибка редактирования Trainee trainee_edit = dlg.getTrainee();
}
if(int id = dbTrainees->editTrainee(trainee_edit))
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(id);
return;
}
else
{
dlg.setTrainee(trainee_edit);
continue;
}
break;
}
case QDialog::Rejected:
return;
break;
default:
return;
break; break;
} }
case QDialog::Rejected:
break;
default:
break;
} }
} }
} }
@@ -244,7 +279,7 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
QTreeWidgetItem *treeItemParent = current->parent(); QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана группа {//Выбрана группа
int id_group = current->text(0).toInt(); int id_group = current->text(ColumnsTreeTrainees::clmn_ID).toInt();
if(adminMode) if(adminMode)
{ {
@@ -276,7 +311,7 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
} }
else else
{//Выбран обучаемый {//Выбран обучаемый
int id_trainee = current->text(0).toInt(); int id_trainee = current->text(ColumnsTreeTrainees::clmn_ID).toInt();
ui->btnNewGroup->setEnabled(false); ui->btnNewGroup->setEnabled(false);
ui->btnDeleteGroup->setEnabled(false); ui->btnDeleteGroup->setEnabled(false);
@@ -310,7 +345,7 @@ void EditorTrainees::setCurrentGroup(int id)
{ {
QTreeWidgetItem * item = treeWidget->topLevelItem(i); QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr) if(item != nullptr)
if(item->text(0).toInt() == id) if(item->text(ColumnsTreeTrainees::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
break; break;
@@ -329,7 +364,7 @@ void EditorTrainees::setCurrentTrainee(int id)
{ {
QTreeWidgetItem * itemChild = item->child(j); QTreeWidgetItem * itemChild = item->child(j);
if(itemChild != nullptr) if(itemChild != nullptr)
if(itemChild->text(0).toInt() == id) if(itemChild->text(ColumnsTreeTrainees::clmn_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(itemChild); treeWidget->setCurrentItem(itemChild);
break; break;

View File

@@ -1,9 +1,9 @@
#include <QHeaderView> #include <QHeaderView>
#include "traineesview.h" #include "traineesview.h"
TraineesView::TraineesView(DataBaseTrainees* db, TypeView type, bool adminMode, QWidget *parent): TraineesView::TraineesView(DataBaseTrainees* dbTrainees, TypeView type, bool adminMode, QWidget *parent):
CommonView(type, adminMode, parent), CommonView(type, adminMode, parent),
dbTrainees(db) dbTrainees(dbTrainees)
{ {
} }
@@ -21,32 +21,52 @@ void TraineesView::preparationTreeWidget(QTreeWidget *tree)
treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;")); treeWidget->header()->setStyleSheet(QStringLiteral("font-size: 10pt;"));
treeWidget->setColumnWidth(0, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_ID, 80);
treeWidget->setColumnWidth(1, 250); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Trainee, 250);
treeWidget->setColumnWidth(2, 100); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Login, 100);
treeWidget->setColumnWidth(3, 100); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Password, 100);
treeWidget->setColumnWidth(4, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Class, 130);
treeWidget->setColumnWidth(5, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Computer, 130);
treeWidget->setColumnWidth(6, 130); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_IP_address, 130);
treeWidget->setColumnWidth(7, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Archived, 80);
treeWidget->setColumnWidth(8, 80); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Logged, 80);
treeWidget->setColumnWidth(9, 100); treeWidget->setColumnWidth(ColumnsTreeTrainees::clmn_Tasks, 200);
if(typeView == TypeView::onlyView) if(typeView == TypeView::onlyView)
{//onlyView {//onlyView
treeWidget->setColumnHidden(2, true); treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(3, true); //treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Login, true);
treeWidget->setColumnHidden(7, true); treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Password, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
archiveVisible = false;
notLoggedInVisible = true;
} }
else else
{//control {//control
treeWidget->setColumnHidden(7, true); if(adminMode)
{
archiveVisible = true;
notLoggedInVisible = true;
}
else
{
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_ID, true);
treeWidget->setColumnHidden(ColumnsTreeTrainees::clmn_Archived, true);
}
} }
} }
void TraineesView::loadTraineesFromDB() void TraineesView::loadTraineesFromDB()
{ {
dbTrainees->LoadTraineesGroupsPSQL(); QList <Group> listGroups;
QList <Trainee> listTrainees;
dbTrainees->transactionBegin();
listGroups = dbTrainees->getListGroups();
listTrainees = dbTrainees->getListTrainees();
dbTrainees->transactionEnd();
if(treeWidget == nullptr) if(treeWidget == nullptr)
return; return;
@@ -54,52 +74,56 @@ void TraineesView::loadTraineesFromDB()
//Обновление дерева //Обновление дерева
treeWidget->clear(); treeWidget->clear();
for(Group group : dbTrainees->getListGroups()) for(Group group : listGroups)
{ {
//Группа //Группа
QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget); QTreeWidgetItem *ItemGroup = new QTreeWidgetItem(treeWidget);
ItemGroup->setText(0, QString::number(group.getID())); ItemGroup->setText(ColumnsTreeTrainees::clmn_ID, QString::number(group.getID()));
ItemGroup->setText(1, group.getName()); ItemGroup->setText(ColumnsTreeTrainees::clmn_Trainee, group.getName());
ItemGroup->setIcon(1, QIcon(QStringLiteral(":/icons/group.png"))); ItemGroup->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/group.png")));
setItemColor(ItemGroup, QColor(170, 190, 170)); setItemColor(ItemGroup, QColor(170, 190, 170));
//Обучаемые //Обучаемые
QList<Trainee> listTrainees;
listTrainees = dbTrainees->getListTraineesInGroup(group.getID());
for(Trainee trainee : listTrainees) for(Trainee trainee : listTrainees)
{ {
if(trainee.getGroup().getID() != group.getID())
continue;
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem(); QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(0, QString::number(trainee.getID())); ItemTrainee->setText(ColumnsTreeTrainees::clmn_ID, QString::number(trainee.getID()));
ItemTrainee->setText(1, trainee.getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Trainee, trainee.getName());
ItemTrainee->setText(2, trainee.getLogin()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Login, trainee.getLogin());
ItemTrainee->setText(3, trainee.getPassword()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, trainee.getPassword());
ItemTrainee->setText(4, trainee.getComputer().getClassroom().getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Class, trainee.getComputer().getClassroom().getName());
ItemTrainee->setText(5, trainee.getComputer().getName()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Computer, trainee.getComputer().getName());
ItemTrainee->setText(6, trainee.getComputer().getIpAddress()); ItemTrainee->setText(ColumnsTreeTrainees::clmn_IP_address, trainee.getComputer().getIpAddress());
//Сокрытие пароля
ItemTrainee->setText(ColumnsTreeTrainees::clmn_Password, QStringLiteral("******"));
if(trainee.getArchived()) if(trainee.getArchived())
{//Архивный {//Архивный
ItemTrainee->setText(7, tr("yes")); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("yes"));
ItemTrainee->setIcon(1, QIcon(QStringLiteral(":/icons/traineeArchive.png"))); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/traineeArchive.png")));
setItemColorArchive(ItemTrainee); setItemColorArchive(ItemTrainee);
} }
else else
{//Не Архивный {//Не Архивный
ItemTrainee->setText(7, tr("no")); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Archived, tr("no"));
ItemTrainee->setIcon(1, QIcon(QStringLiteral(":/icons/trainee.png"))); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Trainee, QIcon(QStringLiteral(":/icons/trainee.png")));
setItemColorNoArchive(ItemTrainee); setItemColorNoArchive(ItemTrainee);
} }
if(trainee.getLoggedIn()) if(trainee.getLoggedIn())
{//Залогинен {//Залогинен
ItemTrainee->setText(8, tr("yes")); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("yes"));
ItemTrainee->setIcon(8, QIcon(QStringLiteral(":/icons/circleGreen.png"))); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGreen.png")));
} }
else else
{//Не Залогинен {//Не Залогинен
ItemTrainee->setText(8, tr("no")); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Logged, tr("no"));
ItemTrainee->setIcon(8, QIcon(QStringLiteral(":/icons/circleGray.png"))); ItemTrainee->setIcon(ColumnsTreeTrainees::clmn_Logged, QIcon(QStringLiteral(":/icons/circleGray.png")));
} }
QString tasksStr; QString tasksStr;
@@ -107,7 +131,7 @@ void TraineesView::loadTraineesFromDB()
{ {
tasksStr += task.getName() + QStringLiteral("; "); tasksStr += task.getName() + QStringLiteral("; ");
} }
ItemTrainee->setText(9, tasksStr); ItemTrainee->setText(ColumnsTreeTrainees::clmn_Tasks, tasksStr);
ItemGroup->addChild(ItemTrainee); ItemGroup->addChild(ItemTrainee);
@@ -124,7 +148,7 @@ void TraineesView::loadTraineesFromDB()
} }
treeWidget->setSortingEnabled(true); treeWidget->setSortingEnabled(true);
treeWidget->sortItems(1, Qt::SortOrder::AscendingOrder); treeWidget->sortItems(ColumnsTreeTrainees::clmn_Trainee, Qt::SortOrder::AscendingOrder);
treeWidget->expandAll(); treeWidget->expandAll();
if(typeView == TypeView::control) if(typeView == TypeView::control)
@@ -137,6 +161,6 @@ void TraineesView::loadTraineesFromDB()
void TraineesView::reSetHeadTreeWidget() void TraineesView::reSetHeadTreeWidget()
{ {
QStringList listHeaders = {tr("ID"), tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("Tasks")}; QStringList listHeaders = {tr("Trainee"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Archived"), tr("Logged"), tr("Tasks"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders); treeWidget->setHeaderLabels(listHeaders);
} }

View File

@@ -12,7 +12,21 @@ class TraineesView: public CommonView
Q_OBJECT Q_OBJECT
public: public:
TraineesView(DataBaseTrainees* db, TypeView type, bool adminMode, QWidget *parent = nullptr); TraineesView(DataBaseTrainees* dbTrainees, TypeView type, bool adminMode, QWidget *parent = nullptr);
protected:
enum ColumnsTreeTrainees{
clmn_Trainee = 0,
clmn_Login,
clmn_Password,
clmn_Class,
clmn_Computer,
clmn_IP_address,
clmn_Archived,
clmn_Logged,
clmn_Tasks,
clmn_ID
};
protected: protected:
void preparationTreeWidget(QTreeWidget* tree); void preparationTreeWidget(QTreeWidget* tree);

View File

@@ -34,7 +34,7 @@ void ViewerTrainees::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column
{ {
if(item->childCount() == 0) if(item->childCount() == 0)
{//Выбран обучаемый {//Выбран обучаемый
QString login = item->text(2); QString login = item->text(ColumnsTreeTrainees::clmn_Login);
Q_EMIT signal_traineeSelected(login); Q_EMIT signal_traineeSelected(login);
} }
} }
@@ -47,7 +47,7 @@ void ViewerTrainees::slot_tabMessengerChanged(QString login)
for (int j = 0; j < countChild; j++) for (int j = 0; j < countChild; j++)
{//Проход по обучаемым {//Проход по обучаемым
QString loginChild = ui->treeWidget->topLevelItem(i)->child(j)->text(2); QString loginChild = ui->treeWidget->topLevelItem(i)->child(j)->text(ColumnsTreeTrainees::clmn_Login);
if(loginChild == login) if(loginChild == login)
{ {
ui->treeWidget->setCurrentItem(ui->treeWidget->topLevelItem(i)->child(j)); ui->treeWidget->setCurrentItem(ui->treeWidget->topLevelItem(i)->child(j));
@@ -83,7 +83,7 @@ void ViewerTrainees::on_btnEditorTrainees_clicked()
QHBoxLayout *layout = new QHBoxLayout(dialog); QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&editorTraineesGroups); layout->addWidget(&editorTraineesGroups);
dialog->setWindowTitle(tr("Editor of trainees")); dialog->setWindowTitle(tr("Editor of trainees"));
dialog->setMinimumSize(1400, 800); dialog->setMinimumSize(1600, 800);
dialog->exec(); dialog->exec();
loadTraineesFromDB(); loadTraineesFromDB();

View File

@@ -16,6 +16,8 @@ add_library(DataBaseLMS SHARED
DataBaseLMS_global.h DataBaseLMS_global.h
databaselms.cpp databaselms.cpp
databaselms.h databaselms.h
interfacedatabaselms.cpp
interfacedatabaselms.h
basicentity.cpp basicentity.cpp
basicentity.h basicentity.h
user.cpp user.cpp

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-11-06T16:05:43. --> <!-- Written by QtCreator 4.11.1, 2024-11-13T09:53:44. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@@ -5,7 +5,8 @@
#include <QMessageBox> #include <QMessageBox>
DataBaseLMS::DataBaseLMS(): DataBaseLMS::DataBaseLMS():
db(nullptr) db(nullptr),
transactionBegined(false)
{ {
createConnection(); createConnection();
} }
@@ -35,14 +36,40 @@ bool DataBaseLMS::createConnection()
void DataBaseLMS::deleteConnection() void DataBaseLMS::deleteConnection()
{ {
if(transactionBegined)
QSqlDatabase::database().rollback();
if(db != nullptr) if(db != nullptr)
{ {
if(db->isOpen()) if(db->isOpen())
db->close(); db->close();
delete db; delete db;
db = nullptr;
} }
} }
bool DataBaseLMS::transactionBegin()
{
if(transactionBegined)
QSqlDatabase::database().rollback();
transactionBegined = true;
return QSqlDatabase::database().transaction();
}
bool DataBaseLMS::transactionEnd()
{
if(transactionBegined)
{
transactionBegined = false;
return QSqlDatabase::database().commit();
}
return false;
}
QList<Instructor> DataBaseLMS::selectAllInstructors() QList<Instructor> DataBaseLMS::selectAllInstructors()
{ {
QList<Instructor> listInstructors; QList<Instructor> listInstructors;
@@ -51,10 +78,11 @@ QList<Instructor> DataBaseLMS::selectAllInstructors()
"FROM public.instructors " "FROM public.instructors "
"ORDER BY instructor_id ASC"); "ORDER BY instructor_id ASC");
QSqlQuery query(*db); QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr)) if(!query.exec(queryStr))
{ {
messageWarningErrorQuery(queryStr); messageWarningErrorQuery(queryStr, &query);
} }
else else
{ {
@@ -89,10 +117,11 @@ QList<Trainee> DataBaseLMS::selectAllTrainees()
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.classroom_computer " "LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.classroom_computer "
"ORDER BY groups.name, trainees.name ASC"); "ORDER BY groups.name, trainees.name ASC");
QSqlQuery query(*db); QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr)) if(!query.exec(queryStr))
{ {
messageWarningErrorQuery(queryStr); messageWarningErrorQuery(queryStr, &query);
} }
else else
{ {
@@ -131,10 +160,11 @@ QList<Group> DataBaseLMS::selectAllGroups()
"FROM public.groups " "FROM public.groups "
"ORDER BY group_id ASC"); "ORDER BY group_id ASC");
QSqlQuery query(*db); QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr)) if(!query.exec(queryStr))
{ {
messageWarningErrorQuery(queryStr); messageWarningErrorQuery(queryStr, &query);
} }
else else
{ {
@@ -151,10 +181,162 @@ QList<Group> DataBaseLMS::selectAllGroups()
return listGroups; return listGroups;
} }
Instructor DataBaseLMS::selectInstructor(int id_instructor)
{
Instructor instructor;
QString queryStr = QString("SELECT instructor_id, name, login, password, is_admin, archived, logged_in "
"FROM public.instructors "
"WHERE instructors.instructor_id = %1 ").arg(
id_instructor);
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if (query.first())
{//Инструктор
instructor.setID(query.value(0).toInt());
instructor.setName(query.value(1).toString());
instructor.setLogin(query.value(2).toString());
instructor.setPassword(query.value(3).toString());
instructor.setIsAdmin(query.value(4).toBool());
instructor.setArchived(query.value(5).toBool());
instructor.setLoggedIn(query.value(6).toBool());
}
}
return instructor;
}
int DataBaseLMS::selectInstructorID(QString login, QString password)
{
QString queryStr;
if(password != QStringLiteral(""))
{
queryStr = QString("SELECT instructors.instructor_id "
"FROM public.instructors "
"WHERE login = '%1' AND password = '%2' ").arg(
login,
password );
}
else
{
queryStr = QString("SELECT instructors.instructor_id "
"FROM public.instructors "
"WHERE login = '%1' ").arg(
login );
}
return queryExecInt(queryStr);
}
bool DataBaseLMS::selectInstructorIsAdmin(int id_instructor)
{
QString queryStr = QString("SELECT instructors.is_admin "
"FROM public.instructors "
"WHERE instructor_id = %1 ").arg(
id_instructor );
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if(query.next())
return query.value(0).toBool();
}
return false;
}
bool DataBaseLMS::selectInstructorLoggedIn(int id_instructor)
{
QString queryStr = QString("SELECT instructors.logged_in "
"FROM public.instructors "
"WHERE instructor_id = %1 ").arg(
id_instructor );
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if(query.next())
return query.value(0).toBool();
}
return false;
}
bool DataBaseLMS::selectInstructorArchived(int id_instructor)
{
QString queryStr = QString("SELECT instructors.archived "
"FROM public.instructors "
"WHERE instructor_id = %1 ").arg(
id_instructor );
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if(query.next())
return query.value(0).toBool();
}
return false;
}
int DataBaseLMS::updateInstructorLoggedIn(int id_instructor, bool loggedIn)
{
QString queryStr = QString("UPDATE public.instructors "
"SET logged_in = %1 "
"WHERE instructor_id = %2 "
"RETURNING instructors.instructor_id").arg(
loggedIn ? "true" : "false",
QString::number(id_instructor) );
return queryExecInt(queryStr);
}
int DataBaseLMS::updateInstructorArchived(int id_instructor, bool archived)
{
QString queryStr = QString("UPDATE public.instructors "
"SET archived = %1 "
"WHERE instructor_id = %2 "
"RETURNING instructors.instructor_id").arg(
archived ? "true" : "false",
QString::number(id_instructor) );
return queryExecInt(queryStr);
}
int DataBaseLMS::insertInstructor()
{
QString queryStr = QString("INSERT INTO public.instructors "
"DEFAULT VALUES "
"RETURNING instructor_id");
return queryExecInt(queryStr);
}
int DataBaseLMS::insertInstructor(Instructor instructor) int DataBaseLMS::insertInstructor(Instructor instructor)
{ {
QString queryStr = QString("INSERT INTO public.instructors (name, login, password, is_admin, archived, logged_in) " QString queryStr = QString("INSERT INTO public.instructors (name, login, password, is_admin, archived, logged_in) "
"VALUES ('%1', '%2', '%3', %4, %5, %6) RETURNING instructor_id").arg( "VALUES ('%1', '%2', '%3', %4, %5, %6) "
"RETURNING instructor_id").arg(
instructor.getName(), instructor.getName(),
instructor.getLogin(), instructor.getLogin(),
instructor.getPassword(), instructor.getPassword(),
@@ -162,21 +344,25 @@ int DataBaseLMS::insertInstructor(Instructor instructor)
instructor.getArchived() ? "true" : "false", instructor.getArchived() ? "true" : "false",
instructor.getLoggedIn() ? "true" : "false"); instructor.getLoggedIn() ? "true" : "false");
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::deleteInstructor(int instructor_id) int DataBaseLMS::deleteInstructor(int id_instructor)
{ {
QString queryStr = QString("DELETE FROM public.instructors WHERE instructor_id = %1 RETURNING instructors.instructor_id").arg(QString::number(instructor_id)); QString queryStr = QString("DELETE FROM public.instructors "
"WHERE instructor_id = %1 "
"RETURNING instructors.instructor_id").arg(
QString::number(id_instructor));
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::updateInstructor(Instructor instructor) int DataBaseLMS::updateInstructor(Instructor instructor)
{ {
QString queryStr = QString("UPDATE public.instructors " QString queryStr = QString("UPDATE public.instructors "
"SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5, logged_in = %6 " "SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5, logged_in = %6 "
"WHERE instructor_id = %7 RETURNING instructors.instructor_id").arg( "WHERE instructor_id = %7 "
"RETURNING instructors.instructor_id").arg(
instructor.getName(), instructor.getName(),
instructor.getLogin(), instructor.getLogin(),
instructor.getPassword(), instructor.getPassword(),
@@ -185,38 +371,226 @@ int DataBaseLMS::updateInstructor(Instructor instructor)
instructor.getLoggedIn() ? "true" : "false", instructor.getLoggedIn() ? "true" : "false",
QString::number(instructor.getID()) ); QString::number(instructor.getID()) );
return queryExec(queryStr); return queryExecInt(queryStr);
}
Group DataBaseLMS::selectGroup(int id_group)
{
Group group;
QString queryStr = QString("SELECT group_id, name "
"FROM public.groups "
"WHERE groups.group_id = %1 ").arg(
id_group);
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if (query.first())
{//Инструктор
group.setID(query.value(0).toInt());
group.setName(query.value(1).toString());
}
}
return group;
}
int DataBaseLMS::insertGroup()
{
QString queryStr = QString("INSERT INTO public.groups "
"DEFAULT VALUES "
"RETURNING group_id");
return queryExecInt(queryStr);
} }
int DataBaseLMS::insertGroup(Group group) int DataBaseLMS::insertGroup(Group group)
{ {
QString queryStr = QString("INSERT INTO public.groups (name) " QString queryStr = QString("INSERT INTO public.groups (name) "
"VALUES ('%1') RETURNING groups.group_id").arg( "VALUES ('%1') "
"RETURNING groups.group_id").arg(
group.getName()); group.getName());
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::deleteGroup(int group_id) int DataBaseLMS::deleteGroup(int group_id)
{ {
QString queryStr = QString("DELETE FROM public.groups WHERE group_id = %1 RETURNING groups.group_id").arg(QString::number(group_id)); QString queryStr = QString("DELETE FROM public.groups "
"WHERE group_id = %1 "
"RETURNING groups.group_id").arg(
QString::number(group_id));
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::updateGroup(Group group) int DataBaseLMS::updateGroup(Group group)
{ {
QString queryStr = QString("UPDATE public.groups SET name = '%1' WHERE group_id = %2 RETURNING groups.group_id").arg( QString queryStr = QString("UPDATE public.groups SET name = '%1' "
"WHERE group_id = %2 "
"RETURNING groups.group_id").arg(
group.getName(), group.getName(),
QString::number(group.getID()) ); QString::number(group.getID()) );
return queryExec(queryStr); return queryExecInt(queryStr);
}
Trainee DataBaseLMS::selectTrainee(int id_trainee)
{
Trainee trainee;
QString queryStr = QString("SELECT trainees.trainee_id, trainees.name, trainees.login, trainees.password, trainees.archived, trainees.logged_in, "
"groups.group_id, groups.name, "
"computers.computer_id, computers.name, computers.ip_address, "
"classrooms.classroom_id, classrooms.name "
"FROM public.trainees JOIN public.groups ON groups.group_id = trainees.group_trainee "
"LEFT OUTER JOIN public.computers ON computers.computer_id = trainees.computer_trainee "
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.classroom_computer "
"WHERE trainees.trainee_id = %1 "
"ORDER BY groups.name, trainees.name ASC").arg(
id_trainee);
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if (query.first())
{//Инструктор
trainee.setID(query.value(0).toInt());
trainee.setName(query.value(1).toString());
trainee.setLogin(query.value(2).toString());
trainee.setPassword(query.value(3).toString());
trainee.setArchived(query.value(4).toBool());
trainee.setLoggedIn(query.value(5).toBool());
Group group = Group(query.value(6).toInt(), query.value(7).toString());
trainee.setGroup(group);
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
trainee.setComputer(computer);
trainee.setTasks(selectTasksOfTrainee(trainee.getID()));
}
}
return trainee;
}
int DataBaseLMS::selectTraineeID(QString login, QString password)
{
QString queryStr;
if(password != QStringLiteral(""))
{
queryStr = QString("SELECT trainees.trainee_id "
"FROM public.trainees "
"WHERE login = '%1' AND password = '%2' ").arg(
login,
password );
}
else
{
queryStr = QString("SELECT trainees.trainee_id "
"FROM public.trainees "
"WHERE login = '%1' ").arg(
login );
}
return queryExecInt(queryStr);
}
bool DataBaseLMS::selectTraineeArchived(int id_trainee)
{
QString queryStr = QString("SELECT trainees.archived "
"FROM public.trainees "
"WHERE trainee_id = %1 ").arg(
id_trainee );
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if(query.next())
return query.value(0).toBool();
}
return false;
}
bool DataBaseLMS::selectTraineeLoggedIn(int id_trainee)
{
QString queryStr = QString("SELECT trainees.logged_in "
"FROM public.trainees "
"WHERE trainee_id = %1 ").arg(
id_trainee );
QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
}
else
{
if(query.next())
return query.value(0).toBool();
}
return false;
}
int DataBaseLMS::updateTraineeLoggedIn(int id_trainee, bool loggedIn)
{
QString queryStr = QString("UPDATE public.trainees "
"SET logged_in = %1 "
"WHERE trainee_id = %2 "
"RETURNING trainees.trainee_id").arg(
loggedIn ? "true" : "false",
QString::number(id_trainee) );
return queryExecInt(queryStr);
}
int DataBaseLMS::updateTraineeArchived(int id_trainee, bool archived)
{
QString queryStr = QString("UPDATE public.trainees "
"SET archived = %1 "
"WHERE trainee_id = %2 "
"RETURNING trainees.trainee_id").arg(
archived ? "true" : "false",
QString::number(id_trainee) );
return queryExecInt(queryStr);
}
int DataBaseLMS::insertTrainee(int id_group)
{
QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, logged_in, group_trainee) "
"VALUES (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, %1) "
"RETURNING trainees.trainee_id").arg(
QString::number(id_group));
return queryExecInt(queryStr);
} }
int DataBaseLMS::insertTrainee(Trainee trainee) int DataBaseLMS::insertTrainee(Trainee trainee)
{ {
QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, logged_in, group_trainee) " QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, logged_in, group_trainee) "
"VALUES ('%1', '%2', '%3', %4, %5, %6) RETURNING trainees.trainee_id").arg( "VALUES ('%1', '%2', '%3', %4, %5, %6) "
"RETURNING trainees.trainee_id").arg(
trainee.getName(), trainee.getName(),
trainee.getLogin(), trainee.getLogin(),
trainee.getPassword(), trainee.getPassword(),
@@ -224,14 +598,17 @@ int DataBaseLMS::insertTrainee(Trainee trainee)
trainee.getLoggedIn() ? "true" : "false", trainee.getLoggedIn() ? "true" : "false",
QString::number(trainee.getGroup().getID())); QString::number(trainee.getGroup().getID()));
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::deleteTrainee(int trainee_id) int DataBaseLMS::deleteTrainee(int trainee_id)
{ {
QString queryStr = QString("DELETE FROM public.trainees WHERE trainee_id = %1 RETURNING trainees.trainee_id").arg(QString::number(trainee_id)); QString queryStr = QString("DELETE FROM public.trainees "
"WHERE trainee_id = %1 "
"RETURNING trainees.trainee_id").arg(
QString::number(trainee_id));
return queryExec(queryStr); return queryExecInt(queryStr);
} }
int DataBaseLMS::updateTrainee(Trainee trainee) int DataBaseLMS::updateTrainee(Trainee trainee)
@@ -242,7 +619,8 @@ int DataBaseLMS::updateTrainee(Trainee trainee)
"SET name = '%1', login = '%2', password = '%3', archived = %4, logged_in = %5, " "SET name = '%1', login = '%2', password = '%3', archived = %4, logged_in = %5, "
"group_trainee = %6, " "group_trainee = %6, "
"computer_trainee = %7 " "computer_trainee = %7 "
"WHERE trainee_id = %8 RETURNING trainees.trainee_id").arg( "WHERE trainee_id = %8 "
"RETURNING trainees.trainee_id").arg(
trainee.getName(), trainee.getName(),
trainee.getLogin(), trainee.getLogin(),
trainee.getPassword(), trainee.getPassword(),
@@ -252,7 +630,7 @@ int DataBaseLMS::updateTrainee(Trainee trainee)
computer_id, computer_id,
QString::number(trainee.getID()) ); QString::number(trainee.getID()) );
return queryExec(queryStr); return queryExecInt(queryStr);
} }
QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id) QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id)
@@ -260,17 +638,18 @@ QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id)
QList<Task> tasks; QList<Task> tasks;
QString queryStr = QString("SELECT tasks.task_id, tasks.name " QString queryStr = QString("SELECT tasks.task_id, tasks.name "
"FROM public.trainees " "FROM public.trainees "
"JOIN public.trainees_tasks ON trainees_tasks.trainee_id = trainees.trainee_id " "JOIN public.trainees_tasks ON trainees_tasks.trainee_id = trainees.trainee_id "
"JOIN public.tasks ON tasks.task_id = trainees_tasks.task_id " "JOIN public.tasks ON tasks.task_id = trainees_tasks.task_id "
"WHERE trainees.trainee_id = %1 " "WHERE trainees.trainee_id = %1 "
"ORDER BY tasks.name ASC").arg( "ORDER BY tasks.name ASC").arg(
trainee_id); trainee_id);
QSqlQuery query = QSqlQuery(*db);
QSqlQuery query(*db);
if(!query.exec(queryStr)) if(!query.exec(queryStr))
{ {
messageWarningErrorQuery(queryStr); messageWarningErrorQuery(queryStr, &query);
} }
else else
{ {
@@ -286,24 +665,46 @@ QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id)
return tasks; return tasks;
} }
int DataBaseLMS::queryExec(QString queryStr) int DataBaseLMS::queryExecInt(QString queryStr)
{ {
QSqlQuery query(*db); QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr)) if(!query.exec(queryStr))
{ {
messageWarningErrorQuery(queryStr); messageWarningErrorQuery(queryStr, &query);
return 0; return 0;
} }
else else
{ {
if(query.next()) if(query.first())
return query.value(0).toInt(); return query.value(0).toInt();
else else
return 0; return 0;
} }
} }
/*
void DataBaseLMS::messageWarningErrorQuery(QString queryStr) bool DataBaseLMS::queryExecBool(QString queryStr)
{ {
QMessageBox::warning(nullptr, dbName, "Error query: " + queryStr + "\n" + db->lastError().text()); QSqlQuery query = QSqlQuery(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr, &query);
return 0;
}
else
{
if(query.first())
return query.value(0).toBool();
else
return 0;
}
}*/
void DataBaseLMS::messageWarningErrorQuery(QString queryStr, QSqlQuery* query)
{
QMessageBox::warning(nullptr, dbName,
"Error query:\n" + query->lastError().text() + "\n" +
"String of query:\n" + queryStr + "\n" +
"Executed query:\n" + query->executedQuery());
} }

View File

@@ -15,22 +15,51 @@ public:
DataBaseLMS(); DataBaseLMS();
~DataBaseLMS(); ~DataBaseLMS();
public: protected:
public:
//Подключение
bool createConnection(); bool createConnection();
void deleteConnection(); void deleteConnection();
//Транзакции
bool transactionBegin();
bool transactionEnd();
//Списки
QList<Instructor> selectAllInstructors(); QList<Instructor> selectAllInstructors();
QList<Trainee> selectAllTrainees(); QList<Trainee> selectAllTrainees();
QList<Group> selectAllGroups(); QList<Group> selectAllGroups();
//Инструктор
Instructor selectInstructor(int id_instructor);
int selectInstructorID(QString login, QString password = QStringLiteral(""));
bool selectInstructorIsAdmin(int id_instructor);
bool selectInstructorLoggedIn(int id_instructor);
bool selectInstructorArchived(int id_instructor);
int updateInstructorLoggedIn(int id_instructor, bool loggedIn);
int updateInstructorArchived(int id_instructor, bool archived);
int insertInstructor();
int insertInstructor(Instructor instructor); int insertInstructor(Instructor instructor);
int deleteInstructor(int instructor_id); int deleteInstructor(int id_instructor);
int updateInstructor(Instructor instructor); int updateInstructor(Instructor instructor);
//Группа
Group selectGroup(int id_group);//
int insertGroup();//
int insertGroup(Group group); int insertGroup(Group group);
int deleteGroup(int group_id); int deleteGroup(int group_id);
int updateGroup(Group group); int updateGroup(Group group);
//Обучаемый
Trainee selectTrainee(int id_trainee);//
int selectTraineeID(QString login, QString password = QStringLiteral(""));//
bool selectTraineeArchived(int id_trainee);//
bool selectTraineeLoggedIn(int id_trainee);//
int updateTraineeLoggedIn(int id_trainee, bool loggedIn);//
int updateTraineeArchived(int id_trainee, bool archived);//
int insertTrainee(int id_group);//
int insertTrainee(Trainee trainee); int insertTrainee(Trainee trainee);
int deleteTrainee(int trainee_id); int deleteTrainee(int trainee_id);
int updateTrainee(Trainee trainee); int updateTrainee(Trainee trainee);
@@ -38,11 +67,13 @@ public:
QList<Task> selectTasksOfTrainee(int trainee_id); QList<Task> selectTasksOfTrainee(int trainee_id);
private: private:
int queryExec(QString queryStr); int queryExecInt(QString queryStr);
void messageWarningErrorQuery(QString queryStr); //bool queryExecBool(QString queryStr);
void messageWarningErrorQuery(QString queryStr, QSqlQuery* query);
private: private:
QSqlDatabase* db; QSqlDatabase* db;
bool transactionBegined;
const QString dbName = "DataBaseLMS"; const QString dbName = "DataBaseLMS";
const QString dbUserName = "postgres"; const QString dbUserName = "postgres";
const QString dbPassword = "12345678"; const QString dbPassword = "12345678";

View File

@@ -0,0 +1,6 @@
#include "interfacedatabaselms.h"
InterfaceDataBaseLMS::InterfaceDataBaseLMS()
{
}

View File

@@ -0,0 +1,13 @@
#ifndef INTERFACEDATABASELMS_H
#define INTERFACEDATABASELMS_H
#include "DataBaseLMS_global.h"
#include "databaselms.h"
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public DataBaseLMS
{
public:
InterfaceDataBaseLMS();
};
#endif // INTERFACEDATABASELMS_H

View File

@@ -41,7 +41,7 @@
{ {
"directoryIndex" : 0, "directoryIndex" : 0,
"id" : "DataBaseLMS::@6890427a1f51a3e7e1df", "id" : "DataBaseLMS::@6890427a1f51a3e7e1df",
"jsonFile" : "target-DataBaseLMS-Debug-788469329fca20560302.json", "jsonFile" : "target-DataBaseLMS-Debug-5eb45d4d55eb23675b98.json",
"name" : "DataBaseLMS", "name" : "DataBaseLMS",
"projectIndex" : 0 "projectIndex" : 0
}, },

View File

@@ -26,7 +26,7 @@
"objects" : "objects" :
[ [
{ {
"jsonFile" : "codemodel-v2-75aa5940d6c94493455f.json", "jsonFile" : "codemodel-v2-4c4ecc1a053153a57cf7.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {
@@ -77,7 +77,7 @@
}, },
"codemodel-v2" : "codemodel-v2" :
{ {
"jsonFile" : "codemodel-v2-75aa5940d6c94493455f.json", "jsonFile" : "codemodel-v2-4c4ecc1a053153a57cf7.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {

View File

@@ -43,13 +43,13 @@
{ {
"command" : 1, "command" : 1,
"file" : 0, "file" : 0,
"line" : 37, "line" : 39,
"parent" : 0 "parent" : 0
}, },
{ {
"command" : 1, "command" : 1,
"file" : 0, "file" : 0,
"line" : 38, "line" : 40,
"parent" : 0 "parent" : 0
}, },
{ {
@@ -87,7 +87,7 @@
{ {
"command" : 5, "command" : 5,
"file" : 0, "file" : 0,
"line" : 40, "line" : 42,
"parent" : 0 "parent" : 0
} }
] ]
@@ -195,7 +195,8 @@
12, 12,
14, 14,
16, 16,
18 18,
20
] ]
} }
], ],
@@ -264,7 +265,8 @@
12, 12,
14, 14,
16, 16,
18 18,
20
] ]
}, },
{ {
@@ -280,7 +282,8 @@
13, 13,
15, 15,
17, 17,
19 19,
21
] ]
} }
], ],
@@ -309,6 +312,17 @@
"path" : "databaselms.h", "path" : "databaselms.h",
"sourceGroupIndex" : 1 "sourceGroupIndex" : 1
}, },
{
"backtrace" : 1,
"compileGroupIndex" : 0,
"path" : "interfacedatabaselms.cpp",
"sourceGroupIndex" : 0
},
{
"backtrace" : 1,
"path" : "interfacedatabaselms.h",
"sourceGroupIndex" : 1
},
{ {
"backtrace" : 1, "backtrace" : 1,
"compileGroupIndex" : 0, "compileGroupIndex" : 0,

Binary file not shown.

View File

@@ -1,81 +1,43 @@
# ninja log v5 # ninja log v5
11 35 0 CMakeFiles/clean.additional 7155004b3956b606 90 131 7525981640473406 CMakeFiles/DataBaseLMS.dir/DataBaseLMS_autogen/mocs_compilation.cpp.obj d9dc0a262f9d4ccd
2059 2218 7525088392927135 libDataBaseLMS.dll 3b716bd5e0562557 54 113 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
2059 2218 7525088392927135 libDataBaseLMS.dll.a 3b716bd5e0562557 97 657 7525981645725604 CMakeFiles/DataBaseLMS.dir/user.cpp.obj 4ee7a17d2a43f188
35 42 0 clean 9c4b4372737ab8da 54 113 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
95 1643 7524982876371819 CMakeFiles/DataBaseLMS.dir/computer.cpp.obj 5930684a0b27a14f 108 693 7525981646098521 CMakeFiles/DataBaseLMS.dir/computer.cpp.obj 5930684a0b27a14f
14 49 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 105 653 7525981645685710 CMakeFiles/DataBaseLMS.dir/group.cpp.obj 70fefc8893e4cb77
83 1635 7524982876272093 CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj 99b734c728959a94 7 31 0 CMakeFiles/clean.additional 7155004b3956b606
88 1636 7524982876292025 CMakeFiles/DataBaseLMS.dir/instructor.cpp.obj fb68571e9d220198 2048 2211 7531044009955548 libDataBaseLMS.dll 3b716bd5e0562557
97 1633 7524982876272093 CMakeFiles/DataBaseLMS.dir/task.cpp.obj b003a0cb68c6b2bb 2048 2211 7531044009955548 libDataBaseLMS.dll.a 3b716bd5e0562557
92 1636 7524982876292025 CMakeFiles/DataBaseLMS.dir/group.cpp.obj 70fefc8893e4cb77 31 38 0 clean 9c4b4372737ab8da
156 788 7524397271272665 CMakeFiles/DataBaseLMS.dir/DataBaseLMS_autogen/mocs_compilation.cpp.obj d9dc0a262f9d4ccd 52 2047 7531044008328505 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
50 2059 7525088391343479 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59 95 655 7525981645705675 CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj 99b734c728959a94
90 1752 7524982877478794 CMakeFiles/DataBaseLMS.dir/trainee.cpp.obj 4ac35fd8ef58e9f 54 113 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
100 1640 7524982876341892 CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj e9b501dc7cb3286a 100 738 7525981646532033 CMakeFiles/DataBaseLMS.dir/instructor.cpp.obj fb68571e9d220198
14 49 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 110 683 7525981645966249 CMakeFiles/DataBaseLMS.dir/task.cpp.obj b003a0cb68c6b2bb
14 49 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 54 113 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
85 1635 7524982876282051 CMakeFiles/DataBaseLMS.dir/user.cpp.obj 4ee7a17d2a43f188 113 607 7525981645223557 CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj e9b501dc7cb3286a
14 49 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 102 767 7525981646832047 CMakeFiles/DataBaseLMS.dir/trainee.cpp.obj 4ac35fd8ef58e9f
16 56 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
16 56 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
16 56 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
16 56 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
59 1069 7531836962549807 CMakeFiles/DataBaseLMS.dir/interfacedatabaselms.cpp.obj d76eac97fda56f5b
56 2141 7531836973258075 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
2141 2512 7531836976956111 libDataBaseLMS.dll 31a19f1f3436f66b
2141 2512 7531836976956111 libDataBaseLMS.dll.a 31a19f1f3436f66b
16 53 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 16 53 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
16 53 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 16 53 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
16 53 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 16 53 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
16 53 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 16 53 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
53 2060 7525091330946435 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59 56 598 7531839242498807 CMakeFiles/DataBaseLMS.dir/interfacedatabaselms.cpp.obj d76eac97fda56f5b
2060 2220 7525091332543436 libDataBaseLMS.dll 3b716bd5e0562557 53 2026 7531839256769605 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
2060 2220 7525091332543436 libDataBaseLMS.dll.a 3b716bd5e0562557 2026 2210 7531839258594933 libDataBaseLMS.dll 31a19f1f3436f66b
15 51 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 2026 2210 7531839258594933 libDataBaseLMS.dll.a 31a19f1f3436f66b
15 51 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 15 52 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
15 51 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 15 52 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
15 51 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 15 52 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
51 2037 7525100271403312 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59 15 52 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
2037 2197 7525100272988261 libDataBaseLMS.dll 3b716bd5e0562557 55 606 7531839486381107 CMakeFiles/DataBaseLMS.dir/interfacedatabaselms.cpp.obj d76eac97fda56f5b
2037 2197 7525100272988261 libDataBaseLMS.dll.a 3b716bd5e0562557 52 2049 7531839500798537 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
15 49 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20 2049 2220 7531839502500362 libDataBaseLMS.dll 31a19f1f3436f66b
15 49 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20 2049 2220 7531839502500362 libDataBaseLMS.dll.a 31a19f1f3436f66b
15 49 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
15 49 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
10 42 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
10 42 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
10 42 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
10 42 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
43 1971 7525212838352129 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
1971 2129 7525212839934527 libDataBaseLMS.dll 3b716bd5e0562557
1971 2129 7525212839934527 libDataBaseLMS.dll.a 3b716bd5e0562557
15 50 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
15 50 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
15 50 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
15 50 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
50 1981 7525216791870122 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
1981 2140 7525216793455149 libDataBaseLMS.dll 3b716bd5e0562557
1981 2140 7525216793455149 libDataBaseLMS.dll.a 3b716bd5e0562557
14 48 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
14 48 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
14 48 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
14 48 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
25 67 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
25 67 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
25 67 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
25 67 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
24 74 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
24 74 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
24 74 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
24 74 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
7 31 0 CMakeFiles/clean.additional 7155004b3956b606
31 38 0 clean 9c4b4372737ab8da
11 90 0 CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
11 90 0 DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
11 90 0 D:/LMS/DB_LMS/Debug64/CMakeFiles/DataBaseLMS_autogen b8e538c54fdbce20
11 90 0 D:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/mocs_compilation.cpp b8e538c54fdbce20
90 131 7525981640473406 CMakeFiles/DataBaseLMS.dir/DataBaseLMS_autogen/mocs_compilation.cpp.obj d9dc0a262f9d4ccd
113 607 7525981645223557 CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj e9b501dc7cb3286a
105 653 7525981645685710 CMakeFiles/DataBaseLMS.dir/group.cpp.obj 70fefc8893e4cb77
95 655 7525981645705675 CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj 99b734c728959a94
97 657 7525981645725604 CMakeFiles/DataBaseLMS.dir/user.cpp.obj 4ee7a17d2a43f188
110 683 7525981645966249 CMakeFiles/DataBaseLMS.dir/task.cpp.obj b003a0cb68c6b2bb
108 693 7525981646098521 CMakeFiles/DataBaseLMS.dir/computer.cpp.obj 5930684a0b27a14f
100 738 7525981646532033 CMakeFiles/DataBaseLMS.dir/instructor.cpp.obj fb68571e9d220198
102 767 7525981646832047 CMakeFiles/DataBaseLMS.dir/trainee.cpp.obj 4ac35fd8ef58e9f
93 2171 7525981660831212 CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj 202016fcb2dffc59
2171 2342 7525981662561308 libDataBaseLMS.dll 3b716bd5e0562557
2171 2342 7525981662561308 libDataBaseLMS.dll.a 3b716bd5e0562557

View File

@@ -123,6 +123,12 @@
"EWIEGA46WW/moc_instructor.cpp", "EWIEGA46WW/moc_instructor.cpp",
null null
], ],
[
"D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.h",
"MU",
"EWIEGA46WW/moc_interfacedatabaselms.cpp",
null
],
[ [
"D:/LMS/DB_LMS/DataBaseLMS/task.h", "D:/LMS/DB_LMS/DataBaseLMS/task.h",
"MU", "MU",
@@ -210,6 +216,7 @@
[ "D:/LMS/DB_LMS/DataBaseLMS/databaselms.cpp", "MU", null ], [ "D:/LMS/DB_LMS/DataBaseLMS/databaselms.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/group.cpp", "MU", null ], [ "D:/LMS/DB_LMS/DataBaseLMS/group.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/instructor.cpp", "MU", null ], [ "D:/LMS/DB_LMS/DataBaseLMS/instructor.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/task.cpp", "MU", null ], [ "D:/LMS/DB_LMS/DataBaseLMS/task.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/trainee.cpp", "MU", null ], [ "D:/LMS/DB_LMS/DataBaseLMS/trainee.cpp", "MU", null ],
[ "D:/LMS/DB_LMS/DataBaseLMS/user.cpp", "MU", null ] [ "D:/LMS/DB_LMS/DataBaseLMS/user.cpp", "MU", null ]

View File

@@ -1,20 +1,22 @@
# Generated by CMake. Changes will be overwritten. # Generated by CMake. Changes will be overwritten.
D:/LMS/DB_LMS/DataBaseLMS/user.cpp
D:/LMS/DB_LMS/DataBaseLMS/trainee.cpp
D:/LMS/DB_LMS/DataBaseLMS/task.cpp
D:/LMS/DB_LMS/DataBaseLMS/group.cpp
D:/LMS/DB_LMS/DataBaseLMS/databaselms.cpp
D:/LMS/DB_LMS/DataBaseLMS/DataBaseLMS_global.h
D:/LMS/DB_LMS/DataBaseLMS/user.h
D:/LMS/DB_LMS/DataBaseLMS/instructor.cpp
D:/LMS/DB_LMS/DataBaseLMS/classroom.h
D:/LMS/DB_LMS/DataBaseLMS/basicentity.h
D:/LMS/DB_LMS/DataBaseLMS/computer.cpp
D:/LMS/DB_LMS/DataBaseLMS/computer.h
D:/LMS/DB_LMS/DataBaseLMS/databaselms.h
D:/LMS/DB_LMS/DataBaseLMS/group.h
D:/LMS/DB_LMS/DataBaseLMS/instructor.h
D:/LMS/DB_LMS/DataBaseLMS/trainee.h
D:/LMS/DB_LMS/DataBaseLMS/basicentity.cpp
D:/LMS/DB_LMS/DataBaseLMS/task.h D:/LMS/DB_LMS/DataBaseLMS/task.h
D:/LMS/DB_LMS/DataBaseLMS/classroom.cpp D:/LMS/DB_LMS/DataBaseLMS/classroom.cpp
D:/LMS/DB_LMS/DataBaseLMS/databaselms.h
D:/LMS/DB_LMS/DataBaseLMS/databaselms.cpp
D:/LMS/DB_LMS/DataBaseLMS/DataBaseLMS_global.h
D:/LMS/DB_LMS/DataBaseLMS/group.cpp
D:/LMS/DB_LMS/DataBaseLMS/user.h
D:/LMS/DB_LMS/DataBaseLMS/group.h
D:/LMS/DB_LMS/DataBaseLMS/task.cpp
D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.h
D:/LMS/DB_LMS/DataBaseLMS/instructor.h
D:/LMS/DB_LMS/DataBaseLMS/user.cpp
D:/LMS/DB_LMS/DataBaseLMS/trainee.h
D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.cpp
D:/LMS/DB_LMS/DataBaseLMS/computer.cpp
D:/LMS/DB_LMS/DataBaseLMS/basicentity.h
D:/LMS/DB_LMS/DataBaseLMS/basicentity.cpp
D:/LMS/DB_LMS/DataBaseLMS/trainee.cpp
D:/LMS/DB_LMS/DataBaseLMS/computer.h
D:/LMS/DB_LMS/DataBaseLMS/classroom.h
D:/LMS/DB_LMS/DataBaseLMS/instructor.cpp

View File

@@ -159,6 +159,12 @@
<Unit filename="D:/LMS/DB_LMS/DataBaseLMS/instructor.h"> <Unit filename="D:/LMS/DB_LMS/DataBaseLMS/instructor.h">
<Option target="DataBaseLMS"/> <Option target="DataBaseLMS"/>
</Unit> </Unit>
<Unit filename="D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.cpp">
<Option target="DataBaseLMS"/>
</Unit>
<Unit filename="D:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.h">
<Option target="DataBaseLMS"/>
</Unit>
<Unit filename="D:/LMS/DB_LMS/DataBaseLMS/task.cpp"> <Unit filename="D:/LMS/DB_LMS/DataBaseLMS/task.cpp">
<Option target="DataBaseLMS"/> <Option target="DataBaseLMS"/>
</Unit> </Unit>

View File

@@ -65,6 +65,14 @@ build CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj: CXX_COMPILER__DataBaseLMS_
OBJECT_DIR = CMakeFiles\DataBaseLMS.dir OBJECT_DIR = CMakeFiles\DataBaseLMS.dir
OBJECT_FILE_DIR = CMakeFiles\DataBaseLMS.dir OBJECT_FILE_DIR = CMakeFiles\DataBaseLMS.dir
build CMakeFiles/DataBaseLMS.dir/interfacedatabaselms.cpp.obj: CXX_COMPILER__DataBaseLMS_unscanned_Debug D$:/LMS/DB_LMS/DataBaseLMS/interfacedatabaselms.cpp || cmake_object_order_depends_target_DataBaseLMS
DEFINES = -DDATABASELMS_LIBRARY -DDataBaseLMS_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_WIDGETS_LIB
DEP_FILE = CMakeFiles\DataBaseLMS.dir\interfacedatabaselms.cpp.obj.d
FLAGS = -g -std=gnu++11
INCLUDES = -ID:/LMS/DB_LMS/Debug64 -ID:/LMS/DB_LMS/DataBaseLMS -ID:/LMS/DB_LMS/Debug64/DataBaseLMS_autogen/include -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include/QtWidgets -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include/QtGui -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include/QtANGLE -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include/QtCore -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/./mkspecs/win32-g++ -isystem C:/Qt/Qt5.14.2/5.14.2/mingw73_64/include/QtSql
OBJECT_DIR = CMakeFiles\DataBaseLMS.dir
OBJECT_FILE_DIR = CMakeFiles\DataBaseLMS.dir
build CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj: CXX_COMPILER__DataBaseLMS_unscanned_Debug D$:/LMS/DB_LMS/DataBaseLMS/basicentity.cpp || cmake_object_order_depends_target_DataBaseLMS build CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj: CXX_COMPILER__DataBaseLMS_unscanned_Debug D$:/LMS/DB_LMS/DataBaseLMS/basicentity.cpp || cmake_object_order_depends_target_DataBaseLMS
DEFINES = -DDATABASELMS_LIBRARY -DDataBaseLMS_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_WIDGETS_LIB DEFINES = -DDATABASELMS_LIBRARY -DDataBaseLMS_EXPORTS -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_WIDGETS_LIB
DEP_FILE = CMakeFiles\DataBaseLMS.dir\basicentity.cpp.obj.d DEP_FILE = CMakeFiles\DataBaseLMS.dir\basicentity.cpp.obj.d
@@ -137,7 +145,7 @@ build CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj: CXX_COMPILER__DataBaseLMS_un
############################################# #############################################
# Link the shared library libDataBaseLMS.dll # Link the shared library libDataBaseLMS.dll
build libDataBaseLMS.dll libDataBaseLMS.dll.a: CXX_SHARED_LIBRARY_LINKER__DataBaseLMS_Debug CMakeFiles/DataBaseLMS.dir/DataBaseLMS_autogen/mocs_compilation.cpp.obj CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj CMakeFiles/DataBaseLMS.dir/user.cpp.obj CMakeFiles/DataBaseLMS.dir/instructor.cpp.obj CMakeFiles/DataBaseLMS.dir/trainee.cpp.obj CMakeFiles/DataBaseLMS.dir/group.cpp.obj CMakeFiles/DataBaseLMS.dir/computer.cpp.obj CMakeFiles/DataBaseLMS.dir/task.cpp.obj CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj | C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Widgets.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Sql.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Gui.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Core.a || DataBaseLMS_autogen build libDataBaseLMS.dll libDataBaseLMS.dll.a: CXX_SHARED_LIBRARY_LINKER__DataBaseLMS_Debug CMakeFiles/DataBaseLMS.dir/DataBaseLMS_autogen/mocs_compilation.cpp.obj CMakeFiles/DataBaseLMS.dir/databaselms.cpp.obj CMakeFiles/DataBaseLMS.dir/interfacedatabaselms.cpp.obj CMakeFiles/DataBaseLMS.dir/basicentity.cpp.obj CMakeFiles/DataBaseLMS.dir/user.cpp.obj CMakeFiles/DataBaseLMS.dir/instructor.cpp.obj CMakeFiles/DataBaseLMS.dir/trainee.cpp.obj CMakeFiles/DataBaseLMS.dir/group.cpp.obj CMakeFiles/DataBaseLMS.dir/computer.cpp.obj CMakeFiles/DataBaseLMS.dir/task.cpp.obj CMakeFiles/DataBaseLMS.dir/classroom.cpp.obj | C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Widgets.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Sql.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Gui.a C$:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Core.a || DataBaseLMS_autogen
LANGUAGE_COMPILE_FLAGS = -g LANGUAGE_COMPILE_FLAGS = -g
LINK_LIBRARIES = C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Widgets.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Sql.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Gui.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Core.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 LINK_LIBRARIES = C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Widgets.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Sql.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Gui.a C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/libQt5Core.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
OBJECT_DIR = CMakeFiles\DataBaseLMS.dir OBJECT_DIR = CMakeFiles\DataBaseLMS.dir

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,81 +1,78 @@
# ninja log v5 # ninja log v5
10 396 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8 51 1173 7531147078279842 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
477 526 7525774738633531 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp.obj 7ac9b57cd808a15a 12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
10 396 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8 12 42 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
473 1597 7525774749339959 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2 54 1200 7531147078543711 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
475 1610 7525774749469616 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
10 396 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
8 35 0 CMakeFiles/clean.additional 7155004b3956b606
396 470 7525774738048804 testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766
1611 1743 7525774750773210 testDBpgSQL.exe 481e73a84a688916
35 42 0 clean 9c4b4372737ab8da
10 396 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
470 1599 7525774749359905 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
10 396 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
10 396 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
396 470 7525774738048804 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766
19 59 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
19 59 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
19 59 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
19 59 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
19 59 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
19 59 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
59 1177 7525805030940500 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
62 1191 7525805031071769 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
64 1237 7525805031533450 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
1237 1375 7525805032905306 testDBpgSQL.exe 481e73a84a688916
14 46 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
14 46 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
14 46 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
14 46 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
14 46 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
14 46 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
46 1159 7525888685224963 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
49 1179 7525888685416587 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
51 1206 7525888685692023 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
1206 1337 7525888686991561 testDBpgSQL.exe 481e73a84a688916
11 35 0 CMakeFiles/clean.additional 7155004b3956b606
36 42 0 clean 9c4b4372737ab8da
11 385 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 385 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 385 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 385 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 385 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 385 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
385 438 7525981909076938 testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766 385 438 7525981909076938 testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766
11 35 0 CMakeFiles/clean.additional 7155004b3956b606
1200 1336 7531147079886299 testDBpgSQL.exe 481e73a84a688916
36 42 0 clean 9c4b4372737ab8da
48 1192 7531147078472554 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 42 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 42 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
385 438 7525981909076938 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766 385 438 7525981909076938 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp e72511a2b01b9766
12 42 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
446 495 7525981909669873 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp.obj 7ac9b57cd808a15a 446 495 7525981909669873 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/EWIEGA46WW/qrc_testDBpgSQL.cpp.obj 7ac9b57cd808a15a
438 1559 7525981920308333 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
441 1568 7525981920388693 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
443 1600 7525981920671129 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
1600 1730 7525981922004409 testDBpgSQL.exe 481e73a84a688916
15 52 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 52 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 52 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
15 52 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 52 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 52 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 42 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 42 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 42 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 42 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 42 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 42 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 42 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 42 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 42 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 42 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 42 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8 11 41 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8 11 41 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8 11 41 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8 11 41 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8 11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8 11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
44 1157 7531213263801735 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
41 1178 7531213263994252 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
46 1184 7531213264064062 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
1184 1313 7531213265341724 testDBpgSQL.exe 481e73a84a688916
15 46 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 46 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 46 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
15 46 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 46 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 46 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 43 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 43 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 43 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 43 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
13 43 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
13 43 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
13 43 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
13 43 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
13 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
13 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 43 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 43 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 43 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
12 43 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
12 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
12 43 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
11 41 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
26 69 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
26 69 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
26 69 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
26 69 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
26 69 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
26 69 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
70 1184 7531839606020719 CMakeFiles/testDBpgSQL.dir/testDBpgSQL_autogen/mocs_compilation.cpp.obj 223f91fdbeaff3f0
72 1217 7531839606323683 CMakeFiles/testDBpgSQL.dir/main.cpp.obj 7c6bf829703494a2
74 1217 7531839606323683 CMakeFiles/testDBpgSQL.dir/mainwindow.cpp.obj a213cdc2d21087f1
1217 1369 7531839607852787 testDBpgSQL.exe 481e73a84a688916
15 47 0 CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 47 0 testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 47 0 testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8
15 47 0 D:/LMS/testDB/Debug64/CMakeFiles/testDBpgSQL_autogen d08ec0c05fa072d8
15 47 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/mocs_compilation.cpp d08ec0c05fa072d8
15 47 0 D:/LMS/testDB/Debug64/testDBpgSQL_autogen/include/ui_mainwindow.h d08ec0c05fa072d8

View File

@@ -1,6 +1,6 @@
# Generated by CMake. Changes will be overwritten. # Generated by CMake. Changes will be overwritten.
D:/LMS/testDB/testDBpgSQL/mainwindow.cpp
uic:./ui_mainwindow.h
D:/LMS/testDB/testDBpgSQL/main.cpp
D:/LMS/testDB/testDBpgSQL/mainwindow.h D:/LMS/testDB/testDBpgSQL/mainwindow.h
mmc:Q_OBJECT mmc:Q_OBJECT
D:/LMS/testDB/testDBpgSQL/main.cpp
D:/LMS/testDB/testDBpgSQL/mainwindow.cpp
uic:./ui_mainwindow.h

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2024-11-06T16:05:43. --> <!-- Written by QtCreator 4.11.1, 2024-11-13T09:53:44. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

View File

@@ -12,7 +12,8 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this); ui->setupUi(this);
m_instructorsAndTraineesWidget = new InstructorsAndTraineesWidget(this); m_instructorsAndTraineesWidget = new InstructorsAndTraineesWidget(this);
if(! m_instructorsAndTraineesWidget->authorizationCompleted())
if(! m_instructorsAndTraineesWidget->authorizationIsCompleted())
{ {
delete m_instructorsAndTraineesWidget; delete m_instructorsAndTraineesWidget;
delete ui; delete ui;