rocket-a


git -C '/home/opc/rocketa.git' show 00f33e9 -- app/Http/Controllers/Admin/General.php

commit 00f33e93fbd079c13b8b1064a24a9db53be39806
Author: Satoshi Ujihara <satoshi_ujihara@fivegate.jp>
Date:   Wed Oct 15 17:33:39 2025 +0900

    翻訳+翻訳文字管理機能

diff --git a/app/Http/Controllers/Admin/General.php b/app/Http/Controllers/Admin/General.php
index 079432e..135ac5d 100644
--- a/app/Http/Controllers/Admin/General.php
+++ b/app/Http/Controllers/Admin/General.php
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
 use App\Http\Requests;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
+use Illuminate\Support\Facades\DB;
 use Illuminate\Pagination\LengthAwarePaginator;
 use App\Http\Controllers\Controller;
 use GuzzleHttp\Client;
@@ -29,6 +30,10 @@ use App\Models\La\AdJoinMediaDatas;
 use App\Models\La\AdRewardDatasAutoUpdate;
 use App\Models\La\AdRewardGroupDatas;
 use App\Models\La\MediaNoticeFailedDatas;
+use App\Models\La\TranslationClients;
+use App\Models\La\TranslationMedias;
+use App\Models\La\Translations;
+
 use App\Models\Api\ApiClickRecords;
 use App\Models\Api\ApiResultRecords;
 
@@ -285,8 +290,8 @@ class General extends Controller
 
             if ($request->input('csv') == 1) {
                 return response($send_data_array['datas'], 200)
-                     ->header('Content-Type', 'text/csv')
-                     ->header('Content-Disposition', 'attachment; filename=achieve_csv.csv');
+                    ->header('Content-Type', 'text/csv')
+                    ->header('Content-Disposition', 'attachment; filename=achieve_csv.csv');
             }
 
             // 表示件数の初めと終わりを割り出す
@@ -4609,4 +4614,71 @@ class General extends Controller
 
          return json_encode($site_list);
     }
+
+    public function lang(Request $request)
+    {
+        $conditions = [];
+        $conditions['site'] = $request->input('site', "admin");
+        $conditions['locale'] = $request->input('locale', "en");
+        $conditions['word'] = $request->input('word', "");
+        $conditions['count'] = $request->input('count', 20);
+        $paginate_data = [
+            'stert_prev' => 1,
+            'end_prev' => 1,
+        ];
+
+        if ($conditions['site'] == "admin") {
+            $query = Translations::query();
+        }
+        else if ($conditions['site'] == "client") {
+            $query = TranslationClients::query();
+        }
+        else if ($conditions['site'] == "partner") {
+            $query = TranslationMedias::query();
+        }
+        else {
+            exit;
+        }
+
+        if ($request->method() === 'POST') {
+            if ($conditions['site'] == "admin") {
+                Translations::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+                Translations::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+                Translations::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+            }
+            else if ($conditions['site'] == "client") {
+                TranslationClients::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+                TranslationClients::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+                TranslationClients::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+            }
+            else if ($conditions['site'] == "partner") {
+                TranslationMedias::where('locale', 'en')->where('key', $request->input('key'))->update(['value' => $request->input('word_en'), 'memo' => $request->input('memo')]);
+                TranslationMedias::where('locale', 'kr')->where('key', $request->input('key'))->update(['value' => $request->input('word_kr'), 'memo' => $request->input('memo')]);
+                TranslationMedias::where('locale', 'jp')->where('key', $request->input('key'))->update(['value' => $request->input('word_jp'), 'memo' => $request->input('memo')]);
+            }
+        }
+
+        $query->select(
+                'key',
+                DB::raw("MAX(CASE WHEN locale = 'en' THEN value END) as en"), 
+                DB::raw("MAX(CASE WHEN locale = 'kr' THEN value END) as kr"), 
+                DB::raw("MAX(CASE WHEN locale = 'ja' THEN value END) as ja"), 
+                DB::raw("MAX(memo) as memo"), 
+        )->groupBy('key')->orderBy('key');
+        if($conditions['word'] != "") {
+            $query = DB::query()->fromSub($query, 'sub')->where($conditions['locale'], "LIKE", "%".$conditions['word']."%");
+        }
+
+
+        $word_list = $query->paginate($conditions['count']);
+        $paginate_data = $this->getPrevNumber($request->input('page'), $request->input('count'), $word_list->total());
+
+        
+        
+
+        return view('admin.general.lang')
+            ->with('conditions', $conditions)
+            ->with('paginate_data', $paginate_data)
+            ->with('word_list', $word_list);
+    }
 }

diff.txt · 最終更新: by root