Updated auto pre testing

This commit is contained in:
2024-07-24 17:22:14 -04:00
parent 6c3b38341b
commit 8273f063ed
5 changed files with 229 additions and 12 deletions

View File

@@ -46,4 +46,5 @@ class Auto_Delivery(Base):
estimated_gallons_left_prev_day = Column(INTEGER()) estimated_gallons_left_prev_day = Column(INTEGER())
tank_height = Column(VARCHAR(25)) tank_height = Column(VARCHAR(25))
tank_size = Column(VARCHAR(25)) tank_size = Column(VARCHAR(25))
house_factor = Column(DECIMAL(5, 2)) house_factor = Column(DECIMAL(5, 2))
auto_status = Column(INTEGER())

30
app/models/cards.py Normal file
View File

@@ -0,0 +1,30 @@
from sqlalchemy import (Column, Integer,
DECIMAL, Text, BOOLEAN,
VARCHAR, TIMESTAMP,
Date, INTEGER)
from datetime import datetime, timezone
from database import Base
class Card_Card(Base):
__tablename__ = 'card_card'
__bind_key__ = 'eamco'
__table_args__ = {"schema": "public"}
id = Column(Integer,
primary_key=True,
autoincrement=True,
unique=False)
date_added = Column(TIMESTAMP(), default=datetime.utcnow())
user_id = Column(INTEGER())
card_number = Column(VARCHAR(50))
last_four_digits = Column(INTEGER())
name_on_card = Column(VARCHAR(500))
expiration_month = Column(INTEGER())
expiration_year = Column(INTEGER())
type_of_card = Column(VARCHAR(500))
security_number = Column(INTEGER())
accepted_or_declined = Column(INTEGER())
main_card = Column(BOOLEAN())

30
app/models/employee.py Normal file
View File

@@ -0,0 +1,30 @@
from sqlalchemy import (Column, INTEGER,
DECIMAL, TEXT,
VARCHAR, TIMESTAMP, DATE)
import datetime
from database import Base
class Employee_Employee(Base):
__tablename__ = 'employee_employee'
__bind_key__ = 'eamco'
__table_args__ = {"schema": "public"}
id = Column(INTEGER,
primary_key=True,
autoincrement=True,
unique=False)
user_id = Column(INTEGER)
employee_first_name = Column(VARCHAR(250))
employee_last_name = Column(VARCHAR(250))
employee_apt = Column(VARCHAR(250))
employee_address = Column(VARCHAR(1000))
employee_town = Column(VARCHAR(140))
employee_state = Column(VARCHAR(140))
employee_zip = Column(VARCHAR(25))
employee_birthday = Column(DATE())
employee_type = Column(INTEGER)
employee_phone_number = Column(VARCHAR(25))
employee_start_date = Column(DATE())
employee_end_date = Column(DATE(), default=None)

View File

@@ -1,10 +1,16 @@
from fastapi import APIRouter from fastapi import APIRouter, Request
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder from fastapi.encoders import jsonable_encoder
from datetime import datetime
from database import session from database import session
from pyowm import OWM from pyowm import OWM
from decimal import Decimal
from app.models.auto import Auto_Delivery from app.models.auto import Auto_Delivery
from app.models.delivery import Delivery
from app.models.pricing import Pricing_Oil_Oil
from app.models.cards import Card_Card
from app.models.employee import Employee_Employee
router = APIRouter( router = APIRouter(
@@ -13,8 +19,20 @@ router = APIRouter(
responses={404: {"description": "Not found"}}, responses={404: {"description": "Not found"}},
) )
@router.get("/driver/{driver_employee_id}", status_code=200)
def get_delivery_for_specific_driver(driver_employee_id: int):
automatics = (
session.query(Delivery)
.filter(Delivery.driver_employee_id == driver_employee_id)
.filter(Delivery.automatic == 1)
.all()
)
@router.get("/{delivery_id_order}", status_code=201) return JSONResponse(content=jsonable_encoder(automatics), status_code=200)
@router.get("/{delivery_id_order}", status_code=200)
def get_delivery(delivery_id_order): def get_delivery(delivery_id_order):
get_delivery = ( get_delivery = (
@@ -22,7 +40,6 @@ def get_delivery(delivery_id_order):
.filter(Auto_Delivery.id == delivery_id_order) .filter(Auto_Delivery.id == delivery_id_order)
.first() .first()
) )
return JSONResponse(content=jsonable_encoder(get_delivery), status_code=200) return JSONResponse(content=jsonable_encoder(get_delivery), status_code=200)
@@ -37,6 +54,145 @@ def get_delivery_customers():
.all() .all()
) )
return JSONResponse(content=jsonable_encoder(automatics), status_code=200) return JSONResponse(content=jsonable_encoder(automatics), status_code=200)
@router.post("/create/delivery")
async def create_delivery_from_automatic(request: Request):
# client_host = await request.body()
# body_text = client_host.decode("utf-8")
# print(body_text)
list_added_tickets = []
now = datetime.utcnow()
request_body = await request.json()
for f in request_body['values']:
list_added_tickets.append(f)
driver_id = request_body['driver_employee_id']
get_today_price = session\
.query(Pricing_Oil_Oil)\
.order_by(Pricing_Oil_Oil.id.desc())\
.first()
precharge_amount = (250 * get_today_price.price_for_customer)
get_driver = (session.query(Employee_Employee)
.filter(Employee_Employee.id == driver_id)
.first())
for f in list_added_tickets:
get_auto_delivery = (session.query(Auto_Delivery)
.filter(Auto_Delivery.id == f)
.first())
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
session.add(get_auto_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,
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

View File

@@ -1,10 +1,10 @@
from fastapi import APIRouter from fastapi import APIRouter, Request
from datetime import datetime
from database import session from database import session
from pyowm import OWM 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
router = APIRouter( router = APIRouter(
prefix="/main", prefix="/main",
@@ -14,10 +14,10 @@ router = APIRouter(
@router.route("/update", methods=["GET"])
@router.get("/update", status_code=200)
def update_auto_customers(): def update_auto_customers():
today_temp = session\ today_temp = session\
.query(Auto_Temp)\ .query(Auto_Temp)\
.order_by(Auto_Temp.id.desc())\ .order_by(Auto_Temp.id.desc())\
@@ -63,7 +63,7 @@ def update_auto_customers():
return ({"ok": True}), 200 return ({"ok": True}), 200
@router.get("/temp") @router.get("/temp", status_code=200)
def update_temp(): def update_temp():
temps = [] temps = []