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 |