2025-05-28 14:26:49 +09:00

79 lines
2.6 KiB
PHP

<?php
namespace App\Controllers;
use App\Models\FavoriteWordModel;
use App\Models\EWWordModel;
class FavoriteWord extends BaseController
{
public function addFavorite()
{
if (!$this->checkLogin_ajax()) {
return $this->response->setJSON(['status' => 'error', 'message' => 'User not logged in.']);
}
$user_id = $this->session->get('useremail');
$ew_word_pid = $this->request->getPost('ew_word_pid');
$favoriteWordModel = new FavoriteWordModel();
// 이미 관심단어로 추가된 경우 중복 추가 방지
if ($favoriteWordModel->isFavorite($user_id, $ew_word_pid)) {
return $this->response->setJSON(['status' => 'error', 'message' => 'Word already in favorites.']);
}
$data = [
'user_id' => $user_id,
'ew_word_pid' => $ew_word_pid
];
if ($favoriteWordModel->insert($data)) {
return $this->response->setJSON(['status' => 'success', 'message' => 'Word added to favorites.']);
} else {
return $this->response->setJSON(['status' => 'error', 'message' => 'Failed to add word to favorites.']);
}
}
public function removeFavorite()
{
if (!$this->checkLogin_ajax()) {
return $this->response->setJSON(['status' => 'error', 'message' => 'User not logged in.']);
}
$user_id = $this->session->get('useremail');
$ew_word_pid = $this->request->getPost('ew_word_pid');
$favoriteWordModel = new FavoriteWordModel();
if ($favoriteWordModel->removeFavorite($user_id, $ew_word_pid)) {
return $this->response->setJSON(['status' => 'success', 'message' => 'Word removed from favorites.']);
} else {
return $this->response->setJSON(['status' => 'error', 'message' => 'Failed to remove word from favorites.']);
}
}
public function getFavoriteWords()
{
if (!$this->checkLogin_ajax()) {
return $this->response->setJSON(['status' => 'error', 'message' => 'User not logged in.']);
}
$user_id = $this->session->get('useremail');
$favoriteWordModel = new FavoriteWordModel();
$ewWordModel = new EWWordModel();
$favoriteWords = $favoriteWordModel->where('user_id', $user_id)->findAll();
$favoriteWordDetails = [];
foreach ($favoriteWords as $favorite) {
$wordDetail = $ewWordModel->find($favorite['ew_word_pid']);
if ($wordDetail) {
$favoriteWordDetails[] = $wordDetail;
}
}
return view('favorite_words', ['favoriteWords' => $favoriteWordDetails]);
}
}