Ejemplo n.º 1
0
def record_trip_event():
    ''' Returns request json object representing a sucessful insert.
    Time is represented as seconds since unix epoch. '''
    if not request.json:
        abort(400)
    else:
        for i in keys:
            if i not in request.json:
                abort(400)

        try:
            assert request.json['client_id'] is not None
            assert request.json['driver_id'] is not None
            assert request.json['start_time'] > 0
            assert request.json['lat'] > 0
            assert request.json['lng'] > 0
            assert request.json['fare'] > 0
            assert request.json['distance'] > 0
            assert request.json['rating'] > 0
        except AssertionError:
            abort(400)

        record = {}
        record['client_id'] = request.json['client_id']
        record['driver_id'] = request.json['driver_id']
        record['start_time'] = request.json['start_time']
        record['lat'] = request.json['lat']
        record['lng'] = request.json['lng']
        record['fare'] = request.json['fare']
        record['distance'] = request.json['distance']
        record['rating'] = request.json['rating']

        clienttripdata = {}
        clienttripdata['client_id'] = record['client_id']
        crecord = clienttrip.find({'client_id': record['client_id']})

        if crecord.count() == 0:
            clienttripdata['distance'] = record['distance']
            clienttrip.insert(clienttripdata)
        else:
            clienttrip.update({'client_id': record['client_id']},
                {"$set": {'distance':
                            crecord[0]['distance']+record['distance']}})

        ridescoll.insert(record)
        del record['_id']

        return jsonify(record), 201
def get_total_miles_per_client():
    '''Time is represented as seconds since unix epoch. '''
    result = {}
    coll = clienttrip.find()

    if request.json and all (i in request.json for i in ('start_time', 'end_time')):
        for i in coll:
            total = 0
            records = ridescoll.find({"$and": [{'client_id': i['client_id']},
                                               {'start_time': {"$gt": request.json['start_time']}},
                                               {'start_time': {"$lt": request.json['end_time']}}
                                              ]})
            for record in records:
                total += record['distance']
            result[i['client_id']] = total
    elif request.json is None:
        for i in coll:
            result[i['client_id']] = i['distance']
    else:
        abort(400)

    return jsonify(result), 200