// src/contact/contact.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ContactMessage } from './contact-message.entity';
import { CreateContactDto } from './dto/create-contact.dto';
import { MailService } from '../mail/mail.service';

@Injectable()
export class ContactService {
  constructor(
    @InjectRepository(ContactMessage) private repo: Repository<ContactMessage>,
    private mailService: MailService,
  ) { }

  async create(dto: CreateContactDto, userId?: number) {
    const entity = this.repo.create({
      title: dto.title.trim(),
      subject: dto.subject.trim(),
      user: userId ? ({ id: userId } as any) : null,
      status: 'new',
    });
    const saved = await this.repo.save(entity);

    // Notify Admin
    this.mailService.sendAdminContactNotification({
      title: dto.title,
      subject: dto.subject,
      email: 'Anonymous' // Could get user email if userId exists
    });

    return saved;
  }

  // Admin list
  async list(skip = 0, take = 20) {
    const [items, total] = await this.repo.findAndCount({
      order: { id: 'DESC' },
      skip, take,
      relations: ['user'],
    });
    return { total, items };
  }
}
