trips-api.tsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import { request } from '../../../utils';
  2. import { API } from '../../../types';
  3. import { ResponseType } from '../response-type';
  4. export interface PostGetTripsYearsReturn extends ResponseType {
  5. data: string[];
  6. }
  7. export interface PostGetTripsForYearReturn extends ResponseType {
  8. trips: {
  9. id: number;
  10. date_from: string;
  11. date_to: string;
  12. description: string;
  13. regions: {
  14. region_name: string;
  15. flag1: string;
  16. flag2: string | null;
  17. status: 0 | 1;
  18. id: number;
  19. }[];
  20. dates_missing: 0 | 1;
  21. }[];
  22. statistics: {
  23. dates_missing: 0 | 1;
  24. countries: {
  25. description: string;
  26. list: {
  27. id: number;
  28. alt_id: number | null;
  29. country: string;
  30. days_spent: number;
  31. flag: string | null;
  32. regions: {
  33. id: number;
  34. region: string;
  35. days_spent: number;
  36. }[];
  37. }[];
  38. };
  39. general: [string];
  40. regions: {
  41. description: string;
  42. list: {
  43. id: number;
  44. days_spent: number;
  45. flag: string | null;
  46. flag1: string | null;
  47. flag2: string | null;
  48. region: string;
  49. }[];
  50. };
  51. } | null;
  52. }
  53. export interface PostGetTripsForRegionReturn extends ResponseType {
  54. trips: {
  55. id: number;
  56. date_from: string;
  57. date_to: string;
  58. description: string;
  59. regions: {
  60. region_name: string;
  61. flag1: string;
  62. flag2: string | null;
  63. status: 0 | 1;
  64. id: number;
  65. }[];
  66. dates_missing: 0 | 1;
  67. }[];
  68. }
  69. export interface RegionData {
  70. id: number;
  71. quality: number;
  72. // status: 0 | 1;
  73. hidden: boolean;
  74. year_from: number;
  75. year_to: number;
  76. month_from: number;
  77. month_to: number;
  78. day_from: number | null;
  79. day_to: number | null;
  80. }
  81. export interface PostSetNewTrip {
  82. token: string;
  83. date_from: string | null;
  84. date_to: string | null;
  85. description: string;
  86. regions: RegionData[];
  87. }
  88. export interface PostSetNewTripReturn extends ResponseType {
  89. trip_id: number;
  90. }
  91. export interface PostUpdateTrip {
  92. token: string;
  93. trip_id: number;
  94. date_from: string | null;
  95. date_to: string | null;
  96. description: string;
  97. regions: RegionData[];
  98. }
  99. export interface PostGetTripReturn extends ResponseType {
  100. trip: {
  101. id: number;
  102. date_from: string;
  103. date_to: string;
  104. description: string;
  105. regions: {
  106. id: number;
  107. region: number;
  108. region_name: string;
  109. flag1: string;
  110. flag2: string | null;
  111. quality: number;
  112. // status: 0 | 1;
  113. hidden: boolean;
  114. can_be_hidden: boolean;
  115. year_from: number;
  116. year_to: number;
  117. month_from: number;
  118. month_to: number;
  119. day_from: number | null;
  120. day_to: number | null;
  121. }[];
  122. };
  123. }
  124. export interface PostGetRegionsForTripsReturn extends ResponseType {
  125. regions: {
  126. id: number;
  127. region_name: string;
  128. flag1: string;
  129. flag2: string | null;
  130. hidden: boolean;
  131. }[];
  132. }
  133. export interface PostGetRegionsThatHaveTripsReturn extends ResponseType {
  134. data: {
  135. id: number;
  136. name: string;
  137. flag1: string;
  138. flag2: string | null;
  139. }[];
  140. }
  141. export const tripsApi = {
  142. getTripsYears: (token: string) =>
  143. request.postForm<PostGetTripsYearsReturn>(API.GET_TRIPS_YEARS, { token }),
  144. getTripsForYear: (token: string, year: string) =>
  145. request.postForm<PostGetTripsForYearReturn>(API.GET_TRIPS_FOR_YEAR, { token, year }),
  146. getTripsForRegion: (token: string, region: number) =>
  147. request.postForm<PostGetTripsForRegionReturn>(API.GET_TRIPS_FOR_REGION, { token, region }),
  148. setNewTrip: (data: PostSetNewTrip) =>
  149. request.postForm<PostSetNewTripReturn>(API.SET_NEW_TRIP, data),
  150. updateTrip: (data: PostUpdateTrip) => request.postForm<ResponseType>(API.UPDATE_TRIP, data),
  151. deleteTrip: (token: string, trip_id: number) =>
  152. request.postForm<ResponseType>(API.DELETE_TRIP, { token, trip_id }),
  153. getTrip: (token: string, trip_id: number) =>
  154. request.postForm<PostGetTripReturn>(API.GET_TRIP, { token, trip_id }),
  155. getRegionsForTrips: () => request.get<PostGetRegionsForTripsReturn>(API.GET_REGIONS_FOR_TRIPS),
  156. getRegionsThatHaveTrips: () =>
  157. request.get<PostGetRegionsThatHaveTripsReturn>(API.GET_REGIONS_THAT_HAVE_TRIPS)
  158. };