Scorum
cancel_game_evaluator.cpp
Go to the documentation of this file.
5 
8 
9 namespace scorum {
10 namespace chain {
11 cancel_game_evaluator::cancel_game_evaluator(data_service_factory_i& services,
14  : evaluator_impl<data_service_factory_i, cancel_game_evaluator>(services)
15  , _account_service(services.account_service())
16  , _betting_service(betting_service)
17  , _game_service(services.game_service())
18  , _virt_op_emitter(virt_op_emitter)
19 {
20 }
21 
23 {
24  _account_service.check_account_existence(op.moderator);
25  FC_ASSERT(_betting_service.is_betting_moderator(op.moderator), "User ${u} isn't a betting moderator",
26  ("u", op.moderator));
27  FC_ASSERT(_game_service.is_exists(op.uuid), "Game with uuid '${g}' doesn't exist", ("g", op.uuid));
28 
29  auto game = _game_service.get_game(op.uuid);
30 
31  FC_ASSERT(game.status != game_status::finished, "Cannot cancel the game after it is finished");
32 
33  _betting_service.cancel_pending_bets(op.uuid);
34  _betting_service.cancel_matched_bets(op.uuid);
35 
36  auto status = game.status;
37  _betting_service.cancel_game(op.uuid);
38 
39  _virt_op_emitter.push_virtual_operation(game_status_changed_operation(op.uuid, status, game_status::cancelled));
40 }
41 }
42 }
cancel_game_evaluator(data_service_factory_i &, betting_service_i &, database_virtual_operations_emmiter_i &)
void do_apply(const operation_type &op)
Definition: asset.cpp:15
virtual void check_account_existence(const account_name_type &, const optional< const char * > &context_type_name=optional< const char * >()) const =0
virtual bool is_betting_moderator(const account_name_type &account_name) const =0
virtual void cancel_game(uuid_type game_uuid)=0
virtual void cancel_pending_bets(uuid_type game_uuid)=0
virtual void cancel_matched_bets(uuid_type game_uuid)=0
virtual void push_virtual_operation(const operation &op)=0
virtual const game_object & get_game(int64_t game_id) const =0
virtual bool is_exists(int64_t game_id) const =0
uuid_type uuid
Universal Unique Identifier which is specified during game creation.
account_name_type moderator
moderator account name