backend updateUser fix
This commit is contained in:
@@ -84,14 +84,6 @@ func (uc *UserController) UpdateHandler(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate subscription model
|
|
||||||
selectedModel, err := uc.MembershipService.GetModelByName(&user.Membership.SubscriptionModel.Name)
|
|
||||||
if err != nil {
|
|
||||||
utils.RespondWithError(c, err, "Error in UpdateHandler", http.StatusNotFound, "subscription_model", "server.validation.subscription_model_not_found")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
user.Membership.SubscriptionModel = *selectedModel
|
|
||||||
|
|
||||||
updatedUser, err := uc.Service.UpdateUser(&user)
|
updatedUser, err := uc.Service.UpdateUser(&user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.HandleUpdateError(c, err)
|
utils.HandleUpdateError(c, err)
|
||||||
|
|||||||
@@ -51,9 +51,11 @@ func (ur *UserRepository) UpdateUser(user *models.User) (*models.User, error) {
|
|||||||
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
||||||
// Check if the user exists in the database
|
// Check if the user exists in the database
|
||||||
var existingUser models.User
|
var existingUser models.User
|
||||||
if err := tx.Preload("Licence").
|
|
||||||
Preload("Licence.Categories").
|
if err := tx.Preload(clause.Associations).
|
||||||
Preload("Membership").
|
Preload("Membership").
|
||||||
|
Preload("Membership.SubscriptionModel").
|
||||||
|
Preload("Licence.Categories").
|
||||||
First(&existingUser, user.ID).Error; err != nil {
|
First(&existingUser, user.ID).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -109,6 +111,7 @@ func GetUserByID(userID *uint) (*models.User, error) {
|
|||||||
var user models.User
|
var user models.User
|
||||||
result := database.DB.
|
result := database.DB.
|
||||||
Preload(clause.Associations).
|
Preload(clause.Associations).
|
||||||
|
Preload("Membership").
|
||||||
Preload("Membership.SubscriptionModel").
|
Preload("Membership.SubscriptionModel").
|
||||||
Preload("Licence.Categories").
|
Preload("Licence.Categories").
|
||||||
First(&user, userID)
|
First(&user, userID)
|
||||||
|
|||||||
@@ -41,6 +41,29 @@ func (service *UserService) UpdateUser(user *models.User) (*models.User, error)
|
|||||||
setPassword(user.Password, user)
|
setPassword(user.Password, user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate subscription model
|
||||||
|
selectedModel, err := repositories.GetModelByName(&user.Membership.SubscriptionModel.Name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.ErrSubscriptionNotFound
|
||||||
|
}
|
||||||
|
user.Membership.SubscriptionModel = *selectedModel
|
||||||
|
user.Membership.SubscriptionModelID = selectedModel.ID
|
||||||
|
|
||||||
|
existingUser, err := service.GetUserByID(user.ID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
user.Membership.ID = existingUser.Membership.ID
|
||||||
|
|
||||||
|
user.MembershipID = existingUser.MembershipID
|
||||||
|
if existingUser.Licence != nil {
|
||||||
|
user.Licence.ID = existingUser.Licence.ID
|
||||||
|
}
|
||||||
|
user.LicenceID = existingUser.LicenceID
|
||||||
|
user.BankAccount.ID = existingUser.BankAccount.ID
|
||||||
|
user.BankAccountID = existingUser.BankAccountID
|
||||||
|
|
||||||
// if user.Licence.Status == 0 {
|
// if user.Licence.Status == 0 {
|
||||||
// // This is a new drivers licence
|
// // This is a new drivers licence
|
||||||
// user.Licence.Status = constants.UnverifiedStatus
|
// user.Licence.Status = constants.UnverifiedStatus
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ func HandleUpdateError(c *gin.Context, err error) {
|
|||||||
RespondWithError(c, err, "Error while updating user", http.StatusNotFound, "user", "server.validation.user_not_found")
|
RespondWithError(c, err, "Error while updating user", http.StatusNotFound, "user", "server.validation.user_not_found")
|
||||||
case errors.ErrInvalidUserData:
|
case errors.ErrInvalidUserData:
|
||||||
RespondWithError(c, err, "Error while updating user", http.StatusBadRequest, "user", "server.validation.invalid_user_data")
|
RespondWithError(c, err, "Error while updating user", http.StatusBadRequest, "user", "server.validation.invalid_user_data")
|
||||||
|
case errors.ErrSubscriptionNotFound:
|
||||||
|
RespondWithError(c, err, "Error while updating user", http.StatusBadRequest, "subscription", "server.validation.subscription_data")
|
||||||
default:
|
default:
|
||||||
RespondWithError(c, err, "Error while updating user", http.StatusInternalServerError, "user", "server.error.internal_server_error")
|
RespondWithError(c, err, "Error while updating user", http.StatusInternalServerError, "user", "server.error.internal_server_error")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ func validateUser(sl validator.StructLevel) {
|
|||||||
sl.ReportError(user.DateOfBirth, "DateOfBirth", "dateofbirth", "age", "")
|
sl.ReportError(user.DateOfBirth, "DateOfBirth", "dateofbirth", "age", "")
|
||||||
}
|
}
|
||||||
// validate subscriptionModel
|
// validate subscriptionModel
|
||||||
logger.Error.Printf("User: %#v", user)
|
logger.Error.Printf("User SubscriptionModel.Name: %#v", user.Membership.SubscriptionModel.Name)
|
||||||
if user.Membership.SubscriptionModel.Name == "" {
|
if user.Membership.SubscriptionModel.Name == "" {
|
||||||
sl.ReportError(user.Membership.SubscriptionModel.Name, "SubscriptionModel.Name", "name", "required", "")
|
sl.ReportError(user.Membership.SubscriptionModel.Name, "SubscriptionModel.Name", "name", "required", "")
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ var (
|
|||||||
ErrNotAuthorized = errors.New("not authorized")
|
ErrNotAuthorized = errors.New("not authorized")
|
||||||
ValErrParentIDNotSet = errors.New("Parent Membership ID not provided")
|
ValErrParentIDNotSet = errors.New("Parent Membership ID not provided")
|
||||||
ValErrParentIDNotFound = errors.New("Parent Membership ID not found")
|
ValErrParentIDNotFound = errors.New("Parent Membership ID not found")
|
||||||
|
ErrSubscriptionNotFound = errors.New("Subscription Model not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
var Responses = struct {
|
var Responses = struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user