Files
old-new-wiaas/frontend/src/actions/orders/processActions.js

351 lines
12 KiB
JavaScript
Raw Normal View History

2018-06-14 16:49:28 +02:00
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';
2018-06-14 16:49:28 +02:00
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'
})
2018-06-14 16:49:28 +02:00
.then(response => {
if (response.data) {
dispatch(recieveOrderInfo(fromWCOrder(response.data)));
2018-06-14 16:49:28 +02:00
}
})
.catch(error => {
htmlClient.onError(error, dispatch);
});
}
}
const sendComment = () => ({
type: SEND_ORDER_COMMENT
})
2018-08-26 17:23:33 +02:00
export const addComment = (idOrder, newComment) => {
2018-06-14 16:49:28 +02:00
return dispatch => {
dispatch(sendComment());
2018-08-15 22:19:24 +02:00
2018-06-14 16:49:28 +02:00
return htmlClient.fetch({
2018-08-26 17:23:33 +02:00
url: `${API_SERVER}/wp-json/wc/v2/orders/${idOrder}/notes`,
method: 'post',
data: {
2018-08-26 17:23:33 +02:00
note : newComment || 'Test comment',
customer_note: true,
}
})
2018-06-14 16:49:28 +02:00
.then(response => {
if (response.data) {
dispatch(fetchOrderInfo(idOrder));
}
/*
2018-06-14 16:49:28 +02:00
if (response.data && response.data.messages) {
dispatch(updateMessages(response.data.messages, orderMessages));
dispatch(fetchOrderInfo(idOrder));
}
*/
2018-06-14 16:49:28 +02:00
})
.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
});
2018-11-19 12:35:04 +01:00
export const sendSupportMail = (orderInfo, orderPackages, support_text) => {
let id = orderInfo.id;
2018-06-14 16:49:28 +02:00
return dispatch => {
return htmlClient.fetch({
2018-11-19 12:35:04 +01:00
url: `${API_SERVER}/wp-json/wiaas/support/send-support-email`,
2018-06-14 16:49:28 +02:00
method: 'post',
2018-11-19 12:35:04 +01:00
data: {id, support_text}
2018-06-14 16:49:28 +02:00
})
.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
});