add allMethod #3
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -75,6 +75,7 @@ func (payload CreateOptions) newDevice() (result Device, err error) {
 | 
			
		|||
		FCMToken:        payload.FCMToken,
 | 
			
		||||
		Model:           payload.Model,
 | 
			
		||||
		Manufacturer:    payload.Manufacturer,
 | 
			
		||||
		UserID:          payload.UserID,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// App version
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,50 +3,31 @@ package devicemngmt
 | 
			
		|||
| 
					
 | 
			||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"github.com/Selly-Modules/mongodb"
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	"github.com/Selly-Modules/logger"
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	"go.mongodb.org/mongo-driver/bson"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// FindAllDevicesByUserID ...
 | 
			
		||||
func (s Service) FindAllDevicesByUserID(userID string) []ResponseDevice {
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
func (s Service) FindAllDevicesByUserID(userID string) []Device {
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	var (
 | 
			
		||||
		ctx    = context.Background()
 | 
			
		||||
		col    = s.getDeviceCollection()
 | 
			
		||||
		docs   = make([]Device, 0)
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		result = make([]ResponseDevice, 0)
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		result = make([]Device, 0)
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		cond   = bson.M{
 | 
			
		||||
			"userID": mongodb.NewIDFromString(userID),
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			"userID": userID,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		}
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	// Find
 | 
			
		||||
	cursor, err := col.Find(ctx, cond)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logger.Error("devicemngt - findAllDevicesByUserID ", logger.LogData{
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			"err": err.Error(),
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		})
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		return result
 | 
			
		||||
	}
 | 
			
		||||
	defer cursor.Close(ctx)
 | 
			
		||||
	cursor.All(ctx, &docs)
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	// Get response data
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	for _, doc := range docs {
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		result = append(result, ResponseDevice{
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			ID:       doc.ID,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			DeviceID: doc.DeviceID,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			IP:       doc.IP,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			OS: ResponseOS{
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
				Name:    doc.OSName,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
				Version: doc.OSVersion,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			},
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			AppVersion:      doc.AppVersion,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			Language:        doc.Language,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			IsMobile:        doc.IsMobile,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			FCMToken:        doc.FCMToken,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			Model:           doc.Model,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			Manufacturer:    doc.Manufacturer,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			LastActivatedAt: doc.LastActivatedAt,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
			CreatedAt:       doc.CreatedAt,
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
		})
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	}
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
	cursor.All(ctx, &result)
 | 
			
		||||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done  
			
		 | 
			||||
 | 
			
		||||
	return result
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
					
 dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		dùng 1 model để public ra thôi. Dùng cái Device luôn đi dùng 1 model để public ra thôi. Dùng cái Device luôn đi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi 
			
		done done 
			
		done done 
			
		done done  
			
		done done  
			
		 | 
			||||
							
								
								
									
										28
									
								
								model.go
								
								
								
								
							
							
						
						| 
						 | 
				
			
			@ -17,32 +17,10 @@ type Device struct {
 | 
			
		|||
	Language        string             `bson:"language" json:"language"` // vi, en
 | 
			
		||||
	IsMobile        bool               `bson:"isMobile" json:"isMobile"`
 | 
			
		||||
	LastActivatedAt time.Time          `bson:"lastActivatedAt" json:"lastActivatedAt"`
 | 
			
		||||
| 
					
 không cần omitempty, default bằng empty string là được rồi không cần omitempty, default bằng empty string là được rồi 
			
		bỏ cái này đi, dùng cái Device bỏ cái này đi, dùng cái Device 
			
		done done  
			
		done done  
			
		 | 
			||||
	UserID          primitive.ObjectID `bson:"userID" json:"userId"`
 | 
			
		||||
	UserID          string             `bson:"userID" json:"userId"`
 | 
			
		||||
	AuthToken       string             `bson:"authToken" json:"authToken"`
 | 
			
		||||
	FCMToken        string             `bson:"fcmToken" json:"fcmToken"`
 | 
			
		||||
	Model           string             `bson:"model,omitempty" json:"model,omitempty"`
 | 
			
		||||
	Manufacturer    string             `bson:"manufacturer,omitempty" json:"manufacturer,omitempty"`
 | 
			
		||||
	Model           string             `bson:"model" json:"model"`
 | 
			
		||||
	Manufacturer    string             `bson:"manufacturer" json:"manufacturer"`
 | 
			
		||||
	CreatedAt       time.Time          `bson:"createdAt" json:"createdAt"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResponseOS ...
 | 
			
		||||
type ResponseOS struct {
 | 
			
		||||
	Name    string `json:"name"`
 | 
			
		||||
	Version string `json:"version"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ResponseDevice ...
 | 
			
		||||
type ResponseDevice struct {
 | 
			
		||||
	ID              primitive.ObjectID `json:"_id"`
 | 
			
		||||
	DeviceID        string             `json:"deviceId"`
 | 
			
		||||
	IP              string             `json:"ip"`
 | 
			
		||||
	OS              ResponseOS         `json:"os"`
 | 
			
		||||
	AppVersion      string             `json:"appVersion"`
 | 
			
		||||
	Language        string             `json:"language"`
 | 
			
		||||
	IsMobile        bool               `json:"isMobile"`
 | 
			
		||||
	FCMToken        string             `json:"fcmToken"`
 | 
			
		||||
	Model           string             `json:"model,omitempty"`
 | 
			
		||||
	Manufacturer    string             `json:"manufacturer,omitempty"`
 | 
			
		||||
	LastActivatedAt time.Time          `json:"lastActivatedAt"`
 | 
			
		||||
	CreatedAt       time.Time          `json:"createdAt"`
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
dùng 1 model để public ra thôi. Dùng cái Device luôn đi
dùng 1 model để public ra thôi. Dùng cái Device luôn đi
cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi
cái user id sao phải đưa qua mongo id, nó chỉ là string thôi mà, đã note ở PR cũ rồi
done
done
done
done