예제 #1
0
        private void FinAtencion(Empleado empleado)
        {
            if (estadoActual.stock >= empleado.cliente.CantidadPedido)
            {
                estadoActual.stock -= empleado.cliente.CantidadPedido;
            }
            else
            {
                estadoActual.stock = 0;
            }

            if (estadoActual.colaClientes.Count != 0)
            {
                Cliente cliente = estadoActual.colaClientes.First();
                estadoActual.colaClientes.RemoveAt(0);
                empleado.SetCliente(cliente, estadoActual.tiempo);
            }
            else
            {
                empleado.finalizarAtencion();
            }

            if (estadoActual.stock == 0 && estadoActual.colaClientes.Count() != 0)
            {
                estadoActual.clientesPerdidos += estadoActual.colaClientes.Count();
                estadoActual.colaClientes.Clear();
            }
        }
예제 #2
0
        private void LlegaCliente()
        {
            Cliente cliente = new Cliente(estadoActual.tiempo, estadoActual.numeroCliente);

            estadoActual.numeroCliente++;

            if (estadoActual.stock == 0)
            {
                if (estadoActual.horno.getEstado())
                {
                    if (estadoActual.tiempoFinCoccion > cliente.TiempoLimite)
                    {
                        estadoActual.clientesPerdidos++;
                    }
                    else
                    {
                        estadoActual.colaClientes.Add(cliente);
                    }
                }
            }
            else
            {
                List <Empleado> ListaEmpleados = new List <Empleado>
                {
                    estadoActual.empleado1,
                    estadoActual.empleado2
                };

                Empleado empleado = ListaEmpleados.FindAll(x => x.Libre).FirstOrDefault();

                if (empleado != null)
                {
                    empleado.SetCliente(cliente, estadoActual.tiempo);
                }
                else
                {
                    estadoActual.colaClientes.Add(cliente);
                }
            }

            estadoActual.ObtenerTiempoLlegadaProximoCliente(estadoActual.tiempo);
        }
예제 #3
0
        private void FinConccionHorno()
        {
            estadoActual.horno.setEstado(false);
            int elem = estadoActual.horno.getCantidadElementosCoccion();

            estadoActual.stock += elem;

            if (estadoActual.colaClientes.Count() != 0)
            {
                List <Empleado> ListaEmpleados = new List <Empleado>
                {
                    estadoActual.empleado1,
                    estadoActual.empleado2
                };

                ListaEmpleados = ListaEmpleados.FindAll(x => x.Libre);
                if (ListaEmpleados.Count() == 2 && estadoActual.colaClientes.Count() > 1)
                {
                    Empleado empleado = ListaEmpleados.ElementAt(0);
                    empleado.SetCliente(estadoActual.colaClientes.First(), estadoActual.tiempo);
                    estadoActual.colaClientes.RemoveAt(0);

                    Empleado empleado2 = ListaEmpleados.ElementAt(1);
                    empleado2.SetCliente(estadoActual.colaClientes.First(), estadoActual.tiempo);
                    estadoActual.colaClientes.RemoveAt(0);
                }
                else
                {
                    Empleado empleado = ListaEmpleados.FirstOrDefault();

                    if (empleado != null)
                    {
                        empleado.SetCliente(estadoActual.colaClientes.First(), estadoActual.tiempo);
                        estadoActual.colaClientes.RemoveAt(0);
                    }
                }
            }
        }