4#include "../../../lib/core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6#include <eosio/asset.hpp>
33namespace RequestType {
34 constexpr name
ROLE =
"role"_n;
46 constexpr name
NONE = name{};
68 uint64_t hours_per_day = 0;
70 uint64_t approved_hours = 0;
76 time_point_sec created_at = current_time_point();
85typedef eosio::multi_index<
86 "rolerequests"_n, role_request,
87 indexed_by<
"byhash"_n, const_mem_fun<role_request, checksum256, &role_request::by_request_hash>>,
88 indexed_by<
"byprojuser"_n, const_mem_fun<role_request, uint128_t, &role_request::by_project_user>>
91inline std::optional<role_request>
get_role_request(eosio::name coopname,
const checksum256 &request_hash) {
93 auto idx = t.get_index<
"byhash"_n>();
94 auto itr = idx.find(request_hash);
95 if (itr == idx.end())
return std::nullopt;
101 eosio::check(v.has_value(),
"Заявка на роль не найдена");
106 eosio::name coopname,
107 const checksum256 &request_hash,
108 const checksum256 &project_hash,
109 eosio::name username,
112 const eosio::asset &rate_per_hour,
113 uint64_t hours_per_day,
114 eosio::name direction,
115 eosio::name request_type,
116 const std::string &description
120 "Заявка с указанным хэшем уже существует");
125 r.coopname = coopname;
126 r.request_hash = request_hash;
127 r.project_hash = project_hash;
128 r.username = username;
131 r.rate_per_hour = rate_per_hour;
132 r.hours_per_day = hours_per_day;
133 r.direction = direction;
134 r.request_type = request_type;
136 r.description = description;
137 r.created_at = current_time_point();
149 "Допустимые роли заявки: creator, author, master"
163 eosio::name coopname,
164 const checksum256 &project_hash,
165 eosio::name username,
173 std::make_tuple(coopname, project_hash, username)
180 std::make_tuple(coopname, project_hash, username)
186 eosio::name coopname,
188 const eosio::asset &approved_rate,
189 uint64_t approved_hours
192 auto itr = t.find(request_id);
193 eosio::check(itr != t.end(),
"Заявка не найдена");
197 r.approved_rate = approved_rate;
198 r.approved_hours = approved_hours;
202inline void decline(eosio::name coopname, uint64_t request_id,
const std::string &reason) {
204 auto itr = t.find(request_id);
205 eosio::check(itr != t.end(),
"Заявка не найдена");
209 r.decline_reason = reason;
static constexpr eosio::name _capital
Definition: consts.hpp:171
static constexpr eosio::symbol _root_govern_symbol
Definition: consts.hpp:236
contract
Definition: eosio.msig_tests.cpp:977
permission_level
Definition: eosio.msig_tests.cpp:896
void send(name contract, name action_name, name actor, Args &&... args)
Definition: actions.hpp:10
constexpr name INVITE
Definition: role_requests.hpp:27
constexpr name REQUEST
Definition: role_requests.hpp:26
constexpr name ROLE
Definition: role_requests.hpp:34
constexpr name RATE_UPDATE
Definition: role_requests.hpp:35
constexpr name MASTER
Definition: role_requests.hpp:45
constexpr name AUTHOR
Definition: role_requests.hpp:44
constexpr name CREATOR
Definition: role_requests.hpp:43
constexpr name NONE
Для RATE_UPDATE: поле role не значимо
Definition: role_requests.hpp:46
constexpr name APPROVED
Definition: role_requests.hpp:18
constexpr name PENDING
Definition: role_requests.hpp:17
constexpr name DECLINED
Definition: role_requests.hpp:19
Definition: role_requests.hpp:11
void decline(eosio::name coopname, uint64_t request_id, const std::string &reason)
Definition: role_requests.hpp:202
std::optional< role_request > get_role_request(eosio::name coopname, const checksum256 &request_hash)
Definition: role_requests.hpp:91
void validate_role_or_fail(eosio::name role)
Проверяет, что role входит в допустимый набор Role::{CREATOR, AUTHOR, MASTER}. Контрибьюторы и инвест...
Definition: role_requests.hpp:146
void create(eosio::name coopname, const checksum256 &request_hash, const checksum256 &project_hash, eosio::name username, eosio::name master, eosio::name role, const eosio::asset &rate_per_hour, uint64_t hours_per_day, eosio::name direction, eosio::name request_type, const std::string &description)
Definition: role_requests.hpp:105
eosio::multi_index< "rolerequests"_n, role_request, indexed_by<"byhash"_n, const_mem_fun< role_request, checksum256, &role_request::by_request_hash > >, indexed_by<"byprojuser"_n, const_mem_fun< role_request, uint128_t, &role_request::by_project_user > > > role_requests_index
Definition: role_requests.hpp:89
void apply_role_to_project(eosio::name coopname, const checksum256 &project_hash, eosio::name username, eosio::name role)
Применяет заявленную роль к проекту через inline action: Role::AUTHOR → addauthor,...
Definition: role_requests.hpp:162
role_request get_role_request_or_fail(eosio::name coopname, const checksum256 &request_hash)
Definition: role_requests.hpp:99
void approve(eosio::name coopname, uint64_t request_id, const eosio::asset &approved_rate, uint64_t approved_hours)
Definition: role_requests.hpp:185
eosio::name of(const Table &table, eosio::name coopname)
Definition: ram_payer.hpp:78
Definition: eosio.msig.hpp:34
action(permission_level{ _gateway, "active"_n}, _gateway, "adduser"_n, std::make_tuple(coopname, deposit->username, to_spread, to_circulation, eosio::current_time_point(), true)).send()
RAM_PAYER_CLASS(Capital::RoleRequests::role_request, cooperative)
Очередь заявок на L2-допуск/инвайт и на обновление approved-ставки.
Definition: role_requests.hpp:59
std::string decline_reason
Причина отказа (если DECLINED)
Definition: role_requests.hpp:75
uint64_t id
Внутренний ключ
Definition: role_requests.hpp:60
checksum256 by_request_hash() const
Definition: role_requests.hpp:79
uint64_t primary_key() const
Definition: role_requests.hpp:78
eosio::name username
Заявитель (REQUEST) или кандидат (INVITE)
Definition: role_requests.hpp:64
eosio::name master
Мастер компонента (одобряющий) — при invite на роль master это координатор/председатель
Definition: role_requests.hpp:65
uint128_t by_project_user() const
Definition: role_requests.hpp:80
std::string description
Текст заявки / приглашения (может быть пустым)
Definition: role_requests.hpp:74
checksum256 request_hash
Хеш заявки (анкер)
Definition: role_requests.hpp:62
eosio::name coopname
Кооператив
Definition: role_requests.hpp:61
checksum256 project_hash
Проект / компонент
Definition: role_requests.hpp:63
Definition: table_registrator_orgs.hpp:17
uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope, eosio::name key)
Definition: table_counts.hpp:62
static uint128_t combine_checksum_ids(const checksum256 &hash, eosio::name username)
Definition: utils.hpp:11