From 104f6641d322e7c01405fa5c4c0aef4616d14b23 Mon Sep 17 00:00:00 2001 From: merdiano Date: Mon, 16 Sep 2019 17:55:29 +0500 Subject: [PATCH] subscribers and event requests --- .../Admin/EventRequestCrudController.php | 60 +++++++++++++++++++ .../Admin/SubscriberCrudController.php | 60 +++++++++++++++++++ app/Http/Controllers/PublicController.php | 44 +++++++++++++- app/Http/Requests/AddEventRequest.php | 34 +++++++++++ app/Http/Requests/EventRequestRequest.php | 56 +++++++++++++++++ app/Http/Requests/SearchRequest.php | 30 ++++++++++ app/Http/Requests/SubscribeRequest.php | 30 ++++++++++ app/Http/Requests/SubscriberRequest.php | 56 +++++++++++++++++ app/Http/routes.php | 15 +++++ app/Models/EventRequest.php | 55 +++++++++++++++++ app/Models/EventStats.php | 3 +- app/Models/Subscriber.php | 55 +++++++++++++++++ ..._09_16_172956_create_subscribers_table.php | 32 ++++++++++ ..._16_173425_create_event_requests_table.php | 34 +++++++++++ .../Bilettm/Partials/PublicFooter.blade.php | 4 +- .../Bilettm/Partials/PublicHeader.blade.php | 2 +- .../Bilettm/Public/AddEventForm.blade.php | 14 +++++ .../Bilettm/Public/AddEventResult.blade.php | 4 ++ .../Bilettm/Public/SearchResults.blade.php | 35 +++++++++++ .../base/inc/sidebar_content.blade.php | 3 + routes/backpack/custom.php | 2 + routes/breadcrumbs.php | 10 ++++ 22 files changed, 630 insertions(+), 8 deletions(-) create mode 100644 app/Http/Controllers/Admin/EventRequestCrudController.php create mode 100644 app/Http/Controllers/Admin/SubscriberCrudController.php create mode 100644 app/Http/Requests/AddEventRequest.php create mode 100644 app/Http/Requests/EventRequestRequest.php create mode 100644 app/Http/Requests/SearchRequest.php create mode 100644 app/Http/Requests/SubscribeRequest.php create mode 100644 app/Http/Requests/SubscriberRequest.php create mode 100644 app/Models/EventRequest.php create mode 100644 app/Models/Subscriber.php create mode 100644 database/migrations/2019_09_16_172956_create_subscribers_table.php create mode 100644 database/migrations/2019_09_16_173425_create_event_requests_table.php create mode 100644 resources/views/Bilettm/Public/AddEventForm.blade.php create mode 100644 resources/views/Bilettm/Public/AddEventResult.blade.php diff --git a/app/Http/Controllers/Admin/EventRequestCrudController.php b/app/Http/Controllers/Admin/EventRequestCrudController.php new file mode 100644 index 00000000..8a7e5c87 --- /dev/null +++ b/app/Http/Controllers/Admin/EventRequestCrudController.php @@ -0,0 +1,60 @@ +crud->setModel('App\Models\EventRequest'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/eventrequest'); + $this->crud->setEntityNameStrings('eventrequest', 'event_requests'); + + /* + |-------------------------------------------------------------------------- + | CrudPanel Configuration + |-------------------------------------------------------------------------- + */ + + // TODO: remove setFromDb() and manually define Fields and Columns + $this->crud->setFromDb(); + + // add asterisk for fields that are required in EventRequestRequest + $this->crud->setRequiredFields(StoreRequest::class, 'create'); + $this->crud->setRequiredFields(UpdateRequest::class, 'edit'); + } + + public function store(StoreRequest $request) + { + // your additional operations before save here + $redirect_location = parent::storeCrud($request); + // your additional operations after save here + // use $this->data['entry'] or $this->crud->entry + return $redirect_location; + } + + public function update(UpdateRequest $request) + { + // your additional operations before save here + $redirect_location = parent::updateCrud($request); + // your additional operations after save here + // use $this->data['entry'] or $this->crud->entry + return $redirect_location; + } +} diff --git a/app/Http/Controllers/Admin/SubscriberCrudController.php b/app/Http/Controllers/Admin/SubscriberCrudController.php new file mode 100644 index 00000000..70426fb5 --- /dev/null +++ b/app/Http/Controllers/Admin/SubscriberCrudController.php @@ -0,0 +1,60 @@ +crud->setModel('App\Models\Subscriber'); + $this->crud->setRoute(config('backpack.base.route_prefix') . '/subscriber'); + $this->crud->setEntityNameStrings('subscriber', 'subscribers'); + + /* + |-------------------------------------------------------------------------- + | CrudPanel Configuration + |-------------------------------------------------------------------------- + */ + + // TODO: remove setFromDb() and manually define Fields and Columns + $this->crud->setFromDb(); + + // add asterisk for fields that are required in SubscriberRequest + $this->crud->setRequiredFields(StoreRequest::class, 'create'); + $this->crud->setRequiredFields(UpdateRequest::class, 'edit'); + } + + public function store(StoreRequest $request) + { + // your additional operations before save here + $redirect_location = parent::storeCrud($request); + // your additional operations after save here + // use $this->data['entry'] or $this->crud->entry + return $redirect_location; + } + + public function update(UpdateRequest $request) + { + // your additional operations before save here + $redirect_location = parent::updateCrud($request); + // your additional operations after save here + // use $this->data['entry'] or $this->crud->entry + return $redirect_location; + } +} diff --git a/app/Http/Controllers/PublicController.php b/app/Http/Controllers/PublicController.php index 28b1db08..110aad76 100644 --- a/app/Http/Controllers/PublicController.php +++ b/app/Http/Controllers/PublicController.php @@ -8,6 +8,11 @@ namespace App\Http\Controllers; +use App\Http\Requests\AddEventRequest; +use App\Http\Requests\SearchRequest; +use App\Http\Requests\SubscribeRequest; +use App\Models\EventRequest; +use App\Models\Subscriber; use Illuminate\Http\Request; use App\Models\Category; use App\Models\Event; @@ -42,7 +47,7 @@ class PublicController extends Controller ]); } - public function showEvents($cat_id = null,Request $request){ + public function showEvents($cat_id = null, Request $request){ $date = $request->get('date'); //$cat_id = $request->get('cat_id'); @@ -83,8 +88,41 @@ class PublicController extends Controller ]); } - public function search(Request $request){ + public function search(SearchRequest $request){ + //todo implement with elastick search and scout $query = $request->get('q'); - return view('Bilettm.Public.SearchResult'); + $events = Event::where('title','like',"%{$query}%")->get(); + + return view('Bilettm.Public.SearchResults') + ->with([ + 'events' => $events, + 'query' => $query + ]); + } + + public function showAddEventForm(){ + return view('Bilettm.Public.AddEventForm'); + } + + public function postAddEvent(AddEventRequest $request){ + + $addEvent = EventRequest::create([ + 'name' => $request->get('name'), + 'email' => $request->get('email'), + 'phone' => $request->get('phone'), + 'detail' => $request->get('detail') + ]); + return view('Bilettm.Public.AddEventResult',compact('addEvent')); + } + + public function subscribe(SubscribeRequest $request){ + $email = $request->get('email'); + $subscribe = Subscriber::updateOrCreate(['email'=>$email,'active'=>1]); + + if($subscribe){ + session()->flash('success','Subscription successfully'); + } + + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Http/Requests/AddEventRequest.php b/app/Http/Requests/AddEventRequest.php new file mode 100644 index 00000000..3f32f57b --- /dev/null +++ b/app/Http/Requests/AddEventRequest.php @@ -0,0 +1,34 @@ +'required', + 'phone'=>'required', + 'email' =>'required|email', + 'details' => 'required' + // + ]; + } +} diff --git a/app/Http/Requests/EventRequestRequest.php b/app/Http/Requests/EventRequestRequest.php new file mode 100644 index 00000000..35dba99f --- /dev/null +++ b/app/Http/Requests/EventRequestRequest.php @@ -0,0 +1,56 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // 'name' => 'required|min:5|max:255' + ]; + } + + /** + * Get the validation attributes that apply to the request. + * + * @return array + */ + public function attributes() + { + return [ + // + ]; + } + + /** + * Get the validation messages that apply to the request. + * + * @return array + */ + public function messages() + { + return [ + // + ]; + } +} diff --git a/app/Http/Requests/SearchRequest.php b/app/Http/Requests/SearchRequest.php new file mode 100644 index 00000000..cd098b9f --- /dev/null +++ b/app/Http/Requests/SearchRequest.php @@ -0,0 +1,30 @@ + 'required|min:3' + ]; + } +} diff --git a/app/Http/Requests/SubscribeRequest.php b/app/Http/Requests/SubscribeRequest.php new file mode 100644 index 00000000..02c5e135 --- /dev/null +++ b/app/Http/Requests/SubscribeRequest.php @@ -0,0 +1,30 @@ + 'required|email' + ]; + } +} diff --git a/app/Http/Requests/SubscriberRequest.php b/app/Http/Requests/SubscriberRequest.php new file mode 100644 index 00000000..8a5d774b --- /dev/null +++ b/app/Http/Requests/SubscriberRequest.php @@ -0,0 +1,56 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // 'name' => 'required|min:5|max:255' + ]; + } + + /** + * Get the validation attributes that apply to the request. + * + * @return array + */ + public function attributes() + { + return [ + // + ]; + } + + /** + * Get the validation messages that apply to the request. + * + * @return array + */ + public function messages() + { + return [ + // + ]; + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index aee694bb..2a7733f8 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -724,6 +724,21 @@ Route::group( 'uses' => 'PublicController@search' ]); + Route::get('/add_event',[ + 'as' => 'add_event', + 'uses' => 'PublicController@showAddEventForm' + ]); + + Route::post('/add_event',[ + 'as' => 'add_event', + 'uses' => 'PublicController@postAddEvent' + ]); + + Route::post('/subscribe',[ + 'as'=>'subscription', + 'uses' =>'PublicController@subscribe' + ]); + Route::get('/terms_and_conditions', [ 'as' => 'termsAndConditions', function () { diff --git a/app/Models/EventRequest.php b/app/Models/EventRequest.php new file mode 100644 index 00000000..b19f27b8 --- /dev/null +++ b/app/Models/EventRequest.php @@ -0,0 +1,55 @@ +updateOrCreate([ 'event_id' => $event_id, diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php new file mode 100644 index 00000000..d2238003 --- /dev/null +++ b/app/Models/Subscriber.php @@ -0,0 +1,55 @@ +increments('id'); + $table->string('email')->unique(); + $table->boolean('active')->default(1); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('subscribers'); + } +} diff --git a/database/migrations/2019_09_16_173425_create_event_requests_table.php b/database/migrations/2019_09_16_173425_create_event_requests_table.php new file mode 100644 index 00000000..7a478d4c --- /dev/null +++ b/database/migrations/2019_09_16_173425_create_event_requests_table.php @@ -0,0 +1,34 @@ +increments('id'); + $table->string('email')->nullable(); + $table->string('phone')->nullable(); + $table->string('name')->nullable(); + $table->longText('details')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('event_requests'); + } +} diff --git a/resources/views/Bilettm/Partials/PublicFooter.blade.php b/resources/views/Bilettm/Partials/PublicFooter.blade.php index ea197b8b..e519abee 100644 --- a/resources/views/Bilettm/Partials/PublicFooter.blade.php +++ b/resources/views/Bilettm/Partials/PublicFooter.blade.php @@ -6,9 +6,9 @@