예제 #1
0
        public CarListRow(Context context, Car car) : base(context)
        {
            Inflate(context, Resource.Layout.CarListRow, this);

            TextView brandTypeList = FindViewById <TextView>(Resource.Id.BrandTypeList);
            TextView priceList     = FindViewById <TextView>(Resource.Id.PriceList);

            _rowImage = FindViewById <ImageView>(Resource.Id.RowImageView);

            brandTypeList.Text = String.Format("{0} {1}", car.Brand, car.Type);
            priceList.Text     = String.Format("{0}€", car.Price);

            Click += (sender, args) =>
            {
                DetailActivity.StartActivity(context, car.Id);
            };

            LoadImage(car);
        }
예제 #2
0
        public bool main(int idJob)
        {
            //Cambio Mateo 2
            using (Models.minasDBEntities objMINASBDEntities = new Models.minasDBEntities())
            {
                Token authentication = JsonConvert.DeserializeObject <Token>(authService.getAuthentication());
                if (authentication.status == "OK")
                {
                    // Se obtiene el token de acceso que devolvio la api
                    string _token = authentication.AccessToken;

                    // Instancias a utlizar
                    activityService   = new ActivityService(_token);
                    formService       = new FormService(_token);
                    userService       = new UserService(_token);
                    locationService   = new LocationService(_token);
                    connectionService = new ConnectionService();

                    // Se Obtiene una lista con todos los formularios alojados en la api
                    List <Form> formsVicitrack = JsonConvert.DeserializeObject <List <Form> >(formService.getForms());

                    // Se Obtiene una lista con todos los usuarios alojados en la api
                    List <User> usersVicitrack = JsonConvert.DeserializeObject <List <User> >(userService.getUsers());

                    // Se Obtiene una lista con todos las tipo locaciones alojados en la api
                    List <TypeLocation> typeLocationsVicitrack = JsonConvert.DeserializeObject <List <TypeLocation> >(locationService.getTypeLocations());

                    // Obtener las conexiones creadas
                    //ResponseModel responseConnections = JsonConvert.DeserializeObject<ResponseModel>(connectionService.getConnectionsForms());

                    // Se obtiene una lista con las conexiones creadas en la BD.
                    //List<ConexionModel> connectionsForms = JsonConvert.DeserializeObject<List<ConexionModel>>(responseConnections.value.ToString());
                    List <ConexionesDisponiblesSincronizarConsultar_Result> connectionsSincronizar = ConexionesDisponiblesSincronizar(idJob);

                    // Insertamos los formularios de vicitrack a la tabla Formularios
                    crearFormularios(formsVicitrack);

                    // Insertamos los usuarios de vicitrack a la tabla Usuarios
                    //insertarUsuarios(usersVicitrack);

                    // Insertamos los tipos de locaciones de vicitrack a la tabla TipoLocacion
                    //insertarTipoLocaciones(typeLocationsVicitrack);


                    // Se obtiene la lista con todas las actividades de la api
                    List <Activity> activiesVicitrack = JsonConvert.DeserializeObject <List <Activity> >(activityService.getActivity());

                    int       i                    = 0; // Actividades
                    int       j                    = 0; //Campos de Actividades
                    string    FormGuid             = "";
                    bool      BandIDColumn         = false;
                    ArrayList columnasStringsNames = new ArrayList();
                    ArrayList columnasDetalleNames = new ArrayList();

                    //ArrayList Datos = new ArrayList(); // en este array almaceno los datos individuales

                    //TODO----Se agregan diccionarios para controlar varias tablas
                    // Este diccionario la clave será la nombre de la tabla y valor los registros


                    //Este diccionario sirve para guardar las columnas de cada una de los detalles para cada formulario
                    Dictionary <string, Dictionary <string, ArrayList> > DictTablasColumnasDetalles = new Dictionary <string, Dictionary <string, ArrayList> >();
                    //Este diccionario sirve para obtener todas las columnas detalle de un formulario
                    Dictionary <string, ArrayList> DictTablasColumnasFormulariosDetalles = new Dictionary <string, ArrayList>();
                    Dictionary <string, ArrayList> DictTablasDatos                   = new Dictionary <string, ArrayList>();
                    Dictionary <string, ArrayList> DictTablasDatosDetalles           = new Dictionary <string, ArrayList>();
                    Dictionary <string, ArrayList> DictTablasDatosDetallesActualizar = new Dictionary <string, ArrayList>();
                    Dictionary <string, ArrayList> DictTablasDatosActualizar         = new Dictionary <string, ArrayList>();

                    // TODO----No se requiere estas variables seran reemplazadas por diccionarios
                    // en este array meto todos los Formularios que se encuentran en Datos
                    ArrayList DatosColumnasActualizar = new ArrayList(); // en este array meto todos los Formularios que se encuentran en Datos donde se encuentre la validacion para actualizar


                    string TableName = "";
                    string ColumnaActividadExiste = "ID";
                    bool   Existe     = false;
                    bool   Actualizar = false;

                    //Validar si existen conexiones
                    if (connectionsSincronizar != null)
                    {
                        if (connectionsSincronizar.Count > 0)
                        {
                            // Foreach de todos las actividades(registros en los formularios)
                            foreach (Activity ele in activiesVicitrack)
                            {
                                DetailActivity activiesDetailVicitrack = JsonConvert.DeserializeObject <DetailActivity>(activityService.getDetailActivity(ele.GUID));
                                // TODO--------Se elimina esta variable responseFindForm
                                //ResponseModel responseFindForm = JsonConvert.DeserializeObject<ResponseModel>(connectionService.findConnectionGUIDForms(activiesDetailVicitrack.FormGUID));
                                var res = ExisteConexion(connectionsSincronizar, activiesDetailVicitrack.FormGUID);

                                if (res)
                                {
                                    j = 0;
                                    ArrayList Datos           = new ArrayList();
                                    ArrayList DatosActualizar = new ArrayList();
                                    ArrayList DatosColumnas   = new ArrayList();
                                    foreach (var value in activiesDetailVicitrack.Values)
                                    {
                                        // Si es j==0 va agregar los datos básicos de la actividad a un nuevo registro
                                        if (j == 0)
                                        {
                                            //Solo vamos a entrar en este fragmento de codigo en el primer recorrido de datos de cada actividad
                                            FormGuid  = activiesDetailVicitrack.FormGUID;
                                            TableName = "F" + FormGuid;



                                            if (!RegistroExiste(TableName, ColumnaActividadExiste, activiesDetailVicitrack.ID.ToString()))
                                            {
                                                Existe = false;
                                            }
                                            else
                                            {
                                                Existe = true;
                                                //Existe el registro inv

                                                if (ValidarRegistroActualizar(TableName, activiesDetailVicitrack.UpdatedOn.ToString(), activiesDetailVicitrack.ID.ToString()))
                                                {
                                                    Actualizar = true;
                                                }
                                                else
                                                {
                                                    Actualizar = false;
                                                }

                                                //Cierre inv

                                                /* if (i != 0)
                                                 * {
                                                 *
                                                 *   break;
                                                 * }*/
                                            }



                                            //Si es valido para actualizar, modifica el dato
                                            if (Actualizar)
                                            {
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.ID.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.Title.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.LocationName.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.LocationGUID.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.UpdatedOn.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.UpdatedOn.ToString()));
                                                DatosActualizar.Add(ConfigurarDato(activiesDetailVicitrack.UserName.ToString()));
                                            }
                                            else
                                            {
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.ID.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.Title.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.LocationName.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.LocationGUID.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.CreatedOn.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.UpdatedOn.ToString()));
                                                Datos.Add(ConfigurarDato(activiesDetailVicitrack.UserName.ToString()));
                                            }
                                        }

                                        if (!BandIDColumn)
                                        {
                                            DatosColumnas.Add("ID");
                                            DatosColumnas.Add("Title");
                                            DatosColumnas.Add("LocationName");
                                            DatosColumnas.Add("LocationGUID");
                                            DatosColumnas.Add("CreatedOn");
                                            DatosColumnas.Add("UpdatedOn");
                                            DatosColumnas.Add("UserName");
                                            BandIDColumn = true;
                                        }
                                        if (value.Value != null)
                                        {
                                            if (value.Value.GetType().ToString() != "Newtonsoft.Json.Linq.JArray")
                                            {
                                                string ColumnIndividual = EliminarEspaciosAcentos(value.apiId.ToString());
                                                //TODO------Se elimina el parametro columnasDetalleNames y se agrega DictTablasColumnasDetalles[TableName]
                                                ColumnIndividual = BuscarElementArrayList(ColumnIndividual, DatosColumnas);
                                                //columnasDetalleNames.Add(ColumnIndividual); //TODO----Se elimina esta linea
                                                DatosColumnas.Add(ColumnIndividual);
                                            }
                                        }

                                        //Obtengo los datos de las columnas
                                        if (!Existe)
                                        {
                                            if (value.Value != null)
                                            {
                                                if (value.Value.GetType().ToString() != "Newtonsoft.Json.Linq.JArray")
                                                {
                                                    Datos.Add(ConfigurarDato(value.Value.ToString()));
                                                    //DictTablasDatos[TableName].Add(ConfigurarDato(value.Value.ToString()));
                                                }
                                                else
                                                {
                                                    string           columnaDetalle = EliminarEspaciosAcentos(value.apiId.ToString());
                                                    List <ArrayList> list           = ColumnsNamesDetail(value.Value);
                                                    //Todo-----Funcionando
                                                    if (list[0].Count > 0)
                                                    {
                                                        //Se agregan columnas claves a los detalles
                                                        list[0].Insert(0, "IdActividad");
                                                        //DictTablasColumnasDetalles[TableName].Add(columnaDetalle, list[0]);
                                                        //DictTablasDatosDetalles[TableName].Add(columnaDetalle, new ArrayList { });
                                                        if (!DictTablasDatosDetalles.ContainsKey(TableName + "|" + columnaDetalle))
                                                        {
                                                            DictTablasDatosDetalles.Add(TableName + "|" + columnaDetalle, new ArrayList {
                                                            });
                                                        }


                                                        bool responseColumnasIdenticas = ColumnasIdenticas(TableName + "|" + columnaDetalle, list[0]);
                                                        if (!responseColumnasIdenticas)
                                                        {
                                                            bool TablaFormulario = CrearTabla(TableName + columnaDetalle, DictTablasColumnas[TableName + "|" + columnaDetalle]);
                                                            if (TablaFormulario)
                                                            {
                                                                InsertarFormularios(TableName + columnaDetalle, DictTablasColumnas[TableName + "|" + columnaDetalle], DictTablasDatosDetalles[TableName + "|" + columnaDetalle]);
                                                                ActualizarFechaActualizacion(TableName.Substring(1, TableName.Length - 1));
                                                                DictTablasDatosDetalles[TableName + "|" + columnaDetalle] = new ArrayList {
                                                                };
                                                                DictTablasColumnas[TableName + "|" + columnaDetalle]      = list[0];
                                                            }
                                                        }

                                                        foreach (ArrayList item in list[1])
                                                        {
                                                            item.Insert(0, ConfigurarDato(activiesDetailVicitrack.ID.ToString()));
                                                            DictTablasDatosDetalles[TableName + "|" + columnaDetalle].Add(item);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // Si existe el registro y se tiene que actualizar
                                            if (Actualizar)
                                            {
                                                if (value.Value != null)
                                                {
                                                    if (value.Value.GetType().ToString() != "Newtonsoft.Json.Linq.JArray")
                                                    {
                                                        DatosActualizar.Add(ConfigurarDato(value.Value.ToString()));
                                                    }
                                                    else
                                                    {
                                                        ArrayList        datosDetalles  = new ArrayList();
                                                        string           columnaDetalle = EliminarEspaciosAcentos(value.apiId.ToString());
                                                        List <ArrayList> list           = ColumnsNamesDetail(value.Value);
                                                        //Todo-----Funcionando
                                                        if (list[0].Count > 0)
                                                        {
                                                            //Se agregan columnas claves a los detalles
                                                            list[0].Insert(0, "IdActividad");
                                                            //DictTablasColumnasDetalles[TableName].Add(columnaDetalle, list[0]);
                                                            //DictTablasDatosDetalles[TableName].Add(columnaDetalle, new ArrayList { });
                                                            if (!DictTablasDatosDetallesActualizar.ContainsKey(TableName + "|" + columnaDetalle))
                                                            {
                                                                DictTablasDatosDetallesActualizar.Add(TableName + "|" + columnaDetalle, new ArrayList {
                                                                });
                                                            }


                                                            bool responseColumnasIdenticas = ColumnasIdenticas(TableName + "|" + columnaDetalle, list[0]);
                                                            if (!responseColumnasIdenticas)
                                                            {
                                                                bool TablaFormulario = CrearTabla(TableName + columnaDetalle, DictTablasColumnas[TableName + "|" + columnaDetalle]);
                                                                if (TablaFormulario)
                                                                {
                                                                    foreach (ArrayList item in DictTablasDatosDetallesActualizar[TableName + "|" + columnaDetalle])
                                                                    {
                                                                        string IdActividad = "";
                                                                        foreach (ArrayList itemss in item)
                                                                        {
                                                                            IdActividad = itemss[0].ToString();
                                                                            break;
                                                                        }
                                                                        bool eliminarDetalle = EliminarDetalle(TableName + columnaDetalle, IdActividad);
                                                                        if (eliminarDetalle)
                                                                        {
                                                                            InsertarFormularios(TableName + columnaDetalle, DictTablasColumnas[TableName + "|" + columnaDetalle], item);
                                                                            ActualizarFechaActualizacion(TableName.Substring(1, TableName.Length - 1));
                                                                            DictTablasDatosDetallesActualizar[TableName + "|" + columnaDetalle] = new ArrayList {
                                                                            };
                                                                            DictTablasColumnas[TableName + "|" + columnaDetalle] = list[0];
                                                                        }
                                                                    }
                                                                }
                                                            }

                                                            foreach (ArrayList item in list[1])
                                                            {
                                                                item.Insert(0, ConfigurarDato(activiesDetailVicitrack.ID.ToString()));
                                                                datosDetalles.Add(item);
                                                            }
                                                            DictTablasDatosDetallesActualizar[TableName + "|" + columnaDetalle].Add(datosDetalles);
                                                        }
                                                    }
                                                }
                                            }
                                        }

                                        //Fin obtener esquema de formulario
                                        j++;
                                    }
                                    ;

                                    if (Datos.Count > 7) // Datos minimos por formulario
                                    {
                                        if (!DictTablasDatos.ContainsKey(TableName))
                                        {
                                            DictTablasDatos.Add(TableName, new ArrayList {
                                            });
                                        }
                                        bool responseColumnasIdenticas = ColumnasIdenticas(TableName, DatosColumnas);
                                        if (!responseColumnasIdenticas)
                                        {
                                            bool TablaFormulario = CrearTabla(TableName, DictTablasColumnas[TableName]);
                                            if (TablaFormulario)
                                            {
                                                InsertarFormularios(TableName, DictTablasColumnas[TableName], DictTablasDatos[TableName]);
                                                ActualizarFechaActualizacion(TableName.Substring(1, TableName.Length - 1));
                                                DictTablasDatos[TableName]    = new ArrayList {
                                                };
                                                DictTablasColumnas[TableName] = DatosColumnas;
                                            }
                                        }
                                        DictTablasDatos[TableName].Add(Datos);
                                    }

                                    if (DatosActualizar.Count > 7) // Datos minimos por formulario (Activdad existente)
                                    {
                                        if (!DictTablasDatosActualizar.ContainsKey(TableName))
                                        {
                                            DictTablasDatosActualizar.Add(TableName, new ArrayList {
                                            });
                                        }
                                        bool responseColumnasIdenticas = ColumnasIdenticas(TableName, DatosColumnas);
                                        if (!responseColumnasIdenticas)
                                        {
                                            bool TablaFormulario = CrearTabla(TableName, DictTablasColumnas[TableName]);
                                            if (TablaFormulario)
                                            {
                                                ModificarActividades(TableName, DatosColumnas, DictTablasDatosActualizar[TableName]);
                                                ActualizarFechaActualizacion(TableName.Substring(1, TableName.Length - 1));
                                                DictTablasDatosActualizar[TableName] = new ArrayList {
                                                };
                                                DictTablasColumnas[TableName]        = DatosColumnas;
                                            }
                                        }
                                        DictTablasDatosActualizar[TableName].Add(DatosActualizar);
                                    }
                                    BandIDColumn = false;
                                    i++; // TODO----- ya no se requiere esta variable
                                }
                            }
                            ; // fin de recorrer las actividades



                            // TODO-----foreach de todas las tablas a insertar
                            foreach (KeyValuePair <string, ArrayList> Dato in DictTablasDatos)
                            {
                                if (Dato.Value.Count > 0)
                                {
                                    // Primer parametro es el tipo tabla en este caso es un Formulario "1"
                                    bool TablaFormulario = CrearTabla(Dato.Key, DictTablasColumnas[Dato.Key]);

                                    if (TablaFormulario)
                                    {
                                        InsertarFormularios(Dato.Key, DictTablasColumnas[Dato.Key], Dato.Value);
                                        ActualizarFechaActualizacion(Dato.Key.Substring(1, Dato.Key.Length - 1));
                                    }
                                }
                            }

                            //TODO-----Foreach de todas las tablas para insertar datos detalles
                            foreach (KeyValuePair <string, ArrayList> Dato in DictTablasDatosDetalles)
                            {
                                var tablas = new List <string>(Dato.Key.Split('|'));
                                if (Dato.Value.Count > 0)
                                {
                                    // Primer parametro es el tipo tabla en este caso es un Formulario "1"
                                    bool TablaFormulario = CrearTabla(tablas[0] + tablas[1], DictTablasColumnas[String.Join("|", tablas.ToArray())]);
                                    if (TablaFormulario)
                                    {
                                        InsertarFormularios(tablas[0] + tablas[1], DictTablasColumnas[String.Join("|", tablas.ToArray())], Dato.Value);
                                        ActualizarFechaActualizacion(tablas[0].Substring(1, tablas[0].Length - 1));
                                    }
                                }
                            }



                            ////Actualizar
                            //// TODO---- es necesario cambiar los arrraylist columnasStringsnames y datosColumnas
                            //// por los diccionarios los cuales pueden contener varias tablas

                            // TODO-----foreach de todas las tablas a actualizar
                            foreach (KeyValuePair <string, ArrayList> Dato in DictTablasDatosActualizar)
                            {
                                if (Dato.Value.Count > 0)
                                {
                                    // Primer parametro es el tipo tabla en este caso es un Formulario "1"
                                    bool TablaFormulario = CrearTabla(Dato.Key, DictTablasColumnas[Dato.Key]);

                                    if (TablaFormulario)
                                    {
                                        ModificarActividades(Dato.Key, DictTablasColumnas[Dato.Key], Dato.Value);
                                        ActualizarFechaActualizacion(Dato.Key.Substring(1, Dato.Key.Length - 1));
                                    }
                                }
                            }

                            foreach (KeyValuePair <string, ArrayList> Dato in DictTablasDatosDetallesActualizar)
                            {
                                var tablas = new List <string>(Dato.Key.Split('|'));
                                if (Dato.Value.Count > 0)
                                {
                                    bool TablaFormulario = CrearTabla(tablas[0] + tablas[1], DictTablasColumnas[tablas[0] + "|" + tablas[1]]);
                                    if (TablaFormulario)
                                    {
                                        foreach (ArrayList item in DictTablasDatosDetallesActualizar[tablas[0] + "|" + tablas[1]])
                                        {
                                            string IdActividad = "";
                                            foreach (ArrayList itemss in item)
                                            {
                                                IdActividad = itemss[0].ToString();
                                                break;
                                            }

                                            bool eliminarDetalle = EliminarDetalle(tablas[0] + tablas[1], IdActividad);
                                            if (eliminarDetalle)
                                            {
                                                InsertarFormularios(tablas[0] + tablas[1], DictTablasColumnas[tablas[0] + "|" + tablas[1]], item);
                                                ActualizarFechaActualizacion(tablas[0].Substring(1, tablas[0].Length - 1));
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }