Esempio n. 1
0
def Scheduling():
    return render_template("Scheduling.htm",
                           titulo="Agendamento",
                           usuario=nome,
                           clientes=Cliente.RetornarClientes(),
                           barbeiros=Usuario.RetornarUsuarios(),
                           tipo_usuario=tipo_cliente(id))
Esempio n. 2
0
 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
Esempio n. 3
0
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())
Esempio n. 4
0
    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")
Esempio n. 5
0
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())
Esempio n. 6
0
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'))
Esempio n. 7
0
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')) 
Esempio n. 8
0
def ViewAlterClient(id_cliente):
    return render_template('ViewAlterClient.htm', titulo='Alterar Cliente', Cliente=Cliente.LocalizarCliente(id_cliente), usuario=nome, tipo_usuario=tipo_cliente(id))
Esempio n. 9
0
def DeleteClient(id):
    Cliente.ExcluirCliente(id)
    flash('Cliente deletado com sucesso!')
    return redirect(url_for("HistoryClient"))
Esempio n. 10
0
def HistoryClient():
    return render_template("HistoryClient.htm", titulo="Histórico de Cliente", Clientes=Cliente.RetornarClientes(), usuario=nome, tipo_usuario=tipo_cliente(id))
Esempio n. 11
0
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