18 : _account_svc(account_svc)
19 , _virt_op_emitter(virt_op_emitter)
20 , _matched_bet_dba(matched_bet_dba)
22 , _dprop_dba(dprop_dba)
26 void update(fc::flat_map<uuid_type, bet_resolved_operation>& results,
32 if (results.count(bet.
uuid) == 0)
38 results[bet.
uuid].income += income;
45 : _game_uuid(game_uuid)
51 if (_results.count(bet.
uuid) == 0)
58 _results[bet.
uuid].income += income;
66 for (
auto& bet : _results)
81 fc::flat_map<uuid_type, bet_resolved_operation> _results;
86 auto matched_bets = _matched_bet_dba.get_range_by<by_game_uuid_market>(game_uuid);
92 auto fst_won = results.find(bet.bet1_data.wincase) != results.end();
93 auto snd_won = results.find(bet.bet2_data.wincase) != results.end();
95 auto income = bet.bet1_data.stake + bet.bet2_data.stake;
99 resolver.post(bet.bet1_data, income, bet_resolve_kind::win);
103 resolver.post(bet.bet2_data, income, bet_resolve_kind::win);
107 resolver.post(bet.bet1_data, bet.bet1_data.stake, bet_resolve_kind::draw);
108 resolver.post(bet.bet2_data, bet.bet2_data.stake, bet_resolve_kind::draw);
112 resolver.apply(_virt_op_emitter, _account_svc, _dprop_dba);
113 _matched_bet_dba.remove_all(matched_bets);
void resolve_matched_bets(uuid_type game_uuid, const fc::flat_set< protocol::wincase_type > &results) const override
betting_resolver(account_service_i &, database_virtual_operations_emmiter_i &, dba::db_accessor< matched_bet_object > &, dba::db_accessor< game_object > &, dba::db_accessor< dynamic_global_property_object > &)
const object_type & update(modifier_type modifier)
Maintains global state information.
betting_total_stats betting_stats
this section display information about betting totals
void update(fc::flat_map< uuid_type, bet_resolved_operation > &results, const bet_data &bet, asset income, uuid_type game_uuid, bet_resolve_kind kind)
boost::uuids::uuid uuid_type
virtual void increase_balance(const account_object &account, const asset &amount)=0
asset matched_bets_volume
virtual void push_virtual_operation(const operation &op)=0
resolver_results(uuid_type game_uuid)
void apply(database_virtual_operations_emmiter_i &_emitter, account_service_i &_account_svc, dba::db_accessor< dynamic_global_property_object > &_dprop_dba)
void post(const bet_data &bet, asset income, bet_resolve_kind kind)