Small bug fixers

This commit is contained in:
2024-07-29 13:44:09 -04:00
parent 6e93343dae
commit d8da74c75b
5 changed files with 159 additions and 115 deletions

View File

@@ -1,6 +1,6 @@
from sqlalchemy import (Column, Integer, from sqlalchemy import (Column, INTEGER,
DECIMAL, Text, DECIMAL, TEXT,
VARCHAR, TIMESTAMP, Date) VARCHAR, TIMESTAMP, DATE)
import datetime import datetime
from database import Base from database import Base
@@ -8,40 +8,41 @@ from database import Base
class Delivery(Base): class Delivery(Base):
__tablename__ = "delivery_delivery" __tablename__ = "delivery_delivery"
id = Column(Integer, id = Column(INTEGER,
primary_key=True, primary_key=True,
autoincrement=True, autoincrement=True,
unique=False) unique=False)
customer_id = Column(Integer) customer_id = Column(INTEGER)
customer_name = Column(VARCHAR(1000)) customer_name = Column(VARCHAR(1000))
customer_address = Column(VARCHAR(1000)) customer_address = Column(VARCHAR(1000))
customer_town = Column(VARCHAR(140)) customer_town = Column(VARCHAR(140))
customer_state = Column(VARCHAR(140)) customer_state = Column(VARCHAR(140))
customer_zip = Column(Integer) customer_zip = Column(INTEGER)
gallons_ordered = Column(Integer) gallons_ordered = Column(INTEGER)
customer_asked_for_fill = Column(Integer) customer_asked_for_fill = Column(INTEGER)
gallons_delivered = Column(DECIMAL(50, 2)) 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_ordered = Column(TIMESTAMP(), default=datetime.datetime.utcnow())
when_delivered = Column(TIMESTAMP(), default=None) when_delivered = Column(TIMESTAMP(), default=None)
expected_delivery_date = Column(Date(), default=None) expected_delivery_date = Column(DATE(), default=None)
automatic = Column(Integer) automatic = Column(INTEGER)
oil_id = Column(Integer) automatic_id = Column(INTEGER)
oil_id = Column(INTEGER)
supplier_price = Column(DECIMAL(50, 2)) supplier_price = Column(DECIMAL(50, 2))
customer_price = Column(DECIMAL(50, 2)) customer_price = Column(DECIMAL(50, 2))
customer_temperature = Column(DECIMAL(50, 2)) customer_temperature = Column(DECIMAL(50, 2))
dispatcher_notes = Column(Text()) dispatcher_notes = Column(TEXT())
prime = Column(Integer) prime = Column(INTEGER)
same_day = Column(Integer) same_day = Column(INTEGER)
payment_type = Column(Integer) payment_type = Column(INTEGER)
payment_card_id = Column(Integer) payment_card_id = Column(INTEGER)
cash_recieved = Column(DECIMAL(50, 2)) cash_recieved = Column(DECIMAL(50, 2))
driver_employee_id = Column(Integer) driver_employee_id = Column(INTEGER)
driver_first_name = Column(VARCHAR(140)) driver_first_name = Column(VARCHAR(140))
driver_last_name = Column(VARCHAR(140)) driver_last_name = Column(VARCHAR(140))

60
app/routers/confirm.py Normal file
View File

@@ -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

View File

@@ -25,6 +25,7 @@ def get_delivery_for_specific_driver(driver_employee_id: int):
session.query(Delivery) session.query(Delivery)
.filter(Delivery.driver_employee_id == driver_employee_id) .filter(Delivery.driver_employee_id == driver_employee_id)
.filter(Delivery.automatic == 1) .filter(Delivery.automatic == 1)
.filter(Delivery.delivery_status == 0)
.all() .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(): 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 = ( automatics = (
session.query(Auto_Delivery) session.query(Auto_Delivery)
.order_by(Auto_Delivery.estimated_gallons_left.desc()) .order_by(Auto_Delivery.estimated_gallons_left.desc())
.all() .all()
) )
return JSONResponse(content=jsonable_encoder(automatics), status_code=200) return JSONResponse(content=jsonable_encoder(automatics), status_code=200)
@router.post("/create/delivery") @router.post("/create")
async def create_delivery_from_automatic(request: Request): async def create_delivery_from_automatic(request: Request):
# client_host = await request.body() # client_host = await request.body()
@@ -85,22 +98,33 @@ async def create_delivery_from_automatic(request: Request):
.filter(Employee_Employee.id == driver_id) .filter(Employee_Employee.id == driver_id)
.first()) .first())
count = 0
for f in list_added_tickets: for f in list_added_tickets:
count =+ 1
get_auto_delivery = (session.query(Auto_Delivery) get_auto_delivery = (session.query(Auto_Delivery)
.filter(Auto_Delivery.id == f) .filter(Auto_Delivery.id == f)
.first()) .first())
get_auto_delivery.auto_status = 1
session.add(get_auto_delivery)
get_main_credit_card = (session.query(Card_Card) get_main_credit_card = (session.query(Card_Card)
.filter(Card_Card.user_id == get_auto_delivery.customer_id) .filter(Card_Card.user_id == get_auto_delivery.customer_id)
.filter(Card_Card.main_card == True) .filter(Card_Card.main_card == True)
.first()) .first())
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())
get_auto_delivery.auto_status = 1
session.add(get_auto_delivery) if see_if_delivery_exists is None:
new_delivery = Delivery( new_delivery = Delivery(
customer_id=get_auto_delivery.customer_id, customer_id=get_auto_delivery.customer_id,
@@ -118,6 +142,7 @@ async def create_delivery_from_automatic(request: Request):
when_delivered=None, when_delivered=None,
expected_delivery_date=None, expected_delivery_date=None,
automatic=1, automatic=1,
automatic_id=get_auto_delivery.id,
oil_id=get_today_price.id, oil_id=get_today_price.id,
supplier_price=get_today_price.price_from_supplier, supplier_price=get_today_price.price_from_supplier,
customer_price=get_today_price.price_for_customer, customer_price=get_today_price.price_for_customer,
@@ -140,59 +165,9 @@ async def create_delivery_from_automatic(request: Request):
session.commit() session.commit()
{"ok": True, "status": 200}
return ({
"ok": True,
@router.put("/add/delivery") 'count': count,
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

View File

@@ -6,6 +6,9 @@ from pyowm import OWM
from app.models.auto import Auto_Delivery, Auto_Temp from app.models.auto import Auto_Delivery, Auto_Temp
from app.models.delivery import Delivery from app.models.delivery import Delivery
router = APIRouter( router = APIRouter(
prefix="/main", prefix="/main",
tags=["main"], tags=["main"],

View File

@@ -1,11 +1,14 @@
from fastapi import FastAPI from fastapi import FastAPI
from app.routers import main, delivery from app.routers import main, delivery, confirm
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
app = FastAPI() app = FastAPI()
app.include_router(main.router) app.include_router(main.router)
app.include_router(delivery.router) app.include_router(delivery.router)
app.include_router(confirm.router)
origins = [ origins = [
"http://localhost:9000", "http://localhost:9000",
@@ -16,7 +19,6 @@ origins = [
] ]
app.add_middleware( app.add_middleware(
CORSMiddleware, CORSMiddleware,
allow_origins=origins, allow_origins=origins,
@@ -25,6 +27,9 @@ app.add_middleware(
allow_headers=["*"], allow_headers=["*"],
) )
@app.get("/") @app.get("/")
def read_root(): def read_root():
return {"Status": "Auto Service is online"} return {"Status": "Auto Service is online"}