rocket-a


git -C '/home/opc/rocketa.git' show c8c5ba6 -- app/Http/Controllers/Admin/Media.php

commit c8c5ba61b1fb4c40e219ffbcf4e593c54f7d4ac6
Author: Satoshi Ujihara <satoshi_ujihara@fivegate.jp>
Date:   Thu Dec 18 12:00:15 2025 +0900

    メディア会員登録フロー変更

diff --git a/app/Http/Controllers/Admin/Media.php b/app/Http/Controllers/Admin/Media.php
index 90619eb..b048f3e 100644
--- a/app/Http/Controllers/Admin/Media.php
+++ b/app/Http/Controllers/Admin/Media.php
@@ -5,12 +5,16 @@ namespace App\Http\Controllers\Admin;
 use App\Http\Requests;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
+use Illuminate\Support\Str;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\Shared\File;
 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Admin\Traits\Common;
-
+use Illuminate\Support\Facades\Mail;
+use App\Mail\inviteMedia;
+use App\Mail\approveMediaUser;
+use App\Mail\approveMedia;
 use App\Models\Api\ApiAdJoinMediaDatas;
 use App\Models\La\MediaCompanyDatas;
 use App\Models\La\MediaDatas;
@@ -18,12 +22,14 @@ use App\Models\La\AdJoinMediaDatas;
 use App\Models\La\MediaAccounts;
 use App\Models\La\MediaBillAggregateDatas;
 use App\Models\La\MediaBillDatas;
-
-
+use App\Models\La\LoginToken;
+use App\Http\Controllers\Admin\Traits\ImageManage;
 use App\Rules\TrackingLink;
