COOPENOMICS  v1
Кооперативная Экономика
table_soviet_boards.hpp
См. документацию.
1#pragma once
2
3
4#include "../core/ram_payer.hpp"
5#include <eosio/eosio.hpp>
6#include <string>
7#include <vector>
8
9#include "../consts.hpp"
10
12 eosio::name username;
14 std::string position_title;
15 eosio::name position;
16};
17
23struct [[eosio::table, eosio::contract(SOVIET)]] boards {
24 uint64_t id;
25 eosio::name type;
26 std::string name;
27 std::string description;
28
29 std::vector<board_member> members;
30
31 eosio::time_point_sec created_at;
32 eosio::time_point_sec last_update;
33
34 uint64_t primary_key() const { return id; }
35
36 uint64_t by_type() const { return type.value; }
37
38 bool is_valid_member(eosio::name member) const {
39 for (const auto &m : members) {
40 if (m.username == member)
41 return true;
42 }
43 return false;
44 }
45
46 bool is_voting_member(eosio::name member) const {
47 for (const auto &m : members) {
48 if (m.username == member && m.is_voting == true)
49 return true;
50 }
51 return false;
52 }
53
54 bool is_valid_chairman(eosio::name chairman) const {
55 for (const auto &m : members) {
56 if (m.username == chairman && (m.position == "chairman"_n || m.position == "vpchairman"_n))
57 return true;
58 }
59 return false;
60 }
61
62 eosio::name get_chairman() const {
63 for (const auto &m : members) {
64 if (m.position == "chairman"_n)
65 return m.username;
66 }
67 return ""_n;
68 }
69
70 bool is_valid_secretary(eosio::name secretary) const {
71 for (const auto &m : members) {
72 if (m.username == secretary && (m.position == "secretary"_n))
73 return true;
74 }
75 return false;
76 }
77
78 bool has_voting_right(eosio::name member) const {
79 for (const auto &m : members) {
80 if (m.username == member && m.is_voting)
81 return true;
82 }
83 return false;
84 }
85
86 uint64_t get_members_count() const { return members.size(); }
87};
88
89typedef eosio::multi_index<
90 "boards"_n, boards,
91 eosio::indexed_by<"bytype"_n, eosio::const_mem_fun<boards, uint64_t, &boards::by_type>>>
93
94// Плательщик за оперативную память строк таблицы — правило в lib/core/ram_payer.hpp.
contract
Definition: eosio.msig_tests.cpp:977
Definition: eosio.msig.hpp:34
Definition: table_soviet_boards.hpp:11
eosio::name position
Definition: table_soviet_boards.hpp:15
bool is_voting
Definition: table_soviet_boards.hpp:13
std::string position_title
Definition: table_soviet_boards.hpp:14
eosio::name username
Definition: table_soviet_boards.hpp:12
Definition: table_soviet_boards.hpp:23
bool has_voting_right(eosio::name member) const
Definition: table_soviet_boards.hpp:78
bool is_valid_secretary(eosio::name secretary) const
Definition: table_soviet_boards.hpp:70
eosio::name type
Definition: table_soviet_boards.hpp:25
bool is_valid_member(eosio::name member) const
Definition: table_soviet_boards.hpp:38
uint64_t get_members_count() const
Definition: table_soviet_boards.hpp:86
uint64_t id
Definition: table_soviet_boards.hpp:24
uint64_t by_type() const
Definition: table_soviet_boards.hpp:36
std::vector< board_member > members
Definition: table_soviet_boards.hpp:29
uint64_t primary_key() const
Definition: table_soviet_boards.hpp:34
eosio::time_point_sec last_update
Definition: table_soviet_boards.hpp:32
bool is_voting_member(eosio::name member) const
Definition: table_soviet_boards.hpp:46
eosio::name get_chairman() const
Definition: table_soviet_boards.hpp:62
bool is_valid_chairman(eosio::name chairman) const
Definition: table_soviet_boards.hpp:54
std::string name
Definition: table_soviet_boards.hpp:26
eosio::time_point_sec created_at
Definition: table_soviet_boards.hpp:31
std::string description
Definition: table_soviet_boards.hpp:27
RAM_PAYER_CLASS(boards, contract)
eosio::multi_index< "boards"_n, boards, eosio::indexed_by<"bytype"_n, eosio::const_mem_fun< boards, uint64_t, &boards::by_type > > > boards_index
Definition: table_soviet_boards.hpp:92