middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { $user = request()->user(); if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value, 'web')) { $forms = Form::query() ->withCount('data') ->where('is_template', 0) ->get(); } else { $forms = Form::query() ->withCount('data') ->where('is_template', 0) ->where('created_by', $user->id) ->groupBy('id'); } if (request()->ajax()) { $subscription = PackageSubscription::activeSubscription($user->id); if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value, 'web')) { $forms = Form::query() ->withCount('data') ->where('is_template', 0) ->get(); } else { $forms = Form::query() ->withCount('data') ->where('is_template', 0) ->where('created_by', $user->id) ->get(); } return DataTables::of($forms) ->addColumn( 'action', function (Form $form) use ($subscription, $user) { $action = ''; if (!empty($form->schema)) { $action = ' '; } $action .= ' '; if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value) || auth()->user()->id === $form->created_by) { $action .= ''; } if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value) || auth()->user()->id === $form->created_by) { $action .= ''; } if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value) || auth()->user()->id === $form->created_by) { $action .= ''; } $action .= ' '; if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value) || auth()->user()->id === $form->created_by) { $action .= ' '; } if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value) || auth()->user()->id === $form->created_by) { $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 = $forms->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) ->when(auth()->user()->hasRole(RoleEnum::USER->value), function (Builder $builder) use ($user) { $builder->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()->hasRole(RoleEnum::SUPERVISOR->value)) { $action = ' '; } if ((!empty($row->permissions) && in_array('can_design_form', $row->permissions)) || auth()->user()->hasRole(RoleEnum::SUPERVISOR->value)) { $action .= ' '; } if ((!empty($row->permissions) && in_array('can_view_data', $row->permissions)) || auth()->user()->hasRole(RoleEnum::SUPERVISOR->value)) { $action .= ' '; } if (auth()->user()->hasRole(RoleEnum::SUPERVISOR->value)) { $action .= ' '; } return $action; } ) ->editColumn('created_by', function ($row) { return ucfirst($row->created_by); }) ->removeColumn(['id', 'permissions']) ->rawColumns(['action', 'created_by']) ->make(true); } } }