Tech4biz-channel/Channel-Backend/src/controllers/organization.controller.ts
2026-07-09 09:31:15 +05:30

50 lines
1.5 KiB
TypeScript

import { Request, Response, NextFunction } from 'express';
import { OrganizationService } from '../services/organization.service';
import { z } from 'zod';
const orgSchema = z.object({
name: z.string().min(2),
});
const orgUpdateSchema = z.object({
name: z.string().min(2).optional(),
status: z.string().optional(),
});
export class OrganizationController {
private orgService = new OrganizationService();
public create = async (req: Request, res: Response, next: NextFunction) => {
try {
const data = orgSchema.parse(req.body);
const org = await this.orgService.create(data);
res.status(201).json(org);
} catch(err) { next(err); }
}
public getAll = async (req: Request, res: Response, next: NextFunction) => {
try {
const orgs = await this.orgService.getAll();
res.status(200).json(orgs);
} catch(err) { next(err); }
}
public getById = async (req: Request, res: Response, next: NextFunction) => {
try {
const org = await this.orgService.getById(req.params.id);
if (!org) {
return res.status(404).json({ error: 'Organization not found' });
}
res.status(200).json(org);
} catch(err) { next(err); }
}
public update = async (req: Request, res: Response, next: NextFunction) => {
try {
const data = orgUpdateSchema.parse(req.body);
const org = await this.orgService.update(req.params.id, data);
res.status(200).json(org);
} catch(err) { next(err); }
}
}