Ejemplo n.º 1
0
        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);
        }