Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

75 lines
1.6KB

  1. package main
  2. import (
  3. "biukop.com/sfm/loan"
  4. "encoding/json"
  5. log "github.com/sirupsen/logrus"
  6. "net/http"
  7. "strconv"
  8. "time"
  9. )
  10. func decodeJsonPayInEdit(r *http.Request) (ret loan.PayIn, e error) {
  11. decoder := json.NewDecoder(r.Body)
  12. //decoder.DisallowUnknownFields()
  13. e = decoder.Decode(&ret)
  14. if e != nil {
  15. log.Error("failed decoding PayIn for updating", e.Error())
  16. return
  17. }
  18. return
  19. }
  20. func apiV1PayInPost(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  21. input, e := decodeJsonPayInEdit(r)
  22. log.Println(input)
  23. if e != nil {
  24. apiV1Client404Error(w, r, ss)
  25. return
  26. } else {
  27. lowerBound, _ := time.Parse("2006-01-02", "1900-01-01")
  28. if input.Settlement.Before(lowerBound) {
  29. input.Settlement = lowerBound
  30. }
  31. if input.Ts.Before(lowerBound) {
  32. input.Ts = time.Now()
  33. }
  34. e = input.Write()
  35. if e != nil {
  36. log.Error("cannot save basic loan", e.Error())
  37. apiV1Client404Error(w, r, ss)
  38. } else {
  39. piEx := loan.PayInEx{}
  40. e = piEx.Read(input.Id)
  41. if e != nil {
  42. log.Error("weird failed to read PayInEx after successfully write PayIn", input, piEx, e.Error())
  43. apiV1Client404Error(w, r, ss)
  44. } else {
  45. apiV1SendJson(piEx, w, r, ss)
  46. }
  47. }
  48. }
  49. }
  50. func apiV1PayInDelete(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  51. id := r.URL.Path[len(apiV1Prefix+"payIn/"):] //remove prefix
  52. idx, e := strconv.Atoi(id)
  53. if e != nil {
  54. log.Error("cannot identify PayInId ", id, e.Error())
  55. apiV1Client404Error(w, r, ss)
  56. return
  57. }
  58. e = loan.DeletePayIn(int64(idx))
  59. if e != nil {
  60. log.Error("cannot delete PayIn by id ", id, e.Error())
  61. apiV1Client404Error(w, r, ss)
  62. return
  63. }
  64. apiV1SendJson(idx, w, r, ss)
  65. }