Server : Apache System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64 User : tradze ( 1001) PHP Version : 8.1.34 Disable Function : NONE Directory : /home/tradze/public_html/app/Modules/Events/Http/Controllers/Admin/ |
<?php
namespace App\Modules\Events\Http\Controllers\Admin;
use App\Http\Controllers\AdminController;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Modules\Events\Http\Requests\EventRequest;
use App\Modules\Events\Models\Zenevent;
use App\Modules\Events\Models\ZeneventFile;
use Carbon\Carbon;
use Cviebrock\EloquentSluggable\Services\SlugService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Laracasts\Flash\Flash;
use Yajra\Datatables\Datatables;
class EventsController extends AdminController
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$this->data['page_title'] = trans('events::events.page_title');
return view('events::admin.events_index', $this->data);
}
/**
* Show a list of all companies
*
* @return mixed
*/
public function data(Request $request)
{
//create object contact
$obj = $this->getData($request);
//create array with permissions access
$this->data['can'] = [
'edit' => $this->data['user']->roles()->pluck('slug')[0] == 'developer',
'delete' => $this->data['user']->roles()->pluck('slug')[0] == 'developer',
];
//return datatables data
return Datatables::of($obj)
->editColumn('is_active', function($o){
$this->data['o'] = $o;
return view('events::admin.partial_event_status',$this->data)->render();
})
->addColumn('actions', function ($o) {
$this->data['o']=$o;
return view('events::admin.events_list_actions',$this->data)->render();
})
->rawColumns(['is_active','actions'])
->removeColumn('id')
->removeColumn('updated_at')
->make(true);
}
/**
* Get object entries
* @param Request $request
*/
protected function getData(Request $request)
{
$obj = Zenevent::orderBy('order','asc')->get();
//return object
return $obj;
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create(Request $request)
{
$this->data['page_title'] = trans('events::events.page_title');
$this->data['form']['gallery'] = $this->get_request_gallery($request);
//show page
return view('events::admin.events_create_edit', $this->data);
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store(EventRequest $request)
{
//start transaction
DB::beginTransaction();
$data = [
'order' => $request->order,
'title' => $request->title,
'slug' => $request->slug,
'body' => $request->body,
'posted_at' => Carbon::createFromFormat('d F Y',$request->posted_at)->format('Y-m-d H:i:s'),
'is_active' => (int)$request->is_active,
'meta_title' => $request->meta_title,
'meta_keywords' => $request->meta_keywords,
'meta_description' => $request->meta_description,
];
//save new service type
$obj = Zenevent::create($data);
//save feature image
if ($request->file('image_feature')){
$this->save_file($request->file('image_feature'),'image_feature', $obj);
}
//save logo image
if ($request->file('image_logo')){
$this->save_file($request->file('image_logo'),'image_logo', $obj);
}
//save banner gallery
if ($request->has('file_title')){
foreach($request->file_title as $key=>$val){
try{
$image = ZenventFile::create([
'title' => $val,
'url' => $request['file_url'][$key],
'order' => $request['file_order'][$key],
'zenevent_id' => $obj->id,
]);
$file = $request->file("photo.$key");
$filename = strtolower(Str::random(20)).'-'.Str::slug(str_replace($file->getClientOriginalExtension(),'',$file->getClientOriginalName()));
$extension = ($file->getClientOriginalExtension())?:'jpg';
$path_file = 'events/gallery/'.$filename.".".$extension;
//upload file
$upload = Storage::disk('public_images')->put(
$path_file,
file_get_contents($file->getRealPath())
);
$image->path = $path_file;
$image->filename = $file->getClientOriginalName();
$image->save();
}
catch(\Exception $e){
dd($e->getMessage());
//rollback
DB::rollback();
//something went wrong...
}
} //endforeach
} //endif
if ($obj){
//commit transaction
DB::commit();
}
else{
//rollback
DB::rollback();
} //endif commit/rollback
//redirect
if ($request->save) {
return redirect(route('admin.events.edit', ['event' => $obj->id]));
} elseif ($request->save_exit) {
return redirect(route('admin.events.index'));
}
}
/**
* Edit Service Type
*
* @param $label
* @return \BladeView|bool|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function edit(Request $request, Zenevent $event)
{
$this->data['page_title'] = trans('events::events.page_title');
$this->data['obj'] = $event;
$this->data['form']['gallery'] = $this->get_request_gallery($request);
$this->data['form']['saved_gallery'] = $this->get_saved_gallery($event);
//show page
return view('events::admin.events_create_edit', $this->data);
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update(EventRequest $request, Zenevent $event)
{
$obj = $event;
//start transaction
DB::beginTransaction();
//fields to be updated
$fillable = $obj->getFillable();
$fields = array();
foreach ($request->all() as $field => $f) {
if (in_array($field, $fillable)) {
$fields[$field] = $f;
}
} //end foreach
$fields['is_active'] = (int)$request->is_active;
$fields['posted_at'] = Carbon::createFromFormat('d F Y',$request->posted_at)->format('Y-m-d H:i:s');
//update label
Zenevent::where('id', $obj->id)->update($fields);
//save feature image
if ($request->file('image_feature')){
$this->save_file($request->file('image_feature'),'image_feature', $obj);
}
//update existing banner gallery
foreach($obj->files as $gal){
$galData=[
'order'=>$request["file_order_{$gal->id}"],
'title'=>$request["file_title_{$gal->id}"],
'url'=>$request["file_url_{$gal->id}"],
];
$gal->update($galData);
//update image
if ($request->hasFile("photo_{$gal->id}")){
$file = $request->file("photo_{$gal->id}");
$filename = strtolower(Str::random(20)).'-'.Str::slug(str_replace($file->getClientOriginalExtension(),'',$file->getClientOriginalName()));
$extension = ($file->getClientOriginalExtension())?:'jpg';
$path_file = 'banners/'.$filename.".".$extension;
//upload file
$upload = Storage::disk('public_images')->put(
$path_file,
file_get_contents($file->getRealPath())
);
$gal->path = $path_file;
$gal->filename = $file->getClientOriginalName();
$gal->save();
} //endif update file to existing gallery
} //end save existing gallery entry
//save new banner in gallery
if ($request->has('file_title')){
foreach($request->file_title as $key=>$val){
$image = ZeneventFile::create([
'title' => $val,
'url' => $request['file_url'][$key],
'order' => $request['file_order'][$key],
'zenevent_id' => $obj->id,
]);
$file = $request->file("photo.$key");
$filename = strtolower(Str::random(20)).'-'.Str::slug(str_replace($file->getClientOriginalExtension(),'',$file->getClientOriginalName()));
$extension = ($file->getClientOriginalExtension())?:'jpg';
$path_file = 'events/gallery/'.$filename.".".$extension;
//upload file
$upload = Storage::disk('public_images')->put(
$path_file,
file_get_contents($file->getRealPath())
);
$image->path = $path_file;
$image->filename = $file->getClientOriginalName();
$image->save();
} //endforeach
} //endif
//commit/rollback transaction
if ($obj){
//commit transaction
DB::commit();
}
else{
//rollback
DB::rollback();
} //endif commit/rollback
//redirect
if ($request->save) {
return redirect(route('admin.events.edit', ['event' => $obj->id]));
} elseif ($request->save_exit) {
return redirect(route('admin.events.index'));
}
}
/**
* Delete page
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete(Zenevent $event)
{
$this->data['obj'] = $event;
return view('events::admin.events_delete', $this->data);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Zenevent $event)
{
//set object name
$obj_name = $event->title;
//delete gallery
foreach($event->files as $file){
//remove file from storage
$this->remove_file_from_storage($file->path);
$file->delete();
} //endforeach delete gallery
//delete contact
$event->delete();
//set success message
Flash::info(trans('events::events.message_confirm_delete', ['name' => $event->title]));
//redirect to contacts list
return redirect(route('admin.events.index'));
}
/**
* Create slug from string
*
* @param Request $request
*/
public function create_slug(Request $request)
{
return SlugService::createSlug(Zenevent::class, 'slug', $request->string);
}
/**
* Save image file
* @param Request $request
* @param $obj
*/
protected function save_file($file,$field,$obj)
{
$filename = strtolower(Str::random(5)).'-'.Str::slug(str_replace($file->getClientOriginalExtension(),'',$file->getClientOriginalName()));
$extension = ($file->getClientOriginalExtension())?:'jpg';
$path_file = 'events/'.$filename.".".$extension;
//upload file
$upload = Storage::disk('public_images')->put(
$path_file,
file_get_contents($file->getRealPath())
);
$obj->$field = $path_file;
$obj->save();
}
/**
* Add new file to gallery
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function add_gallery()
{
return view('events::admin.partial_new_gallery');
}
/**
* Remove file from gallery
* @param $id
*/
public function del_gallery($id)
{
$obj = ZeneventFile::findOrFail($id);
//remove file from storage
$this->remove_file_from_storage($obj->path);
//delete file entry from db
$obj->delete();
}
/**
* Remove file from storage
* @param $path
*/
protected function remove_file_from_storage($path)
{
if (Storage::disk('public_images')->exists($path))
Storage::disk('public_images')->delete($path);
}
/**
* Create gallery array from request
* @param $request
* @return mixed
*/
protected function get_request_gallery($request)
{
$data['file_order'] = $request->old('file_order');
$data['file_title'] = $request->old('file_title');
$data['file_url'] = $request->old('file_url');
return $data;
}
/**
* Get banner gallery
* @param $obj
*/
protected function get_saved_gallery(Zenevent $obj)
{
$results = [];
$list = ZeneventFile::where('zenevent_id',$obj->id)
->orderBy('order','asc')
->orderBy('id','asc')
->get();
foreach($list as $li){
$results[$li->id]=[
'id' => $li->id,
'title' => $li->title,
'order' => $li->order,
'url' => $li->url,
'path' => $li->path,
'image' => $li->image,
];
} //endforeach
//return results
return $results;
}
}