From d8da74c75b5759fac26c6861af18de901b164f3c Mon Sep 17 00:00:00 2001 From: Edwin Eames Date: Mon, 29 Jul 2024 13:44:09 -0400 Subject: [PATCH] Small bug fixers --- app/models/delivery.py | 39 +++++----- app/routers/confirm.py | 60 +++++++++++++++ app/routers/delivery.py | 163 +++++++++++++++++----------------------- app/routers/main.py | 3 + main.py | 9 ++- 5 files changed, 159 insertions(+), 115 deletions(-) create mode 100644 app/routers/confirm.py diff --git a/app/models/delivery.py b/app/models/delivery.py index 1ba7ff8..a6f16ec 100644 --- a/app/models/delivery.py +++ b/app/models/delivery.py @@ -1,6 +1,6 @@ -from sqlalchemy import (Column, Integer, - DECIMAL, Text, - VARCHAR, TIMESTAMP, Date) +from sqlalchemy import (Column, INTEGER, + DECIMAL, TEXT, + VARCHAR, TIMESTAMP, DATE) import datetime from database import Base @@ -8,40 +8,41 @@ from database import Base class Delivery(Base): __tablename__ = "delivery_delivery" - id = Column(Integer, + id = Column(INTEGER, primary_key=True, autoincrement=True, unique=False) - customer_id = Column(Integer) + customer_id = Column(INTEGER) customer_name = Column(VARCHAR(1000)) customer_address = Column(VARCHAR(1000)) customer_town = Column(VARCHAR(140)) customer_state = Column(VARCHAR(140)) - customer_zip = Column(Integer) + customer_zip = Column(INTEGER) - gallons_ordered = Column(Integer) - customer_asked_for_fill = Column(Integer) + gallons_ordered = Column(INTEGER) + customer_asked_for_fill = Column(INTEGER) gallons_delivered = Column(DECIMAL(50, 2)) - customer_filled = Column(Integer) + customer_filled = Column(INTEGER) - delivery_status = Column(Integer) + delivery_status = Column(INTEGER) when_ordered = Column(TIMESTAMP(), default=datetime.datetime.utcnow()) when_delivered = Column(TIMESTAMP(), default=None) - expected_delivery_date = Column(Date(), default=None) - automatic = Column(Integer) - oil_id = Column(Integer) + expected_delivery_date = Column(DATE(), default=None) + automatic = Column(INTEGER) + automatic_id = Column(INTEGER) + oil_id = Column(INTEGER) supplier_price = Column(DECIMAL(50, 2)) customer_price = Column(DECIMAL(50, 2)) customer_temperature = Column(DECIMAL(50, 2)) - dispatcher_notes = Column(Text()) - prime = Column(Integer) - same_day = Column(Integer) - payment_type = Column(Integer) - payment_card_id = Column(Integer) + dispatcher_notes = Column(TEXT()) + prime = Column(INTEGER) + same_day = Column(INTEGER) + payment_type = Column(INTEGER) + payment_card_id = Column(INTEGER) cash_recieved = Column(DECIMAL(50, 2)) - driver_employee_id = Column(Integer) + driver_employee_id = Column(INTEGER) driver_first_name = Column(VARCHAR(140)) driver_last_name = Column(VARCHAR(140)) diff --git a/app/routers/confirm.py b/app/routers/confirm.py new file mode 100644 index 0000000..703f6e7 --- /dev/null +++ b/app/routers/confirm.py @@ -0,0 +1,60 @@ + +from fastapi import APIRouter, Request +from datetime import datetime +from database import session +from pyowm import OWM +from decimal import Decimal +from app.models.auto import Auto_Delivery +from app.models.delivery import Delivery + +from app.lib.update_auto import calc_home_factor + +router = APIRouter( + prefix="/confirm", + tags=["confirm"], + responses={404: {"description": "Not found"}}, +) + + +@router.put("/delivery") +async def add_delivery(request: Request): + + now = datetime.utcnow + + + request_body = await request.json() + gallons_delivered = request_body['gallons'] + gallons_delivered = Decimal(gallons_delivered) + + delivery_id = request_body['delivery_id'] + + get_delivery = (session + .query(Delivery) + .filter(Delivery.id == delivery_id) + .first()) + + get_auto_delivery = (session + .query(Auto_Delivery) + .filter(Auto_Delivery.customer_id == get_delivery.customer_id) + .first()) + + gallons_put_in_home = Decimal(gallons_delivered) + + customer_home_factor = get_auto_delivery.house_factor + + + new_home_factor = calc_home_factor(gallons_put_in_home = gallons_put_in_home, + current_house_factor=customer_home_factor) + + + get_auto_delivery.house_factor = new_home_factor + get_auto_delivery.tank_height = 'Full' + get_auto_delivery.last_fill = now + get_auto_delivery.estimated_gallons_left = 240 + get_auto_delivery.estimated_gallons_left_prev_day = 240 + get_auto_delivery.auto_status = 0 + + session.add(get_auto_delivery) + + return ({"ok": True}), 200 + diff --git a/app/routers/delivery.py b/app/routers/delivery.py index b3e7230..415fcd6 100644 --- a/app/routers/delivery.py +++ b/app/routers/delivery.py @@ -25,6 +25,7 @@ def get_delivery_for_specific_driver(driver_employee_id: int): session.query(Delivery) .filter(Delivery.driver_employee_id == driver_employee_id) .filter(Delivery.automatic == 1) + .filter(Delivery.delivery_status == 0) .all() ) @@ -45,19 +46,31 @@ def get_delivery(delivery_id_order): -@router.get("/all/customers") +@router.get("/all/customers", status_code=200) def get_delivery_customers(): + auto = ( + session.query(Auto_Delivery) + .order_by(Auto_Delivery.estimated_gallons_left.desc()) + .first() + ) + + auto.id = auto.id + session.add(auto) + session.commit() + + automatics = ( session.query(Auto_Delivery) .order_by(Auto_Delivery.estimated_gallons_left.desc()) .all() ) + return JSONResponse(content=jsonable_encoder(automatics), status_code=200) -@router.post("/create/delivery") +@router.post("/create") async def create_delivery_from_automatic(request: Request): # client_host = await request.body() @@ -84,115 +97,77 @@ async def create_delivery_from_automatic(request: Request): get_driver = (session.query(Employee_Employee) .filter(Employee_Employee.id == driver_id) .first()) + + + count = 0 for f in list_added_tickets: - + + count =+ 1 + get_auto_delivery = (session.query(Auto_Delivery) .filter(Auto_Delivery.id == f) .first()) + get_auto_delivery.auto_status = 1 + session.add(get_auto_delivery) get_main_credit_card = (session.query(Card_Card) .filter(Card_Card.user_id == get_auto_delivery.customer_id) .filter(Card_Card.main_card == True) .first()) - - get_auto_delivery.auto_status = 1 + see_if_delivery_exists = (session.query(Delivery) + .filter(Delivery.driver_employee_id == get_driver.id) + .filter(Delivery.automatic_id == get_auto_delivery.id) + .filter(Delivery.delivery_status == 0) + .first()) - session.add(get_auto_delivery) + + if see_if_delivery_exists is None: - new_delivery = Delivery( - customer_id=get_auto_delivery.customer_id, - customer_address=get_auto_delivery.customer_address, - customer_name=get_auto_delivery.customer_full_name, - customer_town=get_auto_delivery.customer_town, - customer_state=get_auto_delivery.customer_state, - customer_zip=get_auto_delivery.customer_zip, - gallons_ordered=250, - customer_asked_for_fill=1, - gallons_delivered=0, - customer_filled=0, - delivery_status=0, - when_ordered=now, - when_delivered=None, - expected_delivery_date=None, - automatic=1, - oil_id=get_today_price.id, - supplier_price=get_today_price.price_from_supplier, - customer_price=get_today_price.price_for_customer, - customer_temperature=None, - dispatcher_notes=None, - prime=0, - same_day=0, - payment_type=1, - payment_card_id=get_main_credit_card.id, - pre_charge_amount=precharge_amount, - total_price=precharge_amount, - final_price=0, - driver_last_name=get_driver.employee_last_name, - driver_first_name=get_driver.employee_first_name, - driver_employee_id=get_driver.id, - ) - - session.add(new_delivery) + new_delivery = Delivery( + customer_id=get_auto_delivery.customer_id, + customer_address=get_auto_delivery.customer_address, + customer_name=get_auto_delivery.customer_full_name, + customer_town=get_auto_delivery.customer_town, + customer_state=get_auto_delivery.customer_state, + customer_zip=get_auto_delivery.customer_zip, + gallons_ordered=250, + customer_asked_for_fill=1, + gallons_delivered=0, + customer_filled=0, + delivery_status=0, + when_ordered=now, + when_delivered=None, + expected_delivery_date=None, + automatic=1, + automatic_id=get_auto_delivery.id, + oil_id=get_today_price.id, + supplier_price=get_today_price.price_from_supplier, + customer_price=get_today_price.price_for_customer, + customer_temperature=None, + dispatcher_notes=None, + prime=0, + same_day=0, + payment_type=1, + payment_card_id=get_main_credit_card.id, + pre_charge_amount=precharge_amount, + total_price=precharge_amount, + final_price=0, + driver_last_name=get_driver.employee_last_name, + driver_first_name=get_driver.employee_first_name, + driver_employee_id=get_driver.id, + ) + + session.add(new_delivery) session.commit() - {"ok": True, "status": 200} - - -@router.put("/add/delivery") -async def add_delivery(request: Request): - - now = datetime.utcnow - - - request_body = await request.json() - gallons_delivered = request_body['gallons'] - gallons_delivered = Decimal(gallons_delivered) - - delivery_id = request_body['delivery_id'] - - get_delivery = (session - .query(Delivery) - .filter(Delivery.id == delivery_id) - .first()) - - get_auto_delivery = (session - .query(Auto_Delivery) - .filter(Auto_Delivery.customer_id == get_delivery.customer_id) - .first()) - - customer_home_factor = get_auto_delivery.house_factor - - if gallons_delivered == 150: - get_auto_delivery.house_factor = customer_home_factor - elif 200.01 >= gallons_delivered: - get_auto_delivery.house_factor = customer_home_factor + 1 - elif 170.01 <= gallons_delivered <= 200: - get_auto_delivery.house_factor = customer_home_factor + 1.5 - elif 150.01 <= gallons_delivered <= 199: - get_auto_delivery.house_factor = customer_home_factor + 1.25 - elif 120.01 <= gallons_delivered <= 150: - get_auto_delivery.house_factor = customer_home_factor - .25 - elif 90.01 <= gallons_delivered <= 120: - get_auto_delivery.house_factor = customer_home_factor - .50 - elif 0.01 <= gallons_delivered <= 90: - get_auto_delivery.house_factor = customer_home_factor - .75 - else: - get_auto_delivery.house_factor = customer_home_factor - - - get_auto_delivery.tank_height = 'Full' - get_auto_delivery.last_fill = now - get_auto_delivery.estimated_gallons_left = 240 - get_auto_delivery.estimated_gallons_left_prev_day = 240 - - session.add(get_auto_delivery) - - - return ({"ok": True}), 200 + return ({ + "ok": True, + 'count': count, + }) diff --git a/app/routers/main.py b/app/routers/main.py index 87da09d..20268df 100644 --- a/app/routers/main.py +++ b/app/routers/main.py @@ -6,6 +6,9 @@ from pyowm import OWM from app.models.auto import Auto_Delivery, Auto_Temp from app.models.delivery import Delivery + + + router = APIRouter( prefix="/main", tags=["main"], diff --git a/main.py b/main.py index af37fdc..07727ad 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,14 @@ from fastapi import FastAPI -from app.routers import main, delivery +from app.routers import main, delivery, confirm from fastapi.middleware.cors import CORSMiddleware + app = FastAPI() + app.include_router(main.router) app.include_router(delivery.router) +app.include_router(confirm.router) origins = [ "http://localhost:9000", @@ -16,7 +19,6 @@ origins = [ ] - app.add_middleware( CORSMiddleware, allow_origins=origins, @@ -25,6 +27,9 @@ app.add_middleware( allow_headers=["*"], ) + + + @app.get("/") def read_root(): return {"Status": "Auto Service is online"}