front/controllers/deposit/index.js

/* ============================================================================ *\
|| ########################################################################## ||
|| # Auction Software Marketplace          Release: 0.6   Build 0.7         # ||
|| # ---------------------------------------------------------------------- # ||
|| # License # 35YAHCNR9344X6O666C123AB                                     # ||
|| # ---------------------------------------------------------------------- # ||
|| # Copyright ©2014–2021 Develop Scripts LLC. All Rights Reserved          # ||
|| # This file may not be redistributed in whole or significant part.       # ||
|| # ------------- AUCTION SOFTWARE IS NOT FREE SOFTWARE ------------------ # ||
|| # http://www.auctionsoftwaremarketplace.com|support@auctionsoftware.com  # ||
|| # ---------------------------------------------------------------------- # ||
|| ########################################################################## ||
\* ============================================================================ */

/* eslint-disable prefer-destructuring */
/* eslint-disable no-param-reassign */
const commonFunction = require('../../../common/function').default
const depositModule = require('../../modules/deposit').default
const cartModule = require('../../modules/cart').default
const buynowCommonCtrl = require('../buynow/common')
const appointmentCtrl = require('../appointment')
const schemaModule = require('./schema').default
const { jsonResponse, errorResponse } = require('../logger')

const getdynamicinnercontents = async (req, responseData) => {
    const returnResponse = responseData
    returnResponse.totalRecords = returnResponse.totalRecords[0]
        ? returnResponse.totalRecords[0].totallength
        : 0

    let disp = (parseInt(req.body.page, 10) - 1) * req.body.limit + 1
    const afifen = (parseInt(req.body.page, 10) - 1) * req.body.limit + parseInt(req.body.limit, 10)
    const orgifen = afifen > returnResponse.totalRecords ? returnResponse.totalRecords : afifen
    disp = returnResponse.totalRecords === 0 ? 0 : disp
    returnResponse.setDisp = `${disp}-${orgifen}`
    return returnResponse
}

/**
 * Get all Invoice Details
 *
 * @memberOf frontend.product
 * @param {object} req req object
 * @param {depositModule.getInvoiceCartDetails} modules
 * @param {depositModule.getAllTransactions} modules
 * @param {array} items Items array in which image url is added to the name
 */
const getDepositDetails = async (req) => {
    let responseData = {}
    const [invoiceItems] = await Promise.all([depositModule.allDepositItems(req, req.body, 1)])

    if (invoiceItems.length > 0) {
        responseData = {
            status: 'success',
            responseType: 1,
            message: 'Invoice items retrieved!',
            responseData: {
                invoiceItems,
            },
        }
    } else {
        responseData = {
            status: 'error',
            responseType: 2,
            message: 'No record found!',
        }
    }
    return responseData
}

module.exports = {
    /**
     * Get Invoice details
     *
     * @memberOf frontend.invoice
     * @param {frontend.invoice.getDepositDetails} modules
     */
    getDepositDetails,
    deposit: async (req, res) => {
        try {
            await schemaModule.search().validateSync(req.body)
            const [responseData] = await Promise.all([getDepositDetails(req)])
            jsonResponse(res, responseData.status, responseData)
        } catch (e) {
            errorResponse(e, res)
        }
    },
    /**
     * Get all deposits
     *
     * @memberOf frontend.deposit
     * @param {object} req req object
     * @param {object} res res object
     * @param {depositModule.searchBidDepositsProducts} modules
     * @param {frontend.depost.getdynamicinnercontents} modules
     */
    alldeposits: async (req, res) => {
        try {
            let records = []
            let totalRecords = []
            await schemaModule.search().validateSync(req.body)
            ;[records, totalRecords] = await Promise.all([
                depositModule.searchBidDepositsProducts(req, req.body, 1),
                depositModule.searchBidDepositsProducts(req, req.body, 0),
            ])
            totalRecords = [{ totallength: totalRecords.length }]
            let responseData = { records, totalRecords }
            responseData = await getdynamicinnercontents(req, responseData)

            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        } catch (e) {
            errorResponse(e, res)
        }
    },
}