BasicController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Controllers\Api;
  3. use CodeIgniter\HTTP\ResponseInterface;
  4. class BasicController extends BaseApiController
  5. {
  6. /**
  7. * Get site info
  8. */
  9. public function getSiteInfo()
  10. {
  11. $auth = $this->requireAuth();
  12. if ($auth instanceof ResponseInterface) {
  13. return $auth;
  14. }
  15. $builder = $this->getDB()->table('site_info');
  16. $siteInfo = $builder->get()->getRow();
  17. if (!$siteInfo) {
  18. // Return default structure if no data
  19. return $this->respondSuccess([
  20. 'site_name' => '',
  21. 'site_url' => '',
  22. 'ceo_name' => '',
  23. 'ceo_email' => '',
  24. 'phone' => '',
  25. 'fax' => '',
  26. 'address' => '',
  27. 'sms_sender_numbers' => [],
  28. 'sms_receiver_number' => ''
  29. ]);
  30. }
  31. // Parse JSON field
  32. $siteInfo->sms_sender_numbers = json_decode($siteInfo->sms_sender_numbers ?? '[]');
  33. return $this->respondSuccess($siteInfo);
  34. }
  35. /**
  36. * Update site info
  37. */
  38. public function updateSiteInfo()
  39. {
  40. $auth = $this->requireAuth();
  41. if ($auth instanceof ResponseInterface) {
  42. return $auth;
  43. }
  44. $json = $this->request->getJSON();
  45. $data = [
  46. 'site_name' => $json->site_name ?? '',
  47. 'site_url' => $json->site_url ?? '',
  48. 'ceo_name' => $json->ceo_name ?? '',
  49. 'ceo_email' => $json->ceo_email ?? '',
  50. 'phone' => $json->phone ?? '',
  51. 'fax' => $json->fax ?? '',
  52. 'address' => $json->address ?? '',
  53. 'sms_sender_numbers' => json_encode($json->sms_sender_numbers ?? []),
  54. 'sms_receiver_number' => $json->sms_receiver_number ?? '',
  55. 'updated_at' => date('Y-m-d H:i:s')
  56. ];
  57. $builder = $this->getDB()->table('site_info');
  58. $existing = $builder->get()->getRow();
  59. if ($existing) {
  60. $builder->where('id', $existing->id)->update($data);
  61. $siteInfoId = $existing->id;
  62. } else {
  63. $data['created_at'] = date('Y-m-d H:i:s');
  64. $builder->insert($data);
  65. $siteInfoId = $this->getDB()->insertID();
  66. }
  67. // 저장된 데이터 조회하여 반환
  68. $savedData = $builder->where('id', $siteInfoId)->get()->getRow();
  69. $savedData->sms_sender_numbers = json_decode($savedData->sms_sender_numbers ?? '[]');
  70. return $this->respondSuccess($savedData, '사이트 정보가 수정되었습니다.');
  71. }
  72. }