ultima versao api
This commit is contained in:
parent
a76c3bb758
commit
207430ba05
33
docs/service_instance/get_id_name.yml
Normal file
33
docs/service_instance/get_id_name.yml
Normal file
@ -0,0 +1,33 @@
|
||||
get:
|
||||
tags:
|
||||
- ServiceInstance
|
||||
summary: Buscar ID da instância de serviço pelo nome
|
||||
description: Retorna o ID de uma instância de serviço com base no nome fornecido na URL.
|
||||
parameters:
|
||||
- name: nome
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
description: Nome da instância de serviço.
|
||||
responses:
|
||||
200:
|
||||
description: ID da instância de serviço retornado com sucesso.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
example: 1
|
||||
404:
|
||||
description: Instância de serviço não encontrada.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
example: Instância de serviço não encontrada
|
||||
@ -5,12 +5,15 @@ class Address(db.Model):
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
street = db.Column(db.String(255), nullable=False) # Rua
|
||||
number = db.Column(db.String(20), nullable=True) # Número
|
||||
complement = db.Column(db.String(255), nullable=True) # Complemento
|
||||
neighborhood = db.Column(db.String(100), nullable=False) # Bairro
|
||||
city = db.Column(db.String(100), nullable=False) # Cidade
|
||||
state = db.Column(db.String(100), nullable=False) # Estado
|
||||
zip_code = db.Column(db.String(20), nullable=False) # CEP
|
||||
country = db.Column(db.String(100), nullable=False) # País
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) # Relacionamento com o usuário
|
||||
address_type_id = db.Column(db.Integer, db.ForeignKey('address_type.id'), nullable=False) # Tipo de endereço
|
||||
address_type_id = db.Column(db.Integer, db.ForeignKey('address_type.id'), nullable=True) # Tipo de endereço
|
||||
|
||||
address_type = db.relationship('AddressType', backref='addresses') # Relacionamento com AddressType
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ class Ambiente(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
service_id = db.Column(db.Integer, db.ForeignKey('service.id'), nullable=False)
|
||||
service_role_id = db.Column(db.Integer, db.ForeignKey('service_roles.id'), nullable=False)
|
||||
service_instance_id = db.Column(db.Integer, db.ForeignKey('service_instance.id'), nullable=True)
|
||||
name = db.Column(db.String(255), nullable=False)
|
||||
description = db.Column(db.Text, nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
|
||||
|
||||
@ -5,12 +5,23 @@ class User(db.Model):
|
||||
__tablename__ = "user"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
#dados basicos
|
||||
username = db.Column(db.String(80), unique=True, nullable=True)
|
||||
birth_date = db.Column(db.Date, nullable=True)
|
||||
cpf = db.Column(db.String(11), unique=True, nullable=True)
|
||||
pis = db.Column(db.String(11), unique=True, nullable=True)
|
||||
rg = db.Column(db.String(20), unique=True, nullable=True)
|
||||
cod_interno = db.Column(db.String(20), unique=True, nullable=True)
|
||||
cargo = db.Column(db.String(80), nullable=True)
|
||||
|
||||
#contato
|
||||
email = db.Column(db.String(120), unique=True, nullable=False)
|
||||
email_secondary = db.Column(db.String(120), unique=True, nullable=True) # Campo de e-mail secundário
|
||||
phone = db.Column(db.BigInteger(),nullable=True) # Campo de telefone
|
||||
phone_secondary = db.Column(db.BigInteger(), nullable=True) # Campo de telefone secundário
|
||||
password = db.Column(db.String(256), nullable=False)
|
||||
profile_image = db.Column(db.String(255), nullable=True)
|
||||
birth_date = db.Column(db.Date, nullable=True)
|
||||
|
||||
|
||||
status = db.Column(db.String(120), nullable=True, default="ativo")
|
||||
|
||||
@ -21,6 +32,12 @@ class User(db.Model):
|
||||
#relacionamento service_instance
|
||||
service_instance_id = db.Column(db.Integer, db.ForeignKey('service_instance.id'), nullable=True)
|
||||
|
||||
#relacionamento company
|
||||
company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=True)
|
||||
|
||||
#holiday
|
||||
holiday_id = db.Column(db.Integer, db.ForeignKey('holiday.id'), nullable=True)
|
||||
|
||||
# Relacionamento hierárquico
|
||||
parent_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True)
|
||||
children = db.relationship("User", backref=db.backref('parent', remote_side=[id]), lazy=True)
|
||||
|
||||
@ -33,7 +33,10 @@ def create_address(user_id):
|
||||
zip_code=data['zip_code'],
|
||||
country=data['country'],
|
||||
user_id=user.id,
|
||||
address_type_id=data['address_type_id']
|
||||
address_type_id=data['address_type_id'],
|
||||
number=data.get('number'), # Número é opcional
|
||||
complement=data.get('complement'), # Complemento é opcional
|
||||
neighborhood=data.get('neighborhood') # Bairro é opcional
|
||||
)
|
||||
|
||||
db.session.add(new_address)
|
||||
@ -48,6 +51,9 @@ def create_address(user_id):
|
||||
'state': new_address.state,
|
||||
'zip_code': new_address.zip_code,
|
||||
'country': new_address.country,
|
||||
'number': new_address.number,
|
||||
'complement': new_address.complement,
|
||||
'neighborhood': new_address.neighborhood,
|
||||
'address_type': new_address.address_type.name
|
||||
}
|
||||
}), 201
|
||||
@ -73,6 +79,9 @@ def get_addresses_by_user_id(user_id):
|
||||
'state': address.state,
|
||||
'zip_code': address.zip_code,
|
||||
'country': address.country,
|
||||
'number': address.number,
|
||||
'complement': address.complement,
|
||||
'neighborhood': address.neighborhood,
|
||||
'address_type': address.address_type.name
|
||||
} for address in addresses
|
||||
]
|
||||
@ -99,6 +108,12 @@ def update_address(user_id, address_id):
|
||||
address.zip_code = data['zip_code']
|
||||
if 'country' in data:
|
||||
address.country = data['country']
|
||||
if 'number' in data:
|
||||
address.number = data['number']
|
||||
if 'complement' in data:
|
||||
address.complement = data['complement']
|
||||
if 'neighborhood' in data:
|
||||
address.neighborhood = data['neighborhood']
|
||||
if 'address_type_id' in data:
|
||||
address_type = AddressType.query.get(data['address_type_id'])
|
||||
if not address_type:
|
||||
@ -116,6 +131,9 @@ def update_address(user_id, address_id):
|
||||
'state': address.state,
|
||||
'zip_code': address.zip_code,
|
||||
'country': address.country,
|
||||
'number': address.number,
|
||||
'complement': address.complement,
|
||||
'neighborhood': address.neighborhood,
|
||||
'address_type': address.address_type.name
|
||||
}
|
||||
}), 200
|
||||
|
||||
@ -3,6 +3,7 @@ from flask_jwt_extended import jwt_required
|
||||
from flasgger.utils import swag_from
|
||||
from models.service import Service
|
||||
from models.service_roles import ServiceRole
|
||||
from models.service_instance import ServiceInstance
|
||||
from models.ambiente import Ambiente
|
||||
from models.user import db
|
||||
|
||||
@ -17,6 +18,7 @@ def create_ambiente():
|
||||
service_role_id = data.get('service_role_id')
|
||||
name = data.get('name')
|
||||
description = data.get('description')
|
||||
service_instance_id = data.get('service_instance_id')
|
||||
|
||||
# Verifica se o serviço existe
|
||||
#service = Service.query.get(service_id)
|
||||
@ -33,7 +35,8 @@ def create_ambiente():
|
||||
service_id=service_id,
|
||||
service_role_id = service_role_id,
|
||||
name=name,
|
||||
description=description
|
||||
description=description,
|
||||
service_instance_id=service_instance_id
|
||||
)
|
||||
|
||||
# Adiciona e comita no banco de dados
|
||||
@ -59,7 +62,8 @@ def list_ambiente():
|
||||
'name': ambiente.name,
|
||||
'description': ambiente.description,
|
||||
'service_id': ambiente.service_id,
|
||||
'service_role_id': ambiente.service_role_id
|
||||
'service_role_id': ambiente.service_role_id,
|
||||
'service_instance_id': ambiente.service_instance_id,
|
||||
} for ambiente in ambientes
|
||||
],
|
||||
'total': pagination.total,
|
||||
@ -80,7 +84,8 @@ def get_ambiente(ambiente_id):
|
||||
'name': ambiente.name,
|
||||
'description': ambiente.description,
|
||||
'service_id': ambiente.service_id,
|
||||
'service_role_id': ambiente.service_role_id
|
||||
'service_role_id': ambiente.service_role_id,
|
||||
'service_instance_id': ambiente.service_instance_id,
|
||||
}), 200
|
||||
|
||||
@ambiente_bp.route('/<int:ambiente_id>', methods=['PUT'])
|
||||
@ -99,7 +104,7 @@ def update_camera(ambiente_id):
|
||||
if name:
|
||||
ambiente.name = name
|
||||
if description:
|
||||
ambiente.description = description
|
||||
ambiente.description = description
|
||||
|
||||
db.session.commit()
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ def create_company():
|
||||
data = request.get_json()
|
||||
name = data.get('name')
|
||||
fantasy_name = data.get('fantasy_name')
|
||||
type = data.get('tipo')
|
||||
type = data.get('type')
|
||||
cnpj = data.get('cnpj')
|
||||
#contato
|
||||
email = data.get('email')
|
||||
|
||||
@ -3,9 +3,38 @@ from flask_jwt_extended import jwt_required
|
||||
from flasgger.utils import swag_from
|
||||
from models.service_instance import ServiceInstance
|
||||
from models.service import Service
|
||||
from models.user import db
|
||||
|
||||
service_instance_bp = Blueprint('service_instance', __name__, url_prefix='/service_instance')
|
||||
|
||||
|
||||
@service_instance_bp.route('/', methods=['POST'])
|
||||
@jwt_required()
|
||||
@swag_from('../docs/service_instance/create.yml')
|
||||
def create_service_instance():
|
||||
data = request.get_json()
|
||||
service_id = data.get('service_id')
|
||||
name = data.get('name')
|
||||
description = data.get('description')
|
||||
|
||||
# Verifica se o serviço existe
|
||||
service = Service.query.get(service_id)
|
||||
if not service:
|
||||
return jsonify({'error': 'Serviço não encontrado'}), 404
|
||||
|
||||
# Cria um novo ServiceInstance
|
||||
service_instance = ServiceInstance(
|
||||
service_id=service_id,
|
||||
name=name,
|
||||
description=description
|
||||
)
|
||||
|
||||
# Adiciona e comita no banco de dados
|
||||
db.session.add(service_instance)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': 'Instância de serviço criada com sucesso', 'service_instance_id': service_instance.id}), 201
|
||||
|
||||
@service_instance_bp.route('/', methods=['GET'])
|
||||
@jwt_required()
|
||||
@swag_from('../docs/service_instance/get.yml')
|
||||
@ -29,3 +58,29 @@ def list_ambiente():
|
||||
'page': pagination.page,
|
||||
'per_page': pagination.per_page
|
||||
}), 200
|
||||
|
||||
@service_instance_bp.route('/get-id-by-name/<string:nome>', methods=['GET'])
|
||||
@jwt_required()
|
||||
@swag_from('../docs/service_instance/get_id_by_name.yml')
|
||||
def get_service_instance_id_by_name(nome):
|
||||
if not nome:
|
||||
return jsonify({'error': 'Nome não fornecido'}), 400
|
||||
|
||||
service_instance = ServiceInstance.query.filter_by(name=nome).first()
|
||||
if not service_instance:
|
||||
return jsonify({'error': 'Instância de serviço não encontrada'}), 404
|
||||
|
||||
return jsonify({'id': service_instance.id}), 200
|
||||
|
||||
@service_instance_bp.route('/<int:service_instance_id>', methods=['DELETE'])
|
||||
@jwt_required()
|
||||
@swag_from('../docs/service_instance/delete.yml')
|
||||
def delete_service_instance(service_instance_id):
|
||||
service_instance = ServiceInstance.query.get(service_instance_id)
|
||||
if not service_instance:
|
||||
return jsonify({'error': 'Instância de serviço não encontrada'}), 404
|
||||
|
||||
db.session.delete(service_instance)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': 'Instância de serviço excluída com sucesso'}), 200
|
||||
@ -20,14 +20,25 @@ def create_user():
|
||||
data = request.get_json()
|
||||
username = data.get('username')
|
||||
password = data.get('password')
|
||||
email = data.get('email')
|
||||
phone = data.get('phone')
|
||||
|
||||
profile_image = data.get('profile_image')
|
||||
birth_date = data.get('birth_date')
|
||||
parent_id = data.get('parent_id')
|
||||
service_instance_id = data.get('service_instance_id')
|
||||
status = data.get('status')
|
||||
cargo = data.get('cargo')
|
||||
|
||||
cpf = data.get('cpf')
|
||||
pis = data.get('pis')
|
||||
rg = data.get('rg')
|
||||
cod_interno = data.get('cod_interno')
|
||||
|
||||
# Contato
|
||||
email = data.get('email')
|
||||
phone = data.get('phone')
|
||||
email_secondary = data.get('email_secondary')
|
||||
phone_secondary = data.get('phone_secondary')
|
||||
|
||||
|
||||
# Verifica se o usuário já existe
|
||||
existing_user = User.query.filter_by(username=username).first()
|
||||
@ -43,7 +54,16 @@ def create_user():
|
||||
birth_date=birth_date,
|
||||
parent_id=parent_id,
|
||||
service_instance_id=service_instance_id,
|
||||
status=status
|
||||
status=status,
|
||||
cpf=cpf,
|
||||
pis=pis,
|
||||
rg=rg,
|
||||
cod_interno=cod_interno,
|
||||
email_secondary=email_secondary,
|
||||
phone_secondary=phone_secondary,
|
||||
cargo = cargo,
|
||||
|
||||
|
||||
)
|
||||
user.set_password(password)
|
||||
|
||||
@ -73,6 +93,13 @@ def create_subordinate(logged_user_id):
|
||||
birth_date = data.get('birth_date')
|
||||
service_instance_id = data.get('service_instance_id')
|
||||
status = data.get('status')
|
||||
cpf = data.get('cpf')
|
||||
pis = data.get('pis')
|
||||
rg = data.get('rg')
|
||||
cod_interno = data.get('cod_interno')
|
||||
email_secondary = data.get('email_secondary')
|
||||
phone_secondary = data.get('phone_secondary')
|
||||
cargo = data.get('cargo')
|
||||
|
||||
existing_user = User.query.filter_by(username=username).first()
|
||||
if existing_user:
|
||||
@ -86,7 +113,14 @@ def create_subordinate(logged_user_id):
|
||||
birth_date=birth_date,
|
||||
parent_id=parent_id,
|
||||
service_instance_id=service_instance_id,
|
||||
status=status
|
||||
status=status,
|
||||
cpf=cpf,
|
||||
pis=pis,
|
||||
rg=rg,
|
||||
cod_interno=cod_interno,
|
||||
email_secondary=email_secondary,
|
||||
phone_secondary=phone_secondary,
|
||||
cargo=cargo,
|
||||
)
|
||||
subordinate.set_password(password)
|
||||
|
||||
@ -116,7 +150,15 @@ def list_hierarchy(user_id):
|
||||
'birth_date':child.birth_date,
|
||||
'phone':child.phone,
|
||||
'service_instance_id':child.service_instance_id,
|
||||
'status':child.status
|
||||
'status':child.status,
|
||||
'cpf': child.cpf,
|
||||
'pis': child.pis,
|
||||
'rg': child.rg,
|
||||
'cod_interno': child.cod_interno,
|
||||
'email_secondary': child.email_secondary,
|
||||
'phone_secondary': child.phone_secondary,
|
||||
'cargo': child.cargo,
|
||||
|
||||
})
|
||||
# Verifica recursivamente os filhos (subordinados dos subordinados)
|
||||
flat_list.extend(flatten_hierarchy(child))
|
||||
@ -148,7 +190,15 @@ def list_hierarchy_by_id():
|
||||
'phone':user.phone,
|
||||
'subordinates': [build_hierarchy(sub) for sub in user.children],
|
||||
'service_instance_id':user.service_instance_id,
|
||||
'status':user.status
|
||||
'status':user.status,
|
||||
'cpf': user.cpf,
|
||||
'pis': user.pis,
|
||||
'rg': user.rg,
|
||||
'cod_interno': user.cod_interno,
|
||||
'email_secondary': user.email_secondary,
|
||||
'phone_secondary': user.phone_secondary,
|
||||
'cargo': user.cargo,
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -194,6 +244,20 @@ def update_user(user_id):
|
||||
|
||||
if 'status' in data:
|
||||
user.status = data['status']
|
||||
if 'cpf' in data:
|
||||
user.cpf = data['cpf']
|
||||
if 'pis' in data:
|
||||
user.pis = data['pis']
|
||||
if 'rg' in data:
|
||||
user.rg = data['rg']
|
||||
if 'cod_interno' in data:
|
||||
user.cod_interno = data['cod_interno']
|
||||
if 'email_secondary' in data:
|
||||
user.email_secondary = data['email_secondary']
|
||||
if 'phone_secondary' in data:
|
||||
user.phone_secondary = data['phone_secondary']
|
||||
if 'cargo' in data:
|
||||
user.cargo = data['cargo']
|
||||
|
||||
db.session.commit()
|
||||
return jsonify({'message': 'Usuário atualizado com sucesso'}), 200
|
||||
@ -268,6 +332,14 @@ def get_user(user_id):
|
||||
'parent_id': user.parent_id,
|
||||
'birth_date':user.birth_date,
|
||||
'phone':user.phone,
|
||||
'cpf': user.cpf,
|
||||
'pis': user.pis,
|
||||
'rg': user.rg,
|
||||
'cod_interno': user.cod_interno,
|
||||
'email_secondary': user.email_secondary,
|
||||
'phone_secondary': user.phone_secondary,
|
||||
'cargo': user.cargo,
|
||||
|
||||
#'service_role_id':user.service_role_id,
|
||||
'status':user.status,
|
||||
'licenses': [
|
||||
@ -296,7 +368,10 @@ def get_user(user_id):
|
||||
'state': address.state,
|
||||
'zip_code': address.zip_code,
|
||||
'country': address.country,
|
||||
'type': address.address_type.name
|
||||
'type': address.address_type.name,
|
||||
'number': address.number,
|
||||
'complement': address.complement,
|
||||
'neighborhood': address.neighborhood
|
||||
}
|
||||
for address in addresses
|
||||
],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user