|
1 | | -from flask import jsonify |
| 1 | +from flask import jsonify, request |
2 | 2 | from flask.views import MethodView |
3 | 3 |
|
4 | 4 | from . import v1 |
| 5 | +from model.subscription import Subscription, Plan, User |
| 6 | +from extension import db |
5 | 7 |
|
6 | | -class Subscription(MethodView): |
| 8 | + |
| 9 | +class Subscriptions(MethodView): |
7 | 10 | def get(self): |
8 | | - return jsonify({"value": "yes, test is working....:)"}) |
| 11 | + subscription = Subscription.query.all() |
| 12 | + sub_obj = [ |
| 13 | + { |
| 14 | + "id" : sub.id, |
| 15 | + "plan_id" : sub.plan_id, |
| 16 | + "razorpay_user_id" : sub.razorpay_user_id, |
| 17 | + "subscription_id" : sub.subscription_id, |
| 18 | + "user_id": sub.user_id, |
| 19 | + "subscription_status" : sub.subscription_status |
| 20 | + } |
| 21 | + for sub in subscription |
| 22 | + ] |
| 23 | + return jsonify(sub_obj), 200 |
| 24 | + |
| 25 | + def post(self): |
| 26 | + req: dict = request.get_json() |
| 27 | + plan_id = req.get("plan_id") |
| 28 | + |
| 29 | + if plan_id is None: |
| 30 | + return jsonify({"message": "plan_id is required"}), 400 |
| 31 | + |
| 32 | + # check is valid plan id |
| 33 | + if not Plan.query.filter_by(id=plan_id).all(): |
| 34 | + return jsonify({"message" : "Not a valid plan_id"}) |
| 35 | + |
| 36 | + if not Plan.query.filter_by(id=plan_id).all(): |
| 37 | + return jsonify({"message" : "Not a valid plan_id"}) |
| 38 | + |
| 39 | + # check is valid user_id |
| 40 | + user_id = req.get("user_id") |
| 41 | + if user_id is not None: |
| 42 | + user_exists = User.query.filter_by(id=user_id).first() |
| 43 | + if not user_exists: |
| 44 | + return jsonify({"message": "Not a valid user_id"}), 400 |
| 45 | + |
| 46 | + sub = Subscription( |
| 47 | + plan_id = req.get("plan_id"), |
| 48 | + razorpay_user_id = req.get("razorpay_user_id"), |
| 49 | + subscription_id = req.get("subscription_id"), |
| 50 | + user_id = user_id, |
| 51 | + subscription_status = req.get("subscription_status") |
| 52 | + ) |
| 53 | + |
| 54 | + db.session.add(sub) |
| 55 | + db.session.commit() |
| 56 | + |
| 57 | + return jsonify({"id": sub.id}), 201 |
9 | 58 |
|
10 | | -v1.add_url_rule("/subscription", view_func=Subscription.as_view("subscription")) |
| 59 | +v1.add_url_rule("/subscription", view_func=Subscriptions.as_view("subscription")) |
0 commit comments