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