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("/", 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/", 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/", 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/", 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/", 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/", 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