def Scheduling(): return render_template("Scheduling.htm", titulo="Agendamento", usuario=nome, clientes=Cliente.RetornarClientes(), barbeiros=Usuario.RetornarUsuarios(), tipo_usuario=tipo_cliente(id))
def __init__(self, id, vehiculo, dni, nombre, apellidos, num_tarjeta, tipo_abono, email, facturado=[]): Cliente.__init__(self, id, vehiculo) self.__dni = dni self.__nombre = nombre self.__apellidos = apellidos self.__num_tarjeta = num_tarjeta self.__tipo_abono = tipo_abono self.__email = email self.__facturado = facturado
def CreateOrder(): return render_template("CreateOrder.htm", titulo="Criar Pedido", usuario=nome, clientes=Cliente.RetornarClientes(), produtos=Produtos.RetornarProdutos(), barbeiros=Usuario.RetornarUsuarios(), tipo_usuario=tipo_cliente(id), pedidos=Pedido.RetornarPedidos())
def ingresar_vehiculo(self, id_cliente, matricula, tipo, vehiculo_repositorio, cliente_repositorio, ticket_repositorio, cliente_abonado_repositorio): servicio_vehiculo = vehiculo_service() vehiculo_abonado = cliente_abonado_repositorio.buscar_vehiculo_matricula( matricula) if (vehiculo_abonado == None): if (self.plaza_disponible(tipo) != -1): servicio_vehiculo.calcular_pin() entrada = datetime.now() nuevo_vehiculo = Vehiculo(matricula, tipo, self.plaza_disponible(tipo), servicio_vehiculo.calcular_pin(), entrada, None) vehiculo_repositorio.add_vehiculo(nuevo_vehiculo) longitud_coches = len(self.parking.lista_coches) longitud_motos = len(self.parking.lista_motos) if (tipo == "coche"): self.parking.lista_coches[nuevo_vehiculo.num_plaza - 1].vehiculo = nuevo_vehiculo self.parking.lista_coches[nuevo_vehiculo.num_plaza - 1].ocupada = True elif (tipo == "moto"): self.parking.lista_motos[nuevo_vehiculo.num_plaza - longitud_coches - 1].vehiculo = nuevo_vehiculo self.parking.lista_motos[nuevo_vehiculo.num_plaza - longitud_coches - 1].ocupada = True elif (tipo == "minusvalido"): self.parking.lista_minusvalidos[ nuevo_vehiculo.num_plaza - longitud_coches - longitud_motos - 1].vehiculo = nuevo_vehiculo self.parking.lista_minusvalidos[nuevo_vehiculo.num_plaza - longitud_coches - longitud_motos - 1].ocupada = True else: print("Tipo incorrecto") cliente = Cliente(id_cliente, nuevo_vehiculo) cliente_repositorio.add_cliente(cliente) ticket = Ticket(nuevo_vehiculo.matricula, nuevo_vehiculo.fecha_entrada, nuevo_vehiculo.num_plaza, nuevo_vehiculo.pin) ticket_repositorio.add_ticket(ticket) print(ticket) else: print("No quedan plazas disponibles de " + tipo + "\n") else: print("El vehículo que intenta depositar es abonado")
def ItensOrder(id_pedido, id_cliente): nome_cliente = [nome for nome in Cliente.RetornarClienteId(id_cliente)] return render_template('ItensOrder.htm', total=ItensPedido.TotalPedido(id_pedido), itens=ItensPedido.RetornarItens(id_pedido), id_cliente=id_cliente, id_pedido=id_pedido, titulo=nome_cliente[0][0], usuario=nome, tipo_usuario=tipo_cliente(id), produtos=Produtos.RetornarProdutos())
def AlterClient(id): nome = request.form['nome'] sobrenome = request.form['sobrenome'] email = request.form['email'] endereco = request.form['endereco'] numero = request.form['numero'] complemento = request.form['complemento'] cidade = request.form['cidade'] estado = request.form['estado'] cep = request.form['cep'] if nome != '' and sobrenome != '': Cliente.AtualizarCliente(id, nome, sobrenome, email, endereco, numero, complemento, cidade, estado, cep) flash("Cliente atualizado com sucesso!") return redirect(url_for('HistoryClient'))
def PostClient(): nome = request.form['nome'] sobrenome = request.form['sobrenome'] email = request.form['email'] endereco = request.form['endereco'] numero = request.form['numero'] complemento = request.form['complemento'] cidade = request.form['cidade'] estado = request.form['estado'] cep = request.form['cep'] if nome != '' and sobrenome != '': Cliente.CadastrarCliente(nome, sobrenome, email, endereco, numero, complemento, cidade, estado, cep) flash("Cliente Cadastrado com Sucesso!") return redirect(url_for('ViewClient'))
def ViewAlterClient(id_cliente): return render_template('ViewAlterClient.htm', titulo='Alterar Cliente', Cliente=Cliente.LocalizarCliente(id_cliente), usuario=nome, tipo_usuario=tipo_cliente(id))
def DeleteClient(id): Cliente.ExcluirCliente(id) flash('Cliente deletado com sucesso!') return redirect(url_for("HistoryClient"))
def HistoryClient(): return render_template("HistoryClient.htm", titulo="Histórico de Cliente", Clientes=Cliente.RetornarClientes(), usuario=nome, tipo_usuario=tipo_cliente(id))
def simular(opcion, cantidad): if (opcion == 1): hasta = cantidad elif (opcion == 2): hasta = 1 horaLimite = datetime(1, 1, 1, hour=cantidad, minute=0, second=0) else: hasta = 1 fila = -1 reloj = datetime(1, 1, 1, hour=0, minute=0, second=0) trabajos = [] numTrabajos = 0 numTrabajosTerminados = 0 maxHastaAhora = 0 promedioAtencion = 0 cantidadEnTaller = 0 vectoresEstado = [] vectoresEstado.append([ "#", "Reloj", "Evento", "Cliente", "Próxima llegada", "Cant actual", "Max", "Centro de atencion A", "", "", "", "", "", "Centro de atencion B", "", "", "", "", "", "Lugares en secadores", "Secador nro 1", "", "", "1", "Secador nro 2", "", "", "", "Secador nro 3", "", "", "", "Secador nro 4", "", "", "", "Secador nro 5", "", "", "", "Promedio t atencion" ]) vectoresEstado.append([ "#", "Reloj", "Evento", "Cliente", "Próxima llegada", "Cant actual", "Max", "Estado", "Cliente", "Prox fin", "Cant cola", "Cant atendidos", "Espera promedio", "Estado", "Cliente", "Prox fin", "Cant cola", "Cant atendidos", "Espera promedio", "Lugares en secadores", "Estado", "Cliente 1", "Cliente 2", "Prox fin", "Estado", "Cliente 1", "Cliente 2", "Prox fin", "Estado", "Cliente 1", "Cliente 2", "Prox fin", "Estado", "Cliente 1", "Cliente 2", "Prox fin", "Estado", "Cliente 1", "Cliente 2", "Prox fin", "Promedio t atencion" ]) while (hasta >= 0): hasta -= 1 fila += 1 # agregamos posibles eventos eventos = [] eventos.append(Evento("Nuevo trabajo", _ingreso.proximaLlegada)) eventos.extend(_maestroSecador.getEventos()) eventos.append( Evento("Inicio de bloqueo B", _centroB.horaInicioBloqueo)) eventos.append(Evento("Centro B desbloqueado", _centroB.horaFinBloqueo)) eventos.append( Evento("Inicio de bloqueo A", _centroA.horaInicioBloqueo)) eventos.append(Evento("Fin Centro B", _centroB.proximoFinAtencion)) eventos.append(Evento("Centro A desbloqueado", _centroA.horaFinBloqueo)) eventos.append(Evento("Fin Centro A", _centroA.proximoFinAtencion)) # tomamos el primero eventoActual = eventos[0] # comparamos todos para tomar el minimo for evento in eventos: if (evento.hora is not None): if (evento.hora < eventoActual.hora): eventoActual = evento #actualizamos reloj reloj = eventoActual.hora if (opcion == 2 and reloj > horaLimite): break else: if (opcion == 2 and reloj < horaLimite): hasta = 1 if (opcion == 3): hasta = 1 # ahora realizamos accion segun que evento haya que procesar if (eventoActual.nombre == "Nuevo trabajo"): cantidadEnTaller += 1 numTrabajos += 1 clienteLlegando = Cliente(numTrabajos) clienteLlegando.llegar(reloj) clienteEvento = clienteLlegando _centroA.llegadaDeCliente(reloj, clienteLlegando) _ingreso.actualizarIngreso() trabajos.append(clienteLlegando) elif (eventoActual.nombre == "Fin Centro B"): if (not _maestroSecador.hayLugar()): if (_centroB.horaFinBloqueo is not None): clienteEvento = _centroB.finAtencion() if (_maestroSecador.hayLugar()): clienteEvento = _centroB.finAtencion() _maestroSecador.recibirCliente(reloj, clienteEvento) if (not _maestroSecador.hayLugar()): if (_centroB.horaFinBloqueo is None): _centroB.bloquear( reloj, _maestroSecador.getProximoFinAtencion()) elif (eventoActual.nombre == "Fin Centro A"): if (len(_colaCentroB) == 3): if (_centroA.horaFinBloqueo is not None): clienteEvento = _centroA.finAtencion() else: _centroA.bloquear(reloj, _centroB.getProximoFin()) if (len(_colaCentroB) <= 2): clienteEvento = _centroA.finAtencion() _centroB.llegadaDeCliente(reloj, clienteEvento) if (len(_colaCentroB) == 3): if (_centroA.horaFinBloqueo is None): _centroA.bloquear(reloj, _centroB.getProximoFin()) elif (eventoActual.nombre == "Centro A desbloqueado"): clienteEvento = _centroA.finalizarBloqueo() elif (eventoActual.nombre == "Inicio de bloqueo A"): clienteEvento = _centroA.actualizarFinBloqueo() elif (eventoActual.nombre == "Centro B desbloqueado"): clienteEvento = _centroB.finalizarBloqueo() elif (eventoActual.nombre == "Inicio de bloqueo B"): clienteEvento = _centroB.actualizarFinBloqueo() elif (eventoActual.nombre.startswith("Fin Secador")): cantidadEnTaller -= 1 numTrabajosTerminados += 1 nroSecador = int(eventoActual.nombre[-1:]) clienteEvento = _maestroSecador.finAtencion( nroSecador, eventoActual.hora) tEnSistema = clienteEvento.tiempoEnSistema.total_seconds() promedioAtencion = (promedioAtencion * (numTrabajosTerminados - 1) + tEnSistema) / numTrabajosTerminados if (opcion == 3 and numTrabajosTerminados == cantidad): hasta = -1 if (cantidadEnTaller > maxHastaAhora): maxHastaAhora = cantidadEnTaller for index, trabajoViejo in enumerate(trabajos): if (clienteEvento is not None and trabajoViejo.numero == clienteEvento.numero): trabajos[index] = clienteEvento vectorEstado = [ fila, reloj.time(), eventoActual.nombre, "-" if clienteEvento is None else clienteEvento.numero, _ingreso.proximaLlegada.time(), cantidadEnTaller, maxHastaAhora ] for centro in _listaCentros: vectorEstado.extend([ centro.estado, centro.getNumeroCliente(), centro.getProximoFinAtencionString(), len(centro.cola), centro.cantidadAtendidos, timedelta(seconds=round(centro.tiempoEnEspera, 0)) ]) vectorEstado.append(_maestroSecador.getLugares()) for secador in _listaSecadores: vectorEstado.extend([ secador.estado, secador.getNumeroCliente(False), secador.getNumeroCliente(True), secador.getProximoFinAtencionString() ]) vectorEstado.append(timedelta(seconds=round(promedioAtencion, 0))) for trabajo in trabajos: vectorEstado.extend([ trabajo.estado, "-" if trabajo.horaLlegada is None else trabajo.horaLlegada.time(), "-" if trabajo.horaInicioAtencion is None else trabajo.horaInicioAtencion.time(), "-" if trabajo.horaFinAtencion is None else trabajo.horaFinAtencion.time(), "-" if trabajo.horaSalida is None else trabajo.horaSalida.time(), "-" if trabajo.tiempoEnSistema is None else trabajo.tiempoEnSistema ]) vectoresEstado.append(vectorEstado) return vectoresEstado, trabajos