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