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 , modified_by string) 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: modified_by, } return r.Repository.CreateUser(User) } type UpdateUserHandler struct { Repository u.UserCommandRepository } func (r *UpdateUserHandler) Handle (id uint , command c.UpdateUserCommand , modified_by string)(*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: 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) }