74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from models.client import Clients
|
|
from models.user import Users
|
|
|
|
from flask_jwt_extended import jwt_required, get_jwt_identity
|
|
|
|
clients_bp = Blueprint("clients", __name__, url_prefix="/clients")
|
|
|
|
@clients_bp.route("/", methods=["GET"])
|
|
@jwt_required()
|
|
def list_clients():
|
|
clients_db = Clients()
|
|
user_id = get_jwt_identity()
|
|
users = Users()
|
|
user = users.get_user_by_id(user_id)
|
|
if user['user_role'] == 'company_user':
|
|
user_id = user['company_id']
|
|
clients = clients_db.get_all_by_user(user_id)
|
|
return jsonify(clients), 200
|
|
|
|
@clients_bp.route("/", methods=["POST"])
|
|
@jwt_required()
|
|
def create_client():
|
|
clients_db = Clients()
|
|
user_id = get_jwt_identity()
|
|
data = request.get_json()
|
|
users = Users()
|
|
user = users.get_user_by_id(user_id)
|
|
if user['user_role'] == 'company_user':
|
|
user_id = user['company_id']
|
|
client_id = clients_db.create(
|
|
user_id=user_id,
|
|
name=data["name"],
|
|
address=data["address"],
|
|
register_number=data["register_number"],
|
|
contact_person=data["contact_person"],
|
|
phone=data["phone"],
|
|
email=data["email"],
|
|
vat = data["vat"]
|
|
)
|
|
return jsonify({"message": "Client created", "id": client_id}), 201
|
|
|
|
@clients_bp.route("/<int:client_id>", methods=["PUT"])
|
|
@jwt_required()
|
|
def update_client(client_id):
|
|
clients_db = Clients()
|
|
data = request.get_json()
|
|
name=data["name"]
|
|
address=data["address"]
|
|
register_number=data["register_number"]
|
|
contact_person=data["contact_person"]
|
|
phone=data["phone"]
|
|
email=data["email"]
|
|
vat = data["vat"]
|
|
clients_db.update(client_id, name, address, register_number, contact_person, phone, email, vat)
|
|
return jsonify({"message": "Client updated"}), 200
|
|
|
|
@clients_bp.route("/<int:client_id>", methods=["DELETE"])
|
|
@jwt_required()
|
|
def delete_client(client_id):
|
|
clients_db = Clients()
|
|
success = clients_db.delete(client_id)
|
|
if not success:
|
|
return jsonify({"message": "Client not found or unauthorized"}), 404
|
|
return jsonify({"message": "Client deleted"}), 200
|
|
|
|
@clients_bp.route("/<int:client_id>", methods=["GET"])
|
|
@jwt_required()
|
|
def get_client(client_id):
|
|
clients_db = Clients()
|
|
client = clients_db.get_by_id(client_id)
|
|
if not client:
|
|
return jsonify({"message": "Client not found"}), 404
|
|
return jsonify(client), 200 |