#ifndef LOGIN_HISTORY_HPP #define LOGIN_HISTORY_HPP #include "CollectionCenter.hpp" #include "Scenario.hpp" #include "User.hpp" #include "../core/Model.hpp" #include "matador/object/object_ptr.hpp"" #include "matador/utils/base_class.hpp" #include "matador/utils/enum_mapper.hpp" namespace work::models::admin { enum class FailReason : uint8_t { NoFailReason, InternalError, NoPermissionToLogin, NoScenarioForUser, UnknownUserName, UserLockedByAdmin, UserLockedBySystem, UserLockedByAdminAndSystem, WrongPassword }; static const matador::utils::enum_mapper FailReasonEnum({ {FailReason::NoFailReason, "NoFailReason"}, {FailReason::InternalError, "InternalError"}, {FailReason::NoPermissionToLogin, "NoPermissionToLogin"}, {FailReason::NoScenarioForUser, "NoScenarioForUser"}, {FailReason::UnknownUserName, "UnknownUserName"}, {FailReason::UserLockedByAdmin, "UserLockedByAdmin"}, {FailReason::UserLockedBySystem, "UserLockedBySystem"}, {FailReason::UserLockedByAdminAndSystem, "UserLockedByAdminAndSystem"}, {FailReason::WrongPassword, "WrongPassword"} }); struct LoginHistory : core::Model { matador::object::object_ptr user; matador::object::object_ptr scenario; matador::object::object_ptr collection_center; std::string login_name; FailReason fail_reason{FailReason::NoFailReason}; core::timestamp login_time; template void process( Operator& op ) { namespace field = matador::access; field::process( op, *matador::base_class( this ) ); field::belongs_to( op, "user", user, matador::utils::default_foreign_attributes ); field::belongs_to( op, "scenario", scenario, matador::utils::default_foreign_attributes ); field::belongs_to( op, "collection_center", collection_center, matador::utils::default_foreign_attributes ); field::attribute( op, "login_name", login_name, 511 ); field::attribute( op, "fail_reason", fail_reason ); field::attribute( op, "login_time", login_time ); } }; } #endif //LOGIN_HISTORY_HPP