'getHoliDeInfo', // 국경일 2 => 'getRestDeInfo', // 공휴일 3 => 'getAnniversaryInfo', // 기념일 4 => 'get24DivisionsInfo', // 24절기 5 => 'getSundryDayInfo' // 잡절 ]; const MAP_OPERATION = [ 1 => '국경일', 2 => '공휴일', 3 => '기념일', 4 => '24절기', 5 => '잡절' ]; public function __construct() { $this->middleware('front'); } /** * 공휴일/특일 * @method GET * @see /service/anniversary */ public function index(Request $request) { $year = $request->get('year', now()->format('Y')); $data[] = null; foreach(self::OPERATION as $i => $operation) { $cacheName = sprintf('anniversary-%d-%d', $year, $i); if (!$data[$i] = Cache::get($cacheName)) { $response = Http::get(self::API_HOST . DIRECTORY_SEPARATOR . $operation, [ 'ServiceKey' => self::API_KEY, 'solYear' => $year, '_type' => 'json', 'numOfRows' => 100 ]); $total = 0; $list = null; if ($response->ok()) { $response = $response->json('response')['body']; if(($total = $response['totalCount']) > 0) { if($total == 1) { $result = [$response['items']['item']]; }else{ $result = $response['items']['item']; } foreach($result as $item) { $item['locdate'] = date_format(date_create($item['locdate']), 'Y.m.d'); $item['isHoliday'] = ($item['isHoliday'] == 'Y' ? '예' : '아니오'); $list[] = $item; } } } $data[$i] = [ 'total' => $total, 'list' => $list ]; Cache::put($cacheName, $data[$i], CACHE_EXPIRE_TIME); } } return view(layout('service.anniversary.index'), [ 'menuID' => 'anniversary', 'data' => $data, 'year' => $year, 'mapOperation' => self::MAP_OPERATION ]); } }