def post(self): login = get_jwt_identity() current_user = UserModel.find_by_login(login) data = request.json if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): client = obtener_cliente_por_id(data.get('clienteId')) else: client = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=data.get('clienteId')) if not client: abort(404, 'No existe el cliente con ese Id') product = obtener_producto_por_id(data.get('productoId')) if not product: abort(404, 'No existe un producto con ese Id') try: contract = crear_contrato( tipo=data.get('tipo'), cliente_id=data.get('clienteId'), producto_id=data.get('productoId'), correo_vendedor=current_user.email, dias_validez=data.get('diasValidez'), pagos_programados=data.get('pagosProgramados')) return contract.to_dict() except Exception as exception: abort(500, 'Error del servidor al crear el contrato')
def verify_cliente_exists(cliente_id: str) -> bool: if not cliente_id: return False try: cliente = obtener_cliente_por_id(cliente_id) except Exception: return False if not cliente: return False return True
def get(self, cliente_id): login = get_jwt_identity() current_user = UserModel.find_by_login(login) if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): cliente = obtener_cliente_por_id(cliente_id=cliente_id) else: cliente = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=cliente_id) if not cliente: abort(404, 'No existe ningún cliente con ese Id') return cliente.to_dict()
def delete(self, cliente_id): login = get_jwt_identity() current_user = UserModel.find_by_login(login) if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): cliente = obtener_cliente_por_id(cliente_id=cliente_id) else: cliente = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=cliente_id) if not cliente: abort(404, 'No existe ningún cliente con ese Id') try: borrar_cliente_por_id(cliente_id=cliente_id) except Exception as exception: abort(500, 'Error del servidor al borrar el cliente') return {'message': 'Cliente borrado exitosamente'}
def obtener_resumen_contratos_por_cliente(cliente_id: str) -> dict: resumen = dict() contratos_objs = obtener_contratos_por_cliente_id(cliente_id=cliente_id) resumen['cliente'] = obtener_cliente_por_id( cliente_id=cliente_id).to_dict() lista_contratos_con_producto = [] for contrato_obj in contratos_objs: entrada_contrato_con_producto = dict() entrada_contrato_con_producto['contrato'] = contrato_obj.to_dict() producto_obj = obtener_producto_por_id( producto_id=contrato_obj.productoId) entrada_contrato_con_producto['producto'] = producto_obj.to_dict() lista_contratos_con_producto.append(entrada_contrato_con_producto) resumen['resumen_contratos'] = lista_contratos_con_producto return resumen
def put(self, cliente_id): login = get_jwt_identity() current_user = UserModel.find_by_login(login) if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): cliente = obtener_cliente_por_id(cliente_id=cliente_id) else: cliente = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=cliente_id) if not cliente: abort(404, 'No existe ningún cliente con ese Id') data = request.json if data.get('fechaNacimiento') and data.get('fechaNacimiento') != "": try: fecha_nacimiento = datetime.strptime( data.get('fechaNacimiento'), '%Y-%m-%dT%H:%M:%S.%fZ') if fecha_nacimiento < datetime.strptime( '1900-01-01', '%Y-%m-%d'): fecha_nacimiento = None except Exception as exception: fecha_nacimiento = None else: fecha_nacimiento = None try: client = editar_cliente(cliente_id=cliente_id, email=data.get('email'), nombre=data.get('nombre'), apellidos=data.get('apellidos'), fecha_nacimiento=fecha_nacimiento, direccion=data.get('direccion'), telefono=data.get('telefono')) return client.to_dict() except Exception as exception: abort(500, 'Error del servidor al editar el cliente')
def get(self, cliente_id): login = get_jwt_identity() current_user = UserModel.find_by_login(login) if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): client = obtener_cliente_por_id(cliente_id) else: client = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=cliente_id) if not client: abort(404, 'No existe el cliente con ese Id') try: contratos_objs = obtener_contratos_por_cliente_id( cliente_id=cliente_id) contratos = [contrato.to_dict() for contrato in contratos_objs] return contratos except Exception as exception: abort(500, 'Error del servidor al obtener los contratos del cliente')
def get(self, cliente_id): login = get_jwt_identity() current_user = UserModel.find_by_login(login) if current_user.has_authority( AUTHORITY_ADMIN) or current_user.has_authority(AUTHORITY_ROOT): client = obtener_cliente_por_id(cliente_id) else: client = obtener_cliente_por_id_correo_vendedor( correo_vendedor=current_user.email, cliente_id=cliente_id) if not client: abort(404, 'No existe el cliente con ese Id') try: resumen_cliente_contratos_obj = obtener_resumen_contratos_por_cliente( cliente_id=cliente_id) return resumen_cliente_contratos_obj except Exception as exception: abort( 500, 'Error del servidor al recuperar el resumen de los contratos por cliente' )