Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/packages / libraries / react-server / middleware / exportAccountMiddleware.js
Size: Mime:
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