Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions contracts/mdao.meeting/include/mdao.meeting/mdao.meeting.db.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,17 @@ MEEING_TBL_NAME("global") global_t {
typedef eosio::singleton< "global"_n, global_t > tbl_t;
};


// _self
MEEING_TBL whitelist_t{
name dao_code;

uint64_t primary_key()const { return dao_code.value; }

typedef eosio::multi_index< "whitelist"_n, whitelist_t
> tbl_t;
};

// scope : self
MEEING_TBL meeting_t{
name dao_code;
Expand Down
10 changes: 8 additions & 2 deletions contracts/mdao.meeting/include/mdao.meeting/mdao.meeting.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,17 @@ class [[eosio::contract("mdao.meeting")]] mdaomeeting : public contract {
private:
global_t::tbl_t _global;
global_t _gstate;
meeting_t::tbl_t _meeting_tbl;
meeting_t::tbl_t _meeting_tbl;
whitelist_t::tbl_t _whitelist_tbl;

public:
using contract::contract;

mdaomeeting(name receiver, name code, datastream<const char*> ds):
contract(receiver, code, ds),
_global(_self, _self.value),
_meeting_tbl(get_self(), get_self().value)
_meeting_tbl(get_self(), get_self().value),
_whitelist_tbl(get_self(), get_self().value)
{
_gstate = _global.exists() ? _global.get() : global_t{};
}
Expand All @@ -36,6 +38,10 @@ class [[eosio::contract("mdao.meeting")]] mdaomeeting : public contract {
ACTION setreceiver( const name& receiver);

ACTION setsplit(const uint64_t& split_id);

ACTION setwhitelist(const set<name>& accounts);

ACTION delwhitelist(const set<name>& accounts);

[[eosio::on_notify("*::transfer")]]
void ontransfer(const name& from, const name& to, const asset& quant, const string& memo);
Expand Down
31 changes: 29 additions & 2 deletions contracts/mdao.meeting/src/mdao.meeting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,34 @@ void mdaomeeting::ontransfer(const name& from, const name& to, const asset& quan

}

void mdaomeeting::setwhitelist(const set<name>& accounts){
CHECKC( has_auth(_self) || has_auth(_gstate.admin), err::NO_AUTH,"no auth")
for ( name n : accounts ){
auto itr = _whitelist_tbl.find( n.value );
db::set( _whitelist_tbl, itr, _self, [&]( auto& p, bool is_new ){
p.dao_code = n;
});
}
}

void mdaomeeting::delwhitelist(const set<name>& accounts){

CHECKC( has_auth(_self) || has_auth(_gstate.admin), err::NO_AUTH,"no auth")

for ( name n : accounts ){

auto itr = _whitelist_tbl.find( n.value );
if ( itr != _whitelist_tbl.end() )
_whitelist_tbl.erase(itr);
}
}


void mdaomeeting::_create_renew_dao(const name& from, const name& dao_code, const string& group_id, const asset& quantity, const uint64_t& month){

auto whitelist_itr = _whitelist_tbl.find( dao_code.value );
CHECKC( whitelist_itr != _whitelist_tbl.end(), err::NO_AUTH,"Not yet open")

dao_info_t::idx_t dao_info(MDAO_INFO_ACCOUNT,MDAO_INFO_ACCOUNT.value);
auto dao_itr = dao_info.find( dao_code.value );
CHECKC( dao_itr != dao_info.end(),err::PARAM_ERROR,"dao not found")
Expand All @@ -85,10 +111,11 @@ void mdaomeeting::_create_renew_dao(const name& from, const name& dao_code, cons
if ( is_new ){
p.created_at = now;
p.dao_code = dao_code;
p.group_id = group_id;
p.creator = from;

p.expired_at = now;
}
p.creator = from;
p.group_id = group_id;
if ( p.expired_at < now )
p.expired_at = now;
// p.expired_at = p.expired_at < now ? now : p.expired_at;
Expand Down