Untitled

 avatar
unknown
javascript
2 years ago
8.1 kB
3
Indexable
import {model, Schema} from 'mongoose';
import {convertDateToUnix} from "../utils/dates.js";

const PartnershipsSchema = new Schema(
    {
        title: {
            type: String,
            required: true,
        },
        content: {
            type: String,
            required: true,
        },
        metaTitle: {
            type: String,
            required: true,
        },
        metaDesc: {
            type: String,
            required: true,
        },
        pic: {
            type: String,
            required: true,
            default:
                'https://www.hindustantimes.com/ht-img/img/2023/04/10/550x309/Why-do-doctors-oppose-such-Acts--Why-would-they-no_1681127776786.jpg',
        },
        author: {
            type: String,
            required: true
        },
        authorPic: {
            type: String,
            required: true,
            default: 'https://i.stack.imgur.com/l60Hf.png'
        },
        tags: {
            type: Array,
            required: true,
        },
        readMinutes: {
            type: Number,
            required: true,
            default: 0
        },
        scheduled: {
            type: Boolean,
            default: false
        },
        scheduledTime: {
            type: Number,
            default: function () {
                return convertDateToUnix(this.createdAt)
            }
        }
    },

    {
        timestamps: true,
    }
);

const Partnerships = model('Partnerships', PartnershipsSchema);
export default Partnerships;


import asyncHandler from "express-async-handler";
import {convertDateToUnix} from "../utils/dates.js";
import EditorialContact from "../models/EditorialContact.js";
import Partnerships from "../models/Partnerships.js";
import PartnershipSubscribers from "../models/PartnershipSubscriber.js";

export const getPartnerships = asyncHandler(async (req, res) => {
    try {
        const currentTime = convertDateToUnix(new Date())
        const partnerships = await Partnerships.find({})
        const filteredPartnerships = partnerships.filter((partnership) => {
            return partnership.scheduledTime <= currentTime
        })
        return res.json({partnerships: filteredPartnerships})
    } catch (e) {
        return res.json({error: e})
    }
})

export const getScheduledPartnerships = asyncHandler(async (req, res) => {
    try {
        const currentTime = convertDateToUnix(new Date())
        const partnerships = await Partnerships.find({})
        const filteredPartnerships = partnerships.filter((partnership) => {
            return partnership.scheduledTime > currentTime
        })
        return res.json({partnerships: filteredPartnerships})
    } catch (e) {
        return res.json({error: e})
    }
})

export const addPartnership = asyncHandler(async (req, res) => {
    try {
        const {
            title,
            content,
            metaTitle,
            metaDesc,
            pic,
            author,
            authorPic,
            tags,
            readMinutes,
            scheduled,
            scheduledTime
        } = req.body

        let partnership = new Partnerships({
            title,
            content,
            metaTitle,
            metaDesc,
            pic,
            author,
            authorPic,
            tags,
            readMinutes,
            scheduled,
            scheduledTime
        })
        await partnership.save()
        return res.json({partnership})
    } catch (e) {
        return res.json({error: e})
    }
})

export const updatePartnership = asyncHandler(async (req, res) => {
    try {
        const {
            id,
            title,
            content,
            metaTitle,
            metaDesc,
            pic,
            author,
            authorPic,
            tags,
            readMinutes,
            scheduled,
            scheduledTime
        } = req.body
        const partnership = await Partnerships.findById(id)

        if (!partnership) {
            return res.json({error: "Partnership not found!"})
        }

        if (title) partnership.title = title
        if (content) partnership.content = content
        if (metaTitle) partnership.metaTitle = metaTitle
        if (metaDesc) partnership.metaDesc = metaDesc
        if (pic) partnership.pic = pic
        if (author) partnership.author = author
        if (authorPic) partnership.authorPic = authorPic
        if (tags) partnership.tags = tags
        if (readMinutes) partnership.readMinutes = readMinutes
        if (scheduled) partnership.scheduled = scheduled
        if (scheduledTime) partnership.scheduledTime = scheduledTime

        await partnership.save()
        return res.json({partnership})
    } catch (e) {
        return res.json({error: e})
    }
})

export const deletePartnership = asyncHandler(async (req, res) => {
    try {
        const {id} = req.params;
        const partnership = await Partnerships.findById(id);

        if (!partnership) {
            return res.json({error: "Partnership not found!"});
        }

        await partnership.remove();
        return res.json({message: "Partnership deleted successfully"});
    } catch (e) {
        return res.json({error: e});
    }
});

export const deleteAllPartnerships = asyncHandler(async (req, res) => {
    try {
        const {username, password} = req.body;
        if (username !== 'editor' || password !== 'editor12345') {
            return res.json({error: "Invalid username or password"});
        }

        const deleteResult = await Partnerships.deleteMany({});
        if (deleteResult.deletedCount === 0) {
            return res.json({message: "No partnerships found"});
        }

        return res.json({message: "All partnerships deleted successfully"});
    } catch (e) {
        return res.json({error: e});
    }
});

export const getPartnershipById = asyncHandler(async (req, res) => {
    try {
        const {id} = req.params;
        const partnership = await Partnerships.findById(id);

        if (!partnership) {
            return res.json({error: "Partnership not found!"});
        }

        return res.json({partnership});
    } catch (e) {
        return res.json({error: e});
    }
});

export const addPartnershipSubscriber = asyncHandler(async (req, res) => {
    try {
        const {email} = req.body
        let subscriber = new PartnershipSubscribers({email})
        await subscriber.save()
        return res.json({subscriber})
    } catch (e) {
        return res.json({error: e})
    }
})

export const addEditorialContact = asyncHandler(async (req, res) => {
    try {
        const {name, email, subject, message} = req.body
        let contact = new EditorialContact({name, email, subject, message})
        await contact.save()
        return res.json({contact})
    } catch (e) {
        return res.json({error: e})
    }
})


import {model, Schema} from 'mongoose';

const PartnershipSubscriberSchema = new Schema(
    {
        email: {
            type: String,
            required: true,
        },
    },
    {
        timestamps: true,
    }
);

const PartnershipSubscribers = model('PartnershipSubscribers', PartnershipSubscriberSchema);
export default PartnershipSubscribers;


//partnerships
router.get('/partnerships/getPartnerships', getPartnerships)
router.get('/partnerships/getScheduledPartnerships', getScheduledPartnerships)
router.post('/partnerships/addPartnership', addPartnership)
router.put('/partnerships/updatePartnership', updatePartnership)
router.delete('/partnerships/deletePartnership/:id', deletePartnership)
router.get('/partnerships/getPartnership/:id', getPartnershipById)
router.post('/partnerships/addPartnershipSubscriber', addPartnershipSubscriber)
router.post('/partnerships/deleteAllPartnerships', deleteAllPartnerships)
Editor is loading...