Esempio n. 1
0
    def accept(driver_number):
        conn    = None
        try:
            conn, cur                       = Sql.get_connection()
            booking_details                 = Firebase.get_current_request(driver_number)
            if booking_details["bookingId"] == -1:
                raise ValueError('There is no booking for this driver')
            if len(booking_details) == 0:
                raise ValueError('Booking details is empty')
            user_number                     = int(booking_details["user"])
            fare                            = float(booking_details["fare"])
            booking_id                      = booking_details["bookingId"]
            from_lon                        = float(booking_details["from_lon"])
            from_lat                        = float(booking_details["from_lat"])
            to_lon                          = float(booking_details["to_lon"])
            to_lat                          = float(booking_details["to_lat"])
            seats                           = int(booking_details["seats"])
            now_time                        = datetime.timestamp(datetime.now())

            sql_query                       = "select name, vehicle from drivers where number = '{0}'"
            cur.execute(sql_query.format(driver_number))
            d                               = cur.fetchone()
            driver_name                     = str(d[0])
            vehicle                         = str(d[1])
            sql_query                       = "insert into driver_history (booking_id, driver_number, timestamp) values ('{0}', {1}, {2})"
            cur.execute(sql_query.format(booking_id, driver_number, now_time))
            conn.commit()

            sql_query = "insert into distance(booking_id, status, dist, driver, from_lon, from_lat) values('{0}', 1, -1.0, '{1}', {2}, {3})"
            cur.execute(sql_query.format(booking_id, driver_number, from_lon, from_lat))
            conn.commit()

            sql_query                       = "insert into user_history (booking_id, user_number, timestamp) values ('{0}', {1}, {2})"
            cur.execute(sql_query.format(booking_id, user_number, now_time))
            conn.commit()

            status                          = Firebase.confirm_user_booking(user_number, driver_number, driver_name, vehicle)
            
            sql_query                       = "insert into user_booking(booking_id, user_number, status, driver_number, fare, activity, from_lon, from_lat, to_lon, to_lat, seats) values('{0}', '{1}', {2}, '{3}', {4}, '{5}', {6}, {7}, {8}, {9}, {10})"
            cur.execute(sql_query.format(booking_id, user_number, C.USER_BOOKED, driver_number, fare, "user_booked", from_lon, from_lat, to_lon, to_lat, seats))
            conn.commit()
 
            conn.close()
            result = Response.make_response(200, "Driver accepted", "Request accepted successfully", fare = fare, bookingId = booking_id)
            return result
        except Exception as e:
            if conn is not None:
                conn.close()
            logging.error("Error in accepting request: " + str(e))
            return Response.default_error