Пример #1
0
def book():
    data = {}
    name = request.form['name']
    mobile = request.form['mobile']
    date_input = request.form['date']
    time = request.form['time']
    timestamp = date_input +  " " + time
    datetimeformat = dt.datetime.strptime(timestamp, '%d-%m-%Y %I:%M %p') 

    user = User.get_or_none(User.mobile_num == mobile)
    bookSlotValidate = Booking.select().where(Booking.booking_time == datetimeformat)
    if len(bookSlotValidate) > 0:
        slot_booked = check_slot_available(datetimeformat,[slot.booking_time for slot in bookSlotValidate])
        if slot_booked == 0:
            res = make_response(jsonify('Slot was Booked by Other user'),422)
            return res
        
    booking = Booking(booking_time = datetimeformat, user = user , slot =1 )
    booking.save()
       
    data['name'] = name
    data['mobile'] = mobile
    data['booking_time'] = datetimeformat
    # return redirect('users/new.html')
    res = make_response(jsonify(data),200)
    return res
Пример #2
0
def booking_new():
    current_user = get_jwt_identity()
    if get_jwt_header()['type'] == "User":
        response = request.get_json()
        user = User.get_or_none(User.email == current_user)
        new_booking = Booking(user=user.id, chef=response['chef'], address=response['address'], service_type=response['service_type'], pax=response['pax'], meal_type=response['meal_type'], menu_type=response['menu_type'], hob_type=response['hob_type'], no_of_hob=response['no_of_hob'], oven=response['oven'], price=response['price'], diet_restrictions=response['diet_restrictions'], proposed_date=response['proposed_date'], message=response['message'], completed=False, payment_status=False, confirmed=False, active=True, cancelled=False)
        if new_booking.save():
            return jsonify({
                "message": "Successfully created new booking",
                "status": "success",
                "booking_id": new_booking.id,
                "chef_id": new_booking.chef_id,
                "user_id": new_booking.user_id,
                "completed":new_booking.completed,
                "payment_status":new_booking.payment_status,
                "confirmed":new_booking.confirmed,
                "active":new_booking.active,
                "cancelled":new_booking.cancelled
            }), 200
        else:
            return jsonify({
                "message": "failed to create new booking",
                "status": "failed"
            }), 400
    else:
        return jsonify(message="You are logged in as Chef, not User ", status="success"), 400
Пример #3
0
 def post(self, args):
     ## Check if the Timetable already exists
     timetable = Timetable.query.filter_by(name=args['timetable']).first()
     if timetable is None:
         abort(404, message='Timetable not found')
     ## Check the start date and end date of the session is the same
     if args['start'].date() != args['end'].date():
         abort(422, message="Start and End date must match")
     ## Check the end time is after the start time
     if args['start'].time() >= args['end'].time():
         abort(422, message="The session must end after its start time")
     ## Strip timezone data if its present
     args['start'] = args['start'].replace(tzinfo=None)
     args['end'] = args['end'].replace(tzinfo=None)
     ## Conflict check
     isConflicting = timetable.checkBookingConflict(args['start'], args['end'])
     if isConflicting:
         abort(422, message="Booking Conflict, A sessions already exists at this time")
     ## Parse the parameters to a dictionary for SQLAlchemy
     bookingData = {}
     bookingData['name'] = args['name']
     bookingData['start'] = args['start']
     bookingData['end'] = args['end']
     bookingData['cell_colour'] = args['colour']
     ## Create the booking object
     booking = Booking(**bookingData)
     booking.timetable_id = timetable.identifier    ## Set the bookings timetable to the found supplied one
     db.session.add(booking)
     db.session.commit()
     return "", 201
