mirror of
https://github.com/welton89/RRBEC.git
synced 2026-04-05 13:35:42 +00:00
feat: notificação garçom
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -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'),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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.
Binary file not shown.
Binary file not shown.
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user