import { Request, Response, NextFunction } from 'express';
import { UserService } from '../services/UserService';
import { UserView } from '../views/UserView';

export class UserController {
  constructor(private userService = new UserService()) {}

  getMe = async (req: Request, res: Response, next: NextFunction) => {
    try {
      const user = await this.userService.getById(req.userId!);
      res.json(UserView.toPublic(user));
    } catch (err) {
      next(err);
    }
  };

  updateMe = async (req: Request, res: Response, next: NextFunction) => {
    try {
      const user = await this.userService.updateProfile(req.userId!, req.body);
      res.json(UserView.toPublic(user));
    } catch (err) {
      next(err);
    }
  };
}
