Skip to content

Commit e7a229b

Browse files
authored
Merge pull request #31 from PRTIMES/feature/add-recommend
ルーティングの修正
2 parents c01a4a8 + 97351bd commit e7a229b

File tree

6 files changed

+36
-47
lines changed

6 files changed

+36
-47
lines changed

backend/app/Http/Controllers/Api/Company/ListController.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,26 @@
33
namespace App\Http\Controllers\Api\Company;
44

55
use App\Http\Controllers\Controller;
6-
use App\Http\Requests\Api\Company\List\InvokeRequest;
76
use App\Models\Company;
87
use App\UseCases\Company\ListFilterByIndustryIds;
98
use Illuminate\Http\JsonResponse;
9+
use Illuminate\Http\Request;
1010

1111
class ListController extends Controller
1212
{
1313
/**
14-
* @param InvokeRequest $request
14+
* @param Request $request
1515
* @return JsonResponse
1616
*/
17-
public function __invoke(InvokeRequest $request): JsonResponse
17+
public function __invoke(Request $request): JsonResponse
1818
{
19-
/* @var int[] $industry_ids */
20-
$industry_ids = $request->validated()['industry_ids'];
19+
$industry_ids_raw = $request->query("industry_ids");
20+
if ($industry_ids_raw === null)
21+
return response()->json();
22+
23+
$industry_ids = is_array($industry_ids_raw)
24+
? array_map(fn ($industry_id) => (int) $industry_id, $industry_ids_raw)
25+
: [(int) $industry_ids_raw];
2126

2227
$companies = ListFilterByIndustryIds::run($industry_ids);
2328

backend/app/Http/Controllers/Api/PressRelease/RecommendController.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,15 @@ public function __invoke(Request $request): JsonResponse
4141
/* @var PressRelease $press_release */
4242

4343
return [
44-
"id" => $press_release->id,
4544
"title" => $press_release->title,
46-
"summary" => $press_release->summary
45+
"summary" => $press_release->summary,
46+
"url" => route(
47+
"press-release.redirect",
48+
[
49+
"company_id" => $press_release->company_id,
50+
"release_id" => $press_release->release_id
51+
]
52+
)
4753
];
4854
})
4955
->toArray()
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace App\Http\Controllers\Api\PressRelease;
3+
namespace App\Http\Controllers\Web\PressRelease;
44

55
use App\Exceptions\HttpJsonResponseException;
66
use App\Http\Controllers\Controller;
@@ -9,41 +9,38 @@
99
use App\UseCases\PressRelease\FindByIdsAction;
1010
use Exception;
1111
use Illuminate\Http\JsonResponse;
12+
use Illuminate\Http\RedirectResponse;
1213
use Illuminate\Http\Request;
1314
use Illuminate\Support\Facades\Auth;
1415

15-
class ViewController extends Controller
16+
class RedirectController extends Controller
1617
{
1718
/**
19+
* @param string $company_id
20+
* @param string $release_id
1821
* @param Request $request
19-
* @return JsonResponse
22+
* @return RedirectResponse
2023
* @throws Exception
2124
*/
22-
public function __invoke(Request $request): JsonResponse
25+
public function __invoke(string $company_id, string $release_id, Request $request): RedirectResponse
2326
{
2427
$user_id = Auth::id();
2528
if ($user_id === null || is_string($user_id)) // auth:sanctumで弾いているため最低限の例外
2629
throw new Exception("想定外エラー");
2730

28-
$company_id = $request->get("company_id");
29-
$release_id = $request->get("release_id");
30-
31-
$press_release = FindByIdsAction::run(company_id: $company_id, release_id: $release_id);
31+
$press_release = FindByIdsAction::run(company_id: (int) $company_id, release_id: (int) $release_id);
3232

3333
if (!$press_release)
34-
throw new HttpJsonResponseException(
35-
400,
36-
"notfound",
37-
"PressRelease Not Found",
38-
compact("company_id", "release_id")
39-
);
34+
abort(404);
4035

4136
/* @var Keyword $keyword */
42-
foreach ($press_release->keywords() as $keyword) {
37+
foreach ($press_release->keywords()->get() as $keyword) {
4338

4439
ViewHistoryUpdateOrCreateAction::run($user_id, $keyword->id);
4540
}
4641

47-
return response()->json(["result" => "ok"]);
42+
$company_id_str = str_pad($company_id, 9, 0, STR_PAD_LEFT);
43+
$release_id_str = str_pad($release_id, 9, 0, STR_PAD_LEFT);
44+
return response()->redirectTo("https://prtimes.jp/main/html/rd/p/$release_id_str.$company_id_str.html");
4845
}
4946
}

backend/app/Http/Requests/Api/Company/List/InvokeRequest.php

Lines changed: 0 additions & 22 deletions
This file was deleted.

backend/routes/api.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212

1313
Route::middleware("auth:sanctum")->group(function () {
1414

15-
Route::post("/press-release/view", PressRelease\ViewController::class);
1615
Route::get("/press-release/recommend", PressRelease\RecommendController::class);
1716

18-
Route::post("/company/list", Company\ListController::class);
17+
Route::get("/company/list", Company\ListController::class);
1918
});

backend/routes/web.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,7 @@
44

55
use Illuminate\Support\Facades\Route;
66

7+
Route::middleware("auth")->group(function () {
8+
9+
Route::get("/press-release/redirect/{company_id}/{release_id}", PressRelease\RedirectController::class)->name("press-release.redirect");
10+
});

0 commit comments

Comments
 (0)