/**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     $projectCategories = ['Dự án nổi bật', 'Dự án mới nhất', 'Căn hộ sang nhượng', "Căn hộ cho thuê", 'Vị trí dự án', 'Slideshow chính', 'Trang chủ', 'Slideshow footer'];
     $projectCategoryPositionProjects = null;
     foreach ($projectCategories as $key => $value) {
         $projectCategory = ProjectCategory::create(['key' => Common::createKeyURL($value), 'parent_id' => is_null($projectCategoryPositionProjects) ? 0 : $projectCategoryPositionProjects->id, 'name' => $value, 'summary' => $value, 'meta_description' => $value, 'meta_keywords' => $value, 'priority' => 0, 'active' => 1, 'created_by' => 'vankhoektcn', 'updated_by' => 'vankhoektcn']);
         if ($value == 'Vị trí dự án') {
             $projectCategoryPositionProjects = $projectCategory;
         }
     }
 }
 public function getProjectsByCategoryKey($categoryKey = '', $limit = 0)
 {
     $projectCategory = ProjectCategory::where('key', $categoryKey)->first();
     if (isset($projectCategory) && !is_null($projectCategory)) {
         if ($limit == 0) {
             return $projectCategory->projects()->where('active', 1)->orderBy('priority')->orderBy('created_at', 'desc')->get();
         } else {
             return $projectCategory->projects()->where('active', 1)->orderBy('priority')->orderBy('created_at', 'desc')->take($limit)->get();
         }
     }
     return [];
 }
    /**
     * PROJECT_TYPE vs PROVINCE vs DISTRICT vs WARD
     */
    public function project_type_province_district_ward($project_type_key, $province_key, $district_key, $ward_key, Request $request)
    {
        $ward = Ward::findByKey($ward_key)->first();
        if (is_null($ward)) {
            $ward = Ward::where('is_publish', 1)->orderBy('priority')->orderBy('created_at', 'desc')->first();
        }
        $district = $ward->district;
        $province = $district->province;
        $limit = Config::findByKey('rows_per_page_project')->first()->value;
        $project_type = Project_type::findByKey($project_type_key)->first();
        if (is_null($project_type)) {
            $project_type = Project_type::where('active', 1)->orderBy('priority')->orderBy('created_at', 'desc')->first();
        }
        $projects = Project::where('project_type_id', $project_type->id)->where('district_id', $district->id)->where('active', 1);
        $projects = $projects->orderBy('priority')->orderBy('created_at', 'desc')->paginate($limit);
        $searchDescription = $project_type->name . ' ' . $province->name . ' ' . $district->name . ' ' . $ward->name;
        $link = route('project_type_province_district_ward', ['project_type_key' => $project_type->key, 'province_key' => $province->key, 'district_key' => $district->key, 'ward_key' => $ward->key]);
        $breadcrumb = '<ul class="breadcrumb"> 
		<li class="active"><a href="' . route('homepage') . '">Trang chủ</a></li> 
		<li class="active"><a href="' . route('projects') . '">Dự án</a></li> 
		<li class="active"><a href="' . route('project_type', ['project_type_key' => $project_type->key]) . '">' . $project_type->name . '</a></li> 
		<li class="active"><a href="' . route('project_type_province', ['project_type_key' => $project_type->key, 'province_key' => $province->key]) . '">' . $province->name . '</a></li> 
		<li class="active"><a href="' . route('project_type_province_district', ['project_type_key' => $project_type->key, 'province_key' => $province->key, 'district_key' => $district->key]) . '">' . $district->name . '</a></li> 
		<li class=""><a href="' . $link . '">' . $ward->name . '</a></li> 
		</ul>';
        $heading = $project_type->name . ' ' . $province->name . ' ' . $district->name . ' ' . $ward->name;
        $projectCategory = new ProjectCategory();
        $projectsSpecial = $projectCategory->getProjectsByCategoryKey('du-an-noi-bat', 5);
        $this->setMetadata($searchDescription);
        return view('frontend.sites1.project_search', ['projects' => $projects, 'project_type' => $project_type, 'district' => $district, 'projectsSpecial' => $projectsSpecial, 'search_type' => 'project_type_province_district', 'link' => $link, 'searchDescription' => $searchDescription, 'breadcrumb' => $breadcrumb, 'heading' => $heading]);
    }
 /**
  * Store changes to an existing project in storage.
  *
  * @param ProjectRequest $request
  * @param Project $project
  * @return \Illuminate\Http\RedirectResponse
  */
 public function manageProjectUpdate(ProjectRequest $request, Project $project)
 {
     if (is_numeric($request->project_category_id)) {
         $category = ProjectCategory::find((int) $request->project_category_id);
     } else {
         $category = ProjectCategory::firstorCreate(['name' => $request->project_category_id]);
     }
     $project->name = $request->name;
     $project->project_category_id = $category->id;
     $project->save();
     return redirect()->action('ProjectsController@manageProjectShow', [$project]);
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     DB::transaction(function () use($id) {
         $user = Auth::user();
         $projectCategory = ProjectCategory::findOrFail($id);
         $projectCategory->updated_by = $user->name;
         $projectCategory->deleted_by = $user->name;
         $projectCategory->key = $projectCategory->key . '-' . microtime(true);
         $projectCategory->save();
         // soft delete
         $projectCategory->delete();
     });
 }