예제 #1
0
    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})
예제 #2
0
    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})