const Warehouse = require('./warehouseModel') const AppError = require('../../globalErrorHandler/AppError') const createWarehouse = async (data) => { const warehouse = await Warehouse.create({ name: data.name, code: data.code || undefined, location: data.location, manager: data.manager, description: data.description, }) return warehouse } const listWarehouses = async (query = {}) => { const filter = {} if (query.isActive !== undefined) filter.isActive = query.isActive === 'true' if (query.search) { filter.$or = [ { name: { $regex: query.search, $options: 'i' } }, { code: { $regex: query.search, $options: 'i' } }, ] } const warehouses = await Warehouse.find(filter) .populate('manager', 'name email') .sort({ createdAt: -1 }) return warehouses } const getWarehouse = async (warehouseId) => { const warehouse = await Warehouse.findById(warehouseId).populate('manager', 'name email') if (!warehouse) throw new AppError('انبار یافت نشد', 404, {}) return warehouse } const updateWarehouse = async (warehouseId, data) => { const allowed = ['name', 'code', 'location', 'manager', 'description', 'isActive'] const update = {} allowed.forEach((field) => { if (data[field] !== undefined) update[field] = data[field] }) const warehouse = await Warehouse.findByIdAndUpdate(warehouseId, update, { new: true, runValidators: true }) if (!warehouse) throw new AppError('انبار یافت نشد', 404, {}) return warehouse } const deleteWarehouse = async (warehouseId) => { const warehouse = await Warehouse.findByIdAndUpdate(warehouseId, { isActive: false }, { new: true }) if (!warehouse) throw new AppError('انبار یافت نشد', 404, {}) return warehouse } module.exports = { createWarehouse, listWarehouses, getWarehouse, updateWarehouse, deleteWarehouse, }