/**
 * 배송/화물 관리 컨트롤러
 */

import { Request, Response } from 'express';
import * as deliveryService from '../services/deliveryService';

/**
 * GET /api/delivery/status
 * 배송 현황 조회
 */
export async function getDeliveryStatus(req: Request, res: Response): Promise<void> {
  try {
    const data = await deliveryService.getDeliveryStatus();
    res.json({
      success: true,
      data,
    });
  } catch (error) {
    console.error('배송 현황 조회 실패:', error);
    res.status(500).json({
      success: false,
      message: '배송 현황 조회에 실패했습니다.',
    });
  }
}

/**
 * GET /api/delivery/delayed
 * 지연 배송 목록 조회
 */
export async function getDelayedDeliveries(req: Request, res: Response): Promise<void> {
  try {
    const deliveries = await deliveryService.getDelayedDeliveries();
    res.json({
      success: true,
      data: deliveries,
    });
  } catch (error) {
    console.error('지연 배송 조회 실패:', error);
    res.status(500).json({
      success: false,
      message: '지연 배송 조회에 실패했습니다.',
    });
  }
}

/**
 * GET /api/delivery/issues
 * 고객 이슈 목록 조회
 */
export async function getCustomerIssues(req: Request, res: Response): Promise<void> {
  try {
    const { status } = req.query;
    const issues = await deliveryService.getCustomerIssues(status as string);
    res.json({
      success: true,
      data: issues,
    });
  } catch (error) {
    console.error('고객 이슈 조회 실패:', error);
    res.status(500).json({
      success: false,
      message: '고객 이슈 조회에 실패했습니다.',
    });
  }
}

/**
 * PUT /api/delivery/:id/status
 * 배송 상태 업데이트
 */
export async function updateDeliveryStatus(req: Request, res: Response): Promise<void> {
  try {
    const { id } = req.params;
    const { status, delayReason } = req.body;

    await deliveryService.updateDeliveryStatus(id, status, delayReason);
    
    res.json({
      success: true,
      message: '배송 상태가 업데이트되었습니다.',
    });
  } catch (error) {
    console.error('배송 상태 업데이트 실패:', error);
    res.status(500).json({
      success: false,
      message: '배송 상태 업데이트에 실패했습니다.',
    });
  }
}

/**
 * PUT /api/delivery/issues/:id/status
 * 고객 이슈 상태 업데이트
 */
export async function updateIssueStatus(req: Request, res: Response): Promise<void> {
  try {
    const { id } = req.params;
    const { status } = req.body;

    await deliveryService.updateIssueStatus(id, status);
    
    res.json({
      success: true,
      message: '이슈 상태가 업데이트되었습니다.',
    });
  } catch (error) {
    console.error('이슈 상태 업데이트 실패:', error);
    res.status(500).json({
      success: false,
      message: '이슈 상태 업데이트에 실패했습니다.',
    });
  }
}

