package commands import ( m "netina/models" c "netina/models/commands" o "netina/repositories/owner" "netina/validation" "time" ) type CreateOwnerHandler struct{ Repository o.OwnerCommandRepository } func (r *CreateOwnerHandler) Handle(command c.CreateOwnerCommand , modified_by string) error { if err := validation.ValidateStruct(command); err != nil { return err } owner := &m.Owner{ PhoneNumber: command.PhoneNumber, FirstName: command.FirstName, LastName: command.LastName, NationalCode: command.NationalCode, Created_at: time.Now(), Modified_by: modified_by, } return r.Repository.CreateOwner(owner) } type UpdateOwnerHandler struct { Repository o.OwnerCommandRepository } func (r *UpdateOwnerHandler) Handle(id uint , command c.UpdateOwnerCommand , modified_by string)(*m.Owner , error) { if err := validation.ValidateStruct(command); err != nil { return nil , err } owner := &m.Owner{ PhoneNumber: command.PhoneNumber, FirstName: command.FirstName, LastName: command.LastName, NationalCode: command.NationalCode, Modified_by: modified_by, Modified_at: time.Now(), } return r.Repository.UpdateOwner(id , owner) } type RemoveOwnerHandler struct { Repository o.OwnerCommandRepository } func (r *RemoveOwnerHandler) Handle(id uint) error { return r.Repository.RemoveOwner(id) }