const { body, param, validationResult } = require('express-validator')
const { _sr } = require('../plugins/serverResponses')
const { checkValidations } = require('../plugins/controllersHelperFunctions')
const User = require('../models/GPS.User')

module.exports.addCard = [
    [
        body('holderName').notEmpty().isString().withMessage(_sr.fa.required.name),
        body('PAN').notEmpty().isInt().withMessage(_sr.fa.required.store_number),
        body('IBAN').notEmpty().isIBAN().withMessage(_sr.fa.required.address)
    ],
    checkValidations(validationResult),
    async (req, res) => {
        try {
            const { holderName, PAN, IBAN } = req.body;
            const userData = await User.findById(req.user_id).select('id cardBank')
            if (userData?.cardBank && Array.isArray(userData?.cardBank)) {
                userData.cardBank.push({
                    holderName,
                    PAN,
                    IBAN
                })
                userData.save()
                res.status(201).json({ msg: 'با موفقیت ثبت شد ' })
            } else {
                userData.cardBank = [{
                    holderName,
                    PAN,
                    IBAN
                }];
                userData.save()
                res.status(201).json({ msg: 'با موفقیت ثبت شد ' })
            }
        } catch (error) {
            res.status(500).json({ msg: error })

        }
    }
]


module.exports.getAll = [
    async (req, res) => {
        const userData = await User.findById(req.user_id).select('id cardBank')
        res.status(200).json(userData)
    }
]


module.exports.deleteCard = [
    [
        param('id').notEmpty().isMongoId().withMessage('این ایدی اشتباه می باشد')
    ],
    checkValidations(validationResult),
    async (req, res) => {
        const userData = await User.findOneAndUpdate(
            {
                _id: req.user_id,
                "cardBank._id": req.params.id
            },
            {
                $pull: {
                    cardBank: { _id: req.params.id }
                }
            },
            { new:true }
        ).select('id cardBank')
        // res.status(200).json({ msg: "با موفقیت حذف شد ", data: userData })
        res.status(200).json(userData)

    }
]