const discountService = require('../services/discount.service');
const { OK, Created } = require('../core/success.response');

const discountController = {
    // Admin: Tạo mã giảm giá
    create: async (req, res) => {
        const discount = await discountService.createDiscount(req.body);
        return new Created({
            message: 'Tạo mã giảm giá thành công',
            metadata: discount,
        }).send(res);
    },

    // Admin: Lấy tất cả
    getAll: async (req, res) => {
        const discounts = await discountService.getAllDiscounts();
        return new OK({
            message: 'Lấy danh sách mã giảm giá thành công',
            metadata: discounts,
        }).send(res);
    },

    // Admin: Cập nhật
    update: async (req, res) => {
        const { id } = req.params;
        const discount = await discountService.updateDiscount(id, req.body);
        return new OK({
            message: 'Cập nhật mã giảm giá thành công',
            metadata: discount,
        }).send(res);
    },

    // Admin: Xóa
    delete: async (req, res) => {
        const { id } = req.params;
        await discountService.deleteDiscount(id);
        return new OK({
            message: 'Xóa mã giảm giá thành công',
        }).send(res);
    },

    // User: Áp dụng mã
    apply: async (req, res) => {
        const userId = req.user.id;
        const { code, orderTotal } = req.body;
        const result = await discountService.validateAndApplyDiscount(code, userId, orderTotal);
        return new OK({
            message: 'Áp dụng mã giảm giá thành công',
            metadata: result,
        }).send(res);
    },
};

module.exports = discountController;
