예제 #1
0
 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;
 }
예제 #2
0
        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) { }
        }
예제 #3
0
 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.";
     }
 }
예제 #4
0
 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;
 }