mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
refact1
This commit is contained in:
77
LibDataBaseInterface/CMakeLists.txt
Normal file
77
LibDataBaseInterface/CMakeLists.txt
Normal file
@@ -0,0 +1,77 @@
|
||||
project(DataBaseInterface LANGUAGES CXX)
|
||||
|
||||
common_info_for_project(DataBaseInterface)
|
||||
|
||||
add_library(DataBaseInterface SHARED
|
||||
DataBaseLMS_global.h
|
||||
databaselms.cpp
|
||||
databaselms_tasks.cpp
|
||||
databaselms_groups.cpp
|
||||
databaselms_users.cpp
|
||||
databaselms_instructors.cpp
|
||||
databaselms_trainees.cpp
|
||||
databaselms_Postgresql.cpp
|
||||
databaselms.h
|
||||
interfacedatabaselms.cpp
|
||||
interfacedatabaselms.h
|
||||
basicentity.cpp
|
||||
basicentity.h
|
||||
user.cpp
|
||||
user.h
|
||||
instructor.cpp
|
||||
instructor.h
|
||||
trainee.cpp
|
||||
trainee.h
|
||||
group.cpp
|
||||
group.h
|
||||
computer.cpp
|
||||
computer.h
|
||||
classroom.cpp
|
||||
classroom.h
|
||||
tasksAmmFim.cpp
|
||||
tasksAmmFim.h
|
||||
typeQueryToDB.h
|
||||
timingoftrainee.cpp
|
||||
timingoftrainee.h
|
||||
contactModel.h
|
||||
hashtools.cpp
|
||||
hashtools.h
|
||||
DataBaseInterface.qrc
|
||||
)
|
||||
|
||||
target_link_libraries(DataBaseInterface PRIVATE Qt5::Widgets)
|
||||
target_link_libraries(DataBaseInterface PRIVATE Qt5::Sql)
|
||||
target_link_libraries(DataBaseInterface PRIVATE Qt5::Xml)
|
||||
|
||||
target_compile_definitions(DataBaseInterface PRIVATE DATABASELMS_LIBRARY)
|
||||
|
||||
if(PROJECT_TYPE_DEBUG)
|
||||
|
||||
add_custom_command(TARGET DataBaseInterface
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${REPO_PATH}/BUILDS/Debug64/LibDataBaseInterface/libDataBaseInterface.dll
|
||||
${REPO_PATH}/BUILDS/Debug64/ProgramServerMPS)
|
||||
|
||||
add_custom_command(TARGET DataBaseInterface
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${REPO_PATH}/BUILDS/Debug64/LibDataBaseInterface/libDataBaseInterface.dll
|
||||
${REPO_PATH}/BUILDS/Debug64/ProgramAWSinstructorMPS)
|
||||
else()
|
||||
|
||||
add_custom_command(TARGET DataBaseInterface
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${REPO_PATH}/BUILDS/Release64/LibDataBaseInterface/libDataBaseInterface.dll
|
||||
${REPO_PATH}/BUILDS/Release64/ProgramServerMPS)
|
||||
|
||||
add_custom_command(TARGET DataBaseInterface
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${REPO_PATH}/BUILDS/Release64/LibDataBaseInterface/libDataBaseInterface.dll
|
||||
${REPO_PATH}/BUILDS/Release64/ProgramAWSinstructorMPS)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
347
LibDataBaseInterface/CMakeLists.txt.user.00ce76f
Normal file
347
LibDataBaseInterface/CMakeLists.txt.user.00ce76f
Normal file
@@ -0,0 +1,347 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.11.1, 2024-12-28T11:57:36. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{00ce76f6-77cf-4587-a216-9a8e243377cb}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
||||
<value type="QString">-fno-delayed-template-parsing</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/BUILDS/LMS/DB_LMS/Debug64</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB_LMS/Release64</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/LMS/DB/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
||||
<value type="QString">cpu-cycles</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
||||
<value type="QString">-e</value>
|
||||
<value type="QString">cpu-cycles</value>
|
||||
<value type="QString">--call-graph</value>
|
||||
<value type="QString">dwarf,4096</value>
|
||||
<value type="QString">-F</value>
|
||||
<value type="QString">250</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
|
||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
|
||||
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
390
LibDataBaseInterface/CMakeLists.txt.user.15ef247
Normal file
390
LibDataBaseInterface/CMakeLists.txt.user.15ef247
Normal file
@@ -0,0 +1,390 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.11.1, 2025-01-10T12:59:06. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{15ef2478-2444-4b00-88b8-fead51c6fef5}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="int">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
||||
<value type="QString">-fno-delayed-template-parsing</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">4</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-RelWithDebInfo</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск с отладочной информацией</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/DB_LMS/build-DataBaseLMS-Desktop_Qt_5_14_2_MinGW_64_bit-MinSizeRel</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Выпуск минимального размера</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_LMS/Debug64</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Отладка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
|
||||
<valuelist type="QVariantList" key="CMake.Configuration">
|
||||
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
|
||||
<value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}</value>
|
||||
<value type="QString">CMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}</value>
|
||||
<value type="QString">CMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}</value>
|
||||
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/QT/Projects/RRJServer/RRJServer/BUILDS/DB_LMS/Debug64</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">all</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Сборка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
|
||||
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
|
||||
<value type="QString">clean</value>
|
||||
</valuelist>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Очистка</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Развёртывание</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Развёртывание</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
||||
<value type="QString">cpu-cycles</value>
|
||||
</valuelist>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
||||
<value type="QString">-e</value>
|
||||
<value type="QString">cpu-cycles</value>
|
||||
<value type="QString">--call-graph</value>
|
||||
<value type="QString">dwarf,4096</value>
|
||||
<value type="QString">-F</value>
|
||||
<value type="QString">250</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||
<value type="int">0</value>
|
||||
<value type="int">1</value>
|
||||
<value type="int">2</value>
|
||||
<value type="int">3</value>
|
||||
<value type="int">4</value>
|
||||
<value type="int">5</value>
|
||||
<value type="int">6</value>
|
||||
<value type="int">7</value>
|
||||
<value type="int">8</value>
|
||||
<value type="int">9</value>
|
||||
<value type="int">10</value>
|
||||
<value type="int">11</value>
|
||||
<value type="int">12</value>
|
||||
<value type="int">13</value>
|
||||
<value type="int">14</value>
|
||||
</valuelist>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
|
||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
|
||||
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
5
LibDataBaseInterface/DataBaseInterface.qrc
Normal file
5
LibDataBaseInterface/DataBaseInterface.qrc
Normal file
@@ -0,0 +1,5 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>resources/blankXML/ErrorDB.xml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
1
LibDataBaseInterface/DataBaseLMS.pgerd
Normal file
1
LibDataBaseInterface/DataBaseLMS.pgerd
Normal file
File diff suppressed because one or more lines are too long
12
LibDataBaseInterface/DataBaseLMS_global.h
Normal file
12
LibDataBaseInterface/DataBaseLMS_global.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef DATABASELMS_GLOBAL_H
|
||||
#define DATABASELMS_GLOBAL_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#if defined(DATABASELMS_LIBRARY)
|
||||
# define DATABASELMS_EXPORT Q_DECL_EXPORT
|
||||
#else
|
||||
# define DATABASELMS_EXPORT Q_DECL_IMPORT
|
||||
#endif
|
||||
|
||||
#endif // DATABASELMS_GLOBAL_H
|
||||
14
LibDataBaseInterface/basicentity.cpp
Normal file
14
LibDataBaseInterface/basicentity.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include "basicentity.h"
|
||||
|
||||
BasicEntity::BasicEntity():
|
||||
id(),
|
||||
name()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
BasicEntity::BasicEntity(int id, QString name)
|
||||
{
|
||||
this->id = id;
|
||||
this->name = name;
|
||||
}
|
||||
24
LibDataBaseInterface/basicentity.h
Normal file
24
LibDataBaseInterface/basicentity.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef BASICENTITY_H
|
||||
#define BASICENTITY_H
|
||||
|
||||
#include <QString>
|
||||
#include "DataBaseLMS_global.h"
|
||||
|
||||
class BasicEntity
|
||||
{
|
||||
public:
|
||||
BasicEntity();
|
||||
BasicEntity(int id, QString name);
|
||||
|
||||
void setID(int id){this->id = id;}
|
||||
int getID(){return id;}
|
||||
|
||||
void setName(QString name){this->name = name;}
|
||||
QString getName(){return name;}
|
||||
|
||||
protected:
|
||||
int id;
|
||||
QString name;
|
||||
};
|
||||
|
||||
#endif // BASICENTITY_H
|
||||
13
LibDataBaseInterface/classroom.cpp
Normal file
13
LibDataBaseInterface/classroom.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "classroom.h"
|
||||
|
||||
Classroom::Classroom():
|
||||
BasicEntity()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Classroom::Classroom(int id, QString name):
|
||||
BasicEntity(id, name)
|
||||
{
|
||||
|
||||
}
|
||||
13
LibDataBaseInterface/classroom.h
Normal file
13
LibDataBaseInterface/classroom.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef CLASSROOM_H
|
||||
#define CLASSROOM_H
|
||||
|
||||
#include "basicentity.h"
|
||||
|
||||
class DATABASELMS_EXPORT Classroom: public BasicEntity
|
||||
{
|
||||
public:
|
||||
Classroom();
|
||||
Classroom(int id, QString name);
|
||||
};
|
||||
|
||||
#endif // CLASSROOM_H
|
||||
16
LibDataBaseInterface/computer.cpp
Normal file
16
LibDataBaseInterface/computer.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
#include "computer.h"
|
||||
|
||||
Computer::Computer():
|
||||
BasicEntity(),
|
||||
classroom(),
|
||||
ipAddress()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Computer::Computer(int id, QString name, QString ipAddress, Classroom classroom):
|
||||
BasicEntity(id, name)
|
||||
{
|
||||
this->ipAddress = ipAddress;
|
||||
this->classroom = classroom;
|
||||
}
|
||||
24
LibDataBaseInterface/computer.h
Normal file
24
LibDataBaseInterface/computer.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef COMPUTER_H
|
||||
#define COMPUTER_H
|
||||
|
||||
#include "basicentity.h"
|
||||
#include "classroom.h"
|
||||
|
||||
class DATABASELMS_EXPORT Computer: public BasicEntity
|
||||
{
|
||||
public:
|
||||
Computer();
|
||||
Computer(int id, QString name, QString ipAddress, Classroom classroom);
|
||||
|
||||
void setClassroom(Classroom classroom){this->classroom = classroom;}
|
||||
Classroom getClassroom(){return classroom;}
|
||||
|
||||
void setIpAddress(QString ipAddress){this->ipAddress = ipAddress;}
|
||||
QString getIpAddress(){return ipAddress;}
|
||||
|
||||
private:
|
||||
Classroom classroom;
|
||||
QString ipAddress;
|
||||
};
|
||||
|
||||
#endif // COMPUTER_H
|
||||
52
LibDataBaseInterface/contactModel.h
Normal file
52
LibDataBaseInterface/contactModel.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef CONTACTMODEL_H
|
||||
#define CONTACTMODEL_H
|
||||
|
||||
#include "instructor.h"
|
||||
#include "trainee.h"
|
||||
#include "user.h"
|
||||
|
||||
class ContactModel
|
||||
{
|
||||
public:
|
||||
ContactModel(Instructor instructor)
|
||||
{
|
||||
login = instructor.getLogin();
|
||||
name = instructor.getName();
|
||||
type = 0;
|
||||
loggedIn = instructor.getLoggedIn();
|
||||
id = instructor.getID();
|
||||
};
|
||||
|
||||
ContactModel(Trainee trainee)
|
||||
{
|
||||
login = trainee.getLogin();
|
||||
name = trainee.getName();
|
||||
type = 1;
|
||||
loggedIn = trainee.getLoggedIn();
|
||||
id = trainee.getID();
|
||||
}
|
||||
|
||||
void setType(int type){this->type = type;}
|
||||
int getType(){return type;}
|
||||
|
||||
void setName(QString name){this->name = name;}
|
||||
QString getName(){return name;}
|
||||
|
||||
void setLoggedIn(bool loggedIn){this->loggedIn = loggedIn;}
|
||||
bool getLoggedIn(){return loggedIn;}
|
||||
|
||||
void setLogin(QString login){this->login = login;}
|
||||
QString getLogin(){return login;}
|
||||
|
||||
void setID(int id){this->id = id;}
|
||||
int getID(){return id;}
|
||||
|
||||
private:
|
||||
QString login;
|
||||
QString name;
|
||||
bool loggedIn;
|
||||
int type;
|
||||
int id;
|
||||
};
|
||||
|
||||
#endif // CONTACTMODEL_H
|
||||
238
LibDataBaseInterface/databaselms.cpp
Normal file
238
LibDataBaseInterface/databaselms.cpp
Normal file
@@ -0,0 +1,238 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QDomDocument>
|
||||
#include <QProcess>
|
||||
|
||||
const QString DataBaseLMS::TypeUserDBInstructor = "instructor";
|
||||
const QString DataBaseLMS::TypeUserDBTrainee = "trainee";
|
||||
|
||||
DataBaseLMS::DataBaseLMS(QWidget *ownerWidget, QObject *parent):
|
||||
QObject(parent),
|
||||
db(nullptr),
|
||||
UserNamePostgres(""),
|
||||
PasswordPostgres(""),
|
||||
ownerWidget(ownerWidget)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DataBaseLMS::~DataBaseLMS()
|
||||
{
|
||||
deleteConnection();
|
||||
}
|
||||
|
||||
void DataBaseLMS::slot_LanguageChanged(QString language)
|
||||
{
|
||||
qtLanguageTranslator.load(QString(QStringLiteral("translations/DataBaseLMS_")) + language, QStringLiteral("."));
|
||||
QCoreApplication::installTranslator(&qtLanguageTranslator);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::createConnection()
|
||||
{
|
||||
dbSettings = getDataBaseSettings();
|
||||
|
||||
dbSettings.connectionName = "Connection_" + dbSettings.dbName;
|
||||
|
||||
db = new QSqlDatabase(QSqlDatabase::addDatabase(dbSettings.dbType, dbSettings.connectionName));
|
||||
|
||||
db->setDatabaseName(dbSettings.dbName);
|
||||
db->setUserName(dbSettings.dbUserName);
|
||||
db->setPassword(dbSettings.dbPassword);
|
||||
db->setHostName(dbSettings.dbHostName);
|
||||
db->setPort(dbSettings.dbPort);
|
||||
|
||||
bool res = db->open();
|
||||
|
||||
if(!res)
|
||||
{
|
||||
deleteConnection();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool flHas = db->driver()->hasFeature(QSqlDriver::Transactions);
|
||||
qDebug() << "db->driver()->hasFeature(QSqlDriver::Transactions): " << flHas;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void DataBaseLMS::deleteConnection()
|
||||
{
|
||||
if(db != nullptr)
|
||||
{
|
||||
if(db->isOpen())
|
||||
db->close();
|
||||
|
||||
delete db;
|
||||
db = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool DataBaseLMS::isConnected()
|
||||
{
|
||||
if(db == nullptr)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(db->isOpen())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
DataBaseSettings DataBaseLMS::getDataBaseSettings()
|
||||
{
|
||||
DataBaseSettings settings;
|
||||
QFile file("config/settings.xml");
|
||||
if(!file.open(QIODevice::ReadOnly))
|
||||
return settings;
|
||||
|
||||
QXmlStreamReader xmlReader(&file);
|
||||
|
||||
while (!xmlReader.atEnd()){
|
||||
|
||||
if(xmlReader.isStartElement()){
|
||||
|
||||
if(xmlReader.name() == "DataBaseSettings")
|
||||
{
|
||||
|
||||
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
|
||||
{
|
||||
QString name = attr.name().toString();
|
||||
QString value = attr.value().toString();
|
||||
|
||||
if(name == "Type"){
|
||||
settings.dbType = value;
|
||||
}
|
||||
|
||||
if(name == "Name"){
|
||||
settings.dbName = value;
|
||||
}
|
||||
|
||||
if(name == "UserName"){
|
||||
settings.dbUserName = value;
|
||||
}
|
||||
|
||||
if(name == "Password"){
|
||||
settings.dbPassword = value;
|
||||
}
|
||||
|
||||
if(name == "HostName"){
|
||||
settings.dbHostName = value;
|
||||
}
|
||||
|
||||
if(name == "Port"){
|
||||
settings.dbPort = value.toInt();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xmlReader.readNext();
|
||||
}
|
||||
|
||||
file.close();
|
||||
return settings;
|
||||
}
|
||||
|
||||
int DataBaseLMS::queryExecInt(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toInt();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString DataBaseLMS::queryExecString(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toString();
|
||||
}
|
||||
|
||||
return QStringLiteral("");
|
||||
}
|
||||
|
||||
bool DataBaseLMS::queryExecBool(QString queryStr)
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
return query.value(0).toBool();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::queryExec(QString queryStr, QSqlQuery *query)
|
||||
{
|
||||
bool res = false;
|
||||
if(! (res = query->exec(queryStr)) )
|
||||
messageWarningErrorQuery(queryStr, query);
|
||||
return res;
|
||||
}
|
||||
|
||||
void DataBaseLMS::messageWarningErrorQuery(QString queryStr, QSqlQuery* query)
|
||||
{
|
||||
//Запись в файл ошибок БД
|
||||
QDomDocument commonDOM;
|
||||
|
||||
QFile blankFile(":/resources/blankXML/ErrorDB.xml");
|
||||
|
||||
if (! blankFile.open(QFile::ReadOnly | QFile::Text))
|
||||
qDebug() << QString("messageWarningErrorQuery: Couldn't read the file: ") + ":/resources/blankXML/ErrorDB.xml";
|
||||
else
|
||||
{
|
||||
commonDOM.setContent(blankFile.readAll());
|
||||
blankFile.close();
|
||||
|
||||
QDomNode errorDBNode = commonDOM.namedItem("ErrorDB");
|
||||
|
||||
QDomNode errorQueryNode = commonDOM.createElement("ErrorQuery");
|
||||
errorDBNode.appendChild(errorQueryNode);
|
||||
errorQueryNode.toElement().setAttribute("text", query->lastError().text());
|
||||
|
||||
QDomNode stringOfQueryNode = commonDOM.createElement("StringOfQuery");
|
||||
errorDBNode.appendChild(stringOfQueryNode);
|
||||
stringOfQueryNode.toElement().setAttribute("text", queryStr);
|
||||
|
||||
QDomNode executedQueryNode = commonDOM.createElement("ExecutedQuery");
|
||||
errorDBNode.appendChild(executedQueryNode);
|
||||
executedQueryNode.toElement().setAttribute("text", query->executedQuery());
|
||||
|
||||
QFile xmlOutFile("ErrorDB.xml");
|
||||
if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text))
|
||||
qDebug() << QString("messageWarningErrorQuery: Failed to write a file: ") + "ErrorDB.xml";
|
||||
else
|
||||
{
|
||||
QTextStream outFile(&xmlOutFile);
|
||||
commonDOM.save(outFile, 4);
|
||||
xmlOutFile.close();
|
||||
}
|
||||
}
|
||||
|
||||
//Сообщение об ошибке
|
||||
QString textError = "";
|
||||
textError = "Error query:\n" + query->lastError().text() + "\n" +
|
||||
"String of query:\n" + queryStr + "\n" +
|
||||
"Executed query:\n" + query->executedQuery();
|
||||
emit signal_ErrorPostgreSQL(textError);
|
||||
}
|
||||
146
LibDataBaseInterface/databaselms.h
Normal file
146
LibDataBaseInterface/databaselms.h
Normal file
@@ -0,0 +1,146 @@
|
||||
#ifndef DATABASELMS_H
|
||||
#define DATABASELMS_H
|
||||
|
||||
#include <QSqlDatabase>
|
||||
#include <QMutex>
|
||||
#include <QWidget>
|
||||
#include <QTranslator>
|
||||
|
||||
#include "instructor.h"
|
||||
#include "trainee.h"
|
||||
#include "group.h"
|
||||
#include "tasksAmmFim.h"
|
||||
#include "timingoftrainee.h"
|
||||
|
||||
static const QString backupEmptyName = ".\\restoreDB\\DBLMS_EMPTY.backup";
|
||||
static const QString restoreDBscriptName = "restoreDBscript.bat";
|
||||
|
||||
class DATABASELMS_EXPORT DataBaseSettings
|
||||
{
|
||||
public:
|
||||
QString dbName = "";
|
||||
QString dbType = "";
|
||||
QString connectionName = "";
|
||||
QString dbUserName = "";
|
||||
QString dbPassword = "";
|
||||
QString dbHostName = "";
|
||||
int dbPort = 0;
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT DataBaseLMS : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DataBaseLMS(QWidget *ownerWidget, QObject *parent = nullptr);
|
||||
~DataBaseLMS();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slot_LanguageChanged(QString language);
|
||||
|
||||
signals:
|
||||
void signal_ErrorPostgreSQL(QString text);
|
||||
|
||||
public:
|
||||
static const QString TypeUserDBInstructor;
|
||||
static const QString TypeUserDBTrainee;
|
||||
|
||||
public:
|
||||
//PostgreSQL
|
||||
bool setUserPasswordPostgres(QString userName, QString password);
|
||||
bool checkDriverQPSQLavailable();
|
||||
bool checkUserLMSexist();
|
||||
bool checkDataBaseLMSexist();
|
||||
bool createUser();
|
||||
bool createDB();
|
||||
bool prepareRestoreDBscript();
|
||||
|
||||
protected:
|
||||
//Подключение
|
||||
bool createConnection();
|
||||
void deleteConnection();
|
||||
bool isConnected();
|
||||
|
||||
//Юзер
|
||||
int selectUserID(QString type, QString login, QString password = QStringLiteral(""));
|
||||
QString selectUserNameByLogin(QString type, QString login);
|
||||
bool selectUserLoggedIn(QString type, int id_user);
|
||||
bool selectUserArchived(QString type, int id_user);
|
||||
int updateUserLoggedIn(QString type, int id_user, bool loggedIn);
|
||||
bool updateAllUsersLoggedIn(QString type, bool loggedIn);
|
||||
int updateUserArchived(QString type, int id_user, bool archived);
|
||||
|
||||
//Инструктор
|
||||
QList<Instructor> selectAllInstructors();
|
||||
Instructor selectInstructor(int id_instructor);
|
||||
bool selectInstructorIsAdmin(int id_instructor);
|
||||
int insertInstructor();
|
||||
int insertInstructor(Instructor instructor);
|
||||
int deleteInstructor(int id_instructor);
|
||||
int updateInstructor(Instructor instructor);
|
||||
|
||||
//Группа
|
||||
QList<Group> selectAllGroups();
|
||||
Group selectGroup(int id_group);
|
||||
int insertGroup();
|
||||
int insertGroup(Group group);
|
||||
int deleteGroup(int id_group);
|
||||
int updateGroup(Group group);
|
||||
|
||||
//Обучаемый
|
||||
QList<Trainee> selectAllTrainees();
|
||||
Trainee selectTrainee(int id_trainee);
|
||||
QList<Trainee> selectAllTraineesInGroup(int id_group);
|
||||
QString selectTraineeNameOnComputer(QString computer_name);
|
||||
Trainee selectTraineeOnComputer(QString computer_name);
|
||||
int insertTrainee(int id_group);
|
||||
int insertTrainee(Trainee trainee);
|
||||
int deleteTrainee(int id_trainee);
|
||||
int updateTrainee(Trainee trainee);
|
||||
|
||||
//Тайминг
|
||||
int insertTimingTrainee(int id_trainee);
|
||||
int updateTimingTrainee(int id_trainee, TimingOfTrainee timing);
|
||||
TimingOfTrainee selectTimingTrainee(int id_trainee);
|
||||
|
||||
//Задача AMM
|
||||
int insertTaskAMM(TaskAmmFim task, int id_trainee);
|
||||
int updateTaskAMM(TaskAmmFim task);
|
||||
int updateStatusTaskAMM(int task_id, QString status);
|
||||
int deleteTaskAMM(int id_task);
|
||||
QList<TaskAmmFim> selectTasksAMMofTrainee(int id_trainee);
|
||||
TaskAmmFim selectTaskAMMbyID(int id_task);
|
||||
//Задача FIM
|
||||
int insertTaskFIM(TaskAmmFim task, int id_trainee);
|
||||
int updateTaskFIM(TaskAmmFim task);
|
||||
int updateStatusTaskFIM(int task_id, QString status);
|
||||
int deleteTaskFIM(int id_task);
|
||||
QList<TaskAmmFim> selectTasksFIMofTrainee(int id_trainee);
|
||||
TaskAmmFim selectTaskFIMbyID(int id_task);
|
||||
//int deleteReportFIMforTask(int task_id);
|
||||
//int insertReportFIMforTask(TaskAmmFim task);
|
||||
int updateReportFIMforTask(TaskAmmFim task);
|
||||
|
||||
public:
|
||||
DataBaseSettings getDataBaseSettings();
|
||||
private:
|
||||
int queryExecInt(QString queryStr);
|
||||
QString queryExecString(QString queryStr);
|
||||
bool queryExecBool(QString queryStr);
|
||||
bool queryExec(QString queryStr, QSqlQuery* query);
|
||||
void messageWarningErrorQuery(QString queryStr, QSqlQuery* query);
|
||||
|
||||
protected:
|
||||
QSqlDatabase* db;
|
||||
DataBaseSettings dbSettings;
|
||||
|
||||
QString UserNamePostgres;
|
||||
QString PasswordPostgres;
|
||||
|
||||
QTranslator qtLanguageTranslator;
|
||||
|
||||
private:
|
||||
QWidget* ownerWidget;
|
||||
};
|
||||
|
||||
#endif // DATABASELMS_H
|
||||
255
LibDataBaseInterface/databaselms_Postgresql.cpp
Normal file
255
LibDataBaseInterface/databaselms_Postgresql.cpp
Normal file
@@ -0,0 +1,255 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
#include <QDomDocument>
|
||||
#include <QProcess>
|
||||
|
||||
bool DataBaseLMS::setUserPasswordPostgres(QString userName, QString password)
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
dbCheck.setUserName(userName);
|
||||
dbCheck.setPassword(password);
|
||||
dbCheck.setHostName(settings.dbHostName);
|
||||
dbCheck.setPort(settings.dbPort);
|
||||
|
||||
if (dbCheck.open())
|
||||
{
|
||||
UserNamePostgres = userName;
|
||||
PasswordPostgres = password;
|
||||
|
||||
dbCheck.close();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "PostgreSQL connection error.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool DataBaseLMS::checkDriverQPSQLavailable()
|
||||
{
|
||||
return QSqlDatabase::isDriverAvailable("QPSQL");
|
||||
}
|
||||
|
||||
bool DataBaseLMS::checkUserLMSexist()
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
dbCheck.setUserName(UserNamePostgres);
|
||||
dbCheck.setPassword(PasswordPostgres);
|
||||
dbCheck.setHostName(settings.dbHostName);
|
||||
dbCheck.setPort(settings.dbPort);
|
||||
|
||||
if (dbCheck.open())
|
||||
{
|
||||
QSqlQuery query = QSqlQuery(dbCheck);
|
||||
query.prepare("SELECT 1 FROM pg_roles WHERE rolname = :username");
|
||||
query.bindValue(":username", settings.dbUserName);
|
||||
|
||||
if (query.exec() && query.next())
|
||||
{
|
||||
qDebug() << "The user exists.";
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "The user does not exist.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "PostgreSQL connection error.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool DataBaseLMS::checkDataBaseLMSexist()
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
bool flDBexist = false;
|
||||
|
||||
dbCheck.setUserName(UserNamePostgres);
|
||||
dbCheck.setPassword(PasswordPostgres);
|
||||
dbCheck.setHostName(settings.dbHostName);
|
||||
dbCheck.setPort(settings.dbPort);
|
||||
|
||||
if (dbCheck.open())
|
||||
{
|
||||
QString queryStr = QString("SELECT datname FROM pg_database");
|
||||
QSqlQuery query = QSqlQuery(dbCheck);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{
|
||||
QString nameDB = "";
|
||||
nameDB = query.value(0).toString();
|
||||
if(nameDB == dbSettings.dbName)
|
||||
{
|
||||
flDBexist = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "PostgreSQL connection error.";
|
||||
return false;
|
||||
}
|
||||
return flDBexist;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::createUser()
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
dbCheck.setUserName(UserNamePostgres);
|
||||
dbCheck.setPassword(PasswordPostgres);
|
||||
dbCheck.setHostName(settings.dbHostName);
|
||||
dbCheck.setPort(settings.dbPort);
|
||||
|
||||
if (dbCheck.open())
|
||||
{
|
||||
QString queryStr = QString("CREATE USER %1 WITH ENCRYPTED PASSWORD '%2'").arg(settings.dbUserName, settings.dbPassword);
|
||||
QSqlQuery query = QSqlQuery(dbCheck);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
qDebug() << "User created.";
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "User not created.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "PostgreSQL connection error.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool DataBaseLMS::createDB()
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
dbCheck.setUserName(UserNamePostgres);
|
||||
dbCheck.setPassword(PasswordPostgres);
|
||||
dbCheck.setHostName(settings.dbHostName);
|
||||
dbCheck.setPort(settings.dbPort);
|
||||
|
||||
if (dbCheck.open())
|
||||
{
|
||||
//Создание БД
|
||||
QString queryStr = QString("CREATE DATABASE %1").arg(settings.dbName);
|
||||
QSqlQuery query = QSqlQuery(dbCheck);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
qDebug() << "The database has been created.";
|
||||
|
||||
//Залитие БД
|
||||
if(prepareRestoreDBscript())
|
||||
{
|
||||
QProcess process;
|
||||
QString pgRestorePath = restoreDBscriptName;
|
||||
|
||||
process.start("cmd /C " + pgRestorePath);
|
||||
process.waitForFinished(-1); // Ждать бесконечно, пока процесс не завершится
|
||||
}
|
||||
|
||||
//Назначение владельца
|
||||
QString queryStr = QString("ALTER DATABASE %1 OWNER TO %2").arg(settings.dbName, settings.dbUserName);
|
||||
QSqlQuery query = QSqlQuery(dbCheck);
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
qDebug() << "The owner of database has been changed.";
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "The database was not created..";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "PostgreSQL connection error.";
|
||||
return false;
|
||||
}
|
||||
|
||||
dbCheck.close();
|
||||
|
||||
QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL");
|
||||
|
||||
dbCheck2.setUserName(UserNamePostgres);
|
||||
dbCheck2.setPassword(PasswordPostgres);
|
||||
dbCheck2.setHostName(settings.dbHostName);
|
||||
dbCheck2.setPort(settings.dbPort);
|
||||
dbCheck2.setDatabaseName(settings.dbName);
|
||||
|
||||
if (dbCheck2.open())
|
||||
{
|
||||
QString newOwner = settings.dbUserName;
|
||||
|
||||
// Получаем список таблиц
|
||||
QSqlQuery query(dbCheck2);
|
||||
query.exec("SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public';");
|
||||
|
||||
while (query.next())
|
||||
{
|
||||
QString tableName = query.value(0).toString();
|
||||
QString alterQueryStr = QString("ALTER TABLE %1 OWNER TO %2;").arg(tableName).arg(newOwner);
|
||||
QSqlQuery alterQuery(dbCheck2);
|
||||
|
||||
//dbCheck2.exec(alterQueryStr);
|
||||
|
||||
if(!queryExec(alterQueryStr, &alterQuery))
|
||||
{
|
||||
qDebug() << "Error changing owner for table " << tableName << ":" << dbCheck2.lastError().text();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::prepareRestoreDBscript()
|
||||
{
|
||||
DataBaseSettings settings = getDataBaseSettings();
|
||||
|
||||
QFile file(restoreDBscriptName);
|
||||
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
|
||||
{
|
||||
QTextStream out(&file);
|
||||
out << "set CURRENT_DIR=%~dp0\n";
|
||||
out << "cd %CURRENT_DIR%\n";
|
||||
out << QString("set \"PGPASSWORD=%1\"\n").arg(PasswordPostgres);
|
||||
out << QString("pg_restore -U %1 -h %2 -p %3 -d %4 %5\n").arg(UserNamePostgres,
|
||||
settings.dbHostName,
|
||||
QString::number(settings.dbPort),
|
||||
settings.dbName,
|
||||
backupEmptyName);
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
94
LibDataBaseInterface/databaselms_groups.cpp
Normal file
94
LibDataBaseInterface/databaselms_groups.cpp
Normal file
@@ -0,0 +1,94 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
|
||||
QList<Group> DataBaseLMS::selectAllGroups()
|
||||
{
|
||||
QList<Group> listGroups;
|
||||
|
||||
QString queryStr = QString("SELECT group_id, name "
|
||||
"FROM public.groups "
|
||||
"ORDER BY group_id ASC");
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Группа
|
||||
Group group;
|
||||
group.setID(query.value(0).toInt());
|
||||
group.setName(query.value(1).toString());
|
||||
|
||||
listGroups.append(group);
|
||||
}
|
||||
}
|
||||
|
||||
return listGroups;
|
||||
}
|
||||
|
||||
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(queryExec(queryStr, &query))
|
||||
{
|
||||
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)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.groups (name) "
|
||||
"VALUES ('%1') "
|
||||
"RETURNING groups.group_id").arg(
|
||||
group.getName());
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteGroup(int id_group)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.groups "
|
||||
"WHERE group_id = %1 "
|
||||
"RETURNING groups.group_id").arg(
|
||||
QString::number(id_group));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateGroup(Group group)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.groups SET name = '%1' "
|
||||
"WHERE group_id = %2 "
|
||||
"RETURNING groups.group_id").arg(
|
||||
group.getName(),
|
||||
QString::number(group.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
133
LibDataBaseInterface/databaselms_instructors.cpp
Normal file
133
LibDataBaseInterface/databaselms_instructors.cpp
Normal file
@@ -0,0 +1,133 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
|
||||
QList<Instructor> DataBaseLMS::selectAllInstructors()
|
||||
{
|
||||
QList<Instructor> listInstructors;
|
||||
|
||||
QString queryStr = QString("SELECT user_id, name, login, password, is_admin, archived, logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE users.type = '%1' "
|
||||
"ORDER BY user_id ASC").arg(
|
||||
TypeUserDBInstructor);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Инструктор
|
||||
Instructor instructor;
|
||||
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());
|
||||
|
||||
listInstructors.append(instructor);
|
||||
}
|
||||
}
|
||||
|
||||
return listInstructors;
|
||||
}
|
||||
|
||||
Instructor DataBaseLMS::selectInstructor(int id_instructor)
|
||||
{
|
||||
Instructor instructor;
|
||||
|
||||
QString queryStr = QString("SELECT user_id, name, login, password, is_admin, archived, logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE users.user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectInstructorIsAdmin(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.is_admin "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertInstructor()
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, is_admin, archived, logged_in)"
|
||||
"VALUES ('%1', DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)"
|
||||
"RETURNING user_id").arg(
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, is_admin, archived, logged_in) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', %5, %6, %7) "
|
||||
"RETURNING user_id").arg(
|
||||
TypeUserDBInstructor,
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false",
|
||||
instructor.getLoggedIn() ? "true" : "false");
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteInstructor(int id_instructor)
|
||||
{
|
||||
QString queryStr = QString("DELETE FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' "
|
||||
"RETURNING users.user_id").arg(
|
||||
QString::number(id_instructor),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateInstructor(Instructor instructor)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5, logged_in = %6 "
|
||||
"WHERE user_id = %7 AND users.type = '%8' "
|
||||
"RETURNING users.user_id").arg(
|
||||
instructor.getName(),
|
||||
instructor.getLogin(),
|
||||
instructor.getPassword(),
|
||||
instructor.getIsAdmin() ? "true" : "false",
|
||||
instructor.getArchived() ? "true" : "false",
|
||||
instructor.getLoggedIn() ? "true" : "false",
|
||||
QString::number(instructor.getID()),
|
||||
TypeUserDBInstructor);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
988
LibDataBaseInterface/databaselms_tasks.cpp
Normal file
988
LibDataBaseInterface/databaselms_tasks.cpp
Normal file
@@ -0,0 +1,988 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
int DataBaseLMS::insertTaskAMM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.tasks_amm (title, dm_code, fk_trainee_id) "
|
||||
"VALUES ('%1', '%2', %3) "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
QString::number(id_trainee));
|
||||
|
||||
int task_id = queryExecInt(queryStr);
|
||||
if(!task_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
for(SubProc subProc : task.listSubProc)
|
||||
{
|
||||
subProc.setTitle(subProc.getTitle().replace("'", "''")); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.subprocs (dm_code, title, canplay, fk_task_amm_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
"RETURNING subprocs.subproc_id").arg(
|
||||
subProc.getDmCode(),
|
||||
subProc.getTitle(),
|
||||
subProc.getModeListStr(),
|
||||
QString::number(task_id));
|
||||
|
||||
int subproc_id = queryExecInt(queryStr);
|
||||
if(!subproc_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
resBool = db->commit();
|
||||
return task_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTaskAMM(TaskAmmFim task)
|
||||
{
|
||||
task.ammProcedure.title = task.ammProcedure.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_amm SET title = '%1', dm_code = '%2', status = '%3' "
|
||||
"WHERE task_id = %4 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
task.ammProcedure.title,
|
||||
task.ammProcedure.dmCode,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskAMM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_amm SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskAMM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_amm ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery queryUserSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryUserSEL))
|
||||
{
|
||||
if (queryUserSEL.first())
|
||||
{//Обучаемый
|
||||
id_trainee = queryUserSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.subprocs "
|
||||
"WHERE fk_task_amm_id = %1 ").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery querySubProcDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySubProcDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//--------------------
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_amm.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksAMMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status, "
|
||||
"users.user_id "
|
||||
"FROM public.tasks_amm JOIN public.users ON users.user_id = tasks_amm.fk_trainee_id "
|
||||
"WHERE tasks_amm.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.ammProcedure.title = query.value(1).toString();
|
||||
task.ammProcedure.dmCode = query.value(2).toString();
|
||||
task.status = query.value(3).toString();
|
||||
|
||||
//Выгребаем все subproc для этой задачи
|
||||
queryStr = QString("SELECT subprocs.subproc_id, subprocs.dm_code, subprocs.title, subprocs.canplay, "
|
||||
"tasks_amm.task_id "
|
||||
"FROM public.subprocs JOIN public.tasks_amm ON tasks_amm.task_id = subprocs.fk_task_amm_id "
|
||||
"WHERE subprocs.fk_task_amm_id = %1 "
|
||||
"ORDER BY subprocs.subproc_id ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery querySubProc = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &querySubProc))
|
||||
{
|
||||
while (querySubProc.next())
|
||||
{//Подпроцедура
|
||||
SubProc subProc;
|
||||
int subproc_id = 0;
|
||||
|
||||
subproc_id = querySubProc.value(0).toString().toInt();
|
||||
subProc.setDmCode(querySubProc.value(1).toString());
|
||||
subProc.setTitle(querySubProc.value(2).toString());
|
||||
subProc.setModeListStr(querySubProc.value(3).toString());
|
||||
|
||||
task.listSubProc.append(subProc);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskAMMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_amm.task_id, tasks_amm.title, tasks_amm.dm_code, tasks_amm.status "
|
||||
"FROM public.tasks_amm "
|
||||
"WHERE tasks_amm.task_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Задача
|
||||
task.setID(query.value(0).toInt());
|
||||
task.ammProcedure.title = query.value(1).toString();
|
||||
task.ammProcedure.dmCode = query.value(2).toString();
|
||||
task.status = query.value(3).toString();
|
||||
|
||||
//Выгребаем все subproc для этой задачи
|
||||
queryStr = QString("SELECT subprocs.subproc_id, subprocs.dm_code, subprocs.title, subprocs.canplay, "
|
||||
"tasks_amm.task_id "
|
||||
"FROM public.subprocs JOIN public.tasks_amm ON tasks_amm.task_id = subprocs.fk_task_amm_id "
|
||||
"WHERE subprocs.fk_task_amm_id = %1 "
|
||||
"ORDER BY subprocs.subproc_id ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery querySubProc = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &querySubProc))
|
||||
{
|
||||
while (querySubProc.next())
|
||||
{//Подпроцедура
|
||||
SubProc subProc;
|
||||
int subproc_id = 0;
|
||||
|
||||
subproc_id = querySubProc.value(0).toString().toInt();
|
||||
subProc.setDmCode(querySubProc.value(1).toString());
|
||||
subProc.setTitle(querySubProc.value(2).toString());
|
||||
subProc.setModeListStr(querySubProc.value(3).toString());
|
||||
|
||||
task.listSubProc.append(subProc);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task;
|
||||
}
|
||||
|
||||
|
||||
int DataBaseLMS::insertTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.tasks_fim (title, fk_trainee_id) "
|
||||
"VALUES ('%1', %2) "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
task.title,
|
||||
QString::number(id_trainee));
|
||||
|
||||
int task_id = queryExecInt(queryStr);
|
||||
if(!task_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(Malfunction malfanction : task.malfunctionList)
|
||||
{
|
||||
malfanction.description = malfanction.description.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.malfunctions (num, dm_code, description, fk_task_fim_id) "
|
||||
"VALUES ('%1', '%2', '%3', %4) "
|
||||
"RETURNING malfunctions.malfunction_id").arg(
|
||||
malfanction.num,
|
||||
malfanction.dmCode,
|
||||
malfanction.description,
|
||||
QString::number(task_id));
|
||||
|
||||
int malfunction_id = queryExecInt(queryStr);
|
||||
if(!malfunction_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Sign
|
||||
for(MalfunctionSign sign : malfanction.malfunctionSigns)
|
||||
{
|
||||
sign.description = sign.description.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
queryStr = QString("INSERT INTO public.malf_signs (type, description, fk_malfunction_id) "
|
||||
"VALUES ('%1', '%2', %3) "
|
||||
"RETURNING malf_signs.sign_id").arg(
|
||||
QString::number(sign.type),
|
||||
sign.description,
|
||||
QString::number(malfunction_id));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task_id;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTaskFIM(TaskAmmFim task)
|
||||
{
|
||||
task.title = task.title.replace("'", "''"); //Задваиваем одинарные кавычки
|
||||
|
||||
QString queryStr = QString("UPDATE public.tasks_fim SET title = '%1', status = '%2' "
|
||||
"WHERE task_id = %3 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
task.title,
|
||||
task.status,
|
||||
QString::number(task.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateStatusTaskFIM(int task_id, QString status)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_fim ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if (query.first())
|
||||
{//Обучаемый
|
||||
id_trainee = query.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
|
||||
"WHERE task_id = %2 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
status,
|
||||
QString::number(task_id) );
|
||||
|
||||
QSqlQuery query1 = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &query1))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTaskFIM(int id_task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int id_trainee = 0;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users JOIN public.tasks_fim ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY users.user_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery queryUserSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryUserSEL))
|
||||
{
|
||||
if (queryUserSEL.first())
|
||||
{//Обучаемый
|
||||
id_trainee = queryUserSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
if(!id_trainee)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.malfunction_id ASC").arg(
|
||||
id_task);
|
||||
QSqlQuery queryMalfSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalfSEL))
|
||||
{
|
||||
while (queryMalfSEL.next())
|
||||
{//Неисправность
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalfSEL.value(0).toString().toInt();
|
||||
|
||||
if(malfunction_id)
|
||||
{
|
||||
queryStr = QString("DELETE FROM public.malf_signs "
|
||||
"WHERE fk_malfunction_id = %1 ").arg(
|
||||
malfunction_id);
|
||||
|
||||
QSqlQuery querySignDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySignDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.malfunctions "
|
||||
"WHERE fk_task_fim_id = %1 ").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
QSqlQuery queryMulfDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryMulfDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
int report_id = 0;
|
||||
|
||||
QSqlQuery queryReportsSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryReportsSEL))
|
||||
{
|
||||
if (queryReportsSEL.first())
|
||||
{//Отчет
|
||||
report_id = queryReportsSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryReportsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.tasks_fim "
|
||||
"WHERE task_id = %1 "
|
||||
"RETURNING tasks_fim.task_id").arg(
|
||||
QString::number(id_task));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return id_trainee;
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> DataBaseLMS::selectTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
QList<TaskAmmFim> listTasks;
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, tasks_fim.status, "
|
||||
"users.user_id "
|
||||
"FROM public.tasks_fim JOIN public.users ON users.user_id = tasks_fim.fk_trainee_id "
|
||||
"WHERE tasks_fim.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Задача
|
||||
TaskAmmFim task;
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.title = query.value(1).toString();
|
||||
task.status = query.value(2).toString();
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, "
|
||||
"tasks_fim.task_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.num ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
Malfunction malfanction;
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_signs.sign_id, malf_signs.type, malf_signs.description "
|
||||
"FROM public.malf_signs "
|
||||
"WHERE fk_malfunction_id = %1 "
|
||||
"ORDER BY malf_signs.sign_id ASC").arg(
|
||||
QString::number(malfunction_id));
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &querySign))
|
||||
{
|
||||
while (querySign.next())
|
||||
{//Сигналы
|
||||
MalfunctionSign sign;
|
||||
sign.type = querySign.value(1).toString().toInt();
|
||||
sign.description = querySign.value(2).toString();
|
||||
|
||||
malfanction.malfunctionSigns.append(sign);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
task.addMalfunction(malfanction);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
|
||||
//Выгребаем отчет для этой задачи
|
||||
int report_id = 0;
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task.getID()));
|
||||
|
||||
QSqlQuery queryReport = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReport))
|
||||
{
|
||||
if (queryReport.first())
|
||||
{//Отчет
|
||||
report_id = queryReport.value(0).toInt();
|
||||
task.report.id = report_id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
if(report_id)
|
||||
{//Отчет есть
|
||||
//Выгребаем все item отчета
|
||||
|
||||
queryStr = QString("SELECT report_items.item_id, report_items.text, report_items.doc, report_items.dm_code, report_items.title, report_items.result, report_items.fk_report_id, report_items.number "
|
||||
"FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryItems))
|
||||
{
|
||||
while (queryItems.next())
|
||||
{//report_item
|
||||
FIMReportItem reportItem;
|
||||
reportItem.id = queryItems.value(0).toInt();
|
||||
reportItem.text = queryItems.value(1).toString();
|
||||
reportItem.procedure.doc = queryItems.value(2).toString();
|
||||
reportItem.procedure.dmCode = queryItems.value(3).toString();
|
||||
reportItem.procedure.title = queryItems.value(4).toString();
|
||||
reportItem.procedure.result = queryItems.value(5).toString();
|
||||
//item_report
|
||||
//number
|
||||
|
||||
task.report.itemList.append(reportItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
}
|
||||
|
||||
listTasks.append(task);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<TaskAmmFim>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTasks;
|
||||
}
|
||||
|
||||
TaskAmmFim DataBaseLMS::selectTaskFIMbyID(int id_task)
|
||||
{
|
||||
TaskAmmFim task;
|
||||
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT tasks_fim.task_id, tasks_fim.title, tasks_fim.status "
|
||||
"FROM public.tasks_fim "
|
||||
"WHERE tasks_fim.task_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_task);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
if(query.first())
|
||||
{//Задача
|
||||
|
||||
task.setID(query.value(0).toInt());
|
||||
task.title = query.value(1).toString();
|
||||
task.status = query.value(2).toString();
|
||||
|
||||
//Выгребаем все malfunction для этой задачи
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id, malfunctions.num, malfunctions.dm_code, malfunctions.description, "
|
||||
"tasks_fim.task_id "
|
||||
"FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.fk_task_fim_id "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.num ASC").arg(
|
||||
task.getID());
|
||||
|
||||
QSqlQuery queryMalf = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryMalf))
|
||||
{
|
||||
while (queryMalf.next())
|
||||
{//Неисправность
|
||||
Malfunction malfanction;
|
||||
int malfunction_id = 0;
|
||||
|
||||
malfunction_id = queryMalf.value(0).toString().toInt();
|
||||
malfanction.num = queryMalf.value(1).toString();
|
||||
malfanction.dmCode = queryMalf.value(2).toString();
|
||||
malfanction.description = queryMalf.value(3).toString();
|
||||
|
||||
//Выгребаем сигналы для этой неисправности
|
||||
queryStr = QString("SELECT malf_signs.sign_id, malf_signs.type, malf_signs.description "
|
||||
"FROM public.malf_signs "
|
||||
"WHERE fk_malfunction_id = %1 "
|
||||
"ORDER BY malf_signs.sign_id ASC").arg(
|
||||
QString::number(malfunction_id));
|
||||
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &querySign))
|
||||
{
|
||||
while (querySign.next())
|
||||
{//Сигналы
|
||||
MalfunctionSign sign;
|
||||
sign.type = querySign.value(1).toString().toInt();
|
||||
sign.description = querySign.value(2).toString();
|
||||
|
||||
malfanction.malfunctionSigns.append(sign);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
task.addMalfunction(malfanction);
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
|
||||
//Выгребаем отчет для этой задачи
|
||||
int report_id = 0;
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task.getID()));
|
||||
|
||||
QSqlQuery queryReport = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReport))
|
||||
{
|
||||
if (queryReport.first())
|
||||
{//Отчет
|
||||
report_id = queryReport.value(0).toInt();
|
||||
task.report.id = report_id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
if(report_id)
|
||||
{//Отчет есть
|
||||
//Выгребаем все item отчета
|
||||
|
||||
queryStr = QString("SELECT report_items.item_id, report_items.text, report_items.doc, report_items.dm_code, report_items.title, report_items.result, report_items.fk_report_id, report_items.number "
|
||||
"FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 "
|
||||
"ORDER BY report_items.number ASC").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItems = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryItems))
|
||||
{
|
||||
while (queryItems.next())
|
||||
{//report_item
|
||||
FIMReportItem reportItem;
|
||||
reportItem.id = queryItems.value(0).toInt();
|
||||
reportItem.text = queryItems.value(1).toString();
|
||||
reportItem.procedure.doc = queryItems.value(2).toString();
|
||||
reportItem.procedure.dmCode = queryItems.value(3).toString();
|
||||
reportItem.procedure.title = queryItems.value(4).toString();
|
||||
reportItem.procedure.result = queryItems.value(5).toString();
|
||||
//item_report
|
||||
//number
|
||||
|
||||
task.report.itemList.append(reportItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return TaskAmmFim();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return task;
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateReportFIMforTask(TaskAmmFim task)
|
||||
{
|
||||
QString queryStr;
|
||||
bool resBool = false;
|
||||
int report_id = 0;
|
||||
int task_id = task.getID();
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery queryReportsSEL = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &queryReportsSEL))
|
||||
{
|
||||
if (queryReportsSEL.first())
|
||||
{//Отчет
|
||||
report_id = queryReportsSEL.value(0).toInt();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!report_id)
|
||||
{
|
||||
queryStr = QString("INSERT INTO public.reports (fk_task_fim_id) "
|
||||
"VALUES (%1) "
|
||||
"RETURNING reports.report_id").arg(
|
||||
task.getID());
|
||||
|
||||
report_id = queryExecInt(queryStr);
|
||||
if(!report_id)
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE fk_report_id = %1 ").arg(
|
||||
QString::number(report_id));
|
||||
|
||||
QSqlQuery queryItemsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryItemsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int number = 0;
|
||||
for(FIMReportItem reportItem : task.report.itemList)
|
||||
{
|
||||
queryStr = QString("INSERT INTO public.report_items (text, doc, dm_code, title, result, fk_report_id, number) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', '%5', %6, %7) "
|
||||
"RETURNING report_items.item_id").arg(
|
||||
reportItem.text,
|
||||
reportItem.procedure.doc,
|
||||
reportItem.procedure.dmCode,
|
||||
reportItem.procedure.title,
|
||||
reportItem.procedure.result,
|
||||
QString::number(report_id),
|
||||
QString::number(++number));
|
||||
|
||||
if(!queryExecInt(queryStr))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
queryStr = QString("UPDATE public.tasks_fim SET status = '%1' "
|
||||
"WHERE task_id = %2 ").arg(
|
||||
"checkup",
|
||||
QString::number(task_id) );
|
||||
|
||||
QSqlQuery queryTaskUPD = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTaskUPD))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return report_id;
|
||||
}
|
||||
538
LibDataBaseInterface/databaselms_trainees.cpp
Normal file
538
LibDataBaseInterface/databaselms_trainees.cpp
Normal file
@@ -0,0 +1,538 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
|
||||
QList<Trainee> DataBaseLMS::selectAllTrainees()
|
||||
{
|
||||
bool resBool = false;
|
||||
|
||||
QList<Trainee> listTrainees;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.type = '%1' "
|
||||
"ORDER BY groups.name, users.name ASC").arg(
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
Trainee trainee;
|
||||
|
||||
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);
|
||||
|
||||
//Тайминг
|
||||
TimingOfTrainee timing(trainee.getID());
|
||||
|
||||
QString queryStrSELtiming = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.fk_trainee_id "
|
||||
"FROM public.timings "
|
||||
"WHERE fk_trainee_id = '%1'").arg(trainee.getID());
|
||||
|
||||
QSqlQuery querySelTiming = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStrSELtiming, &querySelTiming))
|
||||
{
|
||||
if (querySelTiming.first())
|
||||
{//Тайминг
|
||||
timing.setID(querySelTiming.value(0).toInt());
|
||||
timing.setEntryTime(querySelTiming.value(1).toDateTime());
|
||||
timing.setExitTime(querySelTiming.value(2).toDateTime());
|
||||
timing.setOperatingTime(querySelTiming.value(3).toTime());
|
||||
timing.setTraineeID(querySelTiming.value(4).toInt());
|
||||
}
|
||||
|
||||
trainee.setTiming(timing);
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<Trainee>();
|
||||
}
|
||||
|
||||
listTrainees.append(trainee);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return QList<Trainee>();
|
||||
}
|
||||
|
||||
resBool = db->commit();
|
||||
return listTrainees;
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTrainee(int id_trainee)
|
||||
{
|
||||
Trainee trainee;
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.user_id = %1 AND users.type = '%2' "
|
||||
"ORDER BY groups.name, users.name ASC").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
return trainee;
|
||||
}
|
||||
|
||||
QList<Trainee> DataBaseLMS::selectAllTraineesInGroup(int id_group)
|
||||
{
|
||||
QList<Trainee> listTrainees;
|
||||
|
||||
QString queryStr = QString("SELECT users.user_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE users.fk_group_id = %1 AND users.type = '%2' "
|
||||
"ORDER BY groups.name, users.name ASC").arg(
|
||||
QString::number(id_group),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
while (query.next())
|
||||
{//Обучаемый
|
||||
Trainee trainee;
|
||||
|
||||
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);
|
||||
|
||||
listTrainees.append(trainee);
|
||||
}
|
||||
}
|
||||
|
||||
return listTrainees;
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectTraineeNameOnComputer(QString computer_name)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.name "
|
||||
"FROM public.users JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"WHERE computers.name = '%1' AND users.type = '%2' ").arg(
|
||||
computer_name,
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
Trainee DataBaseLMS::selectTraineeOnComputer(QString computer_name)
|
||||
{
|
||||
Trainee trainee;
|
||||
|
||||
QString queryStr = QString("SELECT users.trainee_id, users.name, users.login, users.password, users.archived, users.logged_in, "
|
||||
"groups.group_id, groups.name, "
|
||||
"computers.computer_id, computers.name, computers.ip_address, "
|
||||
"classrooms.classroom_id, classrooms.name "
|
||||
"FROM public.users JOIN public.groups ON groups.group_id = users.fk_group_id "
|
||||
"LEFT OUTER JOIN public.computers ON computers.computer_id = users.fk_computer_id "
|
||||
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.fk_classroom_id "
|
||||
"WHERE computers.name = '%1' AND users.type = '%2' ").arg(
|
||||
computer_name,
|
||||
TypeUserDBTrainee);
|
||||
|
||||
QSqlQuery query = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &query))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
return trainee;
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTrainee(int id_group)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, archived, logged_in, fk_group_id) "
|
||||
"VALUES ('%1', DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, %2) "
|
||||
"RETURNING users.user_id").arg(
|
||||
TypeUserDBTrainee,
|
||||
QString::number(id_group));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTrainee(Trainee trainee)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.users (type, name, login, password, archived, logged_in, fk_group_id) "
|
||||
"VALUES ('%1', '%2', '%3', '%4', %5, %6, %7) "
|
||||
"RETURNING users.user_id").arg(
|
||||
TypeUserDBTrainee,
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getLoggedIn() ? "true" : "false",
|
||||
QString::number(trainee.getGroup().getID()));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::deleteTrainee(int id_trainee)
|
||||
{
|
||||
QString queryStr;
|
||||
int res = 0;
|
||||
bool resBool = false;
|
||||
|
||||
resBool = db->transaction();
|
||||
|
||||
|
||||
//Удаление задач AMM
|
||||
/*Выборка задач AMM для этого обучаемого*/
|
||||
queryStr = QString("SELECT tasks_amm.task_id "
|
||||
"FROM public.tasks_amm "
|
||||
"WHERE tasks_amm.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_amm.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery queryTasksAMMSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryTasksAMMSEL))
|
||||
{
|
||||
while (queryTasksAMMSEL.next())
|
||||
{//Задача
|
||||
int task_id = queryTasksAMMSEL.value(0).toInt();
|
||||
|
||||
queryStr = QString("DELETE FROM public.subprocs "
|
||||
"WHERE fk_task_amm_id = %1 ").arg(
|
||||
QString::number(task_id));
|
||||
|
||||
QSqlQuery querySubProcDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySubProcDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
queryStr = QString("DELETE FROM public.tasks_amm "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTasksAMMDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTasksAMMDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//Удаление задач FIM
|
||||
|
||||
/*Выборка задач FIM для этого обучаемого*/
|
||||
queryStr = QString("SELECT tasks_fim.task_id "
|
||||
"FROM public.tasks_fim "
|
||||
"WHERE tasks_fim.fk_trainee_id = %1 "
|
||||
"ORDER BY tasks_fim.task_id ASC").arg(
|
||||
id_trainee);
|
||||
|
||||
QSqlQuery queryTasksFIMSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryTasksFIMSEL))
|
||||
{
|
||||
while (queryTasksFIMSEL.next())
|
||||
{//Задача
|
||||
int task_id = queryTasksFIMSEL.value(0).toInt();
|
||||
|
||||
/*Выборка неисправностей для этой задачи*/
|
||||
queryStr = QString("SELECT malfunctions.malfunction_id "
|
||||
"FROM public.malfunctions "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 "
|
||||
"ORDER BY malfunctions.malfunction_id ASC").arg(
|
||||
task_id);
|
||||
|
||||
QSqlQuery queryMulfSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryMulfSEL))
|
||||
{
|
||||
while (queryMulfSEL.next())
|
||||
{//Неисправность
|
||||
int mulf_id = queryMulfSEL.value(0).toInt();
|
||||
|
||||
/*Удаление сигналов для этой неисправности*/
|
||||
queryStr = QString("DELETE FROM public.malf_signs "
|
||||
"WHERE malf_signs.fk_malfunction_id = %1 ").arg(
|
||||
mulf_id);
|
||||
QSqlQuery querySign = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &querySign))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление неисправностей*/
|
||||
queryStr = QString("DELETE FROM public.malfunctions "
|
||||
"WHERE malfunctions.fk_task_fim_id = %1 ").arg(
|
||||
task_id);
|
||||
QSqlQuery queryMulfDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryMulfDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление отчетов для задачи*/
|
||||
/*Выборка отчетов для этой задачи*/
|
||||
queryStr = QString("SELECT reports.report_id "
|
||||
"FROM public.reports "
|
||||
"WHERE reports.fk_task_fim_id = %1 "
|
||||
"ORDER BY reports.report_id ASC").arg(
|
||||
task_id);
|
||||
QSqlQuery queryReportsSEL = QSqlQuery(*db);
|
||||
if(queryExec(queryStr, &queryReportsSEL))
|
||||
{
|
||||
while (queryReportsSEL.next())
|
||||
{//отчет
|
||||
int report_id = queryReportsSEL.value(0).toInt();
|
||||
|
||||
/*Удаление items для этого отчета*/
|
||||
queryStr = QString("DELETE FROM public.report_items "
|
||||
"WHERE report_items.fk_report_id = %1 ").arg(
|
||||
report_id);
|
||||
QSqlQuery queryReportDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление отчетов*/
|
||||
queryStr = QString("DELETE FROM public.reports "
|
||||
"WHERE reports.fk_task_fim_id = %1 ").arg(
|
||||
task_id);
|
||||
QSqlQuery queryReportsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryReportsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
// ////////////////////////////
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление непосредственно задач FIM*/
|
||||
queryStr = QString("DELETE FROM public.tasks_fim "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTasksFIMDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTasksFIMDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*Удаление таймингов для обучаемого*/
|
||||
queryStr = QString("DELETE FROM public.timings "
|
||||
"WHERE fk_trainee_id = %1 ").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
QSqlQuery queryTimingsDEL = QSqlQuery(*db);
|
||||
if(!queryExec(queryStr, &queryTimingsDEL))
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
// ////////////////////////////
|
||||
|
||||
|
||||
//Удаление обучаемого
|
||||
queryStr = QString("DELETE FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' "
|
||||
"RETURNING users.user_id").arg(
|
||||
QString::number(id_trainee),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
res = queryExecInt(queryStr);
|
||||
if(res)
|
||||
{
|
||||
resBool = db->commit();
|
||||
return res;
|
||||
}
|
||||
else
|
||||
{
|
||||
resBool = db->rollback();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTrainee(Trainee trainee)
|
||||
{
|
||||
QString computer_id = (trainee.getComputer().getID() == 0 ? QStringLiteral("null") : QString::number(trainee.getComputer().getID()));
|
||||
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET name = '%1', login = '%2', password = '%3', archived = %4, logged_in = %5, "
|
||||
"fk_group_id = %6, "
|
||||
"fk_computer_id = %7 "
|
||||
"WHERE user_id = %8 AND users.type = '%9' "
|
||||
"RETURNING users.user_id").arg(
|
||||
trainee.getName(),
|
||||
trainee.getLogin(),
|
||||
trainee.getPassword(),
|
||||
trainee.getArchived() ? "true" : "false",
|
||||
trainee.getLoggedIn() ? "true" : "false",
|
||||
QString::number(trainee.getGroup().getID()),
|
||||
computer_id,
|
||||
QString::number(trainee.getID()),
|
||||
TypeUserDBTrainee);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::insertTimingTrainee(int id_trainee)
|
||||
{
|
||||
QString queryStr = QString("INSERT INTO public.timings (entry_time, exit_time, operating_time, fk_trainee_id) "
|
||||
"VALUES (DEFAULT, DEFAULT, DEFAULT, %1) "
|
||||
"RETURNING timings.timing_id").arg(
|
||||
QString::number(id_trainee));
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateTimingTrainee(int id_trainee, TimingOfTrainee timing)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.timings "
|
||||
"SET entry_time = '%1', exit_time = '%2', operating_time = '%3', fk_trainee_id = %4 "
|
||||
"WHERE timing_id = %5 "
|
||||
"RETURNING timings.timing_id").arg(
|
||||
timing.getEntryTimeS(),
|
||||
timing.getExitTimeS(),
|
||||
timing.getOperatingTimeS(),
|
||||
QString::number(id_trainee),
|
||||
QString::number(timing.getID()) );
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
TimingOfTrainee DataBaseLMS::selectTimingTrainee(int id_trainee)
|
||||
{
|
||||
TimingOfTrainee timing(id_trainee);
|
||||
|
||||
QString queryStr = QString("SELECT timings.timing_id, timings.entry_time, timings.exit_time, timings.operating_time, timings.fk_trainee_id "
|
||||
"FROM public.timings "
|
||||
"WHERE fk_trainee_id = '%1'").arg(id_trainee);
|
||||
|
||||
QSqlQuery querySel = QSqlQuery(*db);
|
||||
|
||||
if(queryExec(queryStr, &querySel))
|
||||
{
|
||||
if (querySel.first())
|
||||
{//Тайминг
|
||||
timing.setID(querySel.value(0).toInt());
|
||||
timing.setEntryTime(querySel.value(1).toDateTime());
|
||||
timing.setExitTime(querySel.value(2).toDateTime());
|
||||
timing.setOperatingTime(querySel.value(3).toTime());
|
||||
timing.setTraineeID(querySel.value(4).toInt());
|
||||
}
|
||||
}
|
||||
|
||||
return timing;
|
||||
}
|
||||
101
LibDataBaseInterface/databaselms_users.cpp
Normal file
101
LibDataBaseInterface/databaselms_users.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
#include "databaselms.h"
|
||||
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlDriver>
|
||||
|
||||
|
||||
int DataBaseLMS::selectUserID(QString type, QString login, QString password)
|
||||
{
|
||||
QString queryStr;
|
||||
|
||||
if(password != QStringLiteral(""))
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND password = '%2' AND users.type = '%3' ").arg(
|
||||
login,
|
||||
password,
|
||||
type);
|
||||
}
|
||||
else
|
||||
{
|
||||
queryStr = QString("SELECT users.user_id "
|
||||
"FROM public.users "
|
||||
"WHERE login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
type);
|
||||
}
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
QString DataBaseLMS::selectUserNameByLogin(QString type, QString login)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.name "
|
||||
"FROM public.users "
|
||||
"WHERE users.login = '%1' AND users.type = '%2' ").arg(
|
||||
login,
|
||||
type );
|
||||
|
||||
return queryExecString(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectUserLoggedIn(QString type, int id_user)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.logged_in "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_user),
|
||||
type );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::selectUserArchived(QString type, int id_user)
|
||||
{
|
||||
QString queryStr = QString("SELECT users.archived "
|
||||
"FROM public.users "
|
||||
"WHERE user_id = %1 AND users.type = '%2' ").arg(
|
||||
QString::number(id_user),
|
||||
type );
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateUserLoggedIn(QString type, int id_user, bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
QString::number(id_user),
|
||||
type);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
|
||||
bool DataBaseLMS::updateAllUsersLoggedIn(QString type, bool loggedIn)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET logged_in = %1 "
|
||||
"WHERE users.type = '%2' ").arg(
|
||||
loggedIn ? "true" : "false",
|
||||
type);
|
||||
|
||||
return queryExecBool(queryStr);
|
||||
}
|
||||
|
||||
int DataBaseLMS::updateUserArchived(QString type, int id_user, bool archived)
|
||||
{
|
||||
QString queryStr = QString("UPDATE public.users "
|
||||
"SET archived = %1 "
|
||||
"WHERE user_id = %2 AND users.type = '%3' "
|
||||
"RETURNING users.user_id").arg(
|
||||
archived ? "true" : "false",
|
||||
QString::number(id_user),
|
||||
type);
|
||||
|
||||
return queryExecInt(queryStr);
|
||||
}
|
||||
13
LibDataBaseInterface/group.cpp
Normal file
13
LibDataBaseInterface/group.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "group.h"
|
||||
|
||||
Group::Group():
|
||||
BasicEntity()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Group::Group(int id, QString name):
|
||||
BasicEntity(id, name)
|
||||
{
|
||||
|
||||
}
|
||||
13
LibDataBaseInterface/group.h
Normal file
13
LibDataBaseInterface/group.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef GROUP_H
|
||||
#define GROUP_H
|
||||
|
||||
#include "basicentity.h"
|
||||
|
||||
class DATABASELMS_EXPORT Group: public BasicEntity
|
||||
{
|
||||
public:
|
||||
Group();
|
||||
Group(int id, QString name);
|
||||
};
|
||||
|
||||
#endif // GROUP_H
|
||||
14
LibDataBaseInterface/hashtools.cpp
Normal file
14
LibDataBaseInterface/hashtools.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include "hashtools.h"
|
||||
#include <QCryptographicHash>
|
||||
|
||||
HashTools::HashTools()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString HashTools::hashingMD5string(QString str)
|
||||
{// Вычисление MD5 хэша строки
|
||||
|
||||
QByteArray md5Hash = QCryptographicHash::hash(str.toUtf8(), QCryptographicHash::Md5).toHex();
|
||||
return QString(md5Hash);
|
||||
}
|
||||
15
LibDataBaseInterface/hashtools.h
Normal file
15
LibDataBaseInterface/hashtools.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef HASHTOOLS_H
|
||||
#define HASHTOOLS_H
|
||||
|
||||
#include <QString>
|
||||
#include "DataBaseLMS_global.h"
|
||||
|
||||
class DATABASELMS_EXPORT HashTools
|
||||
{
|
||||
public:
|
||||
HashTools();
|
||||
public:
|
||||
static QString hashingMD5string(QString str);
|
||||
};
|
||||
|
||||
#endif // HASHTOOLS_H
|
||||
8
LibDataBaseInterface/instructor.cpp
Normal file
8
LibDataBaseInterface/instructor.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include "instructor.h"
|
||||
|
||||
Instructor::Instructor():
|
||||
User()//,
|
||||
//isAdmin()
|
||||
{
|
||||
TypeUserDB = User::TypeUserDBInstructor;
|
||||
}
|
||||
18
LibDataBaseInterface/instructor.h
Normal file
18
LibDataBaseInterface/instructor.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef INSTRUCTOR_H
|
||||
#define INSTRUCTOR_H
|
||||
|
||||
#include "user.h"
|
||||
|
||||
class DATABASELMS_EXPORT Instructor: public User
|
||||
{
|
||||
public:
|
||||
Instructor();
|
||||
|
||||
void setIsAdmin(bool isAdmin){this->isAdmin = isAdmin;}
|
||||
bool getIsAdmin(){return isAdmin;}
|
||||
|
||||
private:
|
||||
//bool isAdmin;
|
||||
};
|
||||
|
||||
#endif // INSTRUCTOR_H
|
||||
369
LibDataBaseInterface/interfacedatabaselms.cpp
Normal file
369
LibDataBaseInterface/interfacedatabaselms.cpp
Normal file
@@ -0,0 +1,369 @@
|
||||
#include <QCoreApplication>
|
||||
#include <QSqlError>
|
||||
#include <QDateTime>
|
||||
#include <QTime>
|
||||
#include "interfacedatabaselms.h"
|
||||
|
||||
InterfaceDataBaseLMS::InterfaceDataBaseLMS(QWidget *ownerWidget, QObject *parent):
|
||||
DataBaseLMS(ownerWidget, parent),
|
||||
ownerWidget(ownerWidget)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::connectionToDB()
|
||||
{
|
||||
if(!createConnection())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::disConnectionFromDB()
|
||||
{
|
||||
deleteConnection();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::DBisConnected()
|
||||
{
|
||||
return isConnected();
|
||||
}
|
||||
|
||||
|
||||
//Инструкторы
|
||||
|
||||
bool InterfaceDataBaseLMS::authorizationInstructor(QString login, QString password, ErrorAuth& error)
|
||||
{
|
||||
error = ErrorAuth::errNo;
|
||||
|
||||
if(int id = selectUserID(DataBaseLMS::TypeUserDBInstructor, login, password))
|
||||
{
|
||||
if(selectUserArchived(DataBaseLMS::TypeUserDBInstructor, id))
|
||||
{
|
||||
error = ErrorAuth::errArchived;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(selectUserLoggedIn(DataBaseLMS::TypeUserDBInstructor, id))
|
||||
{
|
||||
error = ErrorAuth::errAlreadyLogIn;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(updateUserLoggedIn(DataBaseLMS::TypeUserDBInstructor, id, true))
|
||||
return true;
|
||||
else
|
||||
error = ErrorAuth::errDB;
|
||||
}
|
||||
else
|
||||
error = ErrorAuth::errLoginOrPassword;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::deAuthorizationInstructor(QString login)
|
||||
{
|
||||
if(int id = selectUserID(DataBaseLMS::TypeUserDBInstructor, login))
|
||||
{
|
||||
if(updateUserLoggedIn(DataBaseLMS::TypeUserDBInstructor, id, false))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::deAuthorizationAllInstructors()
|
||||
{
|
||||
return updateAllUsersLoggedIn(DataBaseLMS::TypeUserDBInstructor, false);
|
||||
}
|
||||
|
||||
QString InterfaceDataBaseLMS::getNameInstructorByLogin(QString login)
|
||||
{
|
||||
return selectUserNameByLogin(DataBaseLMS::TypeUserDBInstructor, login);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::getIdInstructorByLogin(QString login)
|
||||
{
|
||||
return selectUserID(DataBaseLMS::TypeUserDBInstructor, login);
|
||||
}
|
||||
|
||||
QList<Instructor> InterfaceDataBaseLMS::getListInstructors()
|
||||
{
|
||||
return selectAllInstructors();
|
||||
}
|
||||
|
||||
Instructor InterfaceDataBaseLMS::getInstructor(int id)
|
||||
{
|
||||
return selectInstructor(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newInstructor()
|
||||
{
|
||||
return insertInstructor();
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::delInstructor(int id)
|
||||
{
|
||||
return deleteInstructor(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::editInstructor(Instructor instructor)
|
||||
{
|
||||
return updateInstructor(instructor);
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::isAdminInstructor(int id)
|
||||
{
|
||||
return selectInstructorIsAdmin(id);
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::isArchivedInstructor(int id)
|
||||
{
|
||||
return selectUserArchived(DataBaseLMS::TypeUserDBInstructor, id);
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::isLoggedInInstructor(int id)
|
||||
{
|
||||
return selectUserLoggedIn(DataBaseLMS::TypeUserDBInstructor, id);
|
||||
}
|
||||
|
||||
|
||||
//Инструкторы
|
||||
|
||||
bool InterfaceDataBaseLMS::authorizationTrainee(QString login, QString password, ErrorAuth& error, QString classroom_name, QString computer_name)
|
||||
{
|
||||
error = ErrorAuth::errNo;
|
||||
|
||||
if(int id = selectUserID(DataBaseLMS::TypeUserDBTrainee, login, password))
|
||||
{
|
||||
if(selectUserArchived(DataBaseLMS::TypeUserDBTrainee, id))
|
||||
{
|
||||
error = ErrorAuth::errArchived;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(selectUserLoggedIn(DataBaseLMS::TypeUserDBTrainee, id))
|
||||
{
|
||||
error = ErrorAuth::errAlreadyLogIn;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(updateUserLoggedIn(DataBaseLMS::TypeUserDBTrainee, id, true))
|
||||
return true;
|
||||
else
|
||||
error = ErrorAuth::errDB;
|
||||
}
|
||||
else
|
||||
error = ErrorAuth::errLoginOrPassword;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::deAuthorizationTrainee(QString login)
|
||||
{
|
||||
if(int id = selectUserID(DataBaseLMS::TypeUserDBTrainee, login))
|
||||
{
|
||||
if(updateUserLoggedIn(DataBaseLMS::TypeUserDBTrainee, id, false))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::deAuthorizationAllTrainees()
|
||||
{
|
||||
return updateAllUsersLoggedIn(DataBaseLMS::TypeUserDBTrainee, false);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::entryTraineeOnSimulator(int id_trainee)
|
||||
{
|
||||
TimingOfTrainee timing(id_trainee);
|
||||
|
||||
timing = selectTimingTrainee(id_trainee);
|
||||
|
||||
if(!timing.getID())
|
||||
{//Еще нет записи
|
||||
int timing_id = insertTimingTrainee(id_trainee);
|
||||
timing.setID(timing_id);
|
||||
|
||||
if(!timing_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
timing.fixEntry();
|
||||
|
||||
return updateTimingTrainee(id_trainee, timing);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::exitTraineeFromSimulator(int id_trainee)
|
||||
{
|
||||
TimingOfTrainee timing(id_trainee);
|
||||
|
||||
timing = selectTimingTrainee(id_trainee);
|
||||
|
||||
if(!timing.getID())
|
||||
{//Еще нет записи
|
||||
int timing_id = insertTimingTrainee(id_trainee);
|
||||
timing.setID(timing_id);
|
||||
|
||||
if(!timing_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
timing.fixExit();
|
||||
|
||||
return updateTimingTrainee(id_trainee, timing);
|
||||
}
|
||||
|
||||
QString InterfaceDataBaseLMS::getNameTraineeOnComputer(QString computer_name)
|
||||
{
|
||||
return selectTraineeNameOnComputer(computer_name);
|
||||
}
|
||||
|
||||
Trainee InterfaceDataBaseLMS::getTraineeOnComputer(QString computer_name)
|
||||
{
|
||||
return selectTraineeOnComputer(computer_name);
|
||||
}
|
||||
|
||||
QString InterfaceDataBaseLMS::getNameTraineeByLogin(QString login)
|
||||
{
|
||||
return selectUserNameByLogin(DataBaseLMS::TypeUserDBTrainee, login);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::getIdTraineeByLogin(QString login)
|
||||
{
|
||||
return selectUserID(DataBaseLMS::TypeUserDBTrainee, login);
|
||||
}
|
||||
|
||||
QList<Trainee> InterfaceDataBaseLMS::getListTraineesInGroup(int id)
|
||||
{
|
||||
return selectAllTraineesInGroup(id);
|
||||
}
|
||||
|
||||
QList<Group> InterfaceDataBaseLMS::getListGroups()
|
||||
{
|
||||
return selectAllGroups();
|
||||
}
|
||||
|
||||
QList<Trainee> InterfaceDataBaseLMS::getListTrainees()
|
||||
{
|
||||
return selectAllTrainees();
|
||||
}
|
||||
|
||||
Trainee InterfaceDataBaseLMS::getTrainee(int id)
|
||||
{
|
||||
return selectTrainee(id);
|
||||
}
|
||||
|
||||
Group InterfaceDataBaseLMS::getGroup(int id)
|
||||
{
|
||||
return selectGroup(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newGroup()
|
||||
{
|
||||
return insertGroup();
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::delGroup(int id)
|
||||
{
|
||||
return deleteGroup(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::editGroup(Group group)
|
||||
{
|
||||
return updateGroup(group);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newTaskAMM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
return insertTaskAMM(task, id_trainee);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::delTaskAMM(int id)
|
||||
{
|
||||
return deleteTaskAMM(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::editTaskAMM(TaskAmmFim task)
|
||||
{
|
||||
return updateTaskAMM(task);
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksAMMofTrainee(int id_trainee)
|
||||
{
|
||||
return selectTasksAMMofTrainee(id_trainee);
|
||||
}
|
||||
|
||||
QList<TaskAmmFim> InterfaceDataBaseLMS::getListTasksFIMofTrainee(int id_trainee)
|
||||
{
|
||||
return selectTasksFIMofTrainee(id_trainee);
|
||||
}
|
||||
|
||||
TaskAmmFim InterfaceDataBaseLMS::getTaskAMMbyID(int id_task)
|
||||
{
|
||||
return selectTaskAMMbyID(id_task);
|
||||
}
|
||||
|
||||
TaskAmmFim InterfaceDataBaseLMS::getTaskFIMbyID(int id_task)
|
||||
{
|
||||
return selectTaskFIMbyID(id_task);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newTaskFIM(TaskAmmFim task, int id_trainee)
|
||||
{
|
||||
return insertTaskFIM(task, id_trainee);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::delTaskFIM(int id)
|
||||
{
|
||||
return deleteTaskFIM(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::editTaskFIM(TaskAmmFim task)
|
||||
{
|
||||
return updateTaskFIM(task);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::replaceReportFIM(TaskAmmFim task)
|
||||
{
|
||||
return updateReportFIMforTask(task);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::changeStatusTaskFIM(int id_task, QString status)
|
||||
{
|
||||
return updateStatusTaskFIM(id_task, status);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::changeStatusTaskAMM(int id_task, QString status)
|
||||
{
|
||||
return updateStatusTaskAMM(id_task, status);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::newTrainee(int id_group)
|
||||
{
|
||||
return insertTrainee(id_group);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::delTrainee(int id)
|
||||
{
|
||||
return deleteTrainee(id);
|
||||
}
|
||||
|
||||
int InterfaceDataBaseLMS::editTrainee(Trainee trainee)
|
||||
{
|
||||
return updateTrainee(trainee);
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::isArchivedTrainee(int id)
|
||||
{
|
||||
return selectUserArchived(DataBaseLMS::TypeUserDBTrainee, id);
|
||||
}
|
||||
|
||||
bool InterfaceDataBaseLMS::isLoggedInTrainee(int id)
|
||||
{
|
||||
return selectUserLoggedIn(DataBaseLMS::TypeUserDBTrainee, id);
|
||||
}
|
||||
113
LibDataBaseInterface/interfacedatabaselms.h
Normal file
113
LibDataBaseInterface/interfacedatabaselms.h
Normal file
@@ -0,0 +1,113 @@
|
||||
#ifndef INTERFACEDATABASELMS_H
|
||||
#define INTERFACEDATABASELMS_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QWidget>
|
||||
#include <QTranslator>
|
||||
|
||||
#include "DataBaseLMS_global.h"
|
||||
#include "databaselms.h"
|
||||
|
||||
class DATABASELMS_EXPORT InterfaceDataBaseLMS : public DataBaseLMS
|
||||
{
|
||||
public:
|
||||
enum ErrorAuth
|
||||
{
|
||||
errNo = 0,
|
||||
errDB,
|
||||
errLoginOrPassword,
|
||||
errArchived,
|
||||
errAlreadyLogIn
|
||||
};
|
||||
public:
|
||||
InterfaceDataBaseLMS(QWidget *ownerWidget, QObject *parent = nullptr);
|
||||
|
||||
public:
|
||||
//Соединение
|
||||
bool connectionToDB();
|
||||
bool disConnectionFromDB();
|
||||
bool DBisConnected();
|
||||
|
||||
|
||||
//Инструкторы
|
||||
|
||||
bool authorizationInstructor(QString login, QString password, ErrorAuth& error);
|
||||
bool deAuthorizationInstructor(QString login);
|
||||
bool deAuthorizationAllInstructors();
|
||||
|
||||
QString getNameInstructorByLogin(QString login);
|
||||
int getIdInstructorByLogin(QString login);
|
||||
|
||||
QList<Instructor> getListInstructors();
|
||||
Instructor getInstructor(int id);
|
||||
|
||||
int newInstructor();
|
||||
int delInstructor(int id);
|
||||
int editInstructor(Instructor instructor);
|
||||
|
||||
bool isAdminInstructor(int id);
|
||||
bool isArchivedInstructor(int id);
|
||||
bool isLoggedInInstructor(int id);
|
||||
|
||||
|
||||
//Обучаемые
|
||||
|
||||
bool authorizationTrainee(QString login, QString password, ErrorAuth& error, QString classroom_name, QString computer_name);
|
||||
bool deAuthorizationTrainee(QString login);
|
||||
bool deAuthorizationAllTrainees();
|
||||
|
||||
QString getNameTraineeOnComputer(QString computer_name);
|
||||
Trainee getTraineeOnComputer(QString computer_name);
|
||||
|
||||
QString getNameTraineeByLogin(QString login);
|
||||
int getIdTraineeByLogin(QString login);
|
||||
|
||||
QList<Trainee> getListTraineesInGroup(int id);
|
||||
QList<Group> getListGroups();
|
||||
QList<Trainee> getListTrainees();
|
||||
Trainee getTrainee(int id);
|
||||
|
||||
int newTrainee(int id_group);
|
||||
int delTrainee(int id);
|
||||
int editTrainee(Trainee trainee);
|
||||
|
||||
bool isArchivedTrainee(int id);
|
||||
bool isLoggedInTrainee(int id);
|
||||
|
||||
//Регистрация тайминга Обучаемого
|
||||
int entryTraineeOnSimulator(int id_trainee);
|
||||
int exitTraineeFromSimulator(int id_trainee);
|
||||
|
||||
|
||||
//Группы
|
||||
|
||||
Group getGroup(int group_id);
|
||||
int newGroup();
|
||||
int delGroup(int id);
|
||||
int editGroup(Group group);
|
||||
|
||||
|
||||
//Задачи
|
||||
|
||||
int newTaskAMM(TaskAmmFim task, int id_trainee);
|
||||
int delTaskAMM(int id);
|
||||
int editTaskAMM(TaskAmmFim task);
|
||||
|
||||
QList<TaskAmmFim> getListTasksAMMofTrainee(int id_trainee);
|
||||
QList<TaskAmmFim> getListTasksFIMofTrainee(int id_trainee);
|
||||
|
||||
TaskAmmFim getTaskAMMbyID(int id_task);
|
||||
TaskAmmFim getTaskFIMbyID(int id_task);
|
||||
|
||||
int newTaskFIM(TaskAmmFim task, int id_trainee);
|
||||
int delTaskFIM(int id);
|
||||
int editTaskFIM(TaskAmmFim task);
|
||||
int replaceReportFIM(TaskAmmFim task);
|
||||
int changeStatusTaskFIM(int id_task, QString status);
|
||||
int changeStatusTaskAMM(int id_task, QString status);
|
||||
|
||||
private:
|
||||
QWidget* ownerWidget;
|
||||
};
|
||||
|
||||
#endif // INTERFACEDATABASELMS_H
|
||||
3
LibDataBaseInterface/resources/blankXML/ErrorDB.xml
Normal file
3
LibDataBaseInterface/resources/blankXML/ErrorDB.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<ErrorDB>
|
||||
</ErrorDB>
|
||||
127
LibDataBaseInterface/tasksAmmFim.cpp
Normal file
127
LibDataBaseInterface/tasksAmmFim.cpp
Normal file
@@ -0,0 +1,127 @@
|
||||
#include "tasksAmmFim.h"
|
||||
#include <QDomDocument>
|
||||
#include <QFile>
|
||||
|
||||
|
||||
int TaskAmmFim::lastID = 1;
|
||||
|
||||
void TaskAmmFim::initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date)
|
||||
{
|
||||
this->id = id;
|
||||
this->type = type;
|
||||
this->title = title;
|
||||
this->status = status;
|
||||
this->created_date = created_date;
|
||||
this->changed_date = changed_date;
|
||||
}
|
||||
|
||||
void TaskAmmFim::addMalfunction(Malfunction malfunction)
|
||||
{
|
||||
malfunctionList.append(malfunction);
|
||||
}
|
||||
|
||||
void Malfunction::initialize(QString dmCode, QString num, QString description)
|
||||
{
|
||||
this->dmCode = dmCode;
|
||||
this->num = num;
|
||||
this->description = description;
|
||||
}
|
||||
|
||||
void Malfunction::addMalfunctionSign(MalfunctionSign sign)
|
||||
{
|
||||
malfunctionSigns.append(sign);
|
||||
}
|
||||
|
||||
void MalfunctionSign::initialize(int type, QString description)
|
||||
{
|
||||
this->type = type;
|
||||
this->description = description;
|
||||
}
|
||||
|
||||
|
||||
QString SubProc::getDmCode() const
|
||||
{
|
||||
return dmCode;
|
||||
}
|
||||
|
||||
QString SubProc::getTitle() const
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
void SubProc::setDmCode(const QString &value)
|
||||
{
|
||||
dmCode = value;
|
||||
}
|
||||
|
||||
void SubProc::setTitle(const QString &value)
|
||||
{
|
||||
title = value;
|
||||
}
|
||||
|
||||
QString SubProc::getModeListStr() const
|
||||
{
|
||||
return modeListStr;
|
||||
}
|
||||
|
||||
ModeList SubProc::getModeList() const
|
||||
{
|
||||
return modeList;
|
||||
}
|
||||
|
||||
void SubProc::setModeList(const ModeList &value)
|
||||
{
|
||||
this->modeList = value;
|
||||
this->modeListStr = buildCanplay(value);
|
||||
}
|
||||
|
||||
void SubProc::setModeListStr(const QString &value)
|
||||
{
|
||||
this->modeListStr = value;
|
||||
this->modeList = parseCanplay(value);
|
||||
}
|
||||
|
||||
QString SubProc::buildCanplay(ModeList modeList)
|
||||
{
|
||||
QString canplay = QString("%1/%2/%3/%4").arg(modeList.demo?"+":"-", modeList.train?"+":"-", modeList.exam?"+":"-", modeList.autoM?"+":"-");
|
||||
return canplay;
|
||||
}
|
||||
|
||||
ModeList SubProc::parseCanplay(QString canplay)
|
||||
{
|
||||
ModeList modeList;
|
||||
|
||||
if(canplay == "")
|
||||
{
|
||||
modeList.demo = false;
|
||||
modeList.train = false;
|
||||
modeList.exam = false;
|
||||
modeList.autoM = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
QStringList list = canplay.split("/");
|
||||
|
||||
if(list.at(0) == "+")
|
||||
modeList.demo = true;
|
||||
else
|
||||
modeList.demo = false;
|
||||
|
||||
if(list.at(1) == "+")
|
||||
modeList.train = true;
|
||||
else
|
||||
modeList.train = false;
|
||||
|
||||
if(list.at(2) == "+")
|
||||
modeList.exam = true;
|
||||
else
|
||||
modeList.exam = false;
|
||||
|
||||
if(list.at(3) == "+")
|
||||
modeList.autoM = true;
|
||||
else
|
||||
modeList.autoM = false;
|
||||
}
|
||||
|
||||
return modeList;
|
||||
}
|
||||
161
LibDataBaseInterface/tasksAmmFim.h
Normal file
161
LibDataBaseInterface/tasksAmmFim.h
Normal file
@@ -0,0 +1,161 @@
|
||||
#ifndef TASKSAMMFIM_H
|
||||
#define TASKSAMMFIM_H
|
||||
|
||||
#include <QString>
|
||||
#include <QList>
|
||||
#include "DataBaseLMS_global.h"
|
||||
|
||||
struct ModeList
|
||||
{
|
||||
bool demo = false;
|
||||
bool train = false;
|
||||
bool exam = false;
|
||||
bool autoM = false;
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT SubProc
|
||||
{
|
||||
public:
|
||||
SubProc()
|
||||
{
|
||||
modeListStr = buildCanplay(modeList);
|
||||
};
|
||||
~SubProc(){};
|
||||
public:
|
||||
bool operator==(const SubProc& other) const
|
||||
{
|
||||
// Сравнение членов класса
|
||||
return (this->dmCode == other.dmCode && this->title == other.title && this->modeListStr == other.modeListStr);
|
||||
}
|
||||
|
||||
public:
|
||||
void setModeList(const ModeList &modeList);
|
||||
ModeList getModeList() const;
|
||||
|
||||
void setModeListStr(const QString &modeListStr);
|
||||
QString getModeListStr() const;
|
||||
|
||||
void setDmCode(const QString &value);
|
||||
QString getDmCode() const;
|
||||
|
||||
void setTitle(const QString &value);
|
||||
QString getTitle() const;
|
||||
|
||||
public:
|
||||
static QString buildCanplay(ModeList modeList);
|
||||
static ModeList parseCanplay(QString canplay);
|
||||
|
||||
private:
|
||||
QString dmCode = "";
|
||||
QString title = "";
|
||||
|
||||
ModeList modeList;
|
||||
QString modeListStr = "";
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT ProcedureID
|
||||
{
|
||||
public:
|
||||
ProcedureID(){};
|
||||
~ProcedureID(){};
|
||||
public:
|
||||
QString doc; // "amm", "fim"
|
||||
QString dmCode;
|
||||
QString title;
|
||||
QString result; // "" - нет результата, "viewed" - процедура изучена (просмотрена при отсутствующем сценарии), "completed" - выполнена (в т.ч. режим "контроль" сценария)
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT MalfunctionSign // признак неисправности
|
||||
{
|
||||
public:
|
||||
MalfunctionSign(){};
|
||||
~MalfunctionSign(){};
|
||||
public:
|
||||
void initialize(int type, QString description);
|
||||
public:
|
||||
int type; // "1" - аварийно-сигнальные сообщения, "2" - сообщения БСТО,
|
||||
// "3" - сигнализация СЭИ, "4" - локальная сигнализация, "5" - наблюдаемая неисправность
|
||||
QString description; // описание (напр. "ЭРРД, 25, DOOR_FAIL_TO_CLOSE" - для БСТО)
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT Malfunction // неисправность
|
||||
{
|
||||
public:
|
||||
Malfunction(){};
|
||||
~Malfunction(){};
|
||||
public:
|
||||
void initialize(QString dmCode, QString num, QString description);
|
||||
void addMalfunctionSign(MalfunctionSign sign);
|
||||
public:
|
||||
QString dmCode; // dmCode процедуры
|
||||
QString num; // номер по-порядку в пункте "2. Возможные причины" процедуры
|
||||
QString description; // описание
|
||||
QList<MalfunctionSign> malfunctionSigns;// список соответствующих неисправности признаков
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT FIMReportItem
|
||||
{
|
||||
public:
|
||||
FIMReportItem(){};
|
||||
~FIMReportItem(){};
|
||||
public:
|
||||
int id = 0; // для идентификации в БД
|
||||
QString text; // текст, вводимый обучаемым
|
||||
ProcedureID procedure; // ссылка на процедуру, при необходимости
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT FIMReport
|
||||
{
|
||||
public:
|
||||
FIMReport(){};
|
||||
~FIMReport(){};
|
||||
public:
|
||||
int id = 0; // для идентификации в БД
|
||||
QList<FIMReportItem> itemList;
|
||||
};
|
||||
|
||||
class DATABASELMS_EXPORT TaskAmmFim
|
||||
{
|
||||
public:
|
||||
TaskAmmFim(){};
|
||||
~TaskAmmFim(){};
|
||||
public:
|
||||
void initialize(int id, QString type, QString title, QString status, QString created_date, QString changed_date);
|
||||
void addMalfunction(Malfunction malfunction);
|
||||
|
||||
public:
|
||||
void setID(int id){this->id = id;};
|
||||
int getID(){return id;};
|
||||
public:
|
||||
|
||||
int id; // для идентификации в БД
|
||||
|
||||
QString type; // "amm" - процедура из Руководства по технической эксплуатации
|
||||
// "fim" - поиск и устранение неисправностей
|
||||
|
||||
QString title; // название задания:
|
||||
// для "amm" - берётся из титула процедуры
|
||||
// для "fim" - вводится вручную
|
||||
|
||||
QString status; // "new" - задание не выполнено
|
||||
// "checkup" - выполнено, на проверке у инструктора (только для "fim")
|
||||
// "failed" - инструктором проверено, выполнено неверно (только для "fim")
|
||||
// "completed" - выполнено корректно
|
||||
|
||||
QString created_date; // дата создания задания инструктором ("new")
|
||||
// (при записи в базу, даты ставить по времени сервера, а не те, что присланы от клиента)
|
||||
QString changed_date; // дата крайнего изменения статуса ("checkup", "failed", "completed")
|
||||
|
||||
// amm:
|
||||
ProcedureID ammProcedure; // ссылка на процедуру в AMM
|
||||
|
||||
// fim:
|
||||
QList<Malfunction> malfunctionList; // список неисправностей
|
||||
FIMReport report; // отчет по выполнению "fim"
|
||||
|
||||
QList<SubProc> listSubProc;
|
||||
|
||||
static int lastID;
|
||||
};
|
||||
|
||||
#endif // TASKSAMMFIM_H
|
||||
71
LibDataBaseInterface/timingoftrainee.cpp
Normal file
71
LibDataBaseInterface/timingoftrainee.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include "timingoftrainee.h"
|
||||
|
||||
TimingOfTrainee::TimingOfTrainee(int trainee_id):
|
||||
timing_id(0),
|
||||
trainee_id(trainee_id)
|
||||
{
|
||||
//QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||
dataTimeNull = QDateTime::fromString("2000-01-01 00:00", "yyyy-MM-dd hh:mm");
|
||||
setOperatingTime(QTime::fromString("00:00", "hh:mm"));
|
||||
setEntryTime(dataTimeNull);
|
||||
setExitTime(dataTimeNull);
|
||||
}
|
||||
|
||||
|
||||
void TimingOfTrainee::setEntryTimeS(QString entry_time)
|
||||
{
|
||||
entryTime_str = entry_time;
|
||||
entryTime = QDateTime::fromString(entry_time);
|
||||
}
|
||||
|
||||
void TimingOfTrainee::setEntryTime(QDateTime entry_time)
|
||||
{
|
||||
entryTime = entry_time;
|
||||
entryTime_str = entry_time.toString("yyyy-MM-dd hh:mm");
|
||||
}
|
||||
|
||||
|
||||
void TimingOfTrainee::setExitTimeS(QString exit_time)
|
||||
{
|
||||
exitTime_str = exit_time;
|
||||
exitTime = QDateTime::fromString(exit_time);
|
||||
}
|
||||
|
||||
void TimingOfTrainee::setExitTime(QDateTime exit_time)
|
||||
{
|
||||
exitTime = exit_time;
|
||||
exitTime_str = exit_time.toString("yyyy-MM-dd hh:mm");
|
||||
}
|
||||
|
||||
|
||||
void TimingOfTrainee::setOperatingTimeS(QString operating_time)
|
||||
{
|
||||
operatingTime_str = operating_time;
|
||||
operatingTime = QTime::fromString(operating_time);
|
||||
}
|
||||
|
||||
void TimingOfTrainee::setOperatingTime(QTime operating_time)
|
||||
{
|
||||
operatingTime = operating_time;
|
||||
operatingTime_str = operating_time.toString("hh:mm");
|
||||
}
|
||||
|
||||
void TimingOfTrainee::fixEntry()
|
||||
{
|
||||
QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||
setEntryTime(dataTimeCurr);
|
||||
}
|
||||
|
||||
void TimingOfTrainee::fixExit()
|
||||
{
|
||||
QDateTime dataTimeCurr = QDateTime::currentDateTime();
|
||||
setExitTime(dataTimeCurr);
|
||||
if(entryTime != dataTimeNull)
|
||||
calculateOperatingTime();
|
||||
}
|
||||
|
||||
void TimingOfTrainee::calculateOperatingTime()
|
||||
{
|
||||
int cntSec = entryTime.secsTo(exitTime);
|
||||
setOperatingTime(getOperatingTime().addSecs(cntSec));
|
||||
}
|
||||
61
LibDataBaseInterface/timingoftrainee.h
Normal file
61
LibDataBaseInterface/timingoftrainee.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef TIMINGOFTRAINEE_H
|
||||
#define TIMINGOFTRAINEE_H
|
||||
|
||||
#include <QString>
|
||||
#include <QDateTime>
|
||||
#include "DataBaseLMS_global.h"
|
||||
|
||||
class DATABASELMS_EXPORT TimingOfTrainee
|
||||
{
|
||||
public:
|
||||
TimingOfTrainee(int trainee_id);
|
||||
|
||||
void setID(int timing_id){this->timing_id = timing_id;}
|
||||
int getID(){return timing_id;}
|
||||
|
||||
void setTraineeID(int trainee_id){this->trainee_id = trainee_id;}
|
||||
int getTraineeID(){return trainee_id;}
|
||||
|
||||
|
||||
void setEntryTimeS(QString entry_time);
|
||||
void setEntryTime(QDateTime entry_time);
|
||||
|
||||
QString getEntryTimeS(){return entryTime_str;}
|
||||
QDateTime getEntryTime(){return entryTime;}
|
||||
|
||||
|
||||
void setExitTimeS(QString exit_time);
|
||||
void setExitTime(QDateTime exit_time);
|
||||
|
||||
QString getExitTimeS(){return exitTime_str;}
|
||||
QDateTime getExitTime(){return exitTime;}
|
||||
|
||||
|
||||
void setOperatingTimeS(QString operating_time);
|
||||
void setOperatingTime(QTime operating_time);
|
||||
|
||||
QString getOperatingTimeS(){return operatingTime_str;}
|
||||
QTime getOperatingTime(){return operatingTime;}
|
||||
|
||||
void fixEntry();
|
||||
void fixExit();
|
||||
|
||||
private:
|
||||
void calculateOperatingTime();
|
||||
|
||||
private:
|
||||
int timing_id;
|
||||
int trainee_id;
|
||||
|
||||
QString entryTime_str; //"yyyy-MM-dd hh:mm:ss.zzz"
|
||||
QString exitTime_str; //"yyyy-MM-dd hh:mm:ss.zzz"
|
||||
QString operatingTime_str; //"hh:mm:ss"
|
||||
|
||||
QDateTime entryTime;
|
||||
QDateTime exitTime;
|
||||
QTime operatingTime;
|
||||
|
||||
QDateTime dataTimeNull;
|
||||
};
|
||||
|
||||
#endif // TIMINGOFTRAINEE_H
|
||||
15
LibDataBaseInterface/trainee.cpp
Normal file
15
LibDataBaseInterface/trainee.cpp
Normal file
@@ -0,0 +1,15 @@
|
||||
#include "trainee.h"
|
||||
|
||||
Trainee::Trainee():
|
||||
User(),
|
||||
group(),
|
||||
computer(),
|
||||
timing(0)
|
||||
{
|
||||
TypeUserDB = User::TypeUserDBTrainee;
|
||||
}
|
||||
|
||||
void Trainee::setTiming(TimingOfTrainee timing)
|
||||
{
|
||||
this->timing = timing;
|
||||
}
|
||||
31
LibDataBaseInterface/trainee.h
Normal file
31
LibDataBaseInterface/trainee.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef TRAINEE_H
|
||||
#define TRAINEE_H
|
||||
|
||||
#include <QList>
|
||||
|
||||
#include "user.h"
|
||||
#include "group.h"
|
||||
#include "computer.h"
|
||||
#include "timingoftrainee.h"
|
||||
|
||||
class DATABASELMS_EXPORT Trainee: public User
|
||||
{
|
||||
public:
|
||||
Trainee();
|
||||
|
||||
void setGroup(Group group){this->group = group;}
|
||||
Group getGroup(){return group;}
|
||||
|
||||
void setComputer(Computer computer){this->computer = computer;}
|
||||
Computer getComputer(){return computer;}
|
||||
|
||||
TimingOfTrainee getTiming(){return timing;}
|
||||
void setTiming(TimingOfTrainee timing);
|
||||
|
||||
private:
|
||||
Group group;
|
||||
Computer computer;
|
||||
TimingOfTrainee timing;
|
||||
};
|
||||
|
||||
#endif // TRAINEE_H
|
||||
4
LibDataBaseInterface/translations/DataBaseLMS_ru_RU.ts
Normal file
4
LibDataBaseInterface/translations/DataBaseLMS_ru_RU.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
</TS>
|
||||
34
LibDataBaseInterface/typeQueryToDB.h
Normal file
34
LibDataBaseInterface/typeQueryToDB.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#ifndef TYPEQUERYTODB_H
|
||||
#define TYPEQUERYTODB_H
|
||||
|
||||
#include "DataBaseLMS_global.h"
|
||||
|
||||
enum TypeQueryToDB{
|
||||
TYPE_QUERY_GET_ALL_LISTS,
|
||||
TYPE_QUERY_NEW_INSTRUCTOR,
|
||||
TYPE_QUERY_DEL_INSTRUCTOR,
|
||||
TYPE_QUERY_EDIT_INSTRUCTOR,
|
||||
TYPE_QUERY_NEW_GROUP,
|
||||
TYPE_QUERY_DEL_GROUP,
|
||||
TYPE_QUERY_EDIT_GROUP,
|
||||
TYPE_QUERY_NEW_TRAINEE,
|
||||
TYPE_QUERY_DEL_TRAINEE,
|
||||
TYPE_QUERY_EDIT_TRAINEE,
|
||||
TYPE_QUERY_ASSIGN_TASK_AMM_TO_TRAINEE,
|
||||
TYPE_QUERY_ASSIGN_TASK_FIM_TO_TRAINEE,
|
||||
TYPE_QUERY_GET_TASKS_AMM_FOR_TRAINEE,
|
||||
TYPE_QUERY_GET_TASKS_FIM_FOR_TRAINEE,
|
||||
|
||||
TYPE_QUERY_DEL_TASK_AMM_TO_TRAINEE,
|
||||
TYPE_QUERY_DEL_TASK_FIM_TO_TRAINEE,
|
||||
|
||||
TYPE_QUERY_SET_REPORT_TASK_AMM_TO_TRAINEE,
|
||||
TYPE_QUERY_SET_REPORT_TASK_FIM_TO_TRAINEE,
|
||||
|
||||
TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_AMM_TO_TRAINEE,
|
||||
TYPE_QUERY_CHANGE_STATUS_REPORT_TASK_FIM_TO_TRAINEE,
|
||||
|
||||
TYPE_QUERY_GET_CONTACT_LIST
|
||||
};
|
||||
|
||||
#endif // TYPEQUERYTODB_H
|
||||
25
LibDataBaseInterface/user.cpp
Normal file
25
LibDataBaseInterface/user.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
#include "user.h"
|
||||
#include "hashtools.h"
|
||||
#include <QCryptographicHash>
|
||||
|
||||
const QString User::TypeUserDBInstructor = "instructor";
|
||||
const QString User::TypeUserDBTrainee = "trainee";
|
||||
|
||||
User::User():
|
||||
BasicEntity(),
|
||||
login(),
|
||||
password(),
|
||||
archived(),
|
||||
loggedIn(),
|
||||
TypeUserDB(),
|
||||
isAdmin(false),
|
||||
needSetPassword(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void User::hashingPassword()
|
||||
{
|
||||
// Вычисление MD5 хэша
|
||||
password = HashTools::hashingMD5string(password);
|
||||
}
|
||||
45
LibDataBaseInterface/user.h
Normal file
45
LibDataBaseInterface/user.h
Normal file
@@ -0,0 +1,45 @@
|
||||
#ifndef USER_H
|
||||
#define USER_H
|
||||
|
||||
#include "basicentity.h"
|
||||
|
||||
class DATABASELMS_EXPORT User: public BasicEntity
|
||||
{
|
||||
public:
|
||||
static const QString TypeUserDBInstructor;
|
||||
static const QString TypeUserDBTrainee;
|
||||
public:
|
||||
User();
|
||||
|
||||
void setLogin(QString login){this->login = login;}
|
||||
QString getLogin(){return login;}
|
||||
|
||||
void setPassword(QString password){this->password = password;}
|
||||
QString getPassword(){return password;}
|
||||
|
||||
void setArchived(bool archived){this->archived = archived;}
|
||||
bool getArchived(){return archived;}
|
||||
|
||||
void setLoggedIn(bool loggedIn){this->loggedIn = loggedIn;}
|
||||
bool getLoggedIn(){return loggedIn;}
|
||||
|
||||
QString getTypeUserDB(){return TypeUserDB;}
|
||||
|
||||
bool getNeedSetPassword(){return this->needSetPassword;}
|
||||
void setNeedSetPassword(bool needSetPassword){this->needSetPassword = needSetPassword;}
|
||||
|
||||
void hashingPassword();
|
||||
|
||||
private:
|
||||
QString login;
|
||||
QString password;
|
||||
bool archived;
|
||||
bool loggedIn;
|
||||
protected:
|
||||
QString TypeUserDB;
|
||||
|
||||
bool isAdmin;
|
||||
bool needSetPassword;
|
||||
};
|
||||
|
||||
#endif // USER_H
|
||||
Reference in New Issue
Block a user