182 lines
4.3 KiB
Python
182 lines
4.3 KiB
Python
from flask import request, jsonify
|
|
import decimal
|
|
from datetime import datetime
|
|
from app.promo import promo
|
|
from app import db
|
|
from app.classes.promo import (
|
|
Promo_Promo,
|
|
Promo_Promo_schema)
|
|
from app.classes.delivery import (Delivery_Delivery,
|
|
Delivery_Delivery_schema,
|
|
Delivery_Notes_Driver,
|
|
)
|
|
|
|
def convert_to_decimal(text):
|
|
try:
|
|
number = float(text)
|
|
return round(number, 2)
|
|
except ValueError:
|
|
return "0"
|
|
|
|
|
|
@promo.route("/<int:promo_id>", methods=["GET"])
|
|
def get_promo(promo_id):
|
|
"""
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.filter(Promo_Promo.id == promo_id)
|
|
.first())
|
|
query_schema = Promo_Promo_schema(many=False)
|
|
return jsonify(query_schema.dump(get_promo_data))
|
|
|
|
|
|
@promo.route("/promoprice/<int:delivery_id>", methods=["GET"])
|
|
def get_promo_price(delivery_id):
|
|
"""
|
|
"""
|
|
get_delivery = (db.session
|
|
.query(Delivery_Delivery)
|
|
.filter(Delivery_Delivery.id == delivery_id)
|
|
.first())
|
|
|
|
price = get_delivery.customer_price - get_delivery.promo_money_discount
|
|
price = convert_to_decimal(price)
|
|
return jsonify({
|
|
"ok": True,
|
|
"price": price,
|
|
}), 200
|
|
|
|
|
|
|
|
@promo.route("/all", methods=["GET"])
|
|
def get_all_promo():
|
|
"""
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.all())
|
|
query_schema = Promo_Promo_schema(many=True)
|
|
return jsonify(query_schema.dump(get_promo_data))
|
|
|
|
|
|
@promo.route("/delete/<int:promo_id>", methods=["DELETE"])
|
|
def delete_a_promo(promo_id):
|
|
"""
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.filter(Promo_Promo.id == promo_id)
|
|
.first())
|
|
|
|
db.session.delete(get_promo_data)
|
|
db.session.commit()
|
|
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
}), 200
|
|
|
|
@promo.route("/create", methods=["POST"])
|
|
def create_promo():
|
|
"""
|
|
"""
|
|
date_created = datetime.utcnow()
|
|
name_of_promotion = request.json["name_of_promotion"]
|
|
money_off_delivery = request.json["money_off_delivery"]
|
|
description = request.json["description"]
|
|
text_on_ticket = request.json["text_on_ticket"]
|
|
# see if it exists
|
|
|
|
amount_off = convert_to_decimal(money_off_delivery)
|
|
|
|
new_promo = Promo_Promo(
|
|
name_of_promotion = name_of_promotion,
|
|
money_off_delivery = amount_off,
|
|
description = description,
|
|
date_created = date_created,
|
|
text_on_ticket=text_on_ticket
|
|
)
|
|
db.session.add(new_promo)
|
|
db.session.commit()
|
|
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
'promo_id':new_promo.id,
|
|
}), 200
|
|
|
|
|
|
@promo.route("/edit/<int:promo_id>", methods=["PUT"])
|
|
def edit_promo(promo_id):
|
|
"""
|
|
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.filter(Promo_Promo.id == promo_id)
|
|
.first())
|
|
text_on_ticket = request.json["text_on_ticket"]
|
|
name_of_promotion = request.json["name_of_promotion"]
|
|
money_off_delivery = request.json["money_off_delivery"]
|
|
description = request.json["description"]
|
|
|
|
|
|
amount_off = convert_to_decimal(money_off_delivery)
|
|
|
|
get_promo_data.text_on_ticket = text_on_ticket
|
|
get_promo_data.description = description
|
|
get_promo_data.name_of_promotion = name_of_promotion
|
|
get_promo_data.money_off_delivery = amount_off
|
|
|
|
db.session.add(get_promo_data)
|
|
db.session.commit()
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
'promo_id':get_promo_data.id,
|
|
}), 200
|
|
|
|
|
|
|
|
@promo.route("/on/<int:promo_id>", methods=["PATCH"])
|
|
def turn_on_promo(promo_id):
|
|
"""
|
|
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.filter(Promo_Promo.id == promo_id)
|
|
.first())
|
|
|
|
get_promo_data.active = True
|
|
|
|
|
|
db.session.add(get_promo_data)
|
|
db.session.commit()
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
'promo_id':get_promo_data.id,
|
|
}), 200
|
|
|
|
@promo.route("/off/<int:promo_id>", methods=["PATCH"])
|
|
def turn_off_promo(promo_id):
|
|
"""
|
|
|
|
"""
|
|
get_promo_data = (db.session
|
|
.query(Promo_Promo)
|
|
.filter(Promo_Promo.id == promo_id)
|
|
.first())
|
|
|
|
get_promo_data.active = False
|
|
|
|
|
|
db.session.add(get_promo_data)
|
|
db.session.commit()
|
|
|
|
return jsonify({
|
|
"ok": True,
|
|
'promo_id':get_promo_data.id,
|
|
}), 200 |