def ride_completed(params, request):
    try:
        driver_number = params['driver_number']
        car_number = params['car_number']

        if (not driver_number) or (not car_number):
            return {
                'status': 'error',
                'error_code': 'D001',
                'messages': ['Please pass mandatory parameters.']
            }

        if driver_number and driver_number.strip(
        ) != "" and not commonlib_utils.validate_mobile_number(driver_number):
            return {
                'status': 'error',
                'error_code': 'D002',
                'message': ['please provide valid mobile number.']
            }

        try:
            fetch_driver = Driver.objects.get(number=driver_number)

            fetch_car = CarOwnedByDriver.objects.get(driver=fetch_driver,
                                                     car_number=car_number)

            if fetch_car:
                if fetch_car.status == driver_constants.OCCUPIED:
                    fetch_car.status = driver_constants.FREE
                    fetch_car.save()
                else:
                    return {
                        'status': 'success',
                        'error_code': '',
                        'message': ['car is not occupied.']
                    }
            else:
                return {
                    'status': 'error',
                    'error_code': '',
                    'message': ['no such car exist.']
                }

            return {
                'status': 'success',
                'error_code': '',
                'message': ['Ride completed successfully.']
            }
        except:
            traceback.print_exc()
    except:
        traceback.print_exc()
Пример #2
0
def passenger_history(params, request):
    try:
        passenger_number = params['passenger_number']

        if not passenger_number:
            return {
                'status': 'error',
                'error_code': 'P001',
                'messages': ['Please pass mandatory parameters.']
            }

        if passenger_number and passenger_number.strip(
        ) != "" and not commonlib_utils.validate_mobile_number(
                passenger_number):
            return {
                'status': 'error',
                'error_code': 'P002',
                'message': ['please provide valid mobile number.']
            }

        try:
            fetch_passenger_history = PassengerHistory.objects.select_related(
                'passenger').filter(passenger__number=passenger_number)

            if fetch_passenger_history:
                response_list = []
                for ph in fetch_passenger_history:
                    # ph = passenger_history
                    passenger_details = {
                        'passenger_name': ph.passenger.first_name,
                        'driver_name': ph.driver.first_name,
                        'source_address': ph.source_address,
                        'destination_address': ph.destination_address
                    }
                    response_list.append(passenger_details)

                return {
                    'status': 'success',
                    'error_code': '',
                    'message': response_list
                }
            else:
                return {
                    'status': 'error',
                    'error_code': 'P003',
                    'message': ['Passenger history does not exist.']
                }
        except:
            traceback.print_exc()
    except:
        traceback.print_exc()
Пример #3
0
def passenger_registration(params, request):
    try:
        first_name = params['first_name']
        last_name = params['last_name']
        email = params['email']
        number = params['number']
        password = params['password']

        if (not first_name) or (not last_name) or (not email) or (
                not number) or (not password):
            return {
                'status': 'error',
                'error_code': 'P001',
                'messages': ['Please pass mandatory parameters.']
            }

        if number and number.strip(
        ) != "" and not commonlib_utils.validate_mobile_number(number):
            return {
                'status': 'error',
                'error_code': 'P002',
                'message': ['please provide valid mobile number.']
            }

        try:
            new_passenger = Passenger.objects.create(first_name=first_name,
                                                     last_name=last_name,
                                                     email=email,
                                                     number=number,
                                                     password=password)
            new_passenger.save()

            response_list = [{
                'first_name': new_passenger.first_name,
                'last_name': new_passenger.last_name,
                'email': new_passenger.email,
                'number': new_passenger.number,
                'password': new_passenger.password
            }]

            return {
                'status': 'success',
                'error_code': '',
                'message': response_list
            }
        except:
            traceback.print_exc()
    except:
        traceback.print_exc()
def car_own_by_driver(params, request):
    try:
        driver_number = params['driver_number']
        car_number = params['car_number']
        license_number = params['license_number']

        if (not driver_number) or (not car_number) or (not license_number):
            return {
                'status': 'error',
                'error_code': 'D001',
                'messages': ['Please pass mandatory parameters.']
            }

        if driver_number and driver_number.strip(
        ) != "" and not commonlib_utils.validate_mobile_number(driver_number):
            return {
                'status': 'error',
                'error_code': 'D002',
                'message': ['please provide valid mobile number.']
            }

        try:
            fetch_driver = Driver.objects.get(number=driver_number)

            new_car = CarOwnedByDriver.objects.create(
                driver=fetch_driver,
                car_number=car_number,
                license_number=license_number)
            new_car.save()

            response_list = [{
                'driver_name': new_car.driver.first_name,
                'car_number': new_car.car_number,
                'license_number': new_car.license_number,
                'status': new_car.status
            }]

            return {
                'status': 'success',
                'error_code': '',
                'message': response_list
            }
        except:
            traceback.print_exc()
    except:
        traceback.print_exc()
Пример #5
0
def book_cab(params, request):
    try:
        passenger_number = params['passenger_number']
        source_address = params['source_address']
        destination_address = params['destination_address']

        if (not passenger_number) or (not source_address) or (
                not destination_address):
            return {
                'status': 'error',
                'error_code': 'P001',
                'messages': ['Please pass mandatory parameters.']
            }

        if passenger_number and passenger_number.strip(
        ) != "" and not commonlib_utils.validate_mobile_number(
                passenger_number):
            return {
                'status': 'error',
                'error_code': 'P002',
                'message': ['please provide valid mobile number.']
            }

        try:
            with transaction.atomic():
                # find current passenger
                fetch_passenger = Passenger.objects.get(
                    number=passenger_number)

                # find all available driver
                fetch_drivers = CarOwnedByDriver.objects.select_related(
                    'driver').filter(status=driver_constants.FREE)

                fetch_driver = None
                if fetch_drivers:
                    fetch_driver = fetch_drivers[0]
                    fetch_driver.status = driver_constants.OCCUPIED
                    fetch_driver.save()
                else:
                    return {
                        'status': 'success',
                        'error_code': '',
                        'message': ['No cabs are available right now.']
                    }

                new_ph = PassengerHistory.objects.create(
                    passenger=fetch_passenger,
                    driver=fetch_driver.driver,
                    source_address=source_address,
                    destination_address=destination_address)
                new_ph.save()

                new_dh = DriverHistory.objects.create(
                    passenger=fetch_passenger,
                    driver=fetch_driver.driver,
                    source_address=source_address,
                    destination_address=destination_address)
                new_dh.save()

                response_list = [{
                    'passenger_name': fetch_passenger.first_name,
                    'driver_name': fetch_driver.driver.first_name,
                    'source_address': source_address,
                    'destination_address': destination_address,
                    'car_number': fetch_driver.car_number,
                    'message': 'Cab Booked Successfully'
                }]

                return {
                    'status': 'success',
                    'error_code': '',
                    'message': response_list
                }

        except:
            traceback.print_exc()
    except:
        traceback.print_exc()