def pay_bill(self, request, **kwargs): if request.user.is_authenticated(): data = self.deserialize(request, request.body, format=request.META.get('CONTENT_TYPE', 'application/json')) bill = Bill.objects.get(id=data.get('bill_id')) bill.sender = request.user bill.save() transcation = Transaction() transcation.sender = request.user transcation.receiver = bill.store.vendor.user transcation.transaction_type = 2 transcation.amount = bill.total_amount transcation.bill = bill transcation.store = bill.store transcation.transaction_state = 1 mobile = Mobile() mobile.transaction = transcation try: bank = BankAccountDetails.objects.get(user=request.user, account_state=1) mobile.sender_account = bank except BankAccountDetails.DoesNotExist: return self.create_response(request, {"success":False, "status_code":101, "details": "No active bank accounts or please link atleast one bank account"}) if int(bill.total_amount) > int(bank.balance): return self.create_response(request, {"success":False, "status_code":201, "details":"Insufficient Funds"}) else: bank.balance = int(bank.balance)-int(bill.total_amount) bank1 = BankAccountDetails.objects.get(user=transcation.receiver, account_state=1) bank.save() bank1.balance = int(bank1.balance)+int(bill.total_amount) bank1.save() transcation.save() bank = BankAccountDetails.objects.get(user=transcation.receiver, account_state=1) mobile.receiver_account = bank mobile.save() bundle = TransactionResource().build_bundle(obj=transcation) bundle = TransactionResource().full_dehydrate(bundle=bundle) return self.create_response(request, {'success': True, "status_code": 100, 'transaction': bundle}) else: return self.create_response(request, {'success':False, "details":"user not authenticated please login", "status_code": 111})
def send_money(self, request, **kwargs): if request.user.is_authenticated(): data = self.deserialize(request, request.body, format=request.META.get('CONTENT_TYPE', 'application/json')) if data.get('send_money_type') == 0: mobile_number = data.get('mobile') amount = data.get('amount') message = data.get('message') transaction = Transaction() transaction.sender = request.user try: receiver = User.objects.get(mobile=mobile_number) except User.DoesNotExist: return self.create_response(request, {"success": False, "status_code": 102, 'details':"given mobile number is not associated with any account"}) transaction.receiver = receiver transaction.amount = amount transaction.text = message transaction.transaction_type = 2 transaction.transaction_state = 1 mobile = Mobile() mobile.transaction = transaction try: bank = BankAccountDetails.objects.get(user=request.user, account_state=1) mobile.sender_account = bank a=transaction.amount aa=bank.balance s=int(aa)-int(a) if s<0: print(transaction.amount) print(bank.balance) return self.create_response(request, {"success": False, "status_code": 201, "details": "Insufficient Funds"}) else: bank.balance = int(bank.balance)-int(transaction.amount) bank.save() bank = BankAccountDetails.objects.get(user=transaction.receiver, account_state=1) mobile.receiver_account = bank bank.balance = int(bank.balance)+int(transaction.amount) bank.save() except BankAccountDetails.DoesNotExist: return self.create_response(request, {"success": False, "status_code": 101, "details": "No active bank accounts or please link atleast one bank account"}) transaction.save() mobile.save() bundle = TransactionResource().build_bundle(obj=transaction) bundle = TransactionResource().full_dehydrate(bundle=bundle) return self.create_response(request, {'success': True, "status_code": 100, 'transaction': bundle}) elif data.get('send_money_type') == 1: account_no = data.get('account_no') holder_name = data.get('holder_name') ifsc_code = data.get('ifsc_code') amount = data.get('amount') transaction = Transaction() transaction.sender = request.user transaction.amount = amount transaction.transaction_type = 0 transaction.text = data.get('message') transaction.transaction_state = 1 transaction.save() account_details = AccountDetails() account_details.transaction = transaction try: account_details.sender_bank = BankAccountDetails.objects.get(user=request.user,account_state=BankAccountDetails.ACTIVE) account_details.sender_bank.balance = int(account_details.sender_bank.balance)-int(amount) except BankAccountDetails.DoesNotExist: return self.create_response(request, {"success": False, "status_code": 101, "details": "No active bank accounts or please link atleast one bank account"}) account_details.holder_name = holder_name account_details.account_no = account_no account_details.ifsc_code = ifsc_code account_details.save() account_details.save() bundle = TransactionResource().build_bundle(obj=transaction) bundle = TransactionResource().full_dehydrate(bundle=bundle) return self.create_response(request, {'success': True, "status_code": 100, 'transaction': bundle}) else: return self.create_response(request, {'success': False, "details": "service not found", "error_code": 404}) else: return self.create_response(request, {'success': False, "details": "user not authenticated please login", "error_code": 111})