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(); } }
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); }
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); } } } }