from flask import jsonify from sqlalchemy import func, or_ from datetime import date from app.stats import stats from app import db from app.classes.delivery import Delivery_Delivery from app.classes.stats_company import Stats_Company, Stats_Company_schema from app.classes.stats_customer import Stats_Customer, Stats_Customer_schema @stats.route("/calls/add", methods=["PUT"]) def total_calls_post(): total_calls_today = (db.session .query(Stats_Company) .filter(Stats_Company.expected_delivery_date == date.today()) .first()) current_call_count = total_calls_today.total_calls new_call = current_call_count + 1 total_calls_today.total_calls = new_call db.session.add(total_calls_today) db.session.commit() return jsonify({"ok": True,}), 200 @stats.route("/calls/count/today", methods=["GET"]) def total_calls_today(): total_calls_today = (db.session .query(Stats_Company) .filter(Stats_Company.expected_delivery_date == date.today()) .count()) return jsonify({"ok": True, 'data': total_calls_today, }), 200 @stats.route("/gallons/total/", methods=["GET"]) def total_gallons_delivered_driver(driver_id): gallons_list = [] total_gallons = db.session\ .query(Delivery_Delivery)\ .filter(Delivery_Delivery.driver_employee_id == driver_id)\ .all() for f in total_gallons: gallons_list.append(f.gallons_delivered) sum_of_gallons = (sum(gallons_list)) return jsonify({"ok": True, 'data': sum_of_gallons, }), 200 @stats.route("/delivery/total/", methods=["GET"]) def total_deliveries_driver(driver_id): total_stops = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.driver_employee_id == driver_id) .count()) return jsonify({"ok": True, 'data': total_stops, }), 200 @stats.route("/primes/total/", methods=["GET"]) def total_primes_driver(driver_id): total_stops = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.driver_employee_id == driver_id) .filter(Delivery_Delivery.prime == 1) .count()) return jsonify({"ok": True, 'data': total_stops, }), 200 @stats.route("/delivery/count/today", methods=["GET"]) def total_deliveries_today(): total_stops = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.expected_delivery_date == date.today()) .count()) return jsonify({"ok": True, 'data': total_stops, }), 200 @stats.route("/delivery/count/delivered/today", methods=["GET"]) def total_deliveries_today_finished(): total_stops = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.expected_delivery_date == date.today()) .filter((Delivery_Delivery.delivery_status == 10)) .count()) return jsonify({"ok": True, 'data': total_stops, }), 200 @stats.route("/user/", methods=["GET"]) def get_user_stats(user_id): """ gets stats of user """ get_user = db.session \ .query(Stats_Customer) \ .filter(Stats_Customer.customer_id == user_id) \ .first() if get_user is None: new_stats = Stats_Customer( customer_id = user_id, total_calls = 1, service_calls_total = 0, service_calls_total_spent = 0, service_calls_total_profit = 0, oil_deliveries = 0, oil_total_gallons = 0, oil_total_spent = 0, oil_total_profit = 0, ) db.session.add(new_stats) db.session.commit() get_user = db.session \ .query(Stats_Customer) \ .filter(Stats_Customer.customer_id == user_id) \ .first() user_schema = Stats_Customer_schema(many=False) return jsonify(user_schema.dump(get_user)) @stats.route("/user/lastdelivery/", methods=["GET"]) def get_user_last_delivery(user_id): """ gets users last delivery. used on profile page """ get_delivery= db.session \ .query(Delivery_Delivery) \ .filter(Delivery_Delivery.customer_id == user_id) \ .order_by(Delivery_Delivery.id.desc())\ .first() if get_delivery: date_delivered = get_delivery.when_delivered else: date_delivered = "no deliveries on record" return jsonify({"ok": True, 'date': date_delivered, }), 200