private void GenerarHojaAuditoria()
        {
            if (Operario != null)
            {
                DateTime fechaInicio;
                DateTime fechaFin;
                Horario.CalcularHorarioTurno(Turno, Fecha, out fechaInicio, out fechaFin);

                var paquetes = selectProductos.PaquetesFabricadosOperario(Operario.Id, fechaInicio, fechaFin);

                this.HojaAuditoria = new HojaAuditoria(Operario, paquetes, Util.Store.Bancada.Maquinas.ToList());
            }
        }
        private void CargarPaquetesPrevios()
        {
            try
            {
                DateTime  ahora = DateTime.Now;
                Operarios op    = SesionManager.Sesion.Operario;
                Turno     turno = Horario.CalcularTurnoAFecha(ahora);
                DateTime  fechaInicio;
                DateTime  fechaFin;
                Horario.CalcularHorarioTurno(turno, ahora, out fechaInicio, out fechaFin);

                var paquetes = selectRegistroDatos.HistoricoPaquetesOperario(op.Id, fechaInicio, fechaFin);

                foreach (var paquete in paquetes.Where(x => x.PiezaIntroducida))
                {
                    var maq = Store.Bancada.Maquinas.FirstOrDefault(x => x.IpAutomata == paquete.IpAutomata && x.Posicion == paquete.PosicionMaquina);
                    if (maq != null)
                    {
                        maq.Pulsos.Add(new PulsoMaquina
                        {
                            CodigoEtiqueta = paquete.CodigoEtiqueta,
                            Control        = BuscarControl(paquete.IdOperacion, maq),
                            Ciclo          = paquete.Ciclo,
                            Fecha          = paquete.FechaCreacion,
                            Pares          = paquete.Pares,
                            PosicionGlobal = maq.PosicionGlobal ?? 0,
                            IdOperario     = paquete.IdOperario,
                        });;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Write(ex);
            }
        }
        private void CargarConfiguracion()
        {
            Cargando loading = new Cargando();

            if (!System.Security.Principal.WindowsIdentity.GetCurrent().Name.Contains("omartinez"))
            {
                loading.Topmost     = true;
                loading.WindowStyle = WindowStyle.None;
            }
            loading.Show();

            BackgroundWorker bw = new BackgroundWorker();

            bw.DoWork += (s, e) =>
            {
                try
                {
                    this.config   = BDConfiguracion.Leer();
                    Store.Bancada = BDSQL.Select.ObtenerBancadaPorId(this.config.IdBancada);
                    if (Store.Bancada != null && Store.Bancada.EsMaster && Store.Bancada.IdHermano.HasValue)
                    {
                        Store.BancadaEsclavo = BDSQL.Select.ObtenerBancadaPorId(Store.Bancada.IdHermano.Value);
                    }
                    else if (Store.Bancada != null && !Store.Bancada.EsMaster && Store.Bancada.IdHermano.HasValue)
                    {
                        Store.BancadaMaster = BDSQL.Select.ObtenerBancadaPorId(Store.Bancada.IdHermano.Value);
                    }

                    DateTime ahora = DateTime.Now;
                    Turno    turno = Horario.CalcularTurnoAFecha(ahora);
                    DateTime fechaInicio;
                    DateTime fechaFin;
                    Horario.CalcularHorarioTurno(turno, ahora, out fechaInicio, out fechaFin);

                    var paquetes = new List <MaquinasRegistrosDatos>();
                    foreach (var maquina in Store.Bancada.Maquinas)
                    {
                        paquetes.AddRange(Select.HistoricoPaquetesOperario(maquina.IpAutomata, maquina.Posicion, fechaInicio, fechaFin));
                    }

                    foreach (var paquete in paquetes.Where(x => x.PiezaIntroducida))
                    {
                        var maq = Store.Bancada.Maquinas.FirstOrDefault(x => x.IpAutomata == paquete.IpAutomata && x.Posicion == paquete.PosicionMaquina);
                        if (maq != null)
                        {
                            maq.Pulsos.Add(new PulsoMaquina
                            {
                                IdTarea        = paquete.IdTarea,
                                CodigoEtiqueta = paquete.CodigoEtiqueta,
                                Control        = BuscarControl(paquete.IdOperacion, maq),
                                Fecha          = paquete.FechaCreacion,
                                Pares          = paquete.Pares,
                                IdOperario     = paquete.IdOperario,
                                CodigoOrden    = paquete.CodigoOrden,
                                Talla          = paquete.Talla,
                            });
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Write(ex);
                }
            };

            bw.RunWorkerCompleted += (s, e) =>
            {
                try
                {
                    if (Store.Bancada != null && Store.Bancada.Maquinas.Any())
                    {
                        if (Store.Bancada.EsMaster)
                        {
                            var maquinasUart = Store.Bancada.Maquinas.ToList();
                            if (Store.BancadaEsclavo != null)
                            {
                                maquinasUart.AddRange(Store.BancadaEsclavo.Maquinas.ToList());
                            }
                            uart = new Uart(maquinasUart);
                            uart.OnPulsoGenerado += this.Uart_OnPulsoGenerado;
                        }

                        this.IniciarMQTT();
                    }
                    else
                    {
                        MessageBox.Show("Bancada no configurada", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    loading.Close();
                }
                catch (Exception ex)
                {
                    Log.Write(ex);
                    loading.Close();
                }
                Notifica();
            };

            bw.RunWorkerAsync();
        }