+use Carbon\Carbon;
 
 class Media extends Controller
 {
+    use ImageManage;
     use Common;
 
     /**
@@ -52,7 +58,19 @@ class Media extends Controller
          return $items;
      }
 
+    public function downloadBankInfo(Request $request)
+    {
+        $media_company_data = MediaCompanyDatas::select('bank_copy_url')
+            ->where('id', $request->company_id)
+            ->first();
+            // $filename = basename(parse_url($media_company_data->bank_copy_url, PHP_URL_PATH));
 
+        header('Content-Type: application/octet-stream');
+        header('Content-Disposition: attachment; filename="' . $request->filename . '"');
+        header('Content-Transfer-Encoding: binary');
+        readfile("https://".$media_company_data->bank_copy_url);
+        exit;
+    }
 
     public function companyDetail(Request $request)
     {
@@ -81,7 +99,8 @@ class Media extends Controller
                 'media_company_datas.bank_branch_name',
                 'media_company_datas.bank_account_type',
                 'media_company_datas.bank_account_number',
-                'media_company_datas.bank_account_holder_kana'
+                'media_company_datas.bank_account_holder_kana',
+                'media_company_datas.bank_copy_url'
             )
             ->leftJoin('media_datas', 'media_company_datas.id', '=', 'media_datas.company_id')
             ->where('media_company_datas.id', $request->company_id)
@@ -91,9 +110,19 @@ class Media extends Controller
             return redirect()->away('/admin/media/company/list');
         }
 
+        $bank_copy_file = [];
+        if($media_company_data->bank_copy_url) {
+            $ext = '.' . pathinfo($media_company_data->bank_copy_url, PATHINFO_EXTENSION);
+            $tmp_ymdhis = substr( pathinfo($media_company_data->bank_copy_url, PATHINFO_FILENAME), -14);
+            $bank_copy_file["time"] = Carbon::createFromFormat('YmdHis', $tmp_ymdhis)->format('Y-m-d H:i:s');
+            $bank_copy_file["name"] = "partner_bank_info" . $media_company_data->id . "_".$tmp_ymdhis .  $ext;
+        }
+
         return view('admin.media.company.detail')
             ->with('items', $this->getFormItemDatas())
-            ->with('media_company_data', $media_company_data);
+            ->with('media_company_data', $media_company_data)
+            ->with('bank_copy_file', $bank_copy_file);
+
     }
 
     public function companyList(Request $request)
@@ -192,10 +221,10 @@ class Media extends Controller
     private function companyRegistGetDefaultValue()
     {
         $datas = [
-            'status' => 1,
+            'status' => null,
             'corporate_name' => null,
             'corporate_name_kana' => null,
-            'category' => 1,
+            'category' => 99,
             'remarks' => null,
             'representative_name' => null,
             'representative_name_kana' => null,
@@ -260,35 +289,68 @@ class Media extends Controller
 
     public function companyRegistConfirm(Request $request)
     {
-        $rules = [
-            'corporate_name' => ['required'],
-            'corporate_name_kana' => ['required'],
-            'representative_name' =>  ['required'],
-            'representative_name_kana' => ['required'],
-            'rep_mail_address' => ['required', 'email'],
-            'phone_number' => ['required'],
-            'postal_code' => ['required'],
-            'corporate_address' => ['required'],
-            'mail_address' => ['required', 'email'],
-            'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
-            'registration_number' => ['required', 'regex:/^[0-9]+$/'],
-            'bank_name' => ['required'],
-            'bank_branch_name' => ['required'],
-            'bank_account_number' => ['required'],
-            'bank_account_holder_kana' => ['required'],
-        ];
+        if ($request->has('action') && $request->input('action') == 'confirm') {
+            if($request->input('status')!=0) {
+                $rules = [
+                    'corporate_name' => ['required'],
+                    // 'corporate_name_kana' => ['required'],
+                    'representative_name' =>  ['required'],
+                    // 'representative_name_kana' => ['required'],
+                    'rep_mail_address' => ['required', 'email'],
+                    // 'phone_number' => ['required'],
+                    // 'postal_code' => ['required'],
+                    'corporate_address' => ['required'],
+                    'mail_address' => ['required', 'email'],
+                    'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
+                    'registration_number' => ['required', 'regex:/^[0-9]+$/'],
+                    'bank_name' => ['required'],
+                    'bank_branch_name' => ['required'],
+                    'bank_account_number' => ['required'],
+                    'bank_account_holder_kana' => ['required'],
+                    'bank_copy' => 'nullable|file|mimetypes:image/png,image/jpeg,application/pdf|max:10240',
+                ];
+            } else {
+                $rules = [
+                    'corporate_name' => ['required'],
+                    'mail_address' => ['required', 'email'],
+                    // 'password' => ['required', 'between:8,40', 'regex:/^[0-9a-zA-Z-_!.]+$/'],
+                    'bank_copy' => 'nullable|file|mimetypes:image/png,image/jpeg,application/pdf|max:10240',
+                ];
+            }
+            $request->validate($rules);
+        }
 
-        $request->validate($rules);
+
+        
 
         if ($request->has('action')) {
             // 確認画面
             if ($request->input('action') == 'confirm') {
+                // 画像処理
+                if ($request->hasFile('bank_copy')) {
+                    $path = $request->file('bank_copy')->store('public/media/material/bank_copy/'.date('Ymd'));
+                    $request['bank_copy_file_name'] = $request->file('bank_copy')->getClientOriginalName();
+                    $request['bank_copy_file_ext'] = $request->file('bank_copy')->getClientOriginalExtension();
+                    $request['temp_bank_copy_url'] = str_replace('public/', '', $path);
+                    // $request['disp_bank_copy_url'] = str_replace('public/', '', $path);
+                    $request['temp_bank_copy_content_type'] = $request->bank_copy->getClientMimeType();
+
+                    // if ($request['bank_copy_url']) {
+                    //     $request['delete_bank_copy_path'] = $request['delete_bank_copy_path'];
+                    // }
+                } elseif ($request['bank_copy_url']) {
+                    // $request['thumbnail_url'] = $request['bank_copy_url'];
+                    // $request['disp_bank_copy_url'] = 'https://'.$request['bank_copy_url'];
+                }
+
                 return view('admin.media.company.regist')
                     ->with('items', $this->getFormItemDatas())
                     ->with('datas', $request->all());
 
             // データ登録
             } elseif ($request->input('action') == 'regist') {
+
+
                 $media_company_id = null;
                 $edit_data = $this->companyRegistGetDefaultValue();
 
@@ -326,6 +388,7 @@ class Media extends Controller
                     'media_company_id' => $media_company_id,
                     'name' => $request->input('corporate_name'),
                     'email' => $request->input('mail_address'),
+                    'status' => $request->input('status'),
                     'password' => \Hash::make($request->input('password')),
                 ];
                 $media_account_data = MediaAccounts::updateOrCreate(
@@ -333,6 +396,50 @@ class Media extends Controller
                     $media_account_update_data
                 );
 
+
+                // サムネイルをS3へアップロード
+                if ($request->has('temp_bank_copy_url')) {
+                    $image = public_path()."/".$request->input('temp_bank_copy_url');
+                    $extension = \File::extension($image);
+                    
+                    $content_type = $request->input('temp_bank_copy_content_type');
+
+                    $destinationPath = 'bank_copy';
+                    $image_name = $media_company_id.'_'.date('YmdHis') . "." .$request->input('bank_copy_file_ext');
+
+                    $bank_copy_url = $this->uploadImage($image, $destinationPath, $image_name, $extension, $content_type);
+                    MediaCompanyDatas::where('id', $media_company_id)
+                                                ->update(['bank_copy_url'=> $bank_copy_url]);
+
+                    // if ($request['delete_thumbnail_path']) {
+                    //     $this->deleteImage($request['delete_thumbnail_path']);
+                    // }
+                } elseif ($request->has('thumbnail_url')) {
+                    $thumbnail_url = $request->input('thumbnail_url');
+                }
+
+                if ($request->input('status')==0) {
+
+                    // Mail::to(['ujihara@aixinc.io', 'soumu@fivegate.jp',$media_account_data->mail_address])
+                    $token = Str::random(60).$media_account_data->id;
+                    LoginToken::create([
+                        'user_id' => $media_account_data->id,
+                        'token' => hash('sha256', $token), // 保存はハッシュ化
+                        'expires_at' => now()->addMinutes(60*24*7), 
+                    ]);
+
+                    $media_account_update_data['password'] = $request->input('password');
+                    $media_account_update_data['token'] = $token;
+                    Mail::to([$media_account_update_data['email']])
+                        ->send(new inviteMedia($media_account_update_data));
+                }
+                //メディア会員を承認したとき
+                if (isset($update_media_company_data) && $update_media_company_data->status == 0 && $request->status == 1) {
+                    $media_account_update_data['representative_name'] = $request->input('representative_name');
+                    Mail::to([$media_account_update_data['email']])
+                        ->send(new approveMediaUser($media_account_update_data));
+                }
+
                 return redirect()->away('/admin/media/company/detail/'.$media_company_id);
 
             }
@@ -404,6 +511,7 @@ class Media extends Controller
                     'media_datas.name',
                     'media_datas.category',
                     'media_datas.type',
+                    'media_datas.status',
                     'media_company_datas.corporate_name'
                 )
                 ->join('media_company_datas', 'media_datas.company_id', '=', 'media_company_datas.id');
@@ -586,6 +694,7 @@ class Media extends Controller
             'monthly_uu' => 1,
             'description' => null,
             'memo' => null,
+            'status' => 0,
         ];
 
         $company_datas = MediaCompanyDatas::select('id', 'corporate_name')->get();
@@ -646,9 +755,6 @@ class Media extends Controller
             'company_id' => ['required', 'numeric'],
             'name' =>  ['required'],
             'domain' => ['required'],
-             'domain' => ['required'],
-              'domain' => ['required'],
-               'domain' => ['required'],
             // 'api_url' => ['required', 'url'],
             'api_url' => ['required', new TrackingLink],
             'api_url_test' => ['nullable', new TrackingLink]
@@ -690,7 +796,17 @@ class Media extends Controller
                         $media_id = $new_media_data->id;
 
                     }
-
+                    //メディアを承認したとき
+                    if ($update_media_data->status == 0 && $request->input('status') == 1) {
+                        $media_company_data = MediaCompanyDatas::find($update_media_data->company_id);
+                        $media_data_array = [
+                            'media_id' => $request->input('media_id'),
+                            'media_company_name' => $media_company_data->name,
+                            'representative_name' => $media_company_data->representative_name,
+                            'media_name' => $request->input('name'),
+                        ];
+                        Mail::to([$media_company_data->mail_address])->send(new approveMedia($media_data_array));
+                    }
                 // 新規追加
                 } else {
                     $new_media_data = MediaDatas::create($edit_data);

diff.txt · 最終更新: by root