feat: notificação garçom

This commit is contained in:
2025-01-24 21:09:52 -03:00
parent 1747305c05
commit 412eb763db
10 changed files with 48 additions and 45 deletions

View File

@@ -10,6 +10,7 @@ urlpatterns = [
path('createComanda/', views.createComanda, name='createComanda'),
path('editComanda/', views.editComanda, name='editComanda'),
path('addContaCliente/', views.addContaCliente, name='addContaCliente'),
path('notificacao/', views.notificacao, name='notificacao'),

View File

@@ -1,9 +1,13 @@
from decimal import Decimal
from django.utils import timezone
from django.http import JsonResponse
from django.shortcuts import render, redirect
from django.db.models import Count, F
from comandas.models import Comanda, ProductComanda
from clients.models import Client
from orders.models import Order
from products.models import Product
from mesas.models import Mesa
from gestaoRaul.decorators import group_required
@@ -76,3 +80,39 @@ def addContaCliente(request):
comanda.save()
return redirect('comandas')
def notificacao(request):
fifteen_hours_ago = timezone.now() - timezone.timedelta(hours=15)
ordersPronto = Order.objects.filter(queue__gte=fifteen_hours_ago, finished__isnull=False)
grupoGarcom = request.user.groups.filter(name='Garçom').exists()
grupoGerente = request.user.groups.filter(name='Gerente').exists()
if grupoGarcom == True and grupoGerente == False:
if 'pronto' in request.COOKIES:
cookiesPronto = int(request.COOKIES['pronto'])
if len(ordersPronto) > cookiesPronto:
return JsonResponse({
'notificacao': 'true',
'pronto':len(ordersPronto),
'titulo': ordersPronto[len(ordersPronto)-1].id_comanda.name,
'corpo': ordersPronto[len(ordersPronto)-1].id_product.name,
})
else:
return JsonResponse({
'notificacao': 'false',
'pronto': len(ordersPronto),
})
else:
return JsonResponse({
'notificacao': 'true',
'pronto':len(ordersPronto),
'titulo': ordersPronto[len(ordersPronto)-1].id_comanda.name,
'corpo': ordersPronto[len(ordersPronto)-1].id_product.name,
})
else:
return JsonResponse({
'notificacao': 'false',
'pronto':len(ordersPronto),
})

Binary file not shown.

View File

@@ -130,8 +130,8 @@
<dialog id="loading" >
<div class="loading">
<img src="{% static 'midia/icons/loading.svg' %}" alt="">
<div >
<img class="loading" src="{% static 'midia/icons/loading.svg' %}" alt="">
</div>
<br><br>
<h1>Carregando...</h1>

View File

@@ -47,21 +47,17 @@ def notificacao(request):
fifteen_hours_ago = timezone.now() - timezone.timedelta(hours=15)
ordersFila = Order.objects.filter(queue__gte=fifteen_hours_ago)
ordersPronto = Order.objects.filter(queue__gte=fifteen_hours_ago, finished__isnull=False)
print(len(ordersFila))
print(len(ordersPronto))
grupoCozinha = request.user.groups.filter(name='Cozinha').exists()
grupoGarcom = request.user.groups.filter(name='Garçom').exists()
grupoGerente = request.user.groups.filter(name='Gerente').exists()
if grupoCozinha == True:
if grupoCozinha == True and grupoGerente == False:
if 'fila' in request.COOKIES:
cookiesFila = int(request.COOKIES['fila'])
if len(ordersFila) > cookiesFila:
return JsonResponse({
'notificacao': 'true',
'fila': len(ordersFila),
'pronto':len(ordersPronto),
'titulo': 'Pedido para: '+ ordersFila[len(ordersFila)-1].id_comanda.name,
'corpo': ordersFila[len(ordersFila)-1].id_product.name,
})
@@ -69,51 +65,20 @@ def notificacao(request):
return JsonResponse({
'notificacao': 'false',
'fila': len(ordersFila),
'pronto':len(ordersPronto),
})
else:
return JsonResponse({
'notificacao': 'true',
'fila': len(ordersFila),
'pronto':len(ordersPronto),
'titulo': 'Pedido para: '+ ordersFila[len(ordersFila)-1].id_comanda.name,
'corpo': ordersFila[len(ordersFila)-1].id_product.name,
})
elif grupoGarcom == True and grupoGerente == False:
if 'pronto' in request.COOKIES:
cookiesPronto = int(request.COOKIES['pronto'])
if len(ordersPronto) > cookiesPronto:
return JsonResponse({
'notificacao': 'true',
'fila': len(ordersPronto),
'pronto':len(ordersPronto),
'titulo': ordersPronto[len(ordersPronto)-1].id_comanda.name,
'corpo': ordersPronto[len(ordersPronto)-1].id_product.name,
})
else:
return JsonResponse({
'notificacao': 'false',
'fila': len(ordersPronto),
})
else:
return JsonResponse({
'notificacao': 'false',
'fila': len(ordersPronto),
'pronto':len(ordersPronto),
'titulo': ordersPronto[len(ordersPronto)-1].id_comanda.name,
'corpo': ordersPronto[len(ordersPronto)-1].id_product.name,
})
else:
return JsonResponse({
'notificacao': 'false',
'fila': len(ordersPronto),
'pronto':len(ordersPronto),
'titulo': ordersPronto[len(ordersPronto)-1].id_comanda.name,
'corpo': ordersPronto[len(ordersPronto)-1].id_product.name,
'fila': len(ordersFila),
})

View File

@@ -50,7 +50,7 @@ function mostrarNotificacao(titulo,corpo,grupo) {
function notificacao(){
var resposta = fetch(`/pedidos/notificacao/`, {method: 'GET',
var resposta = fetch(`/comandas/notificacao/`, {method: 'GET',
headers: {'Content-Type': 'application/json',
},})
.then(response => response.json())
@@ -60,17 +60,14 @@ function notificacao(){
document.cookie = `pronto=${data['pronto']}`;
// navigator.vibrate(200);
// navigator.vibrate([200, 100, 200]);
mostrarNotificacao(data['titulo'], data['corpo'],'Cozinha')
mostrarNotificacao(data['titulo'], data['corpo'],'Garçom')
console.log(data['notificacao'])
}else{
document.cookie = `pronto=${data['pronto']}`;
console.log('falso')
console.log(data['notificacao'])
console.log('notificação foi false')
}
// var produtos_mais_vendidos = data.produtos_mais_vendidos
})
.catch(error => {
alert('Erro verificar notificação:', error)