207 lines
5.4 KiB
Python
207 lines
5.4 KiB
Python
from flask import jsonify, request
|
|
from app.payment import payment
|
|
from app import db
|
|
from app.classes.customer import Customer_Customer
|
|
from app.classes.cards import Card_Card, Card_Card_schema
|
|
from flask_login import current_user
|
|
|
|
|
|
def set_card_main(user_id):
|
|
"""
|
|
updates a card of a user
|
|
"""
|
|
get_card_count = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.count()
|
|
print(get_card_count)
|
|
if get_card_count > 0:
|
|
print("true")
|
|
|
|
get_old_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.main_card == True) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.first()
|
|
print(get_old_card.id)
|
|
|
|
get_old_card.main_card = False
|
|
|
|
db.session.add(get_old_card)
|
|
|
|
db.session.commit()
|
|
|
|
|
|
@payment.route("/cards/<int:user_id>", methods=["GET"])
|
|
def get_user_cards(user_id):
|
|
"""
|
|
gets all cards of a user
|
|
"""
|
|
get_u_cards = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.all()
|
|
|
|
card_schema = Card_Card_schema(many=True)
|
|
return jsonify(card_schema.dump(get_u_cards))
|
|
|
|
|
|
@payment.route("/cards/onfile/<int:user_id>", methods=["GET"])
|
|
def get_user_cards_count(user_id):
|
|
"""
|
|
gets all cards of a user
|
|
"""
|
|
|
|
get_u_cards = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.count()
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
'cards': get_u_cards,
|
|
}), 200
|
|
|
|
|
|
@payment.route("/card/<int:card_id>", methods=["GET"])
|
|
def get_user_specific_card(card_id):
|
|
"""
|
|
gets a specific card of a user
|
|
"""
|
|
|
|
get_user_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.id == card_id) \
|
|
.first()
|
|
|
|
card_schema = Card_Card_schema(many=False)
|
|
return jsonify(card_schema.dump(get_user_card))
|
|
|
|
|
|
@payment.route("/card/create/<int:user_id>", methods=["POST"])
|
|
def create_user_card(user_id):
|
|
"""
|
|
adds a card of a user
|
|
"""
|
|
|
|
get_customer = db.session \
|
|
.query(Customer_Customer) \
|
|
.filter(Customer_Customer.id == user_id) \
|
|
.first()
|
|
|
|
name_on_card = request.json["card_name"]
|
|
expiration_month = request.json["expiration_month"]
|
|
expiration_year = request.json["expiration_year"]
|
|
type_of_card = request.json["type_of_card"]
|
|
security_number = request.json["security_number"]
|
|
main_card = request.json["main_card"]
|
|
|
|
card_number = request.json["card_number"]
|
|
last_four = card_number[-4]
|
|
|
|
create_new_card = Card_Card(
|
|
user_id=get_customer.id,
|
|
card_number=card_number,
|
|
last_four_digits=last_four,
|
|
name_on_card=name_on_card,
|
|
expiration_month=expiration_month,
|
|
expiration_year=expiration_year,
|
|
type_of_card=type_of_card,
|
|
security_number=security_number,
|
|
accepted_or_declined=None,
|
|
main_card=main_card,
|
|
)
|
|
print(main_card)
|
|
if main_card is True:
|
|
set_card_main(user_id=get_customer.id)
|
|
db.session.add(create_new_card)
|
|
db.session.commit()
|
|
|
|
return jsonify({"ok": True}), 200
|
|
|
|
|
|
@payment.route("/card/main/<int:card_id>/<int:user_id>", methods=["PUT"])
|
|
def set_main_card(user_id, card_id):
|
|
"""
|
|
updates a card of a user
|
|
"""
|
|
|
|
get_new_main_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.filter(Card_Card.id == card_id) \
|
|
.first()
|
|
|
|
get_other_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.main_card == True) \
|
|
.filter(Card_Card.user_id == user_id) \
|
|
.first()
|
|
if get_other_card is not None:
|
|
get_other_card.main_card = False
|
|
db.session.add(get_other_card)
|
|
get_new_main_card.main_card = True
|
|
|
|
db.session.add(get_new_main_card)
|
|
db.session.commit()
|
|
|
|
return jsonify({"ok": True}), 200
|
|
|
|
|
|
@payment.route("/card/edit/<int:card_id>", methods=["PUT"])
|
|
def update_user_card(card_id):
|
|
"""
|
|
edits a card
|
|
"""
|
|
|
|
get_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.id == card_id) \
|
|
.first()
|
|
|
|
get_customer = db.session \
|
|
.query(Customer_Customer) \
|
|
.filter(Customer_Customer.id == get_card.user_id) \
|
|
.first()
|
|
name_on_card = request.json["card_name"]
|
|
expiration_month = request.json["expiration_month"]
|
|
expiration_year = request.json["expiration_year"]
|
|
type_of_card = request.json["type_of_card"]
|
|
security_number = request.json["security_number"]
|
|
card_number = request.json["card_number"]
|
|
main_card = request.json["main_card"]
|
|
|
|
get_card.user_id = get_customer.id
|
|
get_card.card_number = card_number
|
|
get_card.name_on_card = name_on_card
|
|
get_card.expiration_month = expiration_month
|
|
get_card.expiration_year = expiration_year
|
|
get_card.type_of_card = type_of_card
|
|
get_card.security_number = security_number
|
|
get_card.main_card = main_card
|
|
|
|
if main_card is True:
|
|
set_card_main(user_id=get_customer.id, card_id=get_card.id)
|
|
|
|
db.session.add(get_card)
|
|
db.session.commit()
|
|
|
|
return jsonify({"ok": True}), 200
|
|
|
|
|
|
@payment.route("/card/remove/<int:card_id>", methods=["DELETE"])
|
|
def remove_user_card(card_id):
|
|
"""
|
|
removes a card
|
|
"""
|
|
|
|
get_card = db.session \
|
|
.query(Card_Card) \
|
|
.filter(Card_Card.id == card_id) \
|
|
.first()
|
|
|
|
db.session.delete(get_card)
|
|
db.session.commit()
|
|
|
|
return jsonify({"ok": True}), 200
|