diff --git a/commands/user_handler.go b/commands/user_handler.go new file mode 100644 index 0000000..020075f --- /dev/null +++ b/commands/user_handler.go @@ -0,0 +1,65 @@ +package commands + +import ( + m "netina/models" + c "netina/models/commands" + u "netina/repositories/user" + "netina/validation" + "time" +) + +type CreateUserHandler struct { + Repository u.UserCommandRepository +} + + + +func (r *CreateUserHandler) Handle(command c.CreateUserCommand) error { + + if err := validation.ValidateStruct(command); err != nil { + return err + } + + + User := &m.User{ + Name: command.Name, + PhoneNumber: command.PhoneNumber, + Role_id: command.Role_id, + Created_at: time.Now(), + Modified_by: command.Modified_by, + } + + return r.Repository.CreateUser(User) +} + + +type UpdateUserHandler struct { + Repository u.UserCommandRepository +} + + +func (r *UpdateUserHandler) Handle (id uint , command c.UpdateUserCommand)(*m.User , error) { + if err := validation.ValidateStruct(command); err != nil { + return nil , err + } + + User := &m.User{ + Name: command.Name, + PhoneNumber: command.PhoneNumber, + Role_id: command.Role_id, + Modified_by: command.Modified_by, + Modified_at: time.Now(), + } + + return r.Repository.UpdateUser(id , User) +} + + +type RemoveUserHandler struct { + Repository u.UserCommandRepository +} + + +func (r *RemoveUserHandler) Handle (id uint )error { + return r.Repository.RemoveUser(id) +} \ No newline at end of file