Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

adminSaga.js 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. import { all, call, put, takeLatest } from "@redux-saga/core/effects";
  2. import {
  3. ADD_TYPE,
  4. DELETE_TYPE,
  5. EDIT_TYPE,
  6. } from "../../constants/adminMethodConstants";
  7. import {
  8. CATEGORIES_TYPE,
  9. LOCATIONS_TYPE,
  10. SUBCATEGORIES_TYPE,
  11. USERS_BLOCK_TYPE,
  12. USERS_DELETE_TYPE,
  13. USERS_UNBLOCK_TYPE,
  14. } from "../../constants/adminTypeConstants";
  15. import {
  16. attemptAddNewCategory,
  17. attemptAddNewSubcategory,
  18. attemptDeleteCategory,
  19. attemptDeleteSubcategory,
  20. attemptEditCategory,
  21. attemptEditSubcategory,
  22. } from "../../request/categoriesRequest";
  23. import {
  24. attemptAddNewLocation,
  25. attemptDeleteLocation,
  26. attemptEditLocation,
  27. } from "../../request/locationsRequest";
  28. import { attemptBlockProfileAsAdmin, attemptDeleteProfileAsAdmin, attemptUnblockProfileAsAdmin } from "../../request/profileRequest";
  29. // import { attemptAddNewCategory } from "../../request/categoriesRequest";
  30. import { ADMIN_FETCH } from "../actions/admin/adminActionConstants";
  31. import {
  32. fetchAdminMethodError,
  33. fetchAdminMethodSuccess,
  34. } from "../actions/admin/adminActions";
  35. import { fetchCategories } from "../actions/categories/categoriesActions";
  36. import { fetchLocations } from "../actions/locations/locationsActions";
  37. import { fetchAllProfilesAsAdmin } from "../actions/profile/profileActions";
  38. function* editCategory(payload) {
  39. try {
  40. yield call(attemptEditCategory, {
  41. categoryId: payload.id,
  42. body: { name: payload.values.title },
  43. });
  44. yield put(fetchCategories());
  45. } catch (e) {
  46. yield call(console.log, e);
  47. }
  48. }
  49. function* addCategory(payload) {
  50. try {
  51. let dataToSend = new FormData();
  52. dataToSend.append("name", payload.values.title);
  53. dataToSend.append("file", payload.values.image);
  54. dataToSend.append("subcategories", JSON.stringify([]));
  55. yield call(attemptAddNewCategory, {
  56. body: dataToSend,
  57. });
  58. yield put(fetchCategories());
  59. } catch (e) {
  60. yield call(console.log, e);
  61. }
  62. }
  63. function* deleteCategory(payload) {
  64. try {
  65. yield call(attemptDeleteCategory, {
  66. categoryId: payload.id,
  67. });
  68. yield put(fetchCategories());
  69. } catch (e) {
  70. yield call(console.log, e);
  71. }
  72. }
  73. function* editSubcategory(payload) {
  74. try {
  75. yield call(attemptEditSubcategory, {
  76. categoryId: payload.id,
  77. subcategoryName: payload.name,
  78. body: { name: payload.values.title },
  79. });
  80. yield put(fetchCategories());
  81. } catch (e) {
  82. yield call(console.log, e);
  83. }
  84. }
  85. function* addSubcategory(payload) {
  86. try {
  87. yield call(attemptAddNewSubcategory, {
  88. categoryId: payload.id,
  89. body: { name: payload.values.title },
  90. });
  91. yield put(fetchCategories());
  92. } catch (e) {
  93. yield call(console.log, e);
  94. }
  95. }
  96. function* deleteSubcategory(payload) {
  97. try {
  98. yield call(attemptDeleteSubcategory, {
  99. categoryId: payload.id,
  100. subcategoryName: payload.name,
  101. });
  102. yield put(fetchCategories());
  103. } catch (e) {
  104. yield call(console.log, e);
  105. }
  106. }
  107. function* editLocation(payload) {
  108. try {
  109. yield call(attemptEditLocation, {
  110. locationId: payload.id,
  111. body: { city: payload.values.title },
  112. });
  113. yield put(fetchLocations());
  114. } catch (e) {
  115. yield call(console.log, e);
  116. }
  117. }
  118. function* addLocation(payload) {
  119. try {
  120. yield call(attemptAddNewLocation, {
  121. locationId: payload.id,
  122. body: { city: payload.values.title },
  123. });
  124. yield put(fetchLocations());
  125. } catch (e) {
  126. yield call(console.log, e);
  127. }
  128. }
  129. function* deleteLocation(payload) {
  130. try {
  131. yield call(attemptDeleteLocation, {
  132. locationId: payload.id,
  133. });
  134. yield put(fetchLocations());
  135. } catch (e) {
  136. yield call(console.log, e);
  137. }
  138. }
  139. function* deleteUser(payload) {
  140. try {
  141. yield call(attemptDeleteProfileAsAdmin, { userId: payload.id });
  142. yield put(fetchAllProfilesAsAdmin());
  143. } catch (e) {
  144. yield call(console.log, e);
  145. }
  146. }
  147. function* blockUser(payload) {
  148. try {
  149. yield call(attemptBlockProfileAsAdmin, { userId: payload.id });
  150. yield put(fetchAllProfilesAsAdmin());
  151. } catch (e) {
  152. yield call(console.log, e);
  153. }
  154. }
  155. function* unblockUser(payload) {
  156. try {
  157. yield call(attemptUnblockProfileAsAdmin, { userId: payload.id });
  158. yield put(fetchAllProfilesAsAdmin());
  159. } catch (e) {
  160. yield call(console.log, e);
  161. }
  162. }
  163. function* fetchAdminMethod({ payload }) {
  164. try {
  165. if (payload.type === CATEGORIES_TYPE) {
  166. if (payload.method === ADD_TYPE)
  167. yield call(addCategory, { values: payload.values, id: payload.id });
  168. else if (payload.method === EDIT_TYPE)
  169. yield call(editCategory, { values: payload.values, id: payload.id });
  170. else if (payload.method === DELETE_TYPE)
  171. yield call(deleteCategory, { id: payload.id });
  172. } else if (payload.type === SUBCATEGORIES_TYPE) {
  173. if (payload.method === EDIT_TYPE)
  174. yield call(editSubcategory, {
  175. values: payload.values,
  176. id: payload.categoryId,
  177. name: payload.name,
  178. });
  179. else if (payload.method === DELETE_TYPE)
  180. yield call(deleteSubcategory, {
  181. id: payload.categoryId,
  182. name: payload.name,
  183. });
  184. else if (payload.method === ADD_TYPE)
  185. yield call(addSubcategory, {
  186. values: payload.values,
  187. id: payload.categoryId,
  188. });
  189. } else if (payload.type === LOCATIONS_TYPE) {
  190. if (payload.method === ADD_TYPE)
  191. yield call(addLocation, {
  192. values: payload.values,
  193. id: payload.id,
  194. });
  195. else if (payload.method === EDIT_TYPE)
  196. yield call(editLocation, {
  197. values: payload.values,
  198. id: payload.id,
  199. });
  200. else if (payload.method === DELETE_TYPE)
  201. yield call(deleteLocation, {
  202. id: payload.id,
  203. });
  204. } else if (payload.type === USERS_DELETE_TYPE) {
  205. yield call(deleteUser, { id: payload.id });
  206. } else if (payload.type === USERS_BLOCK_TYPE) {
  207. yield call(blockUser, { id: payload.id });
  208. } else if (payload.type === USERS_UNBLOCK_TYPE) {
  209. yield call(unblockUser, {id: payload.id})
  210. }
  211. if (payload.handleApiResponseSuccess)
  212. yield call(payload.handleApiResponseSuccess);
  213. yield put(fetchAdminMethodSuccess());
  214. } catch (e) {
  215. yield put(fetchAdminMethodError());
  216. }
  217. }
  218. export default function* adminSaga() {
  219. yield all([takeLatest(ADMIN_FETCH, fetchAdminMethod)]);
  220. }