Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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'}
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
    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')
Ejemplo n.º 7
0
    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')
Ejemplo n.º 8
0
    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'
            )