104 lines
3.8 KiB
Python
104 lines
3.8 KiB
Python
from flask import request, jsonify
|
|
from flask_login import current_user
|
|
from datetime import date, timedelta
|
|
from app.service import service
|
|
from app import db
|
|
from sqlalchemy import or_
|
|
|
|
from app.classes.customer import (Customer_Customer)
|
|
from app.classes.service import (Service_Service,
|
|
Service_Service_schema
|
|
)
|
|
from app.classes.employee import Employee_Employee
|
|
from app.classes.cards import Card_Card
|
|
from app.classes.pricing import Pricing_Oil_Oil
|
|
from app.classes.auth import Auth_User
|
|
from app.classes.promo import Promo_Promo
|
|
|
|
|
|
|
|
@service.route("/<int:id>", methods=["GET"])
|
|
def get_service_call(id):
|
|
services = Service_Service.query.filter(Service_Service.id==id).first()
|
|
service_schema = Service_Service_schema(many=False)
|
|
return jsonify(service_schema.dump(services)), 200
|
|
|
|
|
|
@service.route("/create", methods=["POST"])
|
|
def create_service_call():
|
|
data = request.get_json()
|
|
if not data:
|
|
return jsonify({"error": "No data provided"}), 400
|
|
|
|
new_service = Service_Service(
|
|
customer_id=data.get('customer_id'),
|
|
customer_name=data.get('customer_name'),
|
|
customer_address=data.get('customer_address'),
|
|
customer_town=data.get('customer_town'),
|
|
customer_state=data.get('customer_state'),
|
|
customer_zip=data.get('customer_zip'),
|
|
type_service_call=data.get('type_service_call'),
|
|
status=data.get('status', 1), # Default to incomplete
|
|
when_ordered=data.get('when_ordered', str(date.today())),
|
|
scheduled_date=data.get('scheduled_date'),
|
|
time=data.get('time'),
|
|
description=data.get('description'),
|
|
prime=data.get('prime', 0),
|
|
same_day=data.get('same_day', 0),
|
|
emergency=data.get('emergency', 0),
|
|
service_employee_id=data.get('service_employee_id'),
|
|
service_first_name=data.get('service_first_name'),
|
|
service_last_name=data.get('service_last_name'),
|
|
payment_type=data.get('payment_type'),
|
|
payment_card_id=data.get('payment_card_id'),
|
|
cash_recieved=data.get('cash_recieved', 0.0),
|
|
check_number=data.get('check_number'),
|
|
pre_charge_amount=data.get('pre_charge_amount', 0.0),
|
|
total_price=data.get('total_price', 0.0),
|
|
final_price=data.get('final_price', 0.0),
|
|
promo_id=data.get('promo_id'),
|
|
promo_money_discount=data.get('promo_money_discount', 0.0)
|
|
)
|
|
|
|
try:
|
|
db.session.add(new_service)
|
|
db.session.commit()
|
|
return jsonify({"message": "Service created successfully", "id": new_service.id}), 201
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
return jsonify({"error": str(e)}), 500
|
|
|
|
@service.route("/edit/<int:id>", methods=["PUT"])
|
|
def update_service_call(id):
|
|
service = Service_Service.query.get_or_404(id)
|
|
data = request.get_json()
|
|
if not data:
|
|
return jsonify({"error": "No data provided"}), 400
|
|
|
|
for key, value in data.items():
|
|
if hasattr(service, key):
|
|
setattr(service, key, value)
|
|
try:
|
|
db.session.commit()
|
|
return jsonify({"message": "Service updated successfully"}), 200
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
return jsonify({"error": str(e)}), 500
|
|
|
|
@service.route("/<int:id>", methods=["DELETE"])
|
|
def delete_service_call(id):
|
|
service = Service_Service.query.get_or_404(id)
|
|
try:
|
|
db.session.delete(service)
|
|
db.session.commit()
|
|
return jsonify({"message": "Service deleted successfully"}), 200
|
|
except Exception as e:
|
|
db.session.rollback()
|
|
return jsonify({"error": str(e)}), 500
|
|
|
|
@service.route("/list/all", methods=["GET"])
|
|
def list_service_calls():
|
|
services = Service_Service.query.all()
|
|
service_schema = Service_Service_schema(many=True)
|
|
return jsonify(service_schema.dump(services)), 200
|