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('createComanda/', views.createComanda, name='createComanda'),
path('editComanda/', views.editComanda, name='editComanda'), path('editComanda/', views.editComanda, name='editComanda'),
path('addContaCliente/', views.addContaCliente, name='addContaCliente'), path('addContaCliente/', views.addContaCliente, name='addContaCliente'),
path('notificacao/', views.notificacao, name='notificacao'),

View File

@@ -1,9 +1,13 @@
from decimal import Decimal from decimal import Decimal
from django.utils import timezone
from django.http import JsonResponse
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.db.models import Count, F from django.db.models import Count, F
from comandas.models import Comanda, ProductComanda from comandas.models import Comanda, ProductComanda
from clients.models import Client from clients.models import Client
from orders.models import Order
from products.models import Product from products.models import Product
from mesas.models import Mesa from mesas.models import Mesa
from gestaoRaul.decorators import group_required from gestaoRaul.decorators import group_required
@@ -76,3 +80,39 @@ def addContaCliente(request):
comanda.save() comanda.save()
return redirect('comandas') 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" > <dialog id="loading" >
<div class="loading"> <div >
<img src="{% static 'midia/icons/loading.svg' %}" alt=""> <img class="loading" src="{% static 'midia/icons/loading.svg' %}" alt="">
</div> </div>
<br><br> <br><br>
<h1>Carregando...</h1> <h1>Carregando...</h1>

View File

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

View File

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