const _ = require('lodash');
const { CMS } = require('../../models/admin/cms');
const { apiResponse} = require("../../core/response/response")
const { SUCCESS, REDIRECTION, CLIENT_ERROR, SERVER_ERROR } = require("../../core/response/statusCode")
const {ERROR_MSG, SUCCESS_MSG} = require("../../core/response/messages")
const mongoose = require("mongoose");
export {}

exports.saveCms = async (req, res) => {
    let lang1 = req.headers["accept-language"] || 'en'
    const {id, about_us, privacy_policy, term_condition, how_it_works, cookies,careers, investor_relations, our_brand_story,lang} = req.body;
    if (_.has(req.body, ['id']) && (req.body.id)!=null){
        CMS.findOneAndUpdate({ _id: mongoose.Types.ObjectId(req.body.id) }, { $set: req.body }, { new: true }, function (err, setting) {

            if (err) return apiResponse(res, true, [], ERROR_MSG[`SYSTEM-ERROR-${lang1}`], SERVER_ERROR.internalServerError, 0, [])

            return apiResponse(res, false, [], '', SUCCESS.OK, 0, [setting],req)

        });
    }
    else{
        //setting
        var newcms = new CMS(_.pick(req.body, ['privacy_policy_en','privacy_policy_fr','privacy_policy_ar','term_condition_en','term_condition_fr','term_condition_ar','about_us_en','about_us_fr','about_us_ar']));
        newcms.save()
        .then(function (record) {
            return apiResponse(res, false, [], '', SUCCESS.OK, 1, [record],req)
        })
        .catch(function (err) {
            return apiResponse(res, true, [], ERROR_MSG[`SYSTEM-ERROR-${lang1}`], SERVER_ERROR.internalServerError, 0, [],req)
        });

    }
}

exports.fetchCms = async (req, res) => {
    try {
        var title_lang = req.params.lang || 'en'
        let privacy_policy = 'privacy_policy_' + title_lang
        let term_condition = 'term_condition_' + title_lang
        let about_us = 'about_us_' + title_lang

        const [data, count] = await Promise.all([
            CMS.find({}).sort({createdAt: -1}),
            CMS.countDocuments()
        ]);
        let result
         = data.map(record => {
            return {
                privacy_policy: record[privacy_policy],
                term_condition:record[term_condition],
                about_us:record[about_us],
                _id: record._id,

            };
        });
        return apiResponse(res, false, [], '', SUCCESS.OK, count, result,req)

    } catch (error) {
         return apiResponse(res, true, [], ERROR_MSG[`SYSTEM-ERROR-${title_lang}`], SERVER_ERROR.internalServerError, 0, [],req)
    }
}


