public void AdicionarMgr(IMgrLocal mgr)
 {
     if (mgr != null && !_managersLocal.ContainsKey(mgr.NombreTabla))
     {
         _managersLocal.Add(mgr.NombreTabla, mgr);
     }
 }
        private bool SincronizarParametros()
        {
            Console.WriteLine("4 sssssssssssss:::::::::::::::::::::::::::::::::::::::: ");
            bool resultado = false;

            try
            {
                MensajeEmergenteMgr.Intancia.LimpiarMensaje();
                if (Sesion.Instancia.ConfigConexion.TipoBD == CNDC.DAL.TipoBaseDatos.Centralizada)
                {
                    return(false);
                }

                if (_error)
                {
                    return(false);
                }


                PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Iniciando Sincronizacion: " + DateTime.Now.ToString("HH:mm:ss"));
                AyudanteSincronizacion ayudante = new AyudanteSincronizacion(Sesion.Instancia.Conexion);
                //ValidarEstructuraTablas(ayudante);
                PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Iniciando Sincronizacion: PASO1 " + DateTime.Now.ToString("HH:mm:ss"));
                Dictionary <string, decimal> sincVersionesLocal = ayudante.GetMaxSincVer();
                PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Iniciando Sincronizacion: PASO2 " + DateTime.Now.ToString("HH:mm:ss"));
                Console.WriteLine("0eeeeeeeeeeee:: ");
                Dictionary <string, decimal> sincVersionesServidor = MgrServidor.GetMaxSincVer();
                Console.WriteLine("1eeeeeeeeeeee:: ");
                Console.WriteLine("2eeeeeeeeeeee:: " + sincVersionesLocal.Count + "; servidor: " + sincVersionesServidor.Count);
                PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Iniciando Sincronizacion: PASO3 " + DateTime.Now.ToString("HH:mm:ss"));
                int contadorTablasSincronizadas = 0;
                Dictionary <IProveedorConfirmacionSinc, DataTable> dicProveedoresConfirmacion = new Dictionary <IProveedorConfirmacionSinc, DataTable>();
                int c = 0;

                if (sincVersionesServidor == null || sincVersionesServidor.Count == 0)
                {
                    _error = true;
                }

                try
                {
                    PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Iniciando Sincronizacion: PASO4 " + DateTime.Now.ToString("HH:mm:ss"));
                    ConfirmarSincronizador(sincVersionesLocal, sincVersionesServidor);

                    foreach (var kv in sincVersionesServidor)
                    {
                        if (sincVersionesLocal.ContainsKey(kv.Key))
                        {
                            c++;
                            PistaMgr.Instance.Debug("Sincronizador", kv.Key + " " + kv.Value);
                            Console.WriteLine(c.ToString());
                            if (_managersLocal.ContainsKey(kv.Key) && sincVersionesLocal.ContainsKey(kv.Key))
                            {
                                IMgrLocal mgrLocal       = _managersLocal[kv.Key];
                                decimal   maxSincVersion = sincVersionesLocal[mgrLocal.NombreTabla];
                                if (maxSincVersion < kv.Value)
                                {
                                    PistaMgr.Instance.Debug("Sincronizador", string.Format("Nombre Tabla:{0}", mgrLocal.NombreTabla));
                                    DataTable      tabla        = MgrServidor.GetRegistrosSincronizacion(mgrLocal.NombreTabla, maxSincVersion, Sesion.Instancia.EmpresaActual.PkCodPersona);
                                    List <DataRow> rowsNuevos   = new List <DataRow>();
                                    List <DataRow> rowsAntiguos = new List <DataRow>();
                                    foreach (DataRow row in tabla.Rows)
                                    {
                                        if (mgrLocal.Existe(mgrLocal.NombreTabla, row))
                                        {
                                            rowsAntiguos.Add(row);
                                        }
                                        else
                                        {
                                            rowsNuevos.Add(row);
                                        }
                                        resultado = true;
                                    }

                                    if (rowsNuevos.Count > 0)
                                    {
                                        mgrLocal.Insertar(rowsNuevos);
                                    }

                                    if (rowsAntiguos.Count > 0)
                                    {
                                        mgrLocal.Actualizar(rowsAntiguos);
                                    }

                                    if (mgrLocal is IProveedorConfirmacionSinc)
                                    {
                                        dicProveedoresConfirmacion.Add(mgrLocal as IProveedorConfirmacionSinc, tabla);
                                    }

                                    PistaMgr.Instance.Debug("Sincronizador", string.Format("{0}, NumRegistros={1}", mgrLocal.NombreTabla, tabla.Rows.Count));
                                }
                            }

                            contadorTablasSincronizadas++;
                            OnSincronizando(contadorTablasSincronizadas, sincVersionesServidor.Count, "Sincronizando Parámetros...");
                        }
                    }
                }
                catch (Exception ex)
                {
                    PistaMgr.Instance.Error("Sincronizador", ex);
                }

                foreach (KeyValuePair <IProveedorConfirmacionSinc, DataTable> kv in dicProveedoresConfirmacion)
                {
                    DataTable tabla = kv.Key.GetTablaConfirmacionSinc(kv.Value);
                    if (tabla.Rows.Count > 0)
                    {
                        MgrServidor.ConfirmarSinc((kv.Key as IMgrLocal).NombreTabla, tabla);
                    }
                }
                PistaMgr.Instance.EscribirEnLocal("Sincronizador", "Finalizando Sincronizacion: " + DateTime.Now.ToString("HH:mm:ss"));
            }
            catch (Exception ex2)
            {
                PistaMgr.Instance.Error("Sincronizador", ex2);
            }



            //resultado = resultado && SincronizacionInformesDeFalla();
            return(resultado);
        }