diff --git a/internal/controllers/accountController.go b/internal/controllers/serviceController.go similarity index 100% rename from internal/controllers/accountController.go rename to internal/controllers/serviceController.go diff --git a/internal/models/client.go b/internal/models/client.go index e887def..3e00e0c 100644 --- a/internal/models/client.go +++ b/internal/models/client.go @@ -9,6 +9,7 @@ type Client struct { gorm.Model Bonuse Bonuse `json:"bonus_id"` Name string `json:"name"` + Vehicles []Vehicle `json:"vehicles"` } func (client *Client) CreateClient() map[string]interface{} { diff --git a/internal/models/vehicle.go b/internal/models/vehicle.go new file mode 100644 index 0000000..52b6857 --- /dev/null +++ b/internal/models/vehicle.go @@ -0,0 +1,66 @@ +package models + +import ( + u "gocommunity.ru/workshop/internal/utils" + "fmt" + "github.com/jinzhu/gorm" +) + +type Vehicle struct { + gorm.Model + ClientId int `json:"client_id"` + Brand string `json:"brand"` + Color string `json:"color"` +} + +func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) { + + if vehicle.Brand == "" { + return u.Message(false, "Name cannot be empty!"), false + } + + if vehicle.Color == "" { + return u.Message(false, "Phone number cannot be empty!"), false + } + + if vehicle.ClientId <= 0 { + return u.Message(false, "User not found!"), false + } + + return u.Message(true, "success"), true +} + +func (vehicle *Vehicle) CreateVehicle() map[string]interface{} { + + if response, ok := vehicle.ValidateVehicle(); !ok { + return response + } + + GetDB().Create(vehicle) + + resp := u.Message(true, "success") + resp["vehicle"] = vehicle + return resp +} + +func Getvehicle(id uint) *Vehicle { + + vehicle := &Vehicle{} + err := GetDB().Table("vehicles").Where("id = ?", id).First(vehicle).Error + if err != nil { + return nil + } + return vehicle +} + +func Getvehicles(user uint) []*Vehicle { + + vehiclesSlice := make([]*Vehicle, 0) + err := GetDB().Table("vehicles").Where("user_id = ?", user).Find(&vehiclesSlice).Error + if err != nil { + fmt.Println(err) + return nil + } + + return vehiclesSlice +}