import { Action } from "lib/types/interfaces";

export const fetchAd = (slug?: string) =>
  ({
    type: "@@ads::FETCH_SINGLE",
    slug: slug,
  } as Action);

export const fetchedAd = (data?: object) =>
  ({
    type: "@@ads::FETCHED_SINGLE",
    ...data,
  } as Action);

export const failedFetchAd = (error?) =>
  ({
    type: "@@ads::FAILED_FETCH_SINGLE",
    ...error,
  } as Action);

export const createAd = (payload?) =>
  ({
    type: "@@ads::CREATE",
    payload: payload,
  } as Action);

export const createdAd = (data?) =>
  ({
    type: "@@ads::CREATED",
    ...data,
  } as Action);

export const failedCreateAd = (error?) =>
  ({
    type: "@@ads::FAILED_CREATE",
    ...error,
  } as Action);

export const fetchMultipleAds = (data?, options?: Record<string, any>) =>
  ({
    type: "@@ads::FETCH_MULTIPLE",
    data,
    options,
  } as Action);

export const fetchedMultipleAds = (data?) =>
  ({
    type: "@@ads::FETCHED_MULTIPLE",
    ...data,
  } as Action);

export const failedFetchMultipleAds = (error?) =>
  ({
    type: "@@ads::FAILED_FETCH_MULTIPLE",
    ...error,
  } as Action);

export const deleteAd = (id?, dataToAlter?) =>
  ({
    type: "@@ads::DELETE",
    id: id,
    dataToAlter: dataToAlter,
  } as Action);

export const deletedAd = (data?) =>
  ({
    type: "@@ads::DELETED",
    ...data,
  } as Action);

export const failedDeleteAd = (error?) =>
  ({
    type: "@@ads::FAILED_DELETE",
    ...error,
  } as Action);

export const storeAdDetails = (payload) => ({
  type: "STORE_AD_DETAILS",
  payload: payload,
});

export const updateAd = (payload?, uaDataToAlter?) =>
  ({
    type: "@@ads::UPDATE",
    payload: payload,
    uaDataToAlter: uaDataToAlter,
  } as Action);

export const updatedAd = (data?) =>
  ({
    type: "@@ads::UPDATED",
    ...data,
  } as Action);

export const failedUpdateAd = (error?) =>
  ({
    type: "@@ads::FAILED_UPDATE",
    ...error,
  } as Action);
