public LocationGroup getContainGroup(List<LocationGroup> lGroups, decimal lat, decimal lng) { foreach (LocationGroup lg in lGroups) if (this.GetDistance(lat, lng, lg.Latitud, lg.Longitud) < this.minDistance) return lg; LocationGroup res = new LocationGroup(); res.Name = "Any"; res.Latitud = lat; res.Longitud = lng; res.Count = 1; return res; }
public void execute(string phoneId) { try { DBManager dbm = new DBManager(); List<LocationGroup> groups = this.getLocationGroups(phoneId, dbm); List<Location> locations = this.getLocations(phoneId, dbm); foreach (Location l in locations) { bool find = false; for (int i = 0; (i < groups.Count) && !find; i++) { LocationGroup lg = groups[i]; if (this.GetDistance(lg.Longitud, lg.Latitud, l.Longitud, l.Latitud) < this.minDistance) { find = true; lg.Latitud = ((lg.Latitud * lg.Count) + l.Latitud) / (lg.Count + 1); lg.Longitud = ((lg.Longitud * lg.Count) + l.Longitud) / (lg.Count + 1); lg.Count++; } } if (!find) { LocationGroup lg = new LocationGroup(); lg.Name = "Group_" + (groups.Count + 1); lg.Longitud = l.Longitud; lg.Latitud = l.Latitud; lg.Count = 1; groups.Add(lg); } } foreach (LocationGroup lg in groups) dbm.saveLocationGroup(phoneId, lg); } catch (Exception ex) { } }
public string saveLocationGroup(string phoneId, LocationGroup lg) { try { SqlCommand cmd = new SqlCommand("InsertLocationGroup"); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@phoneId", phoneId); cmd.Parameters.AddWithValue("@name", lg.Name); cmd.Parameters.AddWithValue("@latitud", lg.Latitud); cmd.Parameters.AddWithValue("@longitud", lg.Longitud); cmd.Parameters.AddWithValue("@count", lg.Count); if (lg.Id != int.MinValue) cmd.Parameters.AddWithValue("@idLocationGroup", lg.Id); this.connectIfNeed(); int id = this.iDB.executeInsert(cmd); this.disconnectIfNeed(); if (id > 0) return "OK."; else return "Fail."; } catch (Exception ex) { return "Fail."; } }
public List<LocationGroup> getLocationGroups(string phoneId, DBManager dbm) { DataTable dt = dbm.getLocationGroups(phoneId); List<LocationGroup> list = new List<LocationGroup>(); foreach (DataRow r in dt.Rows) { LocationGroup lg = new LocationGroup(); lg.Id = (int)r["idLocationGroup"]; lg.Name = (string)r["name"]; lg.Longitud = Convert.ToDecimal(r["longitud"]); lg.Latitud = Convert.ToDecimal(r["latitud"]); lg.Count = (int)r["count"]; list.Add(lg); } return list; }