Пример #4
0
def approved_bookings():
    # Returns approved orders by Chef
    if get_jwt_header()['type'] == "Chef":
        current_chef = Chef.get_or_none(Chef.username == get_jwt_identity())
        bookings = Booking.select().where(Booking.chef_id == current_chef.id,
                                          Booking.active == True,
                                          Booking.confirmed == True)
        if bookings:
            return jsonify({
                "count":
                bookings.count(),
                "results": [
                    {
                        # not complete information
                        "booking_id": booking.id,
                        "user_id": booking.user_id,
                        "chef_id": booking.chef_id,
                        "price": booking.price,
                        "proposed_date": booking.proposed_date,
                        "booking_completed": booking.completed,
                        "booking_confirmed": booking.confirmed,
                        "booking_active": booking.active,
                    } for booking in bookings
                ]
            })
        else:
            return jsonify({
                "message": "There are no confirmed bookings for this chef",
                "status": "Failed"
            }), 400
    # Returns confirmed bookings for User
    else:
        current_user = User.get_or_none(User.username == get_jwt_identity())
        bookings = Booking.select().where(Booking.user_id == current_user.id,
                                          Booking.active == True,
                                          Booking.confirmed == True)
        if bookings:
            return jsonify({
                "count":
                bookings.count(),
                "results": [
                    {
                        # not complete information
                        "booking_id": booking.id,
                        "user_id": booking.user_id,
                        "chef_id": booking.chef_id,
                        "price": booking.price,
                        "proposed_date": booking.proposed_date,
                        "booking_completed": booking.completed,
                        "booking_confirmed": booking.confirmed,
                        "booking_active": booking.active,
                    } for booking in bookings
                ]
            })
        else:
            return jsonify({
                "message": "There are no confirmed bookings for this user",
                "status": "Failed"
            }), 400
Пример #5
0
async def create_booking(booking: Booking_Model, db: Session = Depends(get_db)):
    booking = Booking.get_booking_by_email_and_date(db, booking.email, booking.date, booking.trailhead_id)
    if booking:
        raise HTTPException(status_code=400,
                            detail="A booking for this date and email already exists.")
    new_booking = Booking.create(booking)
    new_booking.save()

    return booking
Пример #6
0
def booking(teacher_id, weekday, time):
    form = forms.BookingForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            Booking.add(teacher=Teacher.query.get(teacher_id),
                        **form.data).commit()
            return render_template("booking_done.html", form=form)

    return render_template("booking.html",
                           teacher=Teacher.query.get(teacher_id),
                           weekday=weekday,
                           time=time,
                           form=form)
Пример #7
0
class TestBooking(unittest.TestCase):
    def setUp(self):
        self.member1 = Member('Diana', 'Prince', 'Premium', 'Active', 1)
        self.member2 = Member('Bruce', 'Wayne', 'Premium', 'Inactive', 2)
        self.member3 = Member('Peter', 'Parker', 'Standard', 'Active', 3)

        self.gymsession1 = Gymsession('Les Mills - Body Pump',
                                      'A full body weights workout.',
                                      'Strength', 'Moderate', 'Monday',
                                      '05/04/21', '13.00', 45, 'Peak', 'Gym 1',
                                      4.50, 10, 'Lonnie Machin')
        self.gymsession2 = Gymsession(
            'Les Mills - Body Combat',
            'High energy martial arts inspired workout.', 'Cardio', 'Advanced',
            'Wednesday', '07/04/21', '15.00', 60, 'Off Peak', 'Gym 2', 4.50,
            10, 'Selina Kyle', 2)
        self.gymsession3 = Gymsession(
            'Les Mills - Body Balance',
            'A Yoga based class that will improve your mind, your body and your life',
            'Flexibility', 'Beginner', 'Friday', '09/04/21', '11.00', 90,
            'Peak', 'Gym 2', 4.50, 15, 'Selina Kyle', 3)

        self.booking1 = Booking(self.member1.id, self.gymsession3.id)
        self.booking2 = Booking(self.member2.id, self.gymsession1.id, True, 2)
        self.booking3 = Booking(self.member2.id, self.gymsession3.id, True, 3)

    def test_booking_has__booking_id(self):
        self.assertEqual(None, self.booking1.id)
        self.assertEqual(2, self.booking2.id)
        self.assertEqual(3, self.booking3.id)

    def test_booking_has__member_id(self):
        self.assertEqual(1, self.booking1.member_id)
        self.assertEqual(2, self.booking2.member_id)
        self.assertEqual(2, self.booking3.member_id)

    def test_booking_has__gymsession_id(self):
        self.assertEqual(3, self.booking1.gymsession_id)
        self.assertEqual(None, self.booking2.gymsession_id)
        self.assertEqual(3, self.booking3.gymsession_id)

    def test_booking_has__attendance(self):
        self.assertEqual(False, self.booking1.attended)
        self.assertEqual(True, self.booking2.attended)
        self.assertEqual(True, self.booking3.attended)

    def test_mark_class_as_attended(self):
        self.booking1.add_attendance()
        self.assertEqual(True, self.booking1.attended)
