Viewing File: /home/ubuntu/route-and-root-frontend-base/src/components/store/sagas/OrdersSaga.jsx

import { call, select, put, takeLatest, all } from "redux-saga/effects";
import api from "../../Environment";
import {
  getSuccessNotificationMessage,
  getErrorNotificationMessage,
} from "../../Helper/ToastNotification";
import {
  SAVE_ORDERS_DIRECT_START,
  SAVE_ORDERS_CART_START,
  ORDER_STATUS_START,
  FETCH_ORDERS_LIST_START,
  FETCH_ORDERS_DETAILS_START,
  CANCEL_ORDERS_START,
  INVOICE_ORDERS_START,
  FETCH_MORE_ORDERS_LIST_START,
  TRANSACTION_LIST_START,
  MORE_TRANSACTION_LIST_START,
  ORDERS_SEND_CANCEL_REQUEST_START,
  ORDERS_SEND_RETURN_REQUEST_START,
  ORDERS_CHECKOUT_START,
  UPI_INITENT_CHECKOUT_START,
} from "../actions/ActionConstant";

import {
  saveOrdersDirectSuccess,
  saveOrdersDirectFailure,
  saveOrdersCartSuccess,
  saveOrdersCartFailure,
  orderStatusSuccess,
  orderStatusFailure,
  fetchOrdersListStart,
  fetchOrdersListSuccess,
  fetchOrdersListFailure,
  fetchOrdersDetailsSuccess,
  fetchOrdersDetailsFailure,
  cancelOrdersSuccess,
  cancelOrdersFailure,
  invoiceOrdersSuccess,
  invoiceOrdersFailure,
  transactionListSuccess,
  transactionListFailure,
  ordersSendCancelRequestSuccess,
  ordersSendCancelRequestFailure,
  ordersSendReturnRequestSuccess,
  ordersSendReturnRequestFailure,
  ordersCheckoutSuccess,
  ordersCheckoutFailure,
  upiIntentCheckoutSuccess,
  upiIntentCheckoutFailure
} from "../actions/OrdersAction";

function* saveOrdersDirectAPI(action) {
  try {
    const response = yield api.postMethod("orders_direct_checkout", action.data);

    if (response.data.success) {
      yield put(saveOrdersDirectSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.message);
    } else {
      yield put(saveOrdersDirectFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(saveOrdersDirectFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }

}

function* saveOrdersCartAPI(action) {
  try {
    const response = yield api.postMethod("orders_cart_checkout", action.data);

    if (response.data.success) {
      yield put(saveOrdersCartSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.message);
    } else {
      yield put(saveOrdersCartFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(saveOrdersCartFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }

}

function* fetchOrdersListAPI(action) {
  try {
    const response = yield api.postMethod("orders_list", action.data);

    if (response.data.success) {
      yield put(fetchOrdersListSuccess(response.data.data));
    } else {
      yield put(fetchOrdersListFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(fetchOrdersListFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* fetchOrdersDetailsAPI(action) {
  try {
    const response = yield api.postMethod("orders_view", action.data);

    if (response.data.success) {
      yield put(fetchOrdersDetailsSuccess(response.data.data));
    } else {
      yield put(fetchOrdersDetailsFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(fetchOrdersDetailsFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* cancelOrdersAPI(action) {
  try {
    const response = yield api.postMethod("orders_cancel", action.data);

    if (response.data.success) {
      yield put(cancelOrdersSuccess(response.data.data));
    } else {
      yield put(cancelOrdersFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(cancelOrdersFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* invoiceOrdersAPI(action) {
  try {
    const response = yield api.postMethod("orders_invoice", action.data);

    if (response.data.success) {
      yield put(invoiceOrdersSuccess(response.data.data));
    } else {
      yield put(invoiceOrdersFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(invoiceOrdersFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* fetchtransactionListAPI(action) {
  try {
    const response = yield api.postMethod("order_payments_list", action.data);

    if (response.data.success) {
      yield put(transactionListSuccess(response.data.data));
    } else {
      yield put(transactionListFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(transactionListFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}


function* ordersSendCancelRequestAPI(action) {
  try {
    const response = yield api.postMethod("orders_send_cancel_request", action.data);

    if (response.data.success) {
      yield put(ordersSendCancelRequestSuccess(response.data.data));
      yield put(fetchOrdersDetailsSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.data.message);
    } else {
      yield put(ordersSendCancelRequestFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(ordersSendCancelRequestFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* ordersSendReturnRequestAPI(action) {
  try {
    const response = yield api.postMethod("orders_send_return_request", action.data);

    if (response.data.success) {
      yield put(ordersSendReturnRequestSuccess(response.data.data));
      yield put(fetchOrdersDetailsSuccess(response.data.data));
    } else {
      yield put(ordersSendReturnRequestFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(ordersSendReturnRequestFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* ordersCheckoutAPI(action) {
  try {
    const jsonResponse = yield api.getLocation();
    const response = yield api.postMethod("orders_checkout", {
      ...action.data,
      country_code: jsonResponse.country,
      state: jsonResponse.region,
    });

    if (response.data.success) {
      yield put(ordersCheckoutSuccess(response.data.data));
    } else {
      yield put(ordersCheckoutFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(ordersCheckoutFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* upiIntentCheckoutAPI(action) {
  try {

    const response = yield api.postMethod("payment_payin", action.data);

    if (response.data.success) {
      yield put(upiIntentCheckoutSuccess(response.data.data));
    } else {
      yield put(upiIntentCheckoutFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(upiIntentCheckoutFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }
}

function* orderStatusAPI(action) {
  try {
    const response = yield api.postMethod("payment_payin_status", action.data);

    if (response.data.success) {
      yield put(orderStatusSuccess(response.data.data));
      yield call(getSuccessNotificationMessage, response.message);
    } else {
      yield put(orderStatusFailure(response.data.error));
      yield call(getErrorNotificationMessage, response.data.error);
    }
  } catch (error) {
    yield put(orderStatusFailure(error));
    yield call(getErrorNotificationMessage, error.message);
  }

}

export default function* pageSaga() {
  yield all([
    yield takeLatest(SAVE_ORDERS_DIRECT_START, saveOrdersDirectAPI),
    yield takeLatest(SAVE_ORDERS_CART_START, saveOrdersCartAPI),
    yield takeLatest(ORDER_STATUS_START, orderStatusAPI),
    yield takeLatest(FETCH_ORDERS_LIST_START, fetchOrdersListAPI),
    yield takeLatest(FETCH_MORE_ORDERS_LIST_START, fetchOrdersListAPI),
    yield takeLatest(FETCH_ORDERS_DETAILS_START, fetchOrdersDetailsAPI),
    yield takeLatest(CANCEL_ORDERS_START, cancelOrdersAPI),
    yield takeLatest(INVOICE_ORDERS_START, invoiceOrdersAPI),
    yield takeLatest(TRANSACTION_LIST_START, fetchtransactionListAPI),
    yield takeLatest(MORE_TRANSACTION_LIST_START, fetchtransactionListAPI),
    yield takeLatest(ORDERS_SEND_CANCEL_REQUEST_START, ordersSendCancelRequestAPI),
    yield takeLatest(ORDERS_SEND_RETURN_REQUEST_START, ordersSendReturnRequestAPI),
    yield takeLatest(ORDERS_CHECKOUT_START, ordersCheckoutAPI),
    yield takeLatest(UPI_INITENT_CHECKOUT_START, upiIntentCheckoutAPI),
  ]);
}
Back to Directory File Manager