workshop/internal/models/vehicle.go
Dmitry Sirotkin 9677e0d7ab 4
2025-03-28 19:03:56 +03:00

81 lines
1.7 KiB
Go

package models
import (
"fmt"
"github.com/jinzhu/gorm"
u "gocommunity.ru/workshop/internal/utils"
)
type Vehicle struct {
gorm.Model
WorkHistoryId int `json:"work_history_id"`
ClientId int `json:"client_id"`
Brand string `json:"brand"`
Color string `json:"color"`
Services []Service `gorm:"many2many:service_vehicle;"`
}
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 (vehicle *Vehicle) Getvehicles() []*Vehicle {
vehiclesSlice := make([]*Vehicle, 0)
err := GetDB().Table("vehicles").Preload("Services").Find(&vehiclesSlice).Error
if err != nil {
fmt.Println(err)
return nil
}
return vehiclesSlice
}
func (vehicle *Vehicle) GetvehiclesInService() []*Vehicle {
vehiclesSlice := make([]*Vehicle, 0)
err := GetDB().Table("vehicles").Joins("inner join service_vehicle on id = vehicle_id").Find(&vehiclesSlice).Error
if err != nil {
fmt.Println(err)
return nil
}
return vehiclesSlice
}