215 lines
7.8 KiB
PHP
215 lines
7.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Mail\sendEmail;
|
|
use App\Models\Advertisements;
|
|
use App\Models\Articles;
|
|
use App\Models\Comments;
|
|
use App\Models\Economies;
|
|
use App\Models\Horoscopes;
|
|
use App\Models\Menuitems;
|
|
use App\Models\News;
|
|
use App\Models\News_type;
|
|
use App\Models\Newscategories;
|
|
use App\Models\Popups;
|
|
use App\Models\Provinces;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Teams;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Models\Videos;
|
|
use Share;
|
|
|
|
class WebsiteController extends Controller
|
|
{
|
|
private $path;
|
|
|
|
public function __construct()
|
|
{
|
|
$routes = Route::getRoutes();
|
|
// dd($routes);
|
|
// foreach ($routes as $route) {
|
|
// $name= $route->getName();
|
|
// dump($name);
|
|
// }
|
|
// dd('end');
|
|
$this->path = config('app.client_path');
|
|
|
|
$headerMenuItems = Menuitems::where(['parent_menu' => 0, "status" => 1, "menulocations_id" => 1])->with('children')->orderBy('display_order')->get();
|
|
$footerMenuItems = Menuitems::where(['parent_menu' => 0, "status" => 1, "menulocations_id" => 2])->with('children')->orderBy('display_order')->get();
|
|
$latestNews = News::where('status', 1)->inRandomOrder()->limit(4)->get();
|
|
|
|
$ads = Advertisements::where('status', 1)->where('parent_advertisement', 0)->get();
|
|
$adsWithChildren = Advertisements::where('status', 1)->where('parent_advertisement', 0)->orderBy('display_order')->with('children')->get();
|
|
$popup = Popups::where('status',1)->latest()->first();
|
|
$route = Route::getRoutes();
|
|
|
|
View::share(
|
|
[
|
|
'headerMenuItems' => $headerMenuItems,
|
|
'footerMenuItems' => $footerMenuItems,
|
|
'latestNews' => $latestNews,
|
|
'ads' => $ads,
|
|
'adsWithChildren' => $adsWithChildren,
|
|
'popup' => $popup
|
|
]
|
|
);
|
|
}
|
|
|
|
public function home()
|
|
{
|
|
$data['featuredNews'] = News::where('featured_news', "True")->where('status', 1)->first();
|
|
|
|
$data['provinces'] = Provinces::with('provinceNews')->limit(5)->get();
|
|
|
|
$data['categories'] = Newscategories::with('news')->get();
|
|
$data['interviews'] = Newscategories::with('interviewNews')->get();
|
|
$data['politics'] = Newscategories::with('politicNews')->get();
|
|
// $data['economics'] = Newscategories::with('news')->inRandomOrder()->get();
|
|
$data['economics'] = Economies::with('news')
|
|
->orderBy('display_order')
|
|
->where('status', 1)
|
|
->get();
|
|
|
|
|
|
$data['sports'] = Newscategories::with('sportNews')->get();
|
|
$data['cultural'] = Newscategories::with('culturalNews')->get();
|
|
$data['technology'] = Newscategories::with('technologyNews')->get();
|
|
$data['entertainment'] = Newscategories::with('entertainmentNews')->get();
|
|
$data['branches'] = Newscategories::with('branchesNews')->get();
|
|
$data['videos'] = Videos::where('status', 1)->orderBy('display_order')->get();
|
|
|
|
$data['horoscope'] = Horoscopes::where('status', 1)->orderBy('display_order')->get();
|
|
// dd($data['videos']);
|
|
|
|
$data['internationalNews'] = News_type::with('news')->get();
|
|
// dd($data['internationalNews']->toArray());
|
|
|
|
|
|
|
|
// dd($data['internationalNews']);
|
|
|
|
return view($this->path . '.home', $data);
|
|
}
|
|
|
|
public function single($alias)
|
|
{
|
|
$categoryId = Newscategories::where('alias', $alias)->pluck('category_id')->first();
|
|
$categoryTitle = Newscategories::where('alias', $alias)->pluck('nepali_title')->first();
|
|
|
|
$data = News::where('newscategories_id', $categoryId)->where('status', 1)->orderBy('display_order')->paginate(9);
|
|
|
|
return view($this->path . '.single', compact('data', 'categoryTitle'));
|
|
}
|
|
|
|
public function newsDetail($alias)
|
|
{
|
|
$shareComponent = Share::currentPage()->facebook()->twitter()->whatsapp()->linkedin();
|
|
$news = News::where('alias', $alias)->where('status', 1)->first();
|
|
if (!$news) {
|
|
abort(404, 'News not found');
|
|
}
|
|
|
|
$news->views_count = $news->views_count + 1;
|
|
$news->save();
|
|
$newsWithComment = News::with('comments')->where('news_id', $news->news_id)->get();
|
|
// dd($newsWithComment->toArray());
|
|
$recentNews = News::where('status', 1)
|
|
->where('news_id', '!=', $news->news_id)
|
|
->inRandomOrder()
|
|
->limit(12)
|
|
->latest()
|
|
->get();
|
|
|
|
return view($this->path . '.news-detail', compact('news', 'recentNews','shareComponent','newsWithComment'));
|
|
}
|
|
|
|
|
|
public function showHororscope()
|
|
{
|
|
$rashifal = Horoscopes::where('status', 1)->orderBy('display_order')->limit(12)->get();
|
|
return view($this->path . '.rashifal', compact('rashifal'));
|
|
}
|
|
|
|
public function showInternational($alias)
|
|
{
|
|
$categoryTitle = News_type::where('alias', $alias)->value('title_nepali');
|
|
$data = News::where('news_type_id', 1)
|
|
->where('status', 1)->orderBy('display_order')->paginate(9);
|
|
|
|
return view($this->path . '.single', compact('data', 'categoryTitle'));
|
|
}
|
|
|
|
public function showVideos()
|
|
{
|
|
$videos = Videos::where('status', 1)->orderBy('display_order')->paginate(7);
|
|
// dd($videos->toArray());
|
|
return view($this->path . '.video', compact('videos'));
|
|
}
|
|
|
|
public function showAboutus($alias)
|
|
{
|
|
|
|
$data['aboutus'] = Articles::where('alias', $alias)->where('status', 1)->first();
|
|
$data['teams'] = Teams::where('status', 1)->orderBy('display_order')->get();
|
|
|
|
return view($this->path . '.about-us', $data);
|
|
}
|
|
|
|
public function showArtilce($alias)
|
|
{
|
|
$data['article'] = Articles::with('childrens')->where('alias', $alias)->where('status', 1)->first();
|
|
return view($this->path . '.article', $data);
|
|
}
|
|
|
|
public function showContact()
|
|
{
|
|
return view($this->path . '.contact');
|
|
}
|
|
public function sendEmail(Request $request)
|
|
{
|
|
if ($request->input('accepted') == 'on') {
|
|
$requestData = $request->except(['_token', 'accepted']);
|
|
$validator = Validator::make($requestData, [
|
|
'title' => 'required|string|max:255',
|
|
'email' => 'required|email',
|
|
'phone_number' => 'required|regex:/\d{10}/',
|
|
'secondary_number' => 'nullable|regex:/\d{10}/',
|
|
'message' => 'required|string',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return redirect()->back()->withErrors($validator)->withInput();
|
|
}
|
|
|
|
$validated = $validator->validated();
|
|
|
|
try {
|
|
Mail::to(SITEVARS->email)->send(new SendEmail($validated));
|
|
return response()->json(['success' => 'Email sent successfully']);
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => 'Failed to send email'], 500);
|
|
}
|
|
} else {
|
|
return response()->json(['error' => 'Acceptance checkbox is required'], 400);
|
|
}
|
|
}
|
|
|
|
public function showProvinces($id)
|
|
{
|
|
$categoryTitle = Provinces::where('province_id', $id)->pluck('province_nepali_name')->first();
|
|
$data = News::where('provinces_id', $id)->where('status', 1)->orderBy('display_order')->paginate(9);
|
|
return view($this->path . '.single', compact('data', 'categoryTitle'));
|
|
}
|
|
|
|
public function videoDetail($alias)
|
|
{
|
|
$data = Videos::where('alias', $alias)->where('status', 1)->first();
|
|
$recentNews = News::where('status', 1)->inRandomOrder()->limit(12)->latest()->get();
|
|
return view($this->path . '.video-detail', compact('data', 'recentNews'));
|
|
}
|
|
}
|