func GetContacts(db *d.MainDb, to_name string) ([]users.Contact, error) { resp := []users.Contact{} err := db.Messages.MessagesCollection.Pipe([]bson.M{ bson.M{"$match": bson.M{"to": to_name, "is_deleted": false}}, bson.M{"$group": bson.M{"_id": "$from", "unread_count": bson.M{"$sum": "$unread"}, "name": bson.M{"$first": "$from"}, "time": bson.M{"$max": "$time_stamp"}}}}).All(&resp) if err != nil { return resp, err } result := []users.Contact{} for i, cnt := range resp { user, _ := db.Users.GetUserById(cnt.ID) if user != nil { if user.ShowedName != "" { resp[i].Name = user.ShowedName } else { resp[i].Name = user.UserName } resp[i].Phone = user.Phone last_order, _ := db.Orders.GetByOwnerLast(resp[i].ID, to_name) if last_order != nil { resp[i].HaveActiveOrder = last_order.Active } result = append(result, resp[i]) } } sort.Sort(users.ByContactsLastMessageTime(result)) return result, nil }
func GetContacts(db *d.MainDb) ([]usrs.Contact, error) { resp := []usrs.Contact{} err := db.Messages.MessagesCollection.Pipe([]bson.M{ bson.M{"$group": bson.M{"_id": "$from", "unread_count": bson.M{"$sum": "$unread"}, "name": bson.M{"$first": "$from"}, "time": bson.M{"$max": "$time_stamp"}}}}).All(&resp) if err != nil { return resp, err } result := []usrs.Contact{} for i, cnt := range resp { if cnt.Name == ME { continue } user, _ := db.Users.GetUserById(cnt.ID) if user != nil { if user.ShowedName != "" { resp[i].Name = user.ShowedName } else { resp[i].Name = user.UserName } resp[i].Phone = user.Phone result = append(result, resp[i]) } } sort.Sort(usrs.ByContactsLastMessageTime(result)) return result, nil }