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