Пример #8
0
def create_booking():
    fitness_class = fitness_class_repository.select(
        request.form['fitness_class_id'])
    member = member_repository.select_by_membership_no(
        request.form['membership_no'])
    id = request.form['fitness_class_id']
    class_type = fitness_class.class_type
    date = fitness_class.date
    time = fitness_class.time
    duration = fitness_class.duration
    instructor = fitness_class.instructor
    location = fitness_class.location

    class_participants = fitness_class_repository.get_participants(
        fitness_class)
    for participant in class_participants:
        if participant.id == member.id:
            return redirect('/bookings/member-already-booked')

    if fitness_class.capacity > 0:
        capacity = fitness_class.capacity - 1
        fitness_class = FitnessClass(class_type, date, time, duration,
                                     instructor, capacity, location, id)
        fitness_class_repository.edit(fitness_class)
        new_booking = Booking(member, fitness_class)
        booking_repository.add(new_booking)
        return redirect('/bookings')

    else:
        return redirect('/bookings/class-full')
Пример #9
0
def chef_approve(booking_id):
    if get_jwt_header()['type'] == "Chef":
        current_chef = Chef.get_or_none(Chef.email == get_jwt_identity())
        booking = Booking.get_or_none(Booking.id == booking_id)
        if booking:
            if booking.chef_id == current_chef.id:
                booking.confirmed = True
                if booking.save():
                    return jsonify({
                        "booking_id": booking_id,
                        "completed": booking.completed,
                        "payment_status": booking.payment_status,
                        "confirmed": booking.confirmed,
                        "active": booking.active,
                        "cancelled": booking.cancelled,
                        "status": "success"
                    }), 200
            else:
                return jsonify({
                    "message": "You are logged in as another chef",
                    "booking_chef_id": booking.chef_id,
                    "status": "failed"
                }), 400
        else:
            return jsonify({
                "message": "Booking does not exist",
                "status": "Failed"
            }), 400
    else:
        return jsonify({
            "message": "You have to log in as Chef, not user",
            "status": "Failed"
        }), 400
Пример #10
0
def booking_id(booking_id):
    booking = Booking.get_or_none(Booking.id == booking_id)
    if booking:
        return jsonify({
            "booking_id": booking.id,
            "user": booking.user_id,
            "chef": booking.chef_id,
            "address": booking.address,
            "service_type": booking.service_type,
            "pax": booking.pax,
            "meal_type": booking.meal_type,
            "menu_type": booking.menu_type,
            "hob_type": booking.hob_type,
            "no_of_hob": booking.no_of_hob,
            "oven": booking.oven,
            "price": booking.price,
            "diet_restrictions": booking.diet_restrictions, 
            "proposed_date": booking.proposed_date,
            "message": booking.message,
            "completed": booking.completed,
            "payment_status": booking.payment_status,
            "confirmed": booking.confirmed,
            "active": booking.active,
            "cancelled": booking.cancelled
            
        }), 200
    else: 
        return jsonify({
            "message": "This booking does not exist",
            "status": "Failed"
        }), 400
Пример #11
0
 def create(self, booking: Booking):
     cursor = self.db.cursor()
     sql = "INSERT INTO bookings(flight_id, passenger_id, flight_class, date, booking_ref, seat_number) VALUES ( %s, %s, %s, %s, %s, %s)"
     val = (booking.flight_id, booking.passenger_id, booking.flight_class,
            booking.date, booking.booking_ref, booking.seat_number)
     cursor.execute(sql, val)
     self.db.commit()
     booking.id = cursor.lastrowid
def select_all():
    bookings = []
    sql = "SELECT * FROM bookings"
    results = run_sql(sql)
    for result in results:
        booking = Booking(result["member"], result["activity"], result["id"])
        bookings.append(booking)
    return members
Пример #13
0
    def setUp(self):
        self.member_1 = Member("Dario", "Cologna", "male", 34)

        self.date = datetime.date(2020, 12, 16)
        self.time = datetime.time(6, 15)
        self.workout_1 = Workout("Just Skate", "freestyle", self.date,
                                 self.time, 3)
        self.booking_1 = Booking(self.member_1, self.workout_1)
def create_booking():
    member_id = request.form["member_id"]
    session_id = request.form["session_id"]
    member = member_repo.select(member_id)
    session = session_repo.select(session_id)
    new_booking = Booking(member, session)
    booking_repo.save(new_booking)
    return redirect("/bookings")
def update_booking(id):
    member_id = request.form["member_id"]
    session_id = request.form["session_id"]
    member = member_repo.select(member_id)
    session = session_repo.select(session_id)
    booking = Booking(member, session, id)
    booking_repo.update(booking)
    return redirect("/bookings")
