2 +- 3 4 5
This commit is contained in:
parent
80a5b92d16
commit
2534bd9e7f
@ -12,7 +12,15 @@ func main() {
|
|||||||
|
|
||||||
router := mux.NewRouter()
|
router := mux.NewRouter()
|
||||||
|
|
||||||
router.HandleFunc("/user/new", controllers.CreateService).Methods("POST")
|
router.HandleFunc("/service/new", controllers.CreateService).Methods("POST")
|
||||||
|
router.HandleFunc("/service/accept", controllers.AcceptVehicle).Methods("POST")
|
||||||
|
router.HandleFunc("/service/all", controllers.GetServices).Methods("GET")
|
||||||
|
|
||||||
|
//Vehicle
|
||||||
|
router.HandleFunc("/vehicle/new", controllers.CreateVehicle).Methods("POST")
|
||||||
|
router.HandleFunc("/vehicle/all", controllers.GetvehiclesInService).Methods("GET")
|
||||||
|
|
||||||
|
|
||||||
router.HandleFunc("/contacts/new", controllers.CreateContact).Methods("POST")
|
router.HandleFunc("/contacts/new", controllers.CreateContact).Methods("POST")
|
||||||
router.HandleFunc("/me/contacts", controllers.GetContacts).Methods("GET")
|
router.HandleFunc("/me/contacts", controllers.GetContacts).Methods("GET")
|
||||||
|
|
||||||
|
7
internal/api/acceptVehicleRequest.go
Normal file
7
internal/api/acceptVehicleRequest.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
type AcceptVehicleRequest struct {
|
||||||
|
ServiceId string `json:"service_id"`
|
||||||
|
VehicleId string `json:"vehicle_id"`
|
||||||
|
EmployeeId uint `json:"employee_id"`
|
||||||
|
}
|
@ -8,12 +8,30 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var CreateService = func(w http.ResponseWriter, r *http.Request) {
|
var CreateService = func(w http.ResponseWriter, r *http.Request) {
|
||||||
account := &models.Service{}
|
service := &models.Service{}
|
||||||
err := json.NewDecoder(r.Body).Decode(account)
|
err := json.NewDecoder(r.Body).Decode(service)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.Respond(w, u.Message(false, "Invalid request!"))
|
u.Respond(w, u.Message(false, "Invalid request!"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp := account.CreateService()
|
resp := service.CreateService()
|
||||||
|
u.Respond(w, resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
var GetServices = func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
data := models.GetServices()
|
||||||
|
resp := u.Message(true, "success")
|
||||||
|
resp["data"] = data
|
||||||
|
u.Respond(w, resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
var AcceptVehicle = func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
serviceVehicle := &models.ServiceVehicle{}
|
||||||
|
err := json.NewDecoder(r.Body).Decode(serviceVehicle)
|
||||||
|
if err != nil {
|
||||||
|
u.Respond(w, u.Message(false, "Invalid request!"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp := serviceVehicle.AcceptVehicle()
|
||||||
u.Respond(w, resp)
|
u.Respond(w, resp)
|
||||||
}
|
}
|
||||||
|
34
internal/controllers/vehicleController.go
Normal file
34
internal/controllers/vehicleController.go
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gocommunity.ru/workshop/internal/models"
|
||||||
|
u "gocommunity.ru/workshop/internal/utils"
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
var CreateVehicle = func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
vehicle := &models.Vehicle{}
|
||||||
|
err := json.NewDecoder(r.Body).Decode(vehicle)
|
||||||
|
if err != nil {
|
||||||
|
u.Respond(w, u.Message(false, "Invalid request!"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp := vehicle.CreateVehicle()
|
||||||
|
u.Respond(w, resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
var GetvehiclesInService = func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
VehicleId := r.Context().Value("id").(uint)
|
||||||
|
vehicle := &models.Vehicle{}
|
||||||
|
|
||||||
|
err := json.NewDecoder(r.Body).Decode(vehicle)
|
||||||
|
if err != nil {
|
||||||
|
u.Respond(w, u.Message(false, "Error!"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vehicle.ID = VehicleId
|
||||||
|
resp := vehicle.CreateVehicle()
|
||||||
|
u.Respond(w, resp)
|
||||||
|
}
|
@ -31,7 +31,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
db = conn
|
db = conn
|
||||||
db.Debug().AutoMigrate(&Service{}, &Bonuse{}, &Client{}) //Миграция базы данных
|
db.Debug().AutoMigrate(&Service{}, &Bonuse{}, &Client{}, &Contact{}, &Vehicle{}) //Миграция базы данных
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDB() *gorm.DB {
|
func GetDB() *gorm.DB {
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
u "gocommunity.ru/workshop/internal/utils"
|
"fmt"
|
||||||
"github.com/jinzhu/gorm"
|
"github.com/jinzhu/gorm"
|
||||||
|
u "gocommunity.ru/workshop/internal/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
Price string `json:"email"`
|
Price int32 `json:"price"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
}
|
}
|
||||||
@ -21,3 +22,15 @@ func (service *Service) CreateService() map[string]interface{} {
|
|||||||
resp["service"] = service
|
resp["service"] = service
|
||||||
return resp
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetServices() []*Service {
|
||||||
|
|
||||||
|
servicesSlice := make([]*Service, 0)
|
||||||
|
err := GetDB().Table("services").Find(&servicesSlice).Error
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return servicesSlice
|
||||||
|
}
|
43
internal/models/serviceVehicle.go
Normal file
43
internal/models/serviceVehicle.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
u "gocommunity.ru/workshop/internal/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
type ServiceVehicle struct {
|
||||||
|
ServiceId int32 `json:"service_id"`
|
||||||
|
VehicleId int32 `json:"vehicle_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (vehicle *ServiceVehicle) Validate() (map[string]interface{}, bool) {
|
||||||
|
|
||||||
|
if vehicle.ServiceId <= 0 {
|
||||||
|
return u.Message(false, "ServiceId can't be < 0!"), false
|
||||||
|
}
|
||||||
|
|
||||||
|
if vehicle.VehicleId <= 0 {
|
||||||
|
return u.Message(false, "VehicleId can't be < 0!"), false
|
||||||
|
}
|
||||||
|
|
||||||
|
return u.Message(true, "success"), true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (serviceVehicle *ServiceVehicle) AcceptVehicle() map[string]interface{} {
|
||||||
|
|
||||||
|
if response, ok := serviceVehicle.Validate(); !ok {
|
||||||
|
return response
|
||||||
|
}
|
||||||
|
|
||||||
|
err := GetDB().Table("service_vehicle").Create(serviceVehicle).Error
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
resp := u.Message(true, "success")
|
||||||
|
resp["serviceVehicle"] = serviceVehicle
|
||||||
|
return resp
|
||||||
|
}
|
@ -11,6 +11,7 @@ type Vehicle struct {
|
|||||||
ClientId int `json:"client_id"`
|
ClientId int `json:"client_id"`
|
||||||
Brand string `json:"brand"`
|
Brand string `json:"brand"`
|
||||||
Color string `json:"color"`
|
Color string `json:"color"`
|
||||||
|
Services []Service `gorm:"many2many:service_vehicle;foreignkey:vehicle_id;references:Id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) {
|
func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) {
|
||||||
@ -64,3 +65,15 @@ func Getvehicles(user uint) []*Vehicle {
|
|||||||
|
|
||||||
return vehiclesSlice
|
return vehiclesSlice
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetvehiclesInService() []*Vehicle {
|
||||||
|
|
||||||
|
vehiclesSlice := make([]*Vehicle, 0)
|
||||||
|
err := GetDB().Table("vehicles").Joins("join service_vehicle sv on ").Where("user_id = ?").Find(&vehiclesSlice).Error
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return vehiclesSlice
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user