| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
-
- namespace App\Http\Controllers\Api;
-
- use App\Http\Controllers\Controller;
- use App\Models\News;
- use App\Models\NewsCategory;
- use App\Models\Project;
- use App\Models\Region;
- use App\Models\Tag;
- use App\Supports\Response;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use App\Http\Helper\Helper;
-
- /**
- * @group Lottery Prize
- */
- class ProjectController extends Controller
- {
- public function __construct(
- )
- {
- }
-
- public function list(Request $request, $locate = 'tw')
- {
- $categoryId = $request->input("categoryId") ?? "";
- $locate = $locate == "tw" ? "zh_TW" : $locate;
- $result = [];
-
- //年份清單
- $regions = Region::where("visible", 1)->pluck("name", "id")->all();
- $tags = Tag::where("visible", 1)->pluck("name", "id")->all();
-
- $result["regions"] = $regions;
- $result["tags"] = $tags;
-
- //文章列表
- $projects = Project::query();
- if($request->has('region')){
- $projects->where("region_id", $request->input('region'));
- }
- if($request->has('tags')){
- $request_tags = $request->input('tags');
- $projects->whereHas("tags", function ($query) use ($request_tags) {
- return $query->whereIn("tags.id", $request_tags);
- });
- }
-
- $projects = $projects->with(['tags', 'region'])->orderByDesc("order")->get();
- foreach($projects as $project){
- $result["list"][] = [
- "id" => $project->id,
- "region_id" => $project->region_id,
- "region" => $project->region->getTranslation("name", $locate),
- "address" => $project->getTranslation("address", $locate),
- "tags" => $project->tags->pluck('name', 'id')->all(),
- "name" => $project->getTranslation("name", $locate),
- "imgUrl" => $project->first_list_img_url
- ];
- }
- return Response::ok($result);
- }
-
- public function detail($locale = 'tw', $id){
-
- $locate = $locale == "tw" ? "zh_TW" : $locale;
- $project = Project::find($id);
-
- $projectHistories = [];
- foreach($project->histories as $history){
- $operateDate = Carbon::parse($history->operate_date);
- $projectHistories[$operateDate->format("Y")][] = [
- "operateDate" => $operateDate->format("m/d"),
- "title" => $history->getTranslation("title", $locale)
- ];
- }
-
- $result = [
- "name" => $project->getTranslation("name", $locale),
- "subName" => $project->getTranslation("sub_name", $locale),
- "description" => $project->getTranslation("description", $locale),
- "images" => $project->img_list,
- "metaTitle" => $project->getTranslation("meta_title", $locate),
- "metaKeyword" => $project->getTranslation("meta_keyword", $locate),
- "metaDesc" => $project->getTranslation("meta_description", $locate),
- "metaImg" => $project->meta_img,
- "region_id" => $project->region_id,
- "region" => $project->region->getTranslation("name", $locale),
- "address" => $project->getTranslation("address", $locale),
- "tags" => $project->tags->pluck("name", "id")->all(),
- "floor_plan" => $project->getTranslation("floor_plan", $locale),
- "building_structure" => $project->getTranslation("building_structure", $locale),
- "design_unit" => $project->getTranslation("design_unit", $locale),
- "badges" => $project->getBadges($locale),
- "contact_info" => [
- "unitName" => $project->getTranslation("contact_unit", $locale),
- "unitPhone" => $project->getTranslation("contact_phone", $locale),
- "inversmentPhone" => $project->getTranslation("inversment_phone", $locale),
- ],
- "spaceInfo" => $project->getTags($locale),
- "historyList" => $projectHistories
- ];
- return Response::ok($result);
- }
-
- public function badges($locale = 'tw') {
- $locate = $locale == "tw" ? "zh_TW" : $locale;
-
- $projects = Project::where("visible", 1)->get();
- $result = [];
-
- foreach($projects as $project){
- $result[] = [
- "id" => $project->id,
- "name" => $project->getTranslation("name", $locale),
- "badges" => $project->getBadges($locale)
- ];
- }
-
- return Response::ok($result);
- }
- }
|