File: /home/imensosw/public_html/mpl.imenso.co/app/Http/Controllers/CMSController.php
<?php
namespace App\Http\Controllers;
use App\Events\ArtistPostsNews;
use App\Models\Gallery;
use App\Models\Image;
use App\Models\News;
use App\Models\NewsPostType;
use App\Models\User;
use App\Models\Video;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\MessageBag;
class CMSController extends Controller
{
public function showGalleryList(Request $request)
{
return view('back-end/pages/cms/gallery')->with([
'artist' => $request->user(),
]);
}
public function showAddGallery(Request $request)
{
return view('back-end/pages/cms/gallery-add')->with([
'artist' => $request->user(),
]);
}
public function doAddGallery(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|mimes:jpg,jpeg,png,gif',
]);
if ($validator->fails()) {
$request->session()->flash('register-errors', $validator->messages());
return redirect()->back()->withErrors($validator);
} else {
$gallery = Gallery::addNew($request);
$successes = new MessageBag;
$successes->add(1, 'Gallery item added successfully.');
session()->flash('successes', $successes);
return redirect()->to('manage-gallery');
}
}
public function doDeleteGallery(Request $request, $id)
{
$gallery = Gallery::where('id', $id)->firstOrFail();
if ($gallery->galleryable_type == \App\Models\User::class && $gallery->galleryable_id == $request->user()->id) {
$gallery->remove();
$successes = new MessageBag;
$successes->add(1, 'Image deleted successfully.');
session()->flash('successes', $successes);
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to delete this.');
return redirect()->back()->with('errors', $errors);
}
}
public function showVideoList(Request $request)
{
return view('back-end/pages/cms/videos')->with([
'artist' => $request->user(),
]);
}
public function doDeleteVideo(Request $request, $id)
{
$video = Video::where('id', $id)->first();
if ($video->videoable_type == \App\Models\User::class && $video->videoable_id == $request->user()->id) {
$video->remove();
$successes = new MessageBag;
$successes->add(1, 'Video deleted successfully.');
session()->flash('successes', $successes);
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to delete this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doEditVideo($id, Request $request)
{
$video = Video::findOrFail($id);
if (get_class($video->videoable) == \App\Models\User::class && $video->videoable->id == $request->user()->id) {
$video->edit($request);
$successes = new MessageBag;
$successes->add(1, 'Video edited successfully.');
session()->flash('successes', $successes);
return redirect()->to('manage-videos');
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
public function showEditVideo(Request $request, $id)
{
$video = Video::findOrFail($id);
if (get_class($video->videoable) == \App\Models\User::class && $video->videoable->id == $request->user()->id) {
return view('back-end/pages/cms/video-edit')->with([
'artist' => $request->user(),
'video' => $video,
]);
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
public function showAddVideo(Request $request)
{
return view('back-end/pages/cms/video-add')->with([
'artist' => $request->user(),
]);
}
public function doAddVideo(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'embed_code' => 'required',
]);
if ($validator->fails()) {
$request->session()->flash('register-errors', $validator->messages());
return redirect()->back()->withErrors($validator)->withInput();
} else {
$video = Video::addNew($request);
if ($request->user_id) {
$user = User::findOrFail($request->user_id);
$video->assignToUser($user);
}
$successes = new MessageBag;
$successes->add(1, 'Video added successfully.');
session()->flash('successes', $successes);
return redirect()->to('manage-videos');
}
}
public function showNewsList(Request $request)
{
return view('back-end/pages/cms/news')->with([
'artist' => $request->user(),
'news' => $request->user()->news()->orderByDesc('published_at')->paginate(10),
'venue' => $request->user(),
'promoter' => $request->user(),
]);
}
public function showAddNews(Request $request)
{
return view('back-end/pages/cms/news-add')->with([
'artist' => $request->user(),
'venue' => $request->user(),
'promoter' => $request->user(),
'post_types' => NewsPostType::all(),
]);
}
public function doAddNews(Request $request)
{
if ($request->post_type == '2') {
$validator = Validator::make($request->all(), [
'mp3_title' => 'required',
'audio' => 'required',
]);
} elseif ($request->post_type == '3') {
$validator = Validator::make($request->all(), [
'video' => 'required',
]);
} elseif ($request->post_type == '4') {
$validator = Validator::make($request->all(), [
'image' => 'required',
], [
'image.required' => 'You must add at least 1 image',
]);
} else {
$validator = Validator::make($request->all(), [
'post_title' => 'required',
'post_content' => 'required',
]);
}
$validator->sometimes(['location', 'radius'], 'required', function ($input) {
return $input->geo_type == 1;
});
$validator->sometimes(['country_id'], 'required', function ($input) {
return $input->geo_type == 2;
});
if ($validator->fails()) {
$request->session()->flash('register-errors', $validator->messages());
return redirect()->back()->withErrors($validator)->withInput();
} else {
$post = News::addNew($request);
$post->assignToUser($request->user());
if ($request->status_id == 2) {
if ($request->user()->isArtist()) {
event(new ArtistPostsNews($post));
}
}
$successes = new MessageBag;
$successes->add(1, 'Article added successfully.');
session()->flash('successes', $successes);
return redirect()->to('manage-news/');
}
}
public function doAddQuickNews(Request $request)
{
$validator = Validator::make($request->all(), [
'post_title' => 'required',
]);
if ($validator->fails()) {
$request->session()->flash('register-errors', $validator->messages());
return redirect()->back()->withErrors($validator)->withInput();
} else {
$post = News::addNew($request);
$post->assignToUser($request->user());
if ($request->user()->isArtist()) {
event(new ArtistPostsNews($post));
}
$successes = new MessageBag;
$successes->add(1, 'Article added successfully.');
session()->flash('successes', $successes);
return redirect()->back();
}
}
public function doEditNews($id, Request $request)
{
$post = News::where('id', $id)->first();
if ($request->post_type == '2') {
$validator = Validator::make($request->all(), [
'mp3_title' => 'required',
]);
} elseif ($request->post_type == '3') {
$validator = Validator::make($request->all(), [
'video' => 'required',
]);
} elseif ($request->post_type == '4' && $post->galleryImages(8) == null) {
$validator = Validator::make($request->all(), [
'image' => 'required',
], [
'image.required' => 'You must add at least 1 image',
]);
} else {
$validator = Validator::make($request->all(), [
'post_title' => 'required',
'post_content' => 'required',
]);
}
if ($validator->fails()) {
$request->session()->flash('register-errors', $validator->messages());
return redirect()->back()->withErrors($validator)->withInput();
} else {
if ($post->user_id == $request->user()->id) {
$post->edit($request);
$successes = new MessageBag;
$successes->add(1, 'Post updated successfully.');
session()->flash('successes', $successes);
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
}
public function showEditNews(Request $request, $id)
{
$post = News::where('id', $id)->first();
if ($post->user_id == $request->user()->id) {
return view('back-end/pages/cms/news-edit')->with([
'artist' => $request->user(),
'venue' => $request->user(),
'promoter' => $request->user(),
'post' => $post,
'post_types' => NewsPostType::all(),
]);
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doDeleteNews(Request $request, $id)
{
$post = News::where('id', $id)->first();
if ($post->user_id == $request->user()->id) {
$post->remove();
$successes = new MessageBag;
$successes->add(1, 'Post deleted successfully.');
session()->flash('successes', $successes);
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to delete this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doFeaturedNews(Request $request, $id)
{
$post = News::where('id', $id)->first();
if ($post->user_id == $request->user()->id) {
$post->updateFeatured();
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doDeleteFeaturedNews(Request $request, $id)
{
$post = News::where('id', $id)->first();
if ($post->user_id == $request->user()->id) {
$post->deleteImage(7);
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to delete this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doNewsQuickSearch(Request $request)
{
$results = News::where([
['user_id', $request->user()->id],
['post_title', 'like', '%'.$request->search_term.'%'],
])->orWhere([
['user_id', $request->user()->id],
['post_content', 'like', '%'.$request->search_term.'%'],
])->get();
return json_encode($results);
}
public function doDeleteNewsGalleryImage(Request $request, $id)
{
$image = Image::where('id', $id)->first();
if ($image->news()->user_id == $request->user()->id) {
$image->remove();
return redirect()->back();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to edit this.');
return redirect()->back()->with('errors', $errors);
}
}
public function doNewsBulkDelete(Request $request)
{
$ids = explode(',', $request->to_delete);
foreach ($ids as $id) {
$post = News::findOrFail($id);
if ($post->user_id == $request->user()->id) {
$post->remove();
} else {
$errors = new MessageBag;
$errors->add(1, 'You do not have permission to delete this.');
return redirect()->back()->with('errors', $errors);
}
$successes = new MessageBag;
$successes->add(1, 'Posts deleted successfully.');
session()->flash('successes', $successes);
}
return redirect()->back();
}
public function doAddYouTubeChannelID(Request $request)
{
$request->user()->setYouTubeChannelID($request->youtube_channel_id);
return redirect()->back();
}
}