private void Cmb_Equipos_SelectedValueChanged(object sender, EventArgs e) { try { string Equipo = Cmb_Equipos.Text; TcpClient Cliente = Ctrl_Terminales.EncontrarControlXNombre(Equipo).Equipo.TCP; EnviarOrdenaCliente(Cliente, "SMS"); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void EliminarConexionCliente(ENT.Terminal_ENT Equipo) { Equipo.TCP = null; //eliminamos el puerto utilizado PuertosUtilizados.Remove(Equipo.Puerto); Equipo.Puerto = 0; Equipo.ReiniciarFactura(); //cambiamos el estado del equipo en el servidor Ctrl_Terminales.EncontrarControlXNombre(Equipo.Equipo) .CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Apagado); string Notificacion = "El cliente " + Equipo.Equipo + " se ha desconectado"; MostrarNotificacion(Notificacion); }
private void VerificarConexionCliente(ENT.Terminal_ENT Equipo) { try { bool EstaActivo = InterfazNet.ValidarConexion(Equipo.TCP); if (!EstaActivo) { if (Equipo.Estado != ENT.TiposAnidados_ENT.EstadoTerminal.Apagado) { EliminarConexionCliente(Equipo); } } Ctrl_Terminales.EncontrarControlXNombre(Equipo.Equipo).ActualizarControles(); } catch (Exception) { throw; } }
private void AgregarCliente(string Nombre, int Puerto = 0, TcpClient ClienteSel = null) { try { string Notificacion = ""; ENT.Terminal_ENT Equipo = Equipos.Find(C => C.Equipo == Nombre); if (Equipo == null) { Equipo = new ENT.Terminal_ENT(); Equipo.Equipo = Nombre; Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Disponible; Equipo.Puerto = Puerto; Equipo.TCP = ClienteSel; Equipos.Add(Equipo); Ctrl_Terminales.AgregarControl(Equipo); AsignarEventosControlesTerminales(); Notificacion = "El cliente " + Equipo.Equipo + " se ha conectado"; } else { CTRL.Terminal_CTRL Ctrl = Ctrl_Terminales.EncontrarControlXNombre(Nombre); Equipo.Puerto = Puerto; Equipo.TCP = ClienteSel; Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Disponible; Ctrl.Equipo.Puerto = Puerto; Ctrl.Equipo.TCP = ClienteSel; Ctrl.CambiarEstado(Equipo.Estado); Notificacion = "El cliente " + Equipo.Equipo + " se ha reconectado"; } MostrarNotificacion(Notificacion); LlenarComboEquipos(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void Tmr_Cliente_Tick(object sender, EventArgs e) { try { List <ENT.Terminal_ENT> ClientesBuscar = Equipos.FindAll(E => E.TCP != null); string Puerto; int EstadoFactura = 3; string HoraSalida = DateTime.Now.ToLongTimeString(); Configuraciones = new BLL.Configuraciones.AdminConfiguraciones_BLL(); CTRL.Terminal_CTRL EquipoSel; Btn_ApagarEquipos.Enabled = (Equipos.Count > 0); foreach (ENT.Terminal_ENT cClient in ClientesBuscar) { if (cClient.TCP != null && cClient.TCP.Available > 0) { EquipoSel = Ctrl_Terminales.EncontrarControlXNombre(cClient.Equipo); ContenidoRecibido = InterfazNet.Get(cClient.TCP); if (ContenidoRecibido.StartsWith("BB")) { Puerto = ContenidoRecibido.Substring(2); //validamos que el sistema tenga habilitado tiempo de ocio para los equipos y //que el tiempo consumido no este dentro del tiempo de ocio if (Configuraciones.EstaTiempoOcioActivo() && Convert.ToInt32(EquipoSel.Equipo.TiempoConsumido.TotalMinutes) <= ENT.TiposAnidados_ENT.MinutosOcio) { MessageBox.Show("El Equipo " + cClient.Equipo + " Consumió Un Tiempo Inferior Al Tiempo De Ocio, Razón Por La Que El Tiempo No Ha Sido Facturado", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { Factura.Guardar(cClient, Hoy.ToShortDateString(), HoraSalida, Usuario.Usuario, EstadoFactura); MessageBox.Show("El Tiempo Consumido : " + Convert.ToInt32(cClient.TiempoConsumido.TotalMinutes).ToString() + " Min \r Equipo Utilizado : " + cClient.Equipo + " \r Hora Inicio : " + cClient.HoraInicio.ToLongTimeString() + " \r Hora Salida : " + HoraSalida + " \r Total : " + cClient.TotalFacturar, "Orden Facturada", MessageBoxButtons.OK, MessageBoxIcon.Information); cClient.ReiniciarFactura(); EquipoSel.Equipo.ReiniciarFactura(); EquipoSel.ActualizarControles(); } } else if (ContenidoRecibido.StartsWith("TF")) { //si el servidor recibe pero el cliente aparece conectado en estado distinto, //se procede a buscar el ultimo registro de factura para el cliente y continuar. if (cClient.Estado == ENT.TiposAnidados_ENT.EstadoTerminal.Apagado | cClient.Estado == ENT.TiposAnidados_ENT.EstadoTerminal.Disponible) { Factura.ObtenerFactura(cClient); EquipoSel.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado); } String tiempo = ContenidoRecibido.Substring(2); cClient.TiempoConsumido = new TimeSpan(Convert.ToInt32(tiempo.Substring(0, 2)) , Convert.ToInt32(tiempo.Substring(3, 2)) , Convert.ToInt32(tiempo.Substring(6, 2))); cClient.TiempoConsumido = cClient.TiempoConsumido.Add(new TimeSpan(0, 0, 1)); EquipoSel.Equipo.TiempoConsumido = cClient.TiempoConsumido; EquipoSel.Equipo.Valor = Factura.ValorXTiempoConsumido(Convert.ToInt32(EquipoSel.Equipo.TiempoConsumido.TotalMinutes)); EquipoSel.ActualizarControles(); } else if (ContenidoRecibido.StartsWith("SS")) { Puerto = ContenidoRecibido.Substring(2); EliminarConexionCliente(cClient); } } } } catch (Exception) { } }
private void Btn_TrasladarTiempo_Click(object sender, EventArgs e) { string Descripcion; BLL.Auditor_BLL Auditor = new BLL.Auditor_BLL(); CTRL.Terminal_CTRL Equipo = (CTRL.Terminal_CTRL)((Control)sender).Parent; CTRL.Terminal_CTRL Destino; List <string> Disponibles = (from Eq in Equipos where Eq.Estado == ENT.TiposAnidados_ENT.EstadoTerminal.Disponible select Eq.Equipo).ToList(); if (Equipo.Equipo.Estado != ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado) { return; } if (Disponibles.Count == 0) { MessageBox.Show("No hay equipos disponibles para hacer cambio."); return; } //detenemos el equipo actual para hacer el traslado de equipo Equipo.CambiarEstado(ENT.TiposAnidados_ENT.EstadoTerminal.Detenido); EnviarOrdenaCliente(Equipo.Equipo.TCP, "Bloq"); //solicitamos la seleccion del equipo destino Frm_TrasladoEquipo Frm_Traslado = new Frm_TrasladoEquipo(Equipo.Equipo, Disponibles); Frm_Traslado.Show(); //obtenemos el objeto destino Destino = Ctrl_Terminales.EncontrarControlXNombre(Frm_Traslado.DestinoSeleccionado); //asignamos las variables de la operacion vigente Destino.Equipo.TieneTiempoIlimitado = Equipo.Equipo.TieneTiempoIlimitado; Destino.Equipo.Estado = ENT.TiposAnidados_ENT.EstadoTerminal.Ocupado; Destino.Equipo.HoraInicio = Equipo.Equipo.HoraInicio; Destino.Equipo.TiempoConsumido = Equipo.Equipo.TiempoConsumido; Destino.Equipo.TiempoConsumir = Equipo.Equipo.TiempoConsumir; Destino.Equipo.Valor = Equipo.Equipo.Valor; Equipo.Equipo.ProductosAdicionales.ForEach(I => Destino.Equipo.ProductosAdicionales.Add( new ENT.Detalles_ENT() { Producto = I.Producto, Cantidad = I.Cantidad, ValorUnidad = I.ValorUnidad, ValorTotal = I.ValorTotal })); //habilitamos nuevamente el equipo Equipo.Equipo.ReiniciarFactura(); Equipo.ActualizarControles(); //enviamos la orden al destino if (Equipo.Equipo.TieneTiempoIlimitado) { EnviarOrdenaCliente(Destino.Equipo.TCP, "LI" + Destino.Equipo.TiempoConsumido.ToString()); } else { TimeSpan TiempoRestante = Destino.Equipo.TiempoConsumir.Subtract(Destino.Equipo.TiempoConsumido); EnviarOrdenaCliente(Destino.Equipo.TCP, "I" + TiempoRestante.ToString()); } Destino.ActualizarControles(); Descripcion = "El usuario " + Usuario.Usuario + " traslado el tiempo del equipo " + Equipo.Equipo.Equipo + " al equipo " + Destino.Equipo.Equipo + "a las " + DateTime.Now.ToLongTimeString(); Auditor.Registrar(Descripcion, Usuario.Usuario, ENT.TiposAnidados_ENT.AccionesAuditoria.TrasladarTiempo); }