administrative.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package orm
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/jinzhu/gorm"
  6. "gogs.carducci-dante.gov.it/karmen/core/renderer"
  7. )
  8. type Administrative struct {
  9. gorm.Model
  10. Credential
  11. Office *Office
  12. OfficeID uint `schema:"office_id"`
  13. }
  14. type AdministrativeForUpdate struct {
  15. Administrative Administrative
  16. AllOffices []*Office
  17. SelectedOffice map[uint]string
  18. }
  19. type AdministrativeForAdd struct {
  20. AllOffices []*Office
  21. }
  22. func (s *Administrative) GetID() uint { return s.ID }
  23. func GetAdministrative(args map[string]string) (interface{}, error) {
  24. var administrative Administrative
  25. if err := DB().First(&administrative, args["id"]).Error; err != nil {
  26. return nil, err
  27. }
  28. return &administrative, nil
  29. }
  30. func GetAdministrativeAll(args map[string]string) (interface{}, error) {
  31. var administrative Administrative
  32. id := args["id"]
  33. if err := DB().Preload("Office").Where("id = ?", id).Find(&administrative).Error; err != nil {
  34. return nil, err
  35. }
  36. return &administrative, nil
  37. }
  38. func GetAdministratives(args map[string]string) (interface{}, error) {
  39. var administratives []*Administrative
  40. if err := DB().Order("surname,name").Find(&administratives).Error; err != nil {
  41. return nil, err
  42. }
  43. return administratives, nil
  44. }
  45. func GetAdministrativesAll(args map[string]string) (interface{}, error) {
  46. var administratives []*Administrative
  47. if err := DB().Preload("Office").Order("surname,name").Find(&administratives).Error; err != nil {
  48. return nil, err
  49. }
  50. return administratives, nil
  51. }
  52. func SaveAdministrative(administrative interface{}) (interface{}, error) {
  53. if err := DB().Omit("Office").Save(administrative).Error; err != nil {
  54. return nil, err
  55. }
  56. return administrative, nil
  57. }
  58. func UpdateAdministrative(args map[string]string, r *http.Request) (IDer, error) {
  59. administrative, err := GetAdministrative(args)
  60. if err != nil {
  61. return nil, err
  62. }
  63. err = renderer.Decode(administrative, r)
  64. if err != nil {
  65. return nil, err
  66. }
  67. _, err = SaveAdministrative(administrative)
  68. if err != nil {
  69. return nil, err
  70. }
  71. administrative, err = GetAdministrative(args)
  72. if err != nil {
  73. return nil, err
  74. }
  75. return administrative.(*Administrative), nil
  76. }
  77. func AddAdministrative(args map[string]string, r *http.Request) (IDer, error) {
  78. administrative := new(Administrative)
  79. err := renderer.Decode(administrative, r)
  80. if err != nil {
  81. return nil, err
  82. }
  83. administrative, err = CreateAdministrative(administrative)
  84. if err != nil {
  85. return nil, err
  86. }
  87. return administrative, nil
  88. }
  89. func CreateAdministrative(administrative *Administrative) (*Administrative, error) {
  90. if err := DB().Create(administrative).Error; err != nil {
  91. return nil, err
  92. }
  93. return administrative, nil
  94. }
  95. func DeleteAdministrative(args map[string]string, r *http.Request) (IDer, error) {
  96. administrative, err := GetAdministrative(args)
  97. if err != nil {
  98. return nil, err
  99. }
  100. if err := DB().Unscoped().Delete(administrative.(*Administrative)).Error; err != nil {
  101. return nil, err
  102. }
  103. return administrative.(*Administrative), nil
  104. }
  105. func GetAdministrativeForUpdate(args map[string]string) (interface{}, error) {
  106. var data AdministrativeForUpdate
  107. id := args["id"]
  108. if err := DB().Preload("Office").First(&data.Administrative, id).Error; err != nil {
  109. return nil, err
  110. }
  111. if err := DB().Find(&data.AllOffices).Error; err != nil {
  112. return nil, err
  113. }
  114. data.SelectedOffice = make(map[uint]string)
  115. data.SelectedOffice[data.Administrative.OfficeID] = "selected"
  116. return data, nil
  117. }
  118. func GetAdministrativeForAdd(args map[string]string) (interface{}, error) {
  119. var data AdministrativeForAdd
  120. if err := DB().Find(&data.AllOffices).Error; err != nil {
  121. return nil, err
  122. }
  123. return data, nil
  124. }
  125. func (s *Administrative) CompleteName() string {
  126. return fmt.Sprintf("%s %s", s.Name, s.Surname)
  127. }