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