def create_game(self, data):
     result = {
         'err': 0,
         'msg': 'Game Created'
     }
     self.database.create_game(data)
     return schemas.CommandResultSchema().dumps(result)
 def create_round(self, data):
     result = {
         'err': 0,
         'msg': 'Round Created'
     }
     self.database.create_round(data)
     return schemas.CommandResultSchema().dumps(result)
 def create_wordpack(self, data):
     result = {
         'err': 0,
         'msg': 'Wordpack Created'
     }
     self.database.create_wordpack(data)
     return schemas.CommandResultSchema().dumps(result)
 def create_turn_detail(self, data):
     result = {
         'err': 0,
         'msg': 'Turn Detail Created'
     }
     self.database.create_turn_detail(data)
     return schemas.CommandResultSchema().dumps(result)
 def create_transaction(self, data):
     result = {'err': 0, 'msg': 'Transaction Created'}
     user = self.user_rpc.get_user_by_id(data['id_user'])
     if user:
         wordpack = self.word_rpc.get_wordpack_by_id(data['id_word_pack'])
         if wordpack:
             new_balance = user['balance'] - wordpack['price']
             if new_balance >= 0:
                 data['amount'] = wordpack['price']
                 self.database.create_transaction(data)
                 self.user_rpc.create_user_wordpack({
                     'id_user':
                     data['id_user'],
                     'id_word_pack':
                     data['id_word_pack'],
                     'created_at':
                     None,
                     'updated_at':
                     None
                 })
                 self.user_rpc.update_user({
                     'id': user['id_user'],
                     'balance': new_balance
                 })
             else:
                 result['err'] = 1
                 result['msg'] = 'Balance Not Enough'
         else:
             result['err'] = 1
             result['msg'] = 'Wordpack Not Found'
     else:
         result['err'] = 1
         result['msg'] = 'User Not Found'
     self.database.close_connection()
     return schemas.CommandResultSchema().dumps(result)
 def update_game(self, data):
     result = {
         'err': 0,
         'msg': 'Game Updated'
     }
     if self.database.get_game_by_id(data['id']):
         self.database.update_game(data)
     else:
         result['err'] = 1
         result['msg'] = 'Game Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def delete_round(self, data):
     result = {
         'err': 0,
         'msg': 'Round Deleted'
     }
     if self.database.get_round_by_id(data['id']):
         self.database.delete_round(data['id'])
     else:
         result['err'] = 1
         result['msg'] = 'Round Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def delete_turn_detail(self, data):
     result = {
         'err': 0,
         'msg': 'Turn Detail Deleted'
     }
     if self.database.get_turn_detail_by_id(data['id']):
         self.database.delete_turn_detail(data['id'])
     else:
         result['err'] = 1
         result['msg'] = 'Turn Detail Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def delete_game_member(self, data):
     result = {
         'err': 0,
         'msg': 'Game Member Deleted'
     }
     if self.database.get_game_member_by_id(data['id']):
         self.database.delete_game_member(data)
     else:
         result['err'] = 1
         result['msg'] = 'Game Member Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def delete_wordpair(self, data):
     result = {
         'err': 0,
         'msg': 'Wordpair Deleted'
     }
     if self.database.get_wordpair_by_id(data['id']):
         self.database.delete_wordpair(data)
     else:
         result['err'] = 1
         result['msg'] = 'Wordpair Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def create_wordpair(self, data):
     result = {
         'err': 0,
         'msg': 'Wordpair Added'
     }
     if self.database.get_wordpack_by_id(data['id_word_pack']):
         self.database.create_wordpair(data)
     else:
         result['err'] = 1
         result['msg'] = 'Wordpack Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def update_wordpack(self, data):
     result = {
         'err': 0,
         'msg': 'Wordpack Updated'
     }
     if self.database.get_wordpack_by_id(data['id']):
         self.database.update_wordpack(data)
     else:
         result['err'] = 1
         result['msg'] = 'Wordpack Not Found'
     return schemas.CommandResultSchema().dumps(result)
 def add_game_member(self, data):
     result = {
         'err': 0,
         'msg': 'Game Member Added'
     }
     if self.user_rpc.get_user_by_id(data['id_member']):
         self.database.add_game_member(data)
         self.database.close_connection()
     else:
         result['err'] = 1
         result['msg'] = 'User Not Found'
     return schemas.CommandResultSchema().dumps(result)
    def create_voucher(self, data):

        result = {'err': 0, 'msg': 'Voucher Created'}

        if self.database.search_voucher(data['code']):
            result['err'] = 1
            result['msg'] = 'Code Already Exists & Active'
        else:
            self.database.create_voucher(data)

            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
    def update_transaction(self, data):
        result = {'err': 0, 'msg': 'Transaction Updated'}

        if self.database.get_transaction_by_id(data['id']):
            self.database.update_transaction(data)

            self.database.close_connection()

        else:
            result['err'] = 1
            result['msg'] = 'Transaction Not Found'
            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
    def redeem_voucher(self, data):

        result = {'err': 0, 'msg': 'Voucher Redeemed'}

        if self.database.search_voucher(data['code']):
            if self.transaction_rpc.search_voucher(data['code']):
                # self.database.redeem_voucher(data)
                # result['msg'] = 'Redeem Successfully'
                # self.database.close_connection()
                if self.user_rpc.get_user_by_id(
                        data['redeemed_by']):  #cek user ada atau ga
                    tmp = self.user_rpc.get_user_by_id(data['redeemed_by'])
                    tmp1 = self.transaction_rpc.search_voucher(data['code'])

                    uawal = int(tmp['balance'])
                    topup = tmp1[1]['amount']
                    uakhir = uawal + topup
                    statusvoc = tmp1[0]

                    if statusvoc:
                        self.user_rpc.update_user({
                            "id": data['redeemed_by'],
                            "balance": uakhir
                        })
                        self.database.redeem_voucher(data)
                        now = datetime.now()
                        dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
                        print(dt_string)
                        result['err'] = 0
                        result[
                            'msg'] = 'Voucher Redeemed by' + " " + tmp['name']
                    else:
                        result['err'] = 0
                        result['msg'] = 'Voucher Cant be Redeemed'

                    self.database.close_connection()
                else:
                    result['err'] = 1
                    result['msg'] = 'User tidak ada'
                    self.database.close_connection()
            else:
                result['err'] = 1
                result['msg'] = 'Code Already Inactive'
                self.database.close_connection()
        else:
            result['err'] = 1
            result['msg'] = 'Code Not Found'
            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
    def delete_voucher(self, id):
        result = {'err': 0, 'msg': 'Voucher Deleted'}

        if self.database.get_voucher_by_id(id):
            self.database.delete_voucher(id)

            self.database.close_connection()

        else:
            result['err'] = 1
            result['msg'] = 'Voucher Not Found'
            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
    def delete_transaction(self, id):
        result = {'err': 0, 'msg': 'Transaction Deleted'}

        if self.database.get_transaction_by_id(id):
            self.database.delete_transaction(id)

            self.database.close_connection()

        else:
            result['err'] = 1
            result['msg'] = 'Transaction Not Found'
            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
 def update_round_detail(self, data):
     result = {
         'err': 0,
         'msg': 'Round Detail Updated'
     }
     if not self.database.get_round_detail_by_id(data['id']):
         result['err'] = 1
         result['msg'] = 'Round Detail Not Found'
     elif not self.user_rpc.get_user_by_id(data['id_user']):
         result['err'] = 1
         result['msg'] = 'User Not Found'
     else:
         self.database.update_round_detail(data)
     return schemas.CommandResultSchema().dumps(result)
    def update_user_wordpack(self, data):

        result = {'err': 0, 'msg': 'User Wordpack Updated'}

        if self.database.get_user_wordpack_by_id(data['id']):
            self.database.update_user_wordpack(data)

            self.database.close_connection()

        else:
            result['err'] = 1
            result['msg'] = 'User Wordpack Not Found'
            self.database.close_connection()

        return schemas.CommandResultSchema().dumps(result)
 def create_round_detail(self, data):
     result = {
         'err': 0,
         'msg': 'Round Detail Created'
     }
     if not self.game_rpc.get_round_by_id(data['id_round']):
         result['err'] = 1
         result['msg'] = 'Round Not Found'
     elif not self.user_rpc.get_user_by_id(data['id_user']):
         result['err'] = 1
         result['msg'] = 'User Not Found'
     else:
         self.database.create_round_detail(data)
         self.database.close_connection()
     return schemas.CommandResultSchema().dumps(result)