diff --git a/Dockerfile.prod b/Dockerfile.prod index 0a21c24..39eaa84 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -4,6 +4,9 @@ ENV PYTHONFAULTHANDLER=1 ENV PYTHONUNBUFFERED=1 +ENV TZ=America/New_York +# RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + ENV MODE="PRODUCTION" RUN mkdir -p /app diff --git a/app/classes/delivery.py b/app/classes/delivery.py index 6bb219b..1e2ce8a 100755 --- a/app/classes/delivery.py +++ b/app/classes/delivery.py @@ -28,12 +28,12 @@ class Delivery_Delivery(db.Model): customer_filled = db.Column(db.INTEGER) # integer value if delivered, waiting, cancelled etc # waiting = 0 - # delivered = 1 + # cancelled = 1 # out for delivery = 2 - # cancelled = 3 - # partial delivery = 4 + # tommorrow = 3 # issue = 5 # finalized = 10 + delivery_status = db.Column(db.INTEGER) # when the call to order took place @@ -51,7 +51,7 @@ class Delivery_Delivery(db.Model): customer_price = db.Column(db.DECIMAL(6, 2)) # weather customer_temperature = db.Column(db.DECIMAL(6, 2)) - # services + dispatcher_notes = db.Column(db.TEXT()) diff --git a/app/customer/views.py b/app/customer/views.py index 5d2f78d..7b0613a 100755 --- a/app/customer/views.py +++ b/app/customer/views.py @@ -40,7 +40,7 @@ def all_customers(page): pagination all customers """ - per_page_amount = 50 + per_page_amount = 10 if page is None: offset_limit = 0 elif page == 1: @@ -200,7 +200,7 @@ def create_customer(): create_stats_customer = Stats_Customer( customer_id = new_customer.id, - total_calls = 1, + total_calls = 0, service_calls_total = 0, service_calls_total_spent = 0, service_calls_total_profit = 0, diff --git a/app/delivery/views.py b/app/delivery/views.py index 898dc4f..085f9e7 100755 --- a/app/delivery/views.py +++ b/app/delivery/views.py @@ -3,6 +3,7 @@ from flask_login import current_user from datetime import date, datetime, timedelta from app.delivery import delivery from app import db +from sqlalchemy import or_ from app.classes.customer import (Customer_Customer) from app.classes.delivery import (Delivery_Delivery, Delivery_Delivery_schema, @@ -16,6 +17,82 @@ from app.classes.promo import Promo_Promo from app.classes.stats_customer import Stats_Customer +@delivery.route("/updatestatus", methods=["GET"]) +def move_deliveries(): + """ + This will get deliveries not done + """ + counter = 0 + today = date.today() + deliveries_today = (db.session + .query(Delivery_Delivery) + .filter(Delivery_Delivery.delivery_status != 10) + .filter(Delivery_Delivery.delivery_status != 5) + .filter(Delivery_Delivery.delivery_status != 1) + .filter(Delivery_Delivery.expected_delivery_date == today) + .all()) + for f in deliveries_today: + if f.delivery_status != 2: + f.delivery_status = 2 + db.session.add(f) + counter = counter + 1 + + tomm = date.today() + timedelta(days=1) + deliveries_tom = (db.session + .query(Delivery_Delivery) + .filter(Delivery_Delivery.delivery_status != 10) + .filter(Delivery_Delivery.delivery_status != 5) + .filter(Delivery_Delivery.delivery_status != 1) + .filter(Delivery_Delivery.expected_delivery_date == tomm) + .all()) + for g in deliveries_tom: + if g.delivery_status != 3: + g.delivery_status = 3 + db.session.add(g) + counter = counter + 1 + + + + deliveries_waiting = (db.session + .query(Delivery_Delivery) + .filter(Delivery_Delivery.delivery_status != 10) + .filter(Delivery_Delivery.delivery_status != 5) + .filter(Delivery_Delivery.delivery_status != 1) + .filter(Delivery_Delivery.expected_delivery_date != tomm) + .filter(Delivery_Delivery.expected_delivery_date > today) + .all()) + for r in deliveries_waiting: + if r.delivery_status != 0: + r.delivery_status = 0 + db.session.add(r) + counter = counter + 1 + + + deliveries_pending = (db.session + .query(Delivery_Delivery) + .filter(Delivery_Delivery.delivery_status != 10) + .filter(Delivery_Delivery.delivery_status != 5) + .filter(Delivery_Delivery.delivery_status != 1) + .filter(Delivery_Delivery.expected_delivery_date < today) + .all()) + for t in deliveries_pending: + if t.delivery_status != 9: + t.delivery_status = 9 + db.session.add(t) + counter = counter + 1 + + + if counter > 0: + db.session.commit() + return jsonify({ + "ok": True, + 'update': True, + }), 200 + + return jsonify({"ok": True}), 200 + + + @delivery.route("/", methods=["GET"]) def get_a_delivery(delivery_id): """ @@ -33,7 +110,7 @@ def get_a_delivery(delivery_id): 'delivery_expected_delivery_date': str(get_delivery.expected_delivery_date), 'delivery_asked_for_fill': get_delivery.customer_asked_for_fill, 'delivery_gallons_ordered': get_delivery.gallons_ordered, - 'delivery_dispatcher_notes': get_delivery.dispatcher_notes, + 'dispatcher_notes_taken': get_delivery.dispatcher_notes, 'delivery_prime': get_delivery.prime, 'delivery_emergency': get_delivery.emergency, 'delivery_same_day': get_delivery.same_day, @@ -112,7 +189,7 @@ def update_a_delivery_payment(delivery_id, type_of_payment): @delivery.route("/all/", methods=["GET"]) -def get_deliveries_not_delivered_all(page): +def get_deliveries_all(page): """ This will get deliveries not done """ @@ -177,7 +254,7 @@ def get_deliveries_not_delivered(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 0) + .filter(Delivery_Delivery.delivery_status != 10) .order_by(Delivery_Delivery.when_ordered.desc()) .limit(per_page_amount).offset(offset_limit)) @@ -201,7 +278,10 @@ def get_deliveries_waiting(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 0) + .filter(or_(Delivery_Delivery.delivery_status == 0, + ) + ) + .filter(Delivery_Delivery.expected_delivery_date != date.today()) .order_by(Delivery_Delivery.when_ordered.desc()) .limit(per_page_amount).offset(offset_limit)) @@ -210,10 +290,10 @@ def get_deliveries_waiting(page): -@delivery.route("/delivered/", methods=["GET"]) -def get_deliveries_delivered(page): + +@delivery.route("/pending/", methods=["GET"]) +def get_deliveries_pending(page): """ - This will get deliveries not done """ per_page_amount = 50 if page is None: @@ -225,19 +305,16 @@ def get_deliveries_delivered(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 1) - .order_by(Delivery_Delivery.when_ordered.desc()) + .filter(Delivery_Delivery.delivery_status == 9) + .order_by(Delivery_Delivery.delivery_status.asc()) .limit(per_page_amount).offset(offset_limit)) - + customer_schema = Delivery_Delivery_schema(many=True) return jsonify(customer_schema.dump(deliveries)) - - @delivery.route("/outfordelivery/", methods=["GET"]) def get_deliveries_outfordelivery(page): """ - This will get deliveries not done """ per_page_amount = 50 if page is None: @@ -249,11 +326,10 @@ def get_deliveries_outfordelivery(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.expected_delivery_date == date.today()) - .filter(Delivery_Delivery.delivery_status != 10) + .filter(Delivery_Delivery.delivery_status == 2) .order_by(Delivery_Delivery.delivery_status.asc()) .limit(per_page_amount).offset(offset_limit)) - + customer_schema = Delivery_Delivery_schema(many=True) return jsonify(customer_schema.dump(deliveries)) @@ -275,10 +351,11 @@ def get_deliveries_tommorrow(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.expected_delivery_date == tomm) + .filter(Delivery_Delivery.delivery_status == 3) .order_by(Delivery_Delivery.when_ordered.desc()) .limit(per_page_amount).offset(offset_limit)) + customer_schema = Delivery_Delivery_schema(many=True) return jsonify(customer_schema.dump(deliveries)) @@ -323,7 +400,7 @@ def get_deliveries_cancelled(page): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 3) + .filter(Delivery_Delivery.delivery_status == 1) .order_by(Delivery_Delivery.when_ordered.desc()) .limit(per_page_amount).offset(offset_limit)) @@ -388,9 +465,9 @@ def get_deliveries_today(): deliveries = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.expected_delivery_date == date.today()) + .filter(Delivery_Delivery.delivery_status == 2) .all()) - + customer_schema = Delivery_Delivery_schema(many=True) return jsonify(customer_schema.dump(deliveries)) @@ -399,7 +476,7 @@ def get_deliveries_today(): @delivery.route("/edit/", methods=["POST"]) def edit_a_delivery(delivery_id): """ - This will create a delivery using a customer id + This will edit a delivery using a delivery id """ get_delivery = db.session \ .query(Delivery_Delivery) \ @@ -419,11 +496,10 @@ def edit_a_delivery(delivery_id): delivery_status = request.json["delivery_status"] when_to_deliver = request.json["expected_delivery_date"] when_ordered = request.json["created_delivery_date"] - dispatcher_notes_taken = request.json["dispatcher_notes_taken"] customer_wants_fill = request.json["customer_asked_for_fill"] card_payment = request.json["credit"] cash_payment = request.json["cash"] - + dispatcher_notes = request.json["dispatcher_notes_taken"] delivery_driver_id = request.json["driver_employee_id"] @@ -500,12 +576,13 @@ def edit_a_delivery(delivery_id): else: prime_info = 0 + dispatcher_notes + get_delivery.dispatcher_notes = dispatcher_notes get_delivery.delivery_status = delivery_status get_delivery.gallons_ordered = gallons_ordered get_delivery.customer_asked_for_fill = customer_wants_fill get_delivery.expected_delivery_date = when_to_deliver get_delivery.when_ordered = when_ordered - get_delivery.dispatcher_notes = dispatcher_notes_taken get_delivery.prime = prime_info get_delivery.same_day = same_day_info get_delivery.gallons_ordered = gallons_ordered @@ -547,6 +624,7 @@ def create_a_delivery(user_id): if not get_customer: return jsonify({"ok": False}), 200 else: + gallons_ordered = request.json["gallons_ordered"] customer_wants_fill = request.json["customer_asked_for_fill"] when_to_deliver = request.json["expected_delivery_date"] @@ -650,7 +728,7 @@ def create_a_delivery(user_id): same_day_asked = 0 - customer_filled_name = get_customer.customer_last_name + ' ' + get_customer.customer_first_name + customer_filled_name = get_customer.customer_first_name + ' ' + get_customer.customer_last_name now = datetime.utcnow() # Pricing @@ -747,7 +825,7 @@ def cancel_a_delivery(delivery_id): .filter(Delivery_Delivery.id == delivery_id)\ .first() - get_delivery.delivery_status = 3 + get_delivery.delivery_status = 1 db.session.add(get_delivery) db.session.commit() @@ -837,7 +915,7 @@ def delivery_note_driver(delivery_id): @delivery.route("/delete/", methods=["DELETE"]) -def service_delete_call(delivery_id): +def delete_call(delivery_id): """ delete a delivery call """ @@ -851,30 +929,6 @@ def service_delete_call(delivery_id): return jsonify({"ok": True}), 200 -@delivery.route("/updatestatus/outfordelivery", methods=["GET"]) -def move_waiting_to_outtodelivery(): - """ - This will get deliveries not done - """ - counter = 0 - - deliveries = (db.session - .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 0) - .filter(Delivery_Delivery.expected_delivery_date == date.today()) - .all()) - for f in deliveries: - f.delivery_status = 2 - db.session.add(f) - counter = counter + 1 - if counter > 0: - db.session.commit() - return jsonify({ - "ok": True, - 'update': True, - }), 200 - - return jsonify({"ok": True}), 200 @delivery.route("/total/", methods=["GET"]) diff --git a/app/delivery_status/views.py b/app/delivery_status/views.py index fbc5517..b3d65e5 100755 --- a/app/delivery_status/views.py +++ b/app/delivery_status/views.py @@ -17,8 +17,7 @@ def delivered_delivery(): delivery_ticket = (db.session .query(Delivery_Delivery) - .filter(or_(Delivery_Delivery.delivery_status == 1, - Delivery_Delivery.delivery_status == 10)) + .filter(Delivery_Delivery.delivery_status == 10) .all()) @@ -30,8 +29,7 @@ def delivered_delivery_count(): delivery_ticket = (db.session .query(Delivery_Delivery) - .filter(or_(Delivery_Delivery.delivery_status == 1, - Delivery_Delivery.delivery_status == 10)) + .filter(Delivery_Delivery.delivery_status == 10) .count()) return jsonify({ @@ -39,6 +37,7 @@ def delivered_delivery_count(): 'count':delivery_ticket, }), 200 + @deliverystatus.route("/today/driver/", methods=["GET"]) def get_deliveries_driver_today(user_id): """ @@ -56,17 +55,13 @@ def get_deliveries_driver_today(user_id): @deliverystatus.route("/count/today", methods=["GET"]) -def get_deliveries_driver_today_count(): +def get_deliveries_today_count(): """ Get deliveries for driver that day """ get_delivery = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status != 10) - .filter(Delivery_Delivery.delivery_status != 5) - .filter(Delivery_Delivery.delivery_status != 3) - .filter(Delivery_Delivery.delivery_status != 1) - .filter(Delivery_Delivery.expected_delivery_date == date.today()) + .filter(Delivery_Delivery.delivery_status == 2) .count()) return jsonify({ @@ -85,7 +80,7 @@ def get_deliveries_driver_tommorrow(user_id): get_delivery = (db.session .query(Delivery_Delivery) .filter(Delivery_Delivery.driver_employee_id == user_id) - .filter(Delivery_Delivery.expected_delivery_date == tomm) + .filter(Delivery_Delivery.delivery_status == 3) .all()) delivery_schema = Delivery_Delivery_schema(many=True) @@ -99,7 +94,7 @@ def get_deliveries_driver_tommorrow_count(): tomm = date.today() + timedelta(days=1) get_delivery = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.expected_delivery_date == tomm) + .filter(Delivery_Delivery.delivery_status == 3) .count()) return jsonify({ @@ -119,8 +114,6 @@ def get_deliveries_driver_waiting(user_id): .query(Delivery_Delivery) .filter(Delivery_Delivery.driver_employee_id == user_id) .filter(Delivery_Delivery.delivery_status == 0) - .filter(Delivery_Delivery.expected_delivery_date != tomm) - .filter(Delivery_Delivery.expected_delivery_date != date.today()) .all()) delivery_schema = Delivery_Delivery_schema(many=True) @@ -128,17 +121,32 @@ def get_deliveries_driver_waiting(user_id): @deliverystatus.route("/count/waiting", methods=["GET"]) -def get_deliveries_driver_waiting_count(): +def get_deliveries_waiting_count(): """ waiting deliveries scheduled out """ tomm = date.today() + timedelta(days=1) get_delivery = (db.session .query(Delivery_Delivery) - .filter(Delivery_Delivery.delivery_status == 0) - .filter(Delivery_Delivery.expected_delivery_date != tomm) - .filter(Delivery_Delivery.expected_delivery_date != date.today()) + .count()) + + + return jsonify({ + "ok": True, + 'count':get_delivery, + }), 200 + + +@deliverystatus.route("/count/pending", methods=["GET"]) +def get_deliveries_pending_count(): + """ + + """ + + get_delivery = (db.session + .query(Delivery_Delivery) + .filter(Delivery_Delivery.delivery_status == 9) .count()) diff --git a/app/payment/views.py b/app/payment/views.py index 9a77247..a746058 100755 --- a/app/payment/views.py +++ b/app/payment/views.py @@ -111,7 +111,7 @@ def create_user_card(user_id): type_of_card = request.json["type_of_card"] security_number = request.json["security_number"] main_card = request.json["main_card"] - zip_code = request.json["main_card"] + zip_code = request.json["zip_code"] card_number = request.json["card_number"] last_four = card_number[-4] diff --git a/app/social/views.py b/app/social/views.py index 4a00ed4..45bc67f 100644 --- a/app/social/views.py +++ b/app/social/views.py @@ -20,6 +20,7 @@ def get_customer_posts(customer_id, page): customer_posts = (db.session .query(Customer_Customer_Social) .filter(Customer_Customer_Social.customer_id == customer_id) + .order_by(Customer_Customer_Social.id.desc()) .limit(per_page_amount).offset(offset_limit)) customer_social_schema = Customer_Customer_Social_schema(many=True) return jsonify(customer_social_schema.dump(customer_posts)) diff --git a/app/stats/views.py b/app/stats/views.py index fd5679b..3176da3 100755 --- a/app/stats/views.py +++ b/app/stats/views.py @@ -160,6 +160,7 @@ def get_user_last_delivery(user_id): get_delivery= db.session \ .query(Delivery_Delivery) \ .filter(Delivery_Delivery.customer_id == user_id) \ + .filter(Delivery_Delivery.delivery_status == 10) \ .order_by(Delivery_Delivery.id.desc())\ .first() if get_delivery: @@ -167,7 +168,7 @@ def get_user_last_delivery(user_id): else: date_delivered = "no deliveries on record" return jsonify({"ok": True, - 'date': date_delivered, + 'date': str(date_delivered), }), 200