Files
TMS/transportmanager/server/routes/company_user.py

118 lines
3.9 KiB
Python

from flask import Blueprint, request, jsonify
from models.user import Users
from utils.welcome_email import WelcomeMessage
from werkzeug.security import generate_password_hash, check_password_hash
from flask_jwt_extended import jwt_required, get_jwt_identity
from models.company_users import CompanyUsers
company_user_bp = Blueprint("company_user", __name__, url_prefix="/company_user")
@company_user_bp.route('/access/<int:id>', methods=["GET"])
@jwt_required()
def get_access(id):
company_user_id = id
if not company_user_id:
return jsonify({"error":"Missing required fields"}), 400
company_users = CompanyUsers()
access = company_users.get_access_by_company_user_id(company_user_id)
return jsonify(access)
@company_user_bp.route("/register_company_user", methods=["POST"])
@jwt_required()
def register_company_user():
users = Users()
data = request.get_json()
name = data.get("name")
email = data.get("email")
company_id = data.get("company_id")
password = data.get("password")
if not name or not email or not password or not company_id:
return jsonify({"error": "Missing required fields"}), 400
existing_user = users.get_user_by_email(email)
if existing_user:
return jsonify({"error": "User already exists"}), 409
password_hash = generate_password_hash(password)
company_user_id = users.insert_company_user(name, email, password_hash, company_id)
welcome_message = WelcomeMessage(name, email)
welcome_message.send_email()
return jsonify({"message": "User registered successfully!", "company_user_id":company_user_id}), 201
@company_user_bp.route('/access', methods=["POST"])
@jwt_required()
def create_access():
data = request.get_json()
company_user_id = data.get('company_user_id')
orders_in = data.get("orders_in")
orders_out = data.get("orders_out")
addresses = data.get("addresses")
clients = data.get("clients")
transporters = data.get("transporters")
report = data.get("report")
company_users = CompanyUsers()
# Use explicit None checks so that False/0 values are allowed
if (
company_user_id is None or
orders_in is None or
orders_out is None or
addresses is None or
clients is None or
transporters is None or
report is None
):
return jsonify({"error": "Missing required fields"}), 400
access_data = {
'company_user_id': company_user_id,
'clients': clients,
'transporters': transporters,
'destinations': addresses,
'orders_in': orders_in,
'orders_out': orders_out,
'report': report
}
company_users.insert_company_user_access(access_data)
return jsonify({"message": "Company User access inserted!"})
@company_user_bp.route('/update_access', methods=["PUT"])
@jwt_required()
def update_access():
data = request.get_json()
company_user_id = data.get('company_user_id')
orders_in = data.get("orders_in")
orders_out = data.get("orders_out")
addresses = data.get("addresses")
clients = data.get("clients")
transporters = data.get("transporters")
report = data.get("report")
company_users = CompanyUsers()
# Use explicit None checks so that False/0 values are allowed
if (
company_user_id is None or
orders_in is None or
orders_out is None or
addresses is None or
clients is None or
transporters is None or
report is None
):
return jsonify({"error": "Missing required fields"}), 400
access_data = {
'company_user_id': company_user_id,
'clients': clients,
'transporters': transporters,
'destinations': addresses,
'orders_in': orders_in,
'orders_out': orders_out,
'report': report
}
company_users.update_company_user_access(access_data)
return jsonify({"message": "Company User access updated!"})