Пример #1
0
    def put(self, request, format=None):
        book = self.get_queryset()
        result = {}
        if not book:
            result["resultCode"] = 200
            result["resultText"] = "SUCCESS_EMPTY"
            result["content"] = "Book Not Found Error"
        else:

            book.status = 100
            book.save()

            # add to improper drivers for the given book
            bookDriver = BookDriver()
            bookDriver.driver = User.objects.get(id=book.driver.id)
            bookDriver.book = book
            bookDriver.save()

            result["resultCode"] = 100
            result["resultText"] = "SUCCESS"
            result["content"] = "Customer's book status was changed to CANCEL"

            # push message body
            messageBody = {
                'book': {
                    'status': 'cancelled',
                    'book_id': book.id,
                }
            }

            # notify driver
            driverUserInfo = UserInfo.objects.get(user_id=book.driver_id)
            if driverUserInfo:
                notifications.send_push_message(driverUserInfo.push_token, 'Sifariş imtina edildi!', messageBody)
        return JsonResponse(result)
Пример #2
0
    def put(self, request, format=None):
        book = self.get_queryset()
        result = {}
        if not book:
            result["resultCode"] = 200
            result["resultText"] = "SUCCESS_EMPTY"
            result["content"] = "Book Not Found Error"
        else:
            book.setStatusToComplete()
            book.save()
            result["resultCode"] = 100
            result["resultText"] = "SUCCESS"
            result["content"] = {
                'book_status': book.status
            }

            customerUserInfo = UserInfo.objects.get(user_id=book.customer.id)

            messageBody = {
                'driver': {
                    'status': 'completed',
                    'driver_id': book.driver.id,
                    'respond': 200
                }
            }

            # notify customer
            notifications.send_push_message(customerUserInfo.push_token, 'Sürüş bitdi', messageBody)
        return JsonResponse(result)
Пример #3
0
    def arrived(self, request, pk=None):
        book = Booking.objects.get(pk=pk)
        book.status = 20
        book.save()
        serializer = BookSerializer(book)

        # get customer detail
        customer = UserInfo.objects.get(user_id=book.customer.id)

        messageBody = {
            'driver': {
                'status': 'arrived',
                'driver_id': book.driver.id,
                'respond': 20
            }
        }

        # notify customer
        notifications.send_push_message(customer.push_token, 'Sürücü sizi gözləyir', messageBody)

        return JsonResponse(serializer.data)
Пример #4
0
    def put(self, request, format=None):
        book = self.get_queryset()
        result = {}
        if not book:
            result["resultCode"] = 200
            result["resultText"] = "SUCCESS_EMPTY"
            result["content"] = "Book Not Found Error"
        else:
            # get proper drivers
            properDriverList = utils.findProperDrivers(book.id)

            if properDriverList.count() == 0:
                result["resultCode"] = 200
                result["resultText"] = "SUCCESS_EMPTY"
                result["content"] = "Proper Drivers Not Found"
                return JsonResponse(result)

            # get book pickup address
            pickupAddress = Address.objects.filter(is_pickup_loc=1, booking_id=book.id).first()
            nearestDriverUserInfo = utils.findNearestDriver(pickupAddress.latitude, pickupAddress.longitude, 100000,
                                                            properDriverList)
            book.driver = nearestDriverUserInfo.user
            book.status = 10
            book.save()

            serializer = UserInfoSerializer(nearestDriverUserInfo)
            result["resultCode"] = 100
            result["resultText"] = "SUCCESS"
            result["content"] = serializer.data
            # push message body
            messageBody = {
                'book': {
                    'status': 'new',
                    'book_id': book.id,
                }
            }

            # notify driver
            notifications.send_push_message(nearestDriverUserInfo.push_token, 'Yeni sifariş', messageBody)
        return JsonResponse(result)
Пример #5
0
    def put(self, request, format=None):
        book = self.get_queryset()
        self.check_object_permissions(request, book)
        result = {}
        if not book:
            result["resultCode"] = 200
            result["resultText"] = "SUCCESS_EMPTY"
            result["content"] = "Book Not Found Error"
        else:

            customerUserInfo = UserInfo.objects.get(user_id=book.customer.id)
            driverUserInfo = UserInfo.objects.get(user_id=book.driver.id)

            room_id = 'room-' + utils.make_uuid()

            # Driver Accepted Case
            acceptDriver = int(request.POST.get('accept'))
            if acceptDriver == 1:
                book.status = 1
                book.room_id = room_id
                book.save()

                data = {
                    "driver": {
                        "id": driverUserInfo.user_id,
                        "latitude": driverUserInfo.latitude,
                        "longitude": driverUserInfo.longitude
                    },
                    "customer": {
                        "id": customerUserInfo.user_id,
                        "latitude": customerUserInfo.latitude,
                        "longitude": customerUserInfo.longitude
                    }
                }
                self.firebase.create('rooms/' + room_id, data)

                messageBody = {
                    'driver': {
                        'status': 'accepted',
                        'room_id': room_id,
                        'driver_id': driverUserInfo.user.id,
                        'respond': 1
                    }
                }

                # notify customer
                notifications.send_push_message(customerUserInfo.push_token, 'Sifariş qəbul edildi', messageBody)

                result["resultCode"] = 100
                result["resultText"] = "SUCCESS"
                result["content"] = {
                    'tracking_room_id': room_id
                }

            # -3- Driver Rejected Case
            else:
                # -3.1-
                book.status = 2
                book.save()

                # -3.2-
                bookDriver = BookDriver()
                bookDriver.driver = User.objects.get(id=book.driver.id)
                bookDriver.book = book
                bookDriver.save()

                messageBody = {
                    'driver': {
                        'status': 'rejected',
                        'driver_id': driverUserInfo.user.id,
                        'respond': 2
                    }
                }

                # notify customer
                notifications.send_push_message(customerUserInfo.push_token, 'Sifariş qəbul olunmadı', messageBody)

                result["resultCode"] = 100
                result["resultText"] = "REJECTED"
                result["content"] = "Book Rejected"

        return JsonResponse(result)
Пример #6
0
 def post(self, request):
     token = request.data.get('pushToken')
     notifications.send_push_message(token, 'hello orxan')
     return Response({'token': token})