Пример #16
0
def select(id):
    sql = "SELECT * FROM fitness_class_member_bookings WHERE id = %s"
    values = [id]
    result = run_sql(sql, values)[0]
    if result is not None:
        booking = Booking(result['member_id'], result['fitness_class_id'],
                          result['id'])
    return booking
def select(id):
    sql = 'SELECT * FROM bookings WHERE id = %s'
    values = [id]
    result = run_sql(sql, values)[0]
    member = member_repository.select(result['member_id'])
    lesson = lesson_repository.select(result['lesson_id'])
    booking = Booking(member, lesson, result['id'])
    return booking
def update_booking(id):
    member_id = request.form["member_id"]
    activity_id = request.form["activity_id"]
    member = member_repository.select(member_id)
    activity = activity_repository.select(activity_id)
    booking = Booking(member, activity, id)
    booking_repository.update(booking)
    return redirect("/bookings")
Пример #19
0
def select(id):
    sql = "SELECT * FROM bookings WHERE id = %s"
    value = [id]
    result = run_sql(sql, value)[0]
    member = member_repository.select(result['member_id'])
    fitness_class = fitness_class_repository.select(result['fitness_class_id'])
    booking = Booking(member, fitness_class, result['id'])
    return booking
def select(id):
    sql = "SELECT * FROM bookings WHERE id = %s"
    values = [id]
    result = run_sql(sql, values)[0]
    workout = workout_repository.select(result["workout_id"])
    member = member_repository.select(result["member_id"])
    booking = Booking(workout, member, result["id"])
    return booking
Пример #21
0
def add_booking():
    member_id = request.form["member_id"]
    session_id = request.form["session_id"]
    member = member_repository.select(member_id)
    session = session_repository.select(session_id)
    booking = Booking(member, session)
    booking_repository.save(booking)
    return redirect("/bookings")
Пример #22
0
def update_booking(id):
    workout_id = request.form["workout_id"]
    member_id = request.form["member_id"]
    workout = workout_repository.select(workout_id)
    member = member_repository.select(member_id)
    booking = Booking(workout, member, id)
    booking_repository.update(booking)
    return redirect("/bookings")
Пример #23
0
def create_booking():
    workout_id = request.form["workout_id"]
    member_id = request.form["member_id"]
    workout = workout_repository.select(workout_id)
    member = member_repository.select(member_id)
    new_booking = Booking(workout, member)
    booking_repository.save(new_booking)
    return redirect("/bookings")
Пример #24
0
def create_task():
    member_id = request.form['member_id']
    session_id = request.form['session_id']
    member = member_repository.select(member_id)
    session = session_repository.select(session_id)
    booking = Booking(member, session)
    booking_repository.save(booking)
    return redirect('/bookings')
Пример #25
0
def select(id):
    sql = "SELECT * FROM bookings WHERE id = %s"
    values = [id]
    result = run_sql(sql, values)[0]
    member = member_repository.select(result["member_id"])
    session = session_repository.select(result["session_id"])
    booking = Booking(member, session, result["id"])
    return booking
Пример #26
0
def select(id):
    sql = 'SELECT * FROM bookings WHERE id = %s'
    values = [id]
    results = run_sql(sql, values)[0]
    member = member_repository.select(results['member_id'])
    activity = activity_repository.select(results['activity_id'])
    booking = Booking(member, activity, results['note'], results['id'])
    return booking
Пример #27
0
def create_booking():
    member_id = request.form["member_id"]
    lesson_id = request.form["lesson_id"]
    member = member_repository.select(member_id)
    lesson = lesson_repository.select(lesson_id)
    new_booking = Booking(member, lesson)
    booking_repository.save(new_booking)
    return redirect("/bookings")
Пример #28
0
def create_booking():
    member_id = request.form['member_id']
    lesson_id = request.form['lesson_id']
    member = member_repository.select(member_id)
    lesson = lesson_repository.select(lesson_id)
    booking = Booking(member, lesson)
    booking_repository.save(booking)
    return redirect('/bookings')
Пример #29
0
def confirm_booking():
    member_id = request.form['member_id']
    gymsession_id = request.form['gymsession_id']
    member = member_repository.view(member_id)
    gymsession = gymsession_repository.view(gymsession_id)
    new_booking = Booking(member, gymsession)
    booking_repository.add_new(new_booking)
    return render_template('bookings/confirm_booking.html')
Пример #30
0
def create_booking():
    member_id = request.form['member_id']
    workout_id = request.form['workout_id']
    member = member_repository.select(member_id)
    workout = workout_repository.select(workout_id)
    booking = Booking(member, workout)
    booking_repository.save(booking)
    return redirect('/members')