private void cmdSmart_Click(object sender, EventArgs e) { if (txtNoEmpleado.Text.Length != 6) { MessageBox.Show("El numero de empleado es incorrecto", "Error"); } else { string noEmpleado = txtNoEmpleado.Text; string fecha = txtFecha.Text; oEmpleado = oPoolService.ConsultaUnidadNegocio(noEmpleado); int idUnidadNegocio = oEmpleado.IdUnidadNegocio; txtIdUnidadNegocio.Text = idUnidadNegocio.ToString(); oTurno = oTurnosService.ObtenerTurnoAsignado(fecha, idUnidadNegocio.ToString(), noEmpleado); string idTurno = oTurno.IdTurno.ToString(); if (idTurno == "0") MessageBox.Show("No hay turnos asignados a este empleado"); txtIdTurno.Text = idTurno; } }
public void flujoTurnoVirtual(string empleado,int TiempoMin, int TiempoMax) { string unidadNegocio = oLogicPoolService.ConsultaUnidadNegocio(empleado).IdUnidadNegocio.ToString(); string fecha = Util.getFecha(); Turno oTurno = new Turno(); Random random = new Random(); int randomTiempos = 0; int tiempoMinConvert = TiempoMin * 1000; int tiempoMaxConvert = TiempoMax * 1000; /*Se consulta si el empleado tiene asignado un turno, si lo tiene * este turno lo pospone y genera un turno virtual */ randomTiempos = random.Next(tiempoMinConvert, tiempoMaxConvert); oTurno = oLogicTurnosService.ObtenerTurnoAsignado(fecha, unidadNegocio, empleado); if (oTurno.IdTurno == 0) //Si no tiene turno asignado { oLogicTurnosService.AtiendeTurnoVirtual(empleado, unidadNegocio, 1); oTurno = oLogicTurnosService.ObtenerTurnoAtendiendo(fecha, empleado); string idTurno = oTurno.IdTurno.ToString(); Thread.Sleep(randomTiempos); oLogicTurnosService.FinalizarTurno(empleado, fecha, idTurno, unidadNegocio, 1); } else { string idTurno = oTurno.IdTurno.ToString(); oLogicTurnosService.PosponerTurno(fecha, idTurno, unidadNegocio, 1); oLogicTurnosService.AtiendeTurnoVirtual(empleado, unidadNegocio, 1); oTurno = oLogicTurnosService.ObtenerTurnoAtendiendo(fecha, empleado); idTurno = oTurno.IdTurno.ToString(); Thread.Sleep(randomTiempos); oLogicTurnosService.FinalizarTurno(empleado, fecha, idTurno, unidadNegocio, 1); oLogicPoolService.SetDisponible(empleado, 1); } }
public Turno ObtenerTurnoAtendiendo(string fecha, string noEmpleado) { int tamanoArregloUnidadesNegocio = ObtenerTurnosAtendiendo(fecha).Length; TurnoAtendiendo[] turnosAtendiendo = new TurnoAtendiendo[tamanoArregloUnidadesNegocio]; Turno turnoAtendiendo = new Turno(); turnosAtendiendo = ObtenerTurnosAtendiendo(fecha); for (int i = 0; i < tamanoArregloUnidadesNegocio; i++) { for (int j = 0; j < turnosAtendiendo[i].Value.Length; j++) { if (turnosAtendiendo[i].Value[j].Empleado.NoEmpleado == noEmpleado) { turnoAtendiendo = turnosAtendiendo[i].Value[j]; } } } return turnoAtendiendo; }
public HappyPathModel() { Turno = new Turno(); }
public TurnoAtendiendo() { Value = new Turno[Key]; }
public void HappySencillo(string empleado, string unidadNegocio, string cantidadTurnos,int tiempoMinimo, int tiempoMaximo) { TurnadorClient.Vistas.HappyPath.HappySencillo oBarra = new Vistas.HappyPath.HappySencillo(); Random random = new Random(); bool setDisponible; bool generaTurno; bool atiendeTurno; bool finalizaTurno; string error = null ; cantidadDeTurnos = Int32.Parse(cantidadTurnos); int randomTiempos = 0; int tiempoMinConvert = tiempoMinimo * 1000; int tiempoMaxConvert = tiempoMaximo * 1000; string fecha = oUtil.getFecha(); //Todo lo que se haga ira dentro de un for que repetira el numero de veces que se desea obtener el turno for (int i = 0; i < cantidadDeTurnos; i++) { randomTiempos = random.Next(tiempoMinConvert, tiempoMaxConvert); tiempoEspera = (randomTiempos / 1000).ToString() + "." + (randomTiempos % 1000)+" seg."; try { setDisponible = oPoolService.SetDisponible(empleado, 1).Complete; if (setDisponible == true) { generaTurno = oTurnosService.GeneraTurno("1", unidadNegocio, "0", 1).Complete; if (generaTurno == true) { oTurno = oTurnosService.ObtenerTurnoAsignado(fecha, unidadNegocio, empleado); string noEmpleadoAtiende = oTurno.Empleado.NoEmpleado; string fechaAtiende = oTurno.Fecha.ToString(); string idTurnoAtiende = oTurno.IdTurno.ToString(); string idUnidadNegocioAtiende = oTurno.IdUnidadNegocio.ToString(); atiendeTurno = oTurnosService.AtenderTurno(noEmpleadoAtiende, fechaAtiende, idTurnoAtiende, idUnidadNegocioAtiende, 1).Complete; idTurnoFlow = idTurnoAtiende; Thread.Sleep(randomTiempos); //MessageBox.Show("Tiempo en atender turno:" + randomTiempos/1000); if (atiendeTurno == true) { oTurno = oTurnosService.ObtenerTurnoAtendiendo(fecha, empleado); string noEmpleadoFinaliza = oTurno.Empleado.NoEmpleado; string fechaFinaliza = oTurno.Fecha.ToString(); string idTurnoFinaliza = oTurno.IdTurno.ToString(); string idUnidadNegocioFinaliza = oTurno.IdUnidadNegocio.ToString(); finalizaTurno = oTurnosService.FinalizarTurno(noEmpleadoFinaliza, fechaFinaliza, idTurnoFinaliza, idUnidadNegocioFinaliza, 1).Complete; if (finalizaTurno == true) { turnosTotalValue = i + 1; } else { error = "Error al finalizar el turno"; break; } } else { error = "Error al atender el turno"; break; } } else { error = "Error al generar turno"; break; } } else { error = "Error al poner disponible al empleado"; break; } } catch (Exception exHappy) { string exepcion = exHappy.GetType().ToString(); if (exepcion == "System.Threading.ThreadAbortException") { MessageBox.Show("Happy Path cancelado", "Cancelado"); } else { MessageBox.Show("Error en Happy Path:" + exHappy.Data, "Error"); break; } } } if (error != null) { MessageBox.Show(error, "Error"); } else { MessageBox.Show("Se completo el flujo " + turnosTotalValue + " veces exitosamente", "Happy path completo"); } }