def delete_product_order():
    if (request.form['order_id'] and request.form['product_id']):
        order_p = OrderProduct()
        order_p.pedidos_id = request.form['order_id']
        order_p.produtos_id = request.form['product_id']
        ret = order_p.delete()

        if (request.form['from'] and request.form['from'] == 'add-page'):
            order = Order()
            order.id = request.form['order_id']
            order.delete()

        return jsonify({'message': ret})
    return jsonify({
        'message':
        'O parâmetro ID do pedido e ID do produto são obrigatórios'
    })
def delete(id):
    product = Product()
    ret = product.get(id)
    if not product.id:
        flash(ret, 'info')
        return redirect(url_for('product.index'))

    order = OrderProduct()
    has = order.hasByProduct(id)
    if has:
        flash('O produto não pode ser deletado pois ele já está relacionado à algum pedido.', 'info')
        return redirect(url_for('product.index'))

    if request.method == 'POST':
        ret = product.delete()
        flash(ret, 'info')
        return redirect(url_for('product.index'))
    title = 'Deseja realmente deletar o produto ' + str(product.id) + '?'
    return render_template('product_delete.html', productId=id, title=title), 200
def edit_product_order():
    if (request.form['order_id'] and request.form['product_id']):
        order_p = OrderProduct()
        order_p.pedidos_id = request.form['order_id']
        order_p.produtos_id = request.form['product_id']
        order_p.quatidade = request.form['quantidade']
        order_p.observacao = request.form['observacao']
        order_p.valor = request.form['valor']
        ret = order_p.update()
        return jsonify({'message': ret})
    return jsonify({
        'message':
        'O parâmetro ID do pedido e ID do produto são obrigatórios'
    })
def delete(id):
    order = Order()
    ret = order.get(id)
    if not order.id:
        flash(ret, 'info')
        return redirect(url_for('order.index'))

    if session.get('user_grupo', '') == 'user':
        if order.clientes_id != session.get('user_id', ''):
            flash('Você não tem permissão para acessar este recurso.', 'info')
            return redirect(url_for('order.index'))

    if request.method == 'POST':

        order_p = OrderProduct()
        order_p.deleteByPedido(id)

        ret = order.delete()
        flash(ret, 'info')
        return redirect(url_for('order.index'))
    title = 'Deseja realmente deletar o pedido ' + str(order.id) + '?'
    return render_template('order_delete.html', orderId=id, title=title), 200
def report(id):

    order = Order()
    ret = order.get(id)
    if not order.id:
        flash(ret, 'info')
        return redirect(url_for('order.index'))

    order_p = OrderProduct()
    products = order_p.getByOrderId(order.id)
    images = []
    for product in products:
        images.append(b64encode(product[7]).decode("utf-8"))

    ren = render_template('order_report.html',
                          products=products,
                          images=images,
                          order=order)
    pdf = pdfkit.from_string(ren, False)
    response = make_response(pdf)
    response.headers['Content-Type'] = 'application/pdf'
    response.headers[
        'Content-Disposition'] = 'attachement; filename=relatorio-pedido.pdf'
    return response
def edit(id):
    title = 'Editar Pedido'
    order = Order()
    ret = order.get(id)
    if not order.id:
        flash(ret, 'info')
        return redirect(url_for('order.index'))

    if session.get('user_grupo', '') == 'user':
        if order.clientes_id != session.get('user_id', ''):
            flash('Você não tem permissão para acessar este recurso.', 'info')
            return redirect(url_for('order.index'))

    order_p = OrderProduct()
    products = order_p.getByOrderId(order.id)
    images = []
    for product in products:
        images.append(b64encode(product[7]).decode("utf-8"))

    if not request.form:
        form = OrderForm()
        form.cliente.data = str(order.clientes_id)
        form.observacao.data = order.observacao
        form.order_id.data = order.id
        orderproduct = OrderProduct()
        pedidos_produtos = orderproduct.getByOrderId(order.id)
    else:
        form = OrderForm(request.form)

    if form.validate_on_submit():

        order.observacao = form.observacao.data
        order.clientes_id = form.cliente.data
        ret = order.update()
        flash(ret, 'info')
        return redirect(url_for('order.edit', id=order.id))
    return render_template('order_form.html',
                           form=form,
                           title=title,
                           mode='edit',
                           orderId=order.id,
                           clientName=order.cliente_name,
                           pageOrigin='edit-page',
                           products=products,
                           images=images), 200
def add_product_order():
    if (request.form['pedidos_id']):
        has_product_order = OrderProduct()
        if has_product_order.getByOrderIdAndProductId(
                request.form['pedidos_id'], request.form['produtos_id']):
            return jsonify(
                {'message': 'Este produto já foi cadastrado neste pedido'})
        order = OrderProduct(request.form['pedidos_id'],
                             request.form['produtos_id'],
                             request.form['quantidade'], request.form['valor'],
                             request.form['observacao'])
        ret = order.insert()
        if ret == 'Produto do pedido cadastrado com sucesso!':
            return jsonify({
                'pedidos_id': order.pedidos_id,
                'produtos_id': order.produtos_id
            })
        else:
            return jsonify({'message': ret})
    return jsonify({'message': 'Os dados do produto estão incompletos'})