AnnouncementController.java

package com.hwhub.backend.presentation.rest.announcement;

import com.hwhub.backend.application.service.announcement.AnnouncementService;
import com.hwhub.backend.domain.model.AnnouncementModel;
import com.hwhub.backend.presentation.rest.announcement.dto.AnnouncementDto;
import com.hwhub.backend.presentation.rest.announcement.dto.AnnouncementListResponse;
import java.time.LocalDateTime;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * アナウンスバナー関連のAPIコントローラ。
 *
 * <p>認証済みユーザー向けに有効なアナウンス情報を返す。
 */
@RestController
@RequestMapping("/api/announcements")
@RequiredArgsConstructor
public class AnnouncementController {

  private final AnnouncementService announcementService;

  /**
   * 現在有効なアナウンス一覧を取得する。
   *
   * @return 有効期間内のアナウンスリスト
   */
  @GetMapping("/active")
  public AnnouncementListResponse getActiveAnnouncements() {
    LocalDateTime now = LocalDateTime.now();
    List<AnnouncementModel> models = announcementService.getActiveAnnouncements(now);
    List<AnnouncementDto> dtos = models.stream().map(AnnouncementDto::from).toList();
    return new AnnouncementListResponse(dtos);
  }
}