Files
TMS/transportmanager/server/models/company_users.py

81 lines
3.1 KiB
Python

from datetime import datetime
from database import get_connection, is_postgres
class CompanyUsers:
def __init__(self):
self.ph = "%s" if is_postgres() else "?"
def access_to_dict(self, row):
access = {
'id': row[0],
'company_user_id': row[1],
'clients': row[2],
'transporters': row[3],
'destinations': row[4],
'orders_in': row[5],
'orders_out': row[6],
'report':row[7],
'created_at': row[8]
}
return access
def insert_company_user_access(self, access_data):
created_at = datetime.now().isoformat()
with get_connection() as conn:
cursor = conn.cursor()
returning = "RETURNING id" if is_postgres() else ""
query = f"""
INSERT INTO company_user_access (
company_user_id, clients, transporters, destinations, orders_in, orders_out, report, created_at
) VALUES ({self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}, {self.ph}) {returning}
"""
cursor.execute(
query,
(
access_data['company_user_id'],
access_data['clients'],
access_data['transporters'],
access_data['destinations'],
access_data['orders_in'],
access_data['orders_out'],
access_data['report'],
created_at
)
)
inserted_id = None
if is_postgres():
inserted_id = cursor.fetchone()[0]
else:
inserted_id = cursor.lastrowid
if hasattr(conn, "commit"):
conn.commit()
return inserted_id
def get_access_by_company_user_id(self, company_user_id):
with get_connection() as conn:
cursor = conn.cursor()
cursor.execute(f"SELECT * FROM company_user_access WHERE company_user_id = {self.ph}", (company_user_id,))
row = cursor.fetchone()
return self.access_to_dict(row) if row else None
def update_company_user_access(self, data):
with get_connection() as conn:
cursor = conn.cursor()
cursor.execute(
f"""
UPDATE company_user_access
SET clients = {self.ph}, transporters = {self.ph}, destinations = {self.ph}, orders_in = {self.ph}, orders_out = {self.ph}, report = {self.ph}
WHERE company_user_id = {self.ph}
""",
(
data['clients'],
data['transporters'],
data['destinations'],
data['orders_in'],
data['orders_out'],
data['report'],
data['company_user_id']
)
)
if hasattr(conn, "commit"):
conn.commit()