// // src/controllers/vendor.controller.ts
// import { Request, Response } from 'express';
// import { getRepository } from 'typeorm';
// import { Vendor } from '../entities/vendor.entity';
// import { VendorRequest, VendorResponse } from '../dto/vendor.dto';

// export class VendorController {
//   private vendorRepository = getRepository(Vendor);

//   async registerVendor(req: Request, res: Response) {
//     try {
//       const userId = (req as any).user.userId;
//       const vendorData: VendorRequest = req.body;

//       // Check if user already has a vendor account
//       const existingVendor = await this.vendorRepository.findOne({ where: { user_id: userId } });
//       if (existingVendor) {
//         return res.status(400).json({ message: 'Vendor account already exists' });
//       }

//       const vendor = this.vendorRepository.create({
//         ...vendorData,
//         user_id: userId
//       });

//       await this.vendorRepository.save(vendor);

//       // Update user role to vendor
//       const userRepository = getRepository(User);
//       await userRepository.update(userId, { role: 'vendor' });

//       const response: VendorResponse = {
//         vendor_id: vendor.vendor_id,
//         business_name: vendor.business_name,
//         gstin: vendor.gstin,
//         is_gst_registered: vendor.is_gst_registered,
//         user_id: vendor.user_id
//       };

//       res.status(201).json(response);
//     } catch (error) {
//       res.status(500).json({ message: 'Error registering vendor', error: error.message });
//     }
//   }

//   async getVendorProfile(req: Request, res: Response) {
//     try {
//       const userId = (req as any).user.userId;
//       const vendor = await this.vendorRepository.findOne({ where: { user_id: userId } });

//       if (!vendor) {
//         return res.status(404).json({ message: 'Vendor profile not found' });
//       }

//       const response: VendorResponse = {
//         vendor_id: vendor.vendor_id,
//         business_name: vendor.business_name,
//         gstin: vendor.gstin,
//         is_gst_registered: vendor.is_gst_registered,
//         user_id: vendor.user_id
//       };

//       res.json(response);
//     } catch (error) {
//       res.status(500).json({ message: 'Error fetching vendor profile', error: error.message });
//     }
//   }

//   async updateVendorProfile(req: Request, res: Response) {
//     try {
//       const userId = (req as any).user.userId;
//       const updateData: VendorRequest = req.body;

//       await this.vendorRepository.update({ user_id: userId }, updateData);
//       const updatedVendor = await this.vendorRepository.findOne({ where: { user_id: userId } });

//       const response: VendorResponse = {
//         vendor_id: updatedVendor!.vendor_id,
//         business_name: updatedVendor!.business_name,
//         gstin: updatedVendor!.gstin,
//         is_gst_registered: updatedVendor!.is_gst_registered,
//         user_id: updatedVendor!.user_id
//       };

//       res.json(response);
//     } catch (error) {
//       res.status(500).json({ message: 'Error updating vendor profile', error: error.message });
//     }
//   }
// }