351 lines
12 KiB
JavaScript
351 lines
12 KiB
JavaScript
import {
|
|
API_SERVER
|
|
} from '../../config';
|
|
import {
|
|
orderMessages,
|
|
REQUEST_ORDER_INFO,
|
|
RECEIVE_ORDER_INFO,
|
|
SEND_ORDER_COMMENT,
|
|
REQUEST_CUSTOMER_DOCUMENTS,
|
|
RECEIVE_CUSTOMER_DOCUMENTS,
|
|
RE_UPLOAD_DOCUMENT,
|
|
REQUEST_VALIDATION_COMMENTS,
|
|
RECEIVE_VALIDATION_COMMENTS,
|
|
REQUEST_IS_NEXT_STEP_WANTED,
|
|
RECEIVE_IS_NEXT_STEP_WANTED,
|
|
RECEIVE_IS_COMPONENT_DISABLED,
|
|
SET_EARLIEST_INSTALLATION_DATE,
|
|
SET_CONFIRMATION_DATES,
|
|
REQUEST_INSTALLATION_COMPANIES,
|
|
RECEIVE_INSTALLATION_COMPANIES,
|
|
REQUEST_ALL_SHIPPING_DATES_CONFIRMED,
|
|
RECEIVE_ALL_SHIPPING_DATES_CONFIRMED,
|
|
SET_SUPPORT_MESSAGE,
|
|
SET_SCHEDULING_DISABLED_FLAG
|
|
} from '../../constants/ordersConstants';
|
|
import HtmlClient from '../../helpers/HtmlClient';
|
|
import { updateMessages } from '../notification/notificationActions';
|
|
import { fromWCOrder } from '../../helpers/OrderHelper';
|
|
import moment from 'moment';
|
|
|
|
const htmlClient = new HtmlClient();
|
|
|
|
const requestOrderInfo = () => ({
|
|
type: REQUEST_ORDER_INFO,
|
|
isLoading: true
|
|
});
|
|
const recieveOrderInfo = (json) => ({
|
|
type: RECEIVE_ORDER_INFO,
|
|
isLoading: false,
|
|
orderInfo: json
|
|
});
|
|
|
|
export const fetchOrderInfo = (idOrder) => {
|
|
return dispatch => {
|
|
dispatch(requestOrderInfo());
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/wp-json/wc/v2/orders/${idOrder}`,
|
|
method: 'get'
|
|
})
|
|
.then(response => {
|
|
if (response.data) {
|
|
dispatch(recieveOrderInfo(fromWCOrder(response.data)));
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
const sendComment = () => ({
|
|
type: SEND_ORDER_COMMENT
|
|
})
|
|
|
|
export const addComment = (idOrder, newComment) => {
|
|
return dispatch => {
|
|
dispatch(sendComment());
|
|
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/wp-json/wc/v2/orders/${idOrder}/notes`,
|
|
method: 'post',
|
|
data: {
|
|
note : newComment || 'Test comment',
|
|
customer_note: true,
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (response.data) {
|
|
dispatch(fetchOrderInfo(idOrder));
|
|
}
|
|
/*
|
|
if (response.data && response.data.messages) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
dispatch(fetchOrderInfo(idOrder));
|
|
}
|
|
*/
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
const requestCustomerDocuments = () => ({
|
|
type: REQUEST_CUSTOMER_DOCUMENTS
|
|
});
|
|
const recieveCustomerDocuments = (json) => ({
|
|
type: RECEIVE_CUSTOMER_DOCUMENTS,
|
|
customerDocuments: json
|
|
});
|
|
|
|
export const fetchCustomerDocuments = (idOrder, documentType, idPackage = 0) => {
|
|
return dispatch => {
|
|
dispatch(requestCustomerDocuments());
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/getOrderDocumentsPerType`,
|
|
method: 'post',
|
|
data: {
|
|
idOrder,
|
|
idPackage,
|
|
documentType
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined' && 'documents' in response.data) {
|
|
dispatch(recieveCustomerDocuments(response.data.documents));
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
const requestValidationComments = () => ({
|
|
type: REQUEST_VALIDATION_COMMENTS
|
|
});
|
|
const recieveValidationComments = (json) => ({
|
|
type: RECEIVE_VALIDATION_COMMENTS,
|
|
validationComments: json
|
|
});
|
|
|
|
export const fetchValidationComments = (idOrder, idProcessStep, commentType) => {
|
|
return dispatch => {
|
|
dispatch(requestValidationComments());
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/getCommentsByType`,
|
|
method: 'post',
|
|
data: {
|
|
idOrder,
|
|
idProcessStep,
|
|
commentType
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (response.data) {
|
|
dispatch(recieveValidationComments(response.data));
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const reUploadDocumnet = () => ({
|
|
type: RE_UPLOAD_DOCUMENT
|
|
});
|
|
|
|
export const reUploadOrderDocument = (idPackage, idOrder, idDocument, file) => {
|
|
return dispatch => {
|
|
dispatch(reUploadDocumnet());
|
|
return htmlClient.uploadFile(file, {
|
|
url: `${API_SERVER}/orders/api/reUploadQuestionaire`,
|
|
data: {
|
|
idPackage,
|
|
idOrder,
|
|
idDocument
|
|
}
|
|
}).then(response => {
|
|
if (typeof response.data !== 'undefined' && 'messages' in response.data) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
dispatch(fetchCustomerDocuments(idOrder, 'orderQuestionaire', idPackage));
|
|
}
|
|
}).catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const badFile = () =>{
|
|
return dispatch => {
|
|
dispatch(updateMessages([{code: 'warning', message: 'INVALID_FILE_QUESTIONNAINRE'}], orderMessages));
|
|
}
|
|
}
|
|
|
|
export const requestIsNextStepWanted = () => ({type: REQUEST_IS_NEXT_STEP_WANTED});
|
|
export const receiveIsNextStepWanted = (json) => ({
|
|
type: RECEIVE_IS_NEXT_STEP_WANTED,
|
|
isNextStepWanted: json
|
|
});
|
|
|
|
const receiveIsComponentDisabled = (isComponentDisabled) => ({
|
|
type: RECEIVE_IS_COMPONENT_DISABLED,
|
|
isComponentDisabled
|
|
});
|
|
|
|
const setEarliestInstallationDate = (earliestInstallDate) => ({
|
|
type: SET_EARLIEST_INSTALLATION_DATE,
|
|
earliestInstallDate
|
|
});
|
|
|
|
const setConfirmationDates = (json) => ({
|
|
type: SET_CONFIRMATION_DATES,
|
|
confirmationDates: json
|
|
});
|
|
export const getInstallationConfirmationDates = (idOrder, idPackage = 0) => {
|
|
return dispatch => {
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/getInstallationDates`,
|
|
method: 'post',
|
|
data: {idOrder, idPackage}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined' && 'confirmationDates' in response.data) {
|
|
dispatch(setConfirmationDates(response.data.confirmationDates));
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
const requestInstallationCompanies = () => ({type: REQUEST_INSTALLATION_COMPANIES});
|
|
const recieveInstallationCompanies = (json) => ({
|
|
type: RECEIVE_INSTALLATION_COMPANIES,
|
|
installCompanies: json
|
|
});
|
|
|
|
const requestAreAllShippingDatesConfirmed = ()=> ({type: REQUEST_ALL_SHIPPING_DATES_CONFIRMED});
|
|
const receiveAreAllShippingDatesConfirmed = (json) => ({
|
|
type: RECEIVE_ALL_SHIPPING_DATES_CONFIRMED,
|
|
areAllShippingDatesConfirmed: json
|
|
});
|
|
|
|
export const getAllDataForInstallation = (idOrder, usedForDirective, stepsNameForInstallation, fileType) => {
|
|
const isNextStepTheOneWanted = {};
|
|
return dispatch => {
|
|
dispatch(requestInstallationCompanies());
|
|
dispatch(requestIsNextStepWanted());
|
|
dispatch(requestCustomerDocuments());
|
|
dispatch(requestAreAllShippingDatesConfirmed());
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/getAllDataForInstallation`,
|
|
method: 'post',
|
|
data: {idOrder, stepsNameForInstallation, fileType}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined') {
|
|
if ('messages' in response.data) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
}
|
|
if('installCompanies' in response.data) {
|
|
dispatch(recieveInstallationCompanies(response.data.installCompanies));
|
|
}
|
|
if('earliestInstallationDate' in response.data) {
|
|
dispatch(setEarliestInstallationDate(response.data.earliestInstallationDate));
|
|
}
|
|
if ('installationDates' in response.data) {
|
|
dispatch(setConfirmationDates(response.data.installationDates.confirmationDates));
|
|
}
|
|
if('isNextStepWanted' in response.data) {
|
|
isNextStepTheOneWanted[usedForDirective] = response.data.isNextStepWanted;
|
|
|
|
dispatch(receiveIsNextStepWanted(isNextStepTheOneWanted));
|
|
dispatch(receiveIsComponentDisabled(isNextStepTheOneWanted));
|
|
}
|
|
if('areAllShippingDatesConfirmed' in response.data) {
|
|
dispatch(receiveAreAllShippingDatesConfirmed(response.data.areAllShippingDatesConfirmed));
|
|
}
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
};
|
|
}
|
|
|
|
export const updateInstallationDate = (idOrder, idPackage, installationDate, status, clearDateInput='') => {
|
|
return dispatch => {
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/updateInstallationDate`,
|
|
method: 'post',
|
|
data: {idOrder, idPackage, installationDate, status}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined' && 'messages' in response.data) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
if(response.data.messages.find(messageObj => {return messageObj.code === 'success';})) {
|
|
if(clearDateInput) {
|
|
clearDateInput(undefined);
|
|
}
|
|
}
|
|
}
|
|
dispatch(getInstallationConfirmationDates(idOrder, idPackage));
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const removeMyDate = (idOrder, idPackage, installationDate) => {
|
|
return dispatch => {
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/orders/api/removeMyDate`,
|
|
method: 'post',
|
|
data: {idOrder, idPackage, installationDate}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined' && 'messages' in response.data) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
}
|
|
dispatch(getInstallationConfirmationDates(idOrder, idPackage));
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const setSupportMessage = (message) => ({
|
|
type: SET_SUPPORT_MESSAGE,
|
|
supportText: message
|
|
});
|
|
|
|
export const sendSupportMail = (orderInfo, orderPackages, support_text) => {
|
|
let id = orderInfo.id;
|
|
return dispatch => {
|
|
return htmlClient.fetch({
|
|
url: `${API_SERVER}/wp-json/wiaas/support/send-support-email`,
|
|
method: 'post',
|
|
data: {id, support_text}
|
|
})
|
|
.then(response => {
|
|
if (typeof response.data !== 'undefined' && 'messages' in response.data) {
|
|
dispatch(updateMessages(response.data.messages, orderMessages));
|
|
}
|
|
})
|
|
.catch(error => {
|
|
htmlClient.onError(error, dispatch);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const setSchedulingFlag = (flag) => ({
|
|
type: SET_SCHEDULING_DISABLED_FLAG,
|
|
isSchedulingDisabled: flag
|
|
});
|