GIF89a php
Current File : /home/viralhoga/glambooth_viralhoga_com/src/controllers/template.controller.js
import { Template } from '../models/template.model.js';
import { ApiResponse } from '../utils/ApiResponse.js';
import fs from 'fs';

export const createTemplate = async (req, res) => {
    const { userId, uploadedBy } = req.body;


    const template = req.file?.path;
    console.log(template);


    // if (!template || !uploadedBy) {
    //     return res.status(400).json(new ApiResponse(400, "All fields are required"));
    // }

    try {
        const data = await Template.create({
            userId: userId,
            template: template,
            uploadedBy: uploadedBy
        });
        return res.json(new ApiResponse(201, data, "Template created successfully"));
    } catch (error) {
        console.log(error);
        return res.status(500).json({ message: error.message });
    }
};

export const getTemplates = async (req, res) => {

    const { userId, type } = req.query;

    let filter = {};

    try {
        if (type === 'admin') {
            filter.uploadedBy = 'admin';
        } else if (userId) {
            filter = {
                $or: [
                    { userId: userId },
                    { uploadedBy: 'admin' }
                ]
            };
        }
        const templates = await Template.find(filter).sort({ createdAt: -1 });
        
        return res.json(new ApiResponse(200, templates, "Templates fetched successfully"));

    } catch (error) {
        console.log(error);
        return res.status(500).json({ message: error.message });
    }
};

export const updateTemplate = async (req, res) => {
    try {
        const existingTemplate = await Template.findById(req.params.id);
        if (!existingTemplate) {
            return res.status(404).json(new ApiResponse(404, null, "Template not found"));
        }

        if (existingTemplate.template) {
            fs.unlinkSync(existingTemplate.template);
        }

        const template = await Template.findByIdAndUpdate(
            req.params.id,
            req.body,
            { new: true }
        );
        return res.json(new ApiResponse(200, template, "Template updated successfully"));
    } catch (error) {
        console.log(error);
        return res.status(500).json({ message: error.message });
    }
};

export const deleteTemplate = async (req, res) => {
    try {
        const template = await Template.findById(req.params.id);
        if (!template) {
            return res.status(404).json(new ApiResponse(404, null, "Template not found"));
        }

        if (template.template) {
            fs.unlinkSync(template.template);
        }

        await Template.findByIdAndDelete(req.params.id);
        return res.json(new ApiResponse(200, template, "Template deleted successfully"));
    } catch (error) {
        console.log(error);
        return res.status(500).json({ message: error.message });
    }
};