github.com/ashishbhate/mattermost-server@v5.11.1+incompatible/app/preference.go (about)

     1  // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package app
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"github.com/mattermost/mattermost-server/model"
    10  )
    11  
    12  func (a *App) GetPreferencesForUser(userId string) (model.Preferences, *model.AppError) {
    13  	result := <-a.Srv.Store.Preference().GetAll(userId)
    14  	if result.Err != nil {
    15  		result.Err.StatusCode = http.StatusBadRequest
    16  		return nil, result.Err
    17  	}
    18  	return result.Data.(model.Preferences), nil
    19  }
    20  
    21  func (a *App) GetPreferenceByCategoryForUser(userId string, category string) (model.Preferences, *model.AppError) {
    22  	result := <-a.Srv.Store.Preference().GetCategory(userId, category)
    23  	if result.Err != nil {
    24  		result.Err.StatusCode = http.StatusBadRequest
    25  		return nil, result.Err
    26  	}
    27  	if len(result.Data.(model.Preferences)) == 0 {
    28  		err := model.NewAppError("getPreferenceCategory", "api.preference.preferences_category.get.app_error", nil, "", http.StatusNotFound)
    29  		return nil, err
    30  	}
    31  	return result.Data.(model.Preferences), nil
    32  }
    33  
    34  func (a *App) GetPreferenceByCategoryAndNameForUser(userId string, category string, preferenceName string) (*model.Preference, *model.AppError) {
    35  	result := <-a.Srv.Store.Preference().Get(userId, category, preferenceName)
    36  	if result.Err != nil {
    37  		result.Err.StatusCode = http.StatusBadRequest
    38  		return nil, result.Err
    39  	}
    40  	data := result.Data.(model.Preference)
    41  	return &data, nil
    42  }
    43  
    44  func (a *App) UpdatePreferences(userId string, preferences model.Preferences) *model.AppError {
    45  	for _, preference := range preferences {
    46  		if userId != preference.UserId {
    47  			return model.NewAppError("savePreferences", "api.preference.update_preferences.set.app_error", nil,
    48  				"userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden)
    49  		}
    50  	}
    51  
    52  	if result := <-a.Srv.Store.Preference().Save(&preferences); result.Err != nil {
    53  		result.Err.StatusCode = http.StatusBadRequest
    54  		return result.Err
    55  	}
    56  
    57  	message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_CHANGED, "", "", userId, nil)
    58  	message.Add("preferences", preferences.ToJson())
    59  	a.Publish(message)
    60  
    61  	return nil
    62  }
    63  
    64  func (a *App) DeletePreferences(userId string, preferences model.Preferences) *model.AppError {
    65  	for _, preference := range preferences {
    66  		if userId != preference.UserId {
    67  			err := model.NewAppError("deletePreferences", "api.preference.delete_preferences.delete.app_error", nil,
    68  				"userId="+userId+", preference.UserId="+preference.UserId, http.StatusForbidden)
    69  			return err
    70  		}
    71  	}
    72  
    73  	for _, preference := range preferences {
    74  		if result := <-a.Srv.Store.Preference().Delete(userId, preference.Category, preference.Name); result.Err != nil {
    75  			result.Err.StatusCode = http.StatusBadRequest
    76  			return result.Err
    77  		}
    78  	}
    79  
    80  	message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_PREFERENCES_DELETED, "", "", userId, nil)
    81  	message.Add("preferences", preferences.ToJson())
    82  	a.Publish(message)
    83  
    84  	return nil
    85  }