Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

145 lines
3.1KB

  1. package main
  2. import (
  3. "biukop.com/sfm/loan"
  4. "encoding/json"
  5. log "github.com/sirupsen/logrus"
  6. "net/http"
  7. )
  8. func apiV1BrokerList(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  9. filter := ""
  10. keys, ok := r.URL.Query()["filter"]
  11. if ok && len(keys) >= 1 {
  12. filter = keys[0]
  13. }
  14. data := loan.GetBrokerList(filter)
  15. apiV1SendJson(data, w, r, ss)
  16. }
  17. func apiV1BrokerGet(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  18. id := r.URL.Path[len(apiV1Prefix+"broker/"):]
  19. b := loan.Broker{}
  20. e := b.Read(id)
  21. if e != nil {
  22. log.Error("cannot find people by id", id)
  23. apiV1Client404Error(w, r, ss)
  24. return
  25. }
  26. apiV1SendJson(b, w, r, ss)
  27. }
  28. func decodeJsonBrokerEdit(r *http.Request) (ret loan.Broker, e error) {
  29. decoder := json.NewDecoder(r.Body)
  30. //decoder.DisallowUnknownFields()
  31. e = decoder.Decode(&ret)
  32. if e != nil {
  33. log.Error("failed decoding json for Filtering full_loan_summary ", e.Error())
  34. return
  35. }
  36. return
  37. }
  38. func apiV1BrokerDelete(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  39. id := r.URL.Path[len(apiV1Prefix+"broker/"):]
  40. e := loan.DeleteBroker(id)
  41. if e != nil {
  42. log.Error("cannot delete broker by id", id, e.Error())
  43. apiV1Server500Error(w, r)
  44. return
  45. }
  46. ue := UserExtra{}
  47. ue.Login = ""
  48. ue.Enabled = false
  49. ue.License = ""
  50. ue.Organization = ""
  51. ue.BSB = ""
  52. ue.ACC = ""
  53. p := loan.People{}
  54. readPeopleErr := p.Read(id)
  55. u := loan.User{}
  56. readUserErr := u.Read(id)
  57. if readUserErr == nil {
  58. ue.Role = "user"
  59. } else if readPeopleErr == nil {
  60. ue.Role = "people"
  61. } else {
  62. ue.Role = "invalid_role"
  63. }
  64. apiV1SendJson(ue, w, r, ss)
  65. }
  66. func apiV1BrokerPut(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  67. id := r.URL.Path[len(apiV1Prefix+"broker/"):]
  68. u := loan.User{}
  69. e := u.Read(id)
  70. if e != nil { // no such people
  71. log.Error("cannot create broker without user, id=", id, e.Error())
  72. apiV1Client403Error(w, r, ss)
  73. return
  74. }
  75. b := loan.Broker{}
  76. b.User = u
  77. b.Organization = "SFM"
  78. e = b.Write()
  79. if e != nil { // no such people
  80. log.Error("cannot create broker from existing user, id=", id, u, e.Error())
  81. apiV1Server500Error(w, r)
  82. return
  83. }
  84. ue := UserExtra{}
  85. ue.Login = b.Login
  86. ue.Enabled = b.Enabled
  87. ue.Role = "broker"
  88. ue.License = b.License
  89. ue.Organization = b.Organization
  90. ue.BSB = b.BSB
  91. ue.ACC = b.ACC
  92. apiV1SendJson(ue, w, r, ss)
  93. }
  94. func apiV1BrokerPost(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  95. id := r.URL.Path[len(apiV1Prefix+"broker/"):]
  96. b := loan.Broker{}
  97. e := b.Read(id)
  98. if e != nil {
  99. log.Error("cannot find broker by id", id, e.Error())
  100. apiV1Client404Error(w, r, ss)
  101. return
  102. }
  103. input, e := decodeJsonBrokerEdit(r)
  104. if e != nil {
  105. log.Error("cannot find broker by id", id, e.Error())
  106. apiV1Client404Error(w, r, ss)
  107. return
  108. }
  109. b.BSB = input.BSB
  110. b.ACC = input.ACC
  111. b.Display = input.Display
  112. b.First = input.First
  113. b.Last = input.Last
  114. b.License = input.License
  115. if ss.GetRole() == "admin" {
  116. b.Login = input.Login
  117. b.Organization = input.Organization
  118. }
  119. e = b.Write()
  120. if e != nil {
  121. log.Error("failed to save broker ", b, e.Error())
  122. apiV1Client404Error(w, r, ss)
  123. return
  124. }
  125. apiV1SendJson(b, w, r, ss)
  126. }