init commit
This commit is contained in:
209
transportmanager/server/models/order_out.py
Normal file
209
transportmanager/server/models/order_out.py
Normal file
@@ -0,0 +1,209 @@
|
||||
from datetime import datetime
|
||||
from database import get_connection, is_postgres
|
||||
|
||||
class OrdersOut:
|
||||
def __init__(self):
|
||||
# Parameter placeholder per backend
|
||||
self.ph = "%s" if is_postgres() else "?"
|
||||
|
||||
def order_to_dict(self, row):
|
||||
return {
|
||||
"id": row[0],
|
||||
"order_number": row[1],
|
||||
"user_id": row[2],
|
||||
"client_id": row[3],
|
||||
"transporter_id": row[4],
|
||||
"products_description": row[5],
|
||||
"ldb_quantity": row[6],
|
||||
"kg_quantity": row[7],
|
||||
"track_reg_number": row[8],
|
||||
"trailer_reg_number": row[9],
|
||||
"received_price": row[10],
|
||||
"paid_price": row[11],
|
||||
"created_at": row[12],
|
||||
"status": row[13]
|
||||
}
|
||||
|
||||
def order_point_to_dict(self, row):
|
||||
return {
|
||||
"id": row[0],
|
||||
"order_id": row[1],
|
||||
"destination_id": row[2],
|
||||
"informatins": row[3],
|
||||
"point_data": row[4],
|
||||
"point_hour": row[5],
|
||||
'point_type': row[6],
|
||||
}
|
||||
|
||||
def create_order(self, data):
|
||||
created_at = datetime.now().isoformat()
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
returning = " RETURNING id" if is_postgres() else ""
|
||||
cursor.execute(
|
||||
f"""
|
||||
INSERT INTO orders_out
|
||||
(user_id, client_id, transporter_id, products_description, received_price, paid_price, order_number,
|
||||
ldb_quantity, kg_quantity, track_reg_number, trailer_reg_number, created_at)
|
||||
VALUES ({self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}){returning}
|
||||
""",
|
||||
(
|
||||
data["user_id"],
|
||||
data["client_id"],
|
||||
data["transporter_id"],
|
||||
data['products_description'],
|
||||
data["received_price"],
|
||||
data["paid_price"],
|
||||
data["order_number"],
|
||||
data["ldb_quantity"],
|
||||
data["kg_quantity"],
|
||||
data["track_reg_number"],
|
||||
data["trailer_reg_number"],
|
||||
created_at,
|
||||
),
|
||||
)
|
||||
new_id = cursor.fetchone()[0] if is_postgres() else getattr(cursor, "lastrowid", None)
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
return new_id
|
||||
|
||||
def update_order(self, data):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
f"""
|
||||
UPDATE orders_out SET client_id = {self.ph}, transporter_id = {self.ph}, products_description = {self.ph},
|
||||
received_price = {self.ph}, paid_price = {self.ph}, order_number = {self.ph},
|
||||
ldb_quantity = {self.ph}, kg_quantity = {self.ph}, track_reg_number = {self.ph},
|
||||
trailer_reg_number = {self.ph}
|
||||
WHERE id = {self.ph}
|
||||
""",
|
||||
(
|
||||
data["client_id"],
|
||||
data["transporter_id"],
|
||||
data["products_description"],
|
||||
data["received_price"],
|
||||
data["paid_price"],
|
||||
data["order_number"],
|
||||
data["ldb_quantity"],
|
||||
data["kg_quantity"],
|
||||
data["track_reg_number"],
|
||||
data["trailer_reg_number"],
|
||||
data["id"],
|
||||
),
|
||||
)
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def cancel_order(self, order_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
f"UPDATE orders_out SET order_status = {self.ph} WHERE id = {self.ph}",
|
||||
('cancelled', order_id,),
|
||||
)
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def delete_order(self, order_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(f"DELETE FROM orders_out WHERE id = {self.ph}", (order_id,))
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def get_order_by_id(self, order_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(f"SELECT * FROM orders_out WHERE id = {self.ph}", (order_id,))
|
||||
row = cursor.fetchone()
|
||||
return self.order_to_dict(row) if row else None
|
||||
|
||||
def get_orders_by_user(self, user_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
f"SELECT * FROM orders_out WHERE user_id = {self.ph} ORDER BY created_at DESC",
|
||||
(user_id,),
|
||||
)
|
||||
rows = cursor.fetchall()
|
||||
return [self.order_to_dict(row) for row in rows]
|
||||
|
||||
|
||||
def create_order_point(self, data):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
returning = " RETURNING id" if is_postgres() else ""
|
||||
cursor.execute(
|
||||
f"""
|
||||
INSERT INTO order_out_points
|
||||
(order_id, destination_id, informatins, point_data, point_hour, point_type)
|
||||
VALUES ({self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}){returning}
|
||||
""",
|
||||
(
|
||||
data["order_id"],
|
||||
data["destination_id"],
|
||||
data["informatins"],
|
||||
data["point_data"],
|
||||
data["point_hour"],
|
||||
data['point_type']
|
||||
),
|
||||
)
|
||||
# keep behavior similar: no return expected, but commit consistently
|
||||
if is_postgres():
|
||||
_ = cursor.fetchone() # consume RETURNING if present
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def update_order_point(self, data):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
f"""
|
||||
UPDATE order_out_points SET
|
||||
order_id = {self.ph}, destination_id = {self.ph}, informatins = {self.ph}, point_data = {self.ph}, point_hour = {self.ph}, point_type = {self.ph}
|
||||
WHERE id = {self.ph}
|
||||
""",
|
||||
(
|
||||
data["order_id"],
|
||||
data["destination_id"],
|
||||
data["informatins"],
|
||||
data["point_data"],
|
||||
data["point_hour"],
|
||||
data['point_type'],
|
||||
data["id"],
|
||||
),
|
||||
)
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def delete_order_point(self, point_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(f"DELETE FROM order_out_points WHERE id = {self.ph}", (point_id,))
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def delete_points_by_order_id(self, order_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(f"DELETE FROM order_out_points WHERE order_id = {self.ph}", (order_id,))
|
||||
if hasattr(conn, "commit"):
|
||||
conn.commit()
|
||||
|
||||
def get_order_point_by_id(self, point_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(f"SELECT * FROM order_out_points WHERE id = {self.ph}", (point_id,))
|
||||
row = cursor.fetchone()
|
||||
return self.order_point_to_dict(row) if row else None
|
||||
|
||||
def get_order_points_by_order(self, order_id):
|
||||
with get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
f"SELECT * FROM order_out_points WHERE order_id = {self.ph} ORDER BY id",
|
||||
(order_id,),
|
||||
)
|
||||
rows = cursor.fetchall()
|
||||
return [self.order_point_to_dict(row) for row in rows]
|
||||
Reference in New Issue
Block a user