reviewsAction.js 2.39 KB
import axios from "axios";
import { getSession } from "next-auth/react";
import qs from "qs";
import { GET_REVIEWS_FAIL, GET_REVIEWS_REQUEST, GET_REVIEWS_SUCCESS } from "../constants/reviewsConstants";

export const postReviewEndUser = async ({ endUserId, activityId, comments, rating }) => {
  try {
    const session = await getSession();
    console.log("session", session);
    if (!session) {
      return;
    }
    const config = {
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${session.jwt}`
      }
    };
    const data = {
      endUser: endUserId,
      experience: activityId,
      comments,
      rating
    };
    console.log("data", data);
    const response = await axios.post(`${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/reviews?`, { data }, config);
    return response.data;
  } catch (error) {}
};

export const getReviewsAction =
  ({ activityId, endUserId }) =>
  async dispatch => {
    try {
      dispatch({
        type: GET_REVIEWS_REQUEST,
        loading: true
      });
      const config = {
        headers: {
          "Content-Type": "application/json"
          //   Authorization: `Bearer ${session.jwt}`
        }
      };
      const query = {
        filters: {},
        populate: ["endUser", "experience"]
      };
      if (activityId) {
        query.filters["experience"] = { id: { $eq: activityId } };
      }
      if (endUserId) {
        query.filters["endUser"] = { id: { $eq: endUserId } };
      }
      const queryString = qs.stringify(query, {
        encodeValuesOnly: true
      });

      const response = await axios.get(`${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/reviews?${queryString}`, config);
      dispatch({
        type: GET_REVIEWS_SUCCESS,
        payload: response.data,
        loading: false
      });
    } catch (error) {
      dispatch({
        type: GET_REVIEWS_FAIL,
        payload: error.response.data
      });
    }
  };

export const deleteReview = async ({ reviewId }) => {
  try {
    const session = await getSession();
    console.log("session", session);
    if (!session) {
      return;
    }
    const config = {
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${session.jwt}`
      }
    };
    const response = await axios.delete(`${process.env.NEXT_PUBLIC_BACKEND_API_URL}/api/reviews/${reviewId}`, config);
    return response.data;
  } catch (error) {}
};