trips-api.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. }[];
  21. statistics: {
  22. countries: {
  23. description: string;
  24. list: {
  25. country: string;
  26. days_spent: number;
  27. flag: string | null;
  28. }[];
  29. };
  30. general: [string];
  31. regions: {
  32. description: string;
  33. list: {
  34. days_spent: number;
  35. flag: string | null;
  36. region: string;
  37. }[];
  38. };
  39. };
  40. }
  41. export interface RegionData {
  42. id: number;
  43. quality: number;
  44. // status: 0 | 1;
  45. hidden: boolean;
  46. year_from: number;
  47. year_to: number;
  48. month_from: number;
  49. month_to: number;
  50. day_from: number | null;
  51. day_to: number | null;
  52. }
  53. export interface PostSetNewTrip {
  54. token: string;
  55. date_from: string | null;
  56. date_to: string | null;
  57. description: string;
  58. regions: RegionData[];
  59. }
  60. export interface PostSetNewTripReturn extends ResponseType {
  61. trip_id: number;
  62. }
  63. export interface PostUpdateTrip {
  64. token: string;
  65. trip_id: number;
  66. date_from: string | null;
  67. date_to: string | null;
  68. description: string;
  69. regions: RegionData[];
  70. }
  71. export interface PostGetTripReturn extends ResponseType {
  72. trip: {
  73. id: number;
  74. date_from: string;
  75. date_to: string;
  76. description: string;
  77. regions: {
  78. id: number;
  79. region: number;
  80. region_name: string;
  81. flag1: string;
  82. flag2: string | null;
  83. quality: number;
  84. // status: 0 | 1;
  85. hidden: boolean;
  86. can_be_hidden: boolean;
  87. year_from: number;
  88. year_to: number;
  89. month_from: number;
  90. month_to: number;
  91. day_from: number | null;
  92. day_to: number | null;
  93. }[];
  94. };
  95. }
  96. export interface PostGetRegionsForTripsReturn extends ResponseType {
  97. regions: {
  98. id: number;
  99. region_name: string;
  100. flag1: string;
  101. flag2: string | null;
  102. hidden: boolean;
  103. }[];
  104. }
  105. export const tripsApi = {
  106. getTripsYears: (token: string) =>
  107. request.postForm<PostGetTripsYearsReturn>(API.GET_TRIPS_YEARS, { token }),
  108. getTripsForYear: (token: string, year: string) =>
  109. request.postForm<PostGetTripsForYearReturn>(API.GET_TRIPS_FOR_YEAR, { token, year }),
  110. setNewTrip: (data: PostSetNewTrip) =>
  111. request.postForm<PostSetNewTripReturn>(API.SET_NEW_TRIP, data),
  112. updateTrip: (data: PostUpdateTrip) => request.postForm<ResponseType>(API.UPDATE_TRIP, data),
  113. deleteTrip: (token: string, trip_id: number) =>
  114. request.postForm<ResponseType>(API.DELETE_TRIP, { token, trip_id }),
  115. getTrip: (token: string, trip_id: number) =>
  116. request.postForm<PostGetTripReturn>(API.GET_TRIP, { token, trip_id }),
  117. getRegionsForTrips: () => request.get<PostGetRegionsForTripsReturn>(API.GET_REGIONS_FOR_TRIPS)
  118. };