|
@@ -12,7 +12,7 @@ type Department struct {
|
|
Name string
|
|
Name string
|
|
|
|
|
|
CoordinatorID uint `schema:"coordinator_id"`
|
|
CoordinatorID uint `schema:"coordinator_id"`
|
|
- Coordinator Teacher
|
|
|
|
|
|
+ Coordinator *Teacher
|
|
|
|
|
|
Subjects []*Subject
|
|
Subjects []*Subject
|
|
Teachers []*Teacher
|
|
Teachers []*Teacher
|
|
@@ -43,15 +43,29 @@ WHERE department_id=?`
|
|
|
|
|
|
func (d *Department) GetID() uint { return d.ID }
|
|
func (d *Department) GetID() uint { return d.ID }
|
|
|
|
|
|
-func GetDepartment(args map[string]string) (interface{}, error) {
|
|
|
|
- var department Department
|
|
|
|
- if err := DB().First(&department, args["id"]).Error; err != nil {
|
|
|
|
- return nil, err
|
|
|
|
|
|
+func (d *Department) String() string {
|
|
|
|
+ return d.Name
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (d *Department) Create(args map[string]string, r *http.Request) (interface{}, error) {
|
|
|
|
+ if r.Method == "GET" {
|
|
|
|
+ return nil, nil
|
|
|
|
+ } else {
|
|
|
|
+ department := new(Department)
|
|
|
|
+ err := renderer.Decode(department, r)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ department, err = CreateDepartment(department)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return department, nil
|
|
}
|
|
}
|
|
- return &department, nil
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-func GetDepartmentAll(args map[string]string) (interface{}, error) {
|
|
|
|
|
|
+func (d *Department) Read(args map[string]string, r *http.Request) (interface{}, error) {
|
|
var department Department
|
|
var department Department
|
|
|
|
|
|
id := args["id"]
|
|
id := args["id"]
|
|
@@ -79,15 +93,7 @@ func GetDepartmentAll(args map[string]string) (interface{}, error) {
|
|
return &department, nil
|
|
return &department, nil
|
|
}
|
|
}
|
|
|
|
|
|
-func GetDepartments(args map[string]string) (interface{}, error) {
|
|
|
|
- var departments []*Department
|
|
|
|
- if err := DB().Order("name").Find(&departments).Error; err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- return departments, nil
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func GetDepartmentsAll(args map[string]string) (interface{}, error) {
|
|
|
|
|
|
+func (d *Department) ReadAll(args map[string]string, r *http.Request) (interface{}, error) {
|
|
var departments []*Department
|
|
var departments []*Department
|
|
if err := DB().Preload("Coordinator").Preload("Subjects").Order("name").Find(&departments).Error; err != nil {
|
|
if err := DB().Preload("Coordinator").Preload("Subjects").Order("name").Find(&departments).Error; err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
@@ -98,31 +104,48 @@ func GetDepartmentsAll(args map[string]string) (interface{}, error) {
|
|
return departments, nil
|
|
return departments, nil
|
|
}
|
|
}
|
|
|
|
|
|
-func SaveDepartment(department interface{}) (interface{}, error) {
|
|
|
|
- if err := DB().Omit("Teachers", "Subjects").Save(department).Error; err != nil {
|
|
|
|
- return nil, err
|
|
|
|
|
|
+func (d *Department) Update(args map[string]string, r *http.Request) (interface{}, error) {
|
|
|
|
+ if r.Method == "GET" {
|
|
|
|
+ return d.Read(args, r)
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ department, err := d.Read(args, r)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ err = renderer.Decode(department, r)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ _, err = SaveDepartment(department)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ department, err = d.Read(args, r)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return department.(*Department), nil
|
|
}
|
|
}
|
|
- return department, nil
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-func UpdateDepartment(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
|
- department, err := GetDepartment(args)
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- err = renderer.Decode(department, r)
|
|
|
|
|
|
+func (d *Department) Delete(args map[string]string, r *http.Request) (interface{}, error) {
|
|
|
|
+ department, err := d.Read(args, r)
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- _, err = SaveDepartment(department)
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ if err := DB().Unscoped().Delete(department.(*Department)).Error; err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- department, err = GetDepartment(args)
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ return department.(*Department), nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func SaveDepartment(department interface{}) (interface{}, error) {
|
|
|
|
+ if err := DB().Omit("Teachers", "Subjects").Save(department).Error; err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- return department.(*Department), nil
|
|
|
|
|
|
+ return department, nil
|
|
}
|
|
}
|
|
|
|
|
|
func AddDepartment(args map[string]string, r *http.Request) (IDer, error) {
|
|
func AddDepartment(args map[string]string, r *http.Request) (IDer, error) {
|
|
@@ -146,17 +169,6 @@ func CreateDepartment(department *Department) (*Department, error) {
|
|
return department, nil
|
|
return department, nil
|
|
}
|
|
}
|
|
|
|
|
|
-func DeleteDepartment(args map[string]string, r *http.Request) (IDer, error) {
|
|
|
|
- department, err := GetDepartment(args)
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- if err := DB().Unscoped().Delete(department.(*Department)).Error; err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- return department.(*Department), nil
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
func GetDepartmentForAdd(args map[string]string) (interface{}, error) {
|
|
func GetDepartmentForAdd(args map[string]string) (interface{}, error) {
|
|
var data DepartmentForAdd
|
|
var data DepartmentForAdd
|
|
|
|
|