campaignRepository = $campaignRepository; $this->_config = request('_config'); } /** * Display a listing of the resource. * * @return \Illuminate\View\View */ public function index() { return view($this->_config['view']); } /** * Show the form for creating a new resource. * * @return \Illuminate\View\View */ public function create() { return view($this->_config['view']); } /** * Store a newly created resource in storage. * * @return \Illuminate\Http\Response */ public function store() { $this->validate(request(), [ 'name' => 'required', 'subject' => 'required', 'status' => 'required', 'marketing_template_id' => 'required', 'marketing_event_id' => 'required_if:schedule_type,event', ]); Event::dispatch('marketing.campaigns.create.before'); $locale = $this->campaignRepository->create(request()->all()); Event::dispatch('marketing.campaigns.create.after', $locale); session()->flash('success', trans('admin::app.marketing.campaigns.create-success')); return redirect()->route($this->_config['redirect']); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\View\View */ public function edit($id) { $campaign = $this->campaignRepository->findOrFail($id); return view($this->_config['view'], compact('campaign')); } /** * Update the specified resource in storage. * * @param int $id * @return \Illuminate\Http\Response */ public function update($id) { $this->validate(request(), [ 'name' => 'required', 'subject' => 'required', 'status' => 'required', 'marketing_template_id' => 'required', 'marketing_event_id' => 'required_if:schedule_type,event', ]); Event::dispatch('marketing.campaigns.update.before', $id); $locale = $this->campaignRepository->update(request()->all(), $id); Event::dispatch('marketing.campaigns.update.after', $locale); session()->flash('success', trans('admin::app.marketing.campaigns.update-success')); return redirect()->route($this->_config['redirect']); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $locale = $this->campaignRepository->findOrFail($id); try { Event::dispatch('marketing.campaigns.delete.before', $id); $this->campaignRepository->delete($id); Event::dispatch('marketing.campaigns.delete.after', $id); session()->flash('success', trans('admin::app.marketing.campaigns.delete-success')); return response()->json(['message' => true], 200); } catch(\Exception $e) { session()->flash('error', trans('admin::app.response.delete-failed', ['name' => 'Email Campaign'])); } return response()->json(['message' => false], 400); } }