middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { $user = request()->user(); if (request()->ajax()) { $subscription = PackageSubscription::activeSubscription($user->id); $forms = Form::leftJoin('form_data', 'forms.id', '=', 'form_data.form_id') ->select('name', 'slug', 'description', 'forms.created_at', 'forms.id', DB::raw('COUNT(form_data.form_id) as data_count'), 'schema') ->where('is_template', 0) ->where('created_by', $user->id) ->groupBy('id'); return DataTables::of($forms) ->addColumn( 'action', function (Form $form) use ($subscription, $user) { $action = ''; if (! empty($form->schema)) { $action = ' '; } $action .= ' '; $action .= ''; $action .= ''; $action .= ''; $action .= ' '; $superadmins = env('SUPERADMIN_EMAILS'); $superadmin_emails = explode(',', $superadmins); if (in_array($user->email, $superadmin_emails) || (is_saas_enabled() && (isset($subscription->package_details['is_form_downloadable']) && $subscription->package_details['is_form_downloadable'])) || ! is_saas_enabled()) { $action .= ' '; } $action .= ' '; return $action; } ) ->editColumn('created_at', function ($row) { $date_format = config('constants.APP_DATE_FORMAT'); if (config('constants.APP_TIME_FORMAT') == '12') { $date_format .= ' h:i A'; } elseif (config('constants.APP_TIME_FORMAT') == '24') { $date_format .= ' H:i'; } else { $date_format = 'm/d/Y h:i A'; } return ! empty($row->created_at) ? Carbon::createFromTimestamp(strtotime($row->created_at))->format($date_format) : null; }) ->editColumn('data_count', function ($row) { return $row->data_count; }) ->editColumn('name', function ($row) { $html = $row->name; if (empty($row->schema)) { $html .= '
('.(__('messages.form_is_incomplete')).')'; } return $html; }) ->removeColumn('id') ->rawColumns(['action', 'created_at', 'data_count', 'name']) ->make(true); } //Count forms $form_count = Form::where('created_by', $user->id) ->where('is_template', 0) ->count(); //Count templates. $template_count = Form::where('created_by', $user->id) ->where('is_template', 1) ->count(); //Count submissions. $submission_count = Form::join('form_data as fd', 'forms.id', '=', 'fd.form_id') ->where('is_template', 0) ->where('created_by', $user->id) ->count(); return view('home') ->with(compact('form_count', 'template_count', 'submission_count')); } /** * Show Form Template * * @return \Illuminate\Contracts\Support\Renderable */ public function getTemplate() { if (request()->ajax()) { $user_id = request()->user()->id; $forms = Form::select('name', 'description', 'id', 'slug', 'is_global_template') ->where(function ($query) use($user_id) { $query->where('is_template', 1) ->where('created_by', $user_id) ->orWhere('is_global_template', 1); }) ->groupBy('id'); return DataTables::of($forms) ->addColumn('action', function ($row) { $action = ' '; if (! $row->is_global_template || auth()->user()->can('superadmin')) { $action .= ' '; } return $action; }) ->editColumn('is_global_template', function ($row) { if (auth()->user()->can('superadmin')) { $checked = $row->is_global_template ? 'checked' : ''; $html = '
'; return $html; } }) ->editColumn('name', function ($row) { $name = $row->name; if ($row->is_global_template) { $name .= '
'.__('messages.pre_made').''; } return $name; }) ->removeColumn('id') ->rawColumns(['action', 'is_global_template', 'name']) ->make(true); } return view('home'); } /** * Tests if SMTP connection details is correct or not. * * @return \Illuminate\Contracts\Support\Renderable */ public function testSMTP() { try { //Set the default config. config([ 'mail.mailers.smtp.host' => request()->host, 'mail.mailers.smtp.port' => request()->port, 'mail.from.address' => request()->from_address, 'mail.from.name' => request()->from_name, 'mail.mailers.smtp.encryption' => request()->encryption, 'mail.mailers.smtp.username' => request()->username, 'mail.mailers.smtp.password' => request()->password ]); Mail::to(request()->from_address) ->send(new TestEmail()); return $this->respondSuccess(); } catch (\Exception $e) { return $this->respondWithError($e->getMessage()); } } /** * Show assigned forms * * @return \Illuminate\Contracts\Support\Renderable */ public function getAssignedForms(Request $request) { if ($request->ajax()) { $forms = UserForm::join('forms', 'user_forms.form_id', '=', 'forms.id') ->leftJoin('users', 'forms.created_by', '=', 'users.id') ->where('user_forms.assigned_to', \Auth::id()) ->select('user_forms.permissions as permissions', 'forms.name as name', 'forms.description as description', 'forms.id as form_id', 'forms.created_at as created_at', 'forms.slug as slug', 'users.name as created_by'); return DataTables::of($forms) ->addColumn( 'action', function ($row) { $action = ''; if (! empty($row->permissions) && in_array('can_view_form', $row->permissions) && auth()->user()->show_edit_buttons_form) { $action = ' '; } if (! empty($row->permissions) && in_array('can_design_form', $row->permissions) && auth()->user()->show_edit_buttons_form) { $action .= ' '; } if (! empty($row->permissions) && in_array('can_view_data', $row->permissions) && auth()->user()->show_edit_buttons_form) { $action .= ' '; } return $action; } ) ->editColumn('created_by', function ($row) { return ucfirst($row->created_by); }) ->removeColumn(['id', 'permissions']) ->rawColumns(['action', 'created_by']) ->make(true); } } }