Repository URL to install this package:
|
Version:
0.0.6 ▾
|
import JSZip from 'jszip';
import { format, isDate } from 'date-fns';
import { userContainer } from '@skava/packages/core/auth/user';
import { transformProfileData, transformOrderHistory } from '@skava/packages/core/auth/user/privacySection/transform';
import { orderHistoryContainer } from '@skava/packages/pages/Orders/orderState/container.order-history';
import { getTyped } from 'composition';
import { updateAddress } from '@skava/packages/core/auth/user/bindings';
import { setCookieHeaders } from 'src/bootstrap/client/apolloClient';
export async function exportAccountMiddleware(req, res, next) {
const userDetail = {
orderHistoryCsv: '',
profileDataCsv: '',
};
const sessionId = req.headers.cookie || '';
setCookieHeaders(sessionId);
const privacyData = req.query;
const date = new Date(req.query.timeStamp);
const currentDate = isDate(date) ? date : new Date();
const timeStamp = format(currentDate, 'YYYYMMDDHHmmss');
const zip = new JSZip();
const orderHistoryResponse = await orderHistoryContainer.getOrderHistory();
const addressInfo = await updateAddress();
const { obj } = getTyped(orderHistoryResponse);
const orderList = obj('data.orderList');
const { array } = getTyped(addressInfo);
const userAddress = array('data.getUserAddresses.addressinfo');
// setCookieHeaders('')
// await sessionContainer.fetchProfile(true, true)
userDetail.orderHistoryCsv = transformOrderHistory(orderList);
userDetail.profileDataCsv = transformProfileData(userContainer, userAddress, privacyData);
const { firstName, lastName } = userContainer.userinfo;
zip.file('ProfileDetails.csv', userDetail.profileDataCsv);
zip.file('OrderDetails.csv', userDetail.orderHistoryCsv);
const fileName = firstName + lastName + timeStamp;
res.status(200);
res.type('application/zip');
res.attachment(fileName + '.zip');
zip
.generateNodeStream({ type: 'nodebuffer', streamFiles: true })
.pipe(res)
.on('finish', (arg) => {
console.log('zip download completed.', arg);
});
}
export default { exportAccountMiddleware };
//# sourceMappingURL=exportAccountMiddleware.js.map