Project.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { appApi } from 'src/boot/axios.js'
  2. import APIRepository from '../classes/APIRepository.js'
  3. import { Project, ProjectList } from 'src/models/Project.js'
  4. export default class ProjectAPI extends APIRepository {
  5. constructor() {
  6. super('project', appApi, '/lma/projects', Project)
  7. this.APIAdresses = {
  8. base: '/lma/projects',
  9. attendanceSheetsList: '/lma/projects/attendance_sheets',
  10. byId: (id) => '/lma/projects/' + id,
  11. attendanceSheets: (id) => '/lma/projects/' + id + '/attendance_sheets'
  12. }
  13. this.CacheList = {
  14. base: this.name + this.APIAdresses.base,
  15. byId: (id) => this.name + this.APIAdresses.byId(id)
  16. }
  17. }
  18. index (data) {
  19. return this.sendRequest({
  20. apiMethod: 'get',
  21. api: this.api,
  22. request: this.APIAdresses.base,
  23. data: this.getNormalizedSendData({
  24. category: null, // Number
  25. per_page: 10, // Number
  26. page: 1 // Number
  27. }, data),
  28. resolveCallback: (response) => {
  29. const paginate = response.data
  30. const results = response.data.results
  31. delete paginate.results
  32. return {
  33. list: new ProjectList(results),
  34. paginate
  35. // {
  36. // "count": 1,
  37. // "num_pages": 1,
  38. // "per_page": 10,
  39. // "current": 1,
  40. // "next": null,
  41. // "previous": null,
  42. // }
  43. }
  44. },
  45. rejectCallback: (error) => {
  46. return error
  47. }
  48. })
  49. }
  50. attendanceSheetsList (data) {
  51. return this.sendRequest({
  52. apiMethod: 'get',
  53. api: this.api,
  54. request: this.APIAdresses.attendanceSheetsList,
  55. data: this.getNormalizedSendData({
  56. category: null, // Number
  57. per_page: 10, // Number
  58. page: 1 // Number
  59. }, data),
  60. resolveCallback: (response) => {
  61. const paginate = response.data
  62. const results = response.data.results
  63. delete paginate.results
  64. return {
  65. list: new ProjectList(results),
  66. paginate
  67. // {
  68. // "count": 1,
  69. // "num_pages": 1,
  70. // "per_page": 10,
  71. // "current": 1,
  72. // "next": null,
  73. // "previous": null,
  74. // }
  75. }
  76. },
  77. rejectCallback: (error) => {
  78. return error
  79. }
  80. })
  81. }
  82. create (data) {
  83. return this.sendRequest({
  84. apiMethod: 'post',
  85. api: this.api,
  86. request: this.APIAdresses.base,
  87. data: this.getNormalizedSendData({
  88. title: null, // String
  89. unit: null // Number
  90. }, data),
  91. resolveCallback: (response) => {
  92. return new Project(response.data)
  93. },
  94. rejectCallback: (error) => {
  95. return error
  96. }
  97. })
  98. }
  99. }