/** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { if (!FormController::checkPermissions($id)) { return redirect('/projects'); } $project = ProjectController::getProject($id); return view('projects.show', compact('project')); }
public function index($pid, $fid) { if (!FormController::validProjForm($pid, $fid)) { return redirect('projects'); } $form = FormController::getForm($fid); if (!\Auth::user()->isFormAdmin($form)) { flash()->overlay('You do not have permission to view that page.', 'Whoops.'); return redirect('projects'); } $presets = RecordPreset::where('fid', '=', $fid)->get(); return view('recordPresets/index', compact('form', 'presets')); }
public function view_pdf($id = null, $type = null) { $form_controller = new FormController(); $patient_report = $form_controller->view_form($id, $type); $result_relation = $form_controller->get_relative($id, $type); //var_dump($this->view_form($id , $type)); if (count($patient_report) > 0) { $html_view = \View::make('pages.form.form_create_pdf', compact('patient_report', 'result_relation'))->render(); $pdf = \App::make('mpdf.wrapper', ['th', 'A4', '', '', 10, 10, 10, 10, 10, 5]); //$pdf = \App::make('mpdf.wrapper'); $pdf->setFooter('{PAGENO} / {nb}'); $pdf->SetXY(110, 200); // $pdf->Image('/uploads/2016-04-22-16-16-29-1416923147-01-o.jpg', '', '', 40, 40, '', '', 'T', false, 300, '', false, false, 1, false, false, false); $pdf->loadHTML($html_view); $pdf->SetTitle($patient_report->person_first_name . ' ' . $patient_report->person_last_name . '_' . $patient_report->disease_type_name_en); $pdf->stream($patient_report->person_first_name . ' ' . $patient_report->person_last_name . '_' . $patient_report->disease_type_name_en . '.pdf'); /* $html_view = \View::make('pages.form.form_create_pdf', compact('patient_report'))->render(); // return $html_view; $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); $pdf->SetFont('freeserif', '', 10); //ภาษาไทยใช้ได้ $pdf-> SetTitle($patient_report->person_first_name.' '.$patient_report->person_last_name.'_'.$patient_report->disease_type_name_en); $pdf-> AddPage(); $pdf-> writeHTML($html_view, true, false, true, false, ''); $pdf-> Output($patient_report->person_first_name.' '.$patient_report->person_last_name.'_'.$patient_report->disease_type_name_en.'.pdf'); */ } else { $result = DB::select('SELECT disease_types.disease_type_id ,disease_type_name_th ,disease_type_name_en FROM disease_forms ,patients_disease_forms ,disease_types ,patients WHERE patients_disease_forms.question_id = disease_forms.question_id AND disease_types.disease_type_id = disease_forms.disease_type_id AND patients_disease_forms.patient_id = patients.patient_id AND patients.person_id = ' . $id); $person = DB::table('persons')->where('person_id', '=', $id)->first(); return view('profile')->with('person', $person)->with('results', $result)->with('result_callback_header', "Error")->with('result_callback', "Cannot find patient profile"); } }
/** * Creates a form group. * * @param Request $request * @return Response */ public function create(Request $request) { $fid = $request['form']; $form = FormController::getForm($fid); $project = $form->project()->first(); $pid = $project->pid; if ($request['name'] == "") { flash()->overlay('You must enter a group name.', 'Whoops.'); return redirect(action('FormGroupController@index', ['fid' => $form->fid])); } $group = FormGroupController::buildGroup($form->fid, $request); if (!is_null($request['users'])) { $group->users()->attach($request['users']); } flash()->overlay('Group created!', 'Success'); return redirect(action('FormGroupController@index', ['fid' => $form->fid])); }
/** * Display metadata for all records in JSON format, even to public if enabled * * @params int $pid, int $fid * @return Response */ public function records($pid, $fid) { //if public metadata is enabled OR if the user is signed in, display JSON $form = Form::find($fid); if ($form->public_metadata || Auth::check()) { $form_layout_tags = \App\Http\Controllers\FormController::xmlToArray($form->layout); $this->form_records = $form->records($pid, $fid)->get(); $node_and_field_order = $this->layout($form_layout_tags); $metadata_and_records = new Collection(); foreach ($this->form_records as $record) { $record_field_metadata = $this->matchRecordsAndMetadata($node_and_field_order, $record); if ($record_field_metadata->count() > 0) { $metadata_and_records->push($record_field_metadata); } } return response()->json($metadata_and_records); } else { return redirect("/"); } }
public static function navButtonsAllowed($layout, $flid) { $vis = ['up' => false, 'down' => false, 'upIn' => false, 'downIn' => false, 'upOut' => false, 'downOut' => false]; $layout = FormController::xmlToArray($layout); $fieldTag = 0; for ($i = 0; $i < sizeof($layout); $i++) { if ($layout[$i]['tag'] == 'ID' && $layout[$i]['value'] == $flid) { $fieldTag = $i; break; } } //up - if close node or field directly above if (isset($layout[$fieldTag - 1]) && $layout[$fieldTag - 1]['tag'] == 'ID') { $vis['up'] = true; } else { if (isset($layout[$fieldTag - 1]) && $layout[$fieldTag - 1]['tag'] == 'NODE' && $layout[$fieldTag - 1]['type'] == 'close') { $vis['up'] = true; } } //down - if open node or field directly below if (isset($layout[$fieldTag + 1]) && $layout[$fieldTag + 1]['tag'] == 'ID') { $vis['down'] = true; } else { if (isset($layout[$fieldTag + 1]) && $layout[$fieldTag + 1]['tag'] == 'NODE' && $layout[$fieldTag + 1]['type'] == 'open') { $vis['down'] = true; } } //upIn - if close node with same lvl is directly above if (isset($layout[$fieldTag - 1]) && $layout[$fieldTag - 1]['tag'] == 'NODE' && $layout[$fieldTag - 1]['type'] == 'close' && $layout[$fieldTag - 1]['level'] == $layout[$fieldTag]['level']) { $vis['upIn'] = true; } //downIn - if open node with same lvl is directly below if (isset($layout[$fieldTag + 1]) && $layout[$fieldTag + 1]['tag'] == 'NODE' && $layout[$fieldTag + 1]['type'] == 'open' && $layout[$fieldTag + 1]['level'] == $layout[$fieldTag]['level']) { $vis['downIn'] = true; } //upOut - if first open node with one lvl less is above for ($j = $fieldTag - 1; $j >= 0; $j--) { if (isset($layout[$j]) && $layout[$j]['tag'] == 'NODE' && $layout[$j]['type'] == 'open' && $layout[$j]['level'] == $layout[$fieldTag]['level'] - 1) { $vis['upOut'] = true; break; } } //downOut - if first close node with one lvl less is below for ($j = $fieldTag + 1; $j < sizeof($layout); $j++) { if (isset($layout[$j]) && $layout[$j]['tag'] == 'NODE' && $layout[$j]['type'] == 'close' && $layout[$j]['level'] == $layout[$fieldTag]['level'] - 1) { $vis['downOut'] = true; break; } } return $vis; }
/** * Display a listing of the resource. * * @return Response */ public function index(Request $request) { //These functions deal with field nav $field = \App\Http\Controllers\FieldController::getField($request->flid); $form = \App\Http\Controllers\FormController::getForm($field->fid); $vals = FormController::xmlToArray($form->layout); if ($request->action == 'moveFieldUp') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a field above us if ($vals[$i - 1]['tag'] == 'ID') { $temp = $vals[$i]; $vals[$i] = $vals[$i - 1]; $vals[$i - 1] = $temp; } //if we have a node above us if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') { $j = $i - 1; $lvl = $vals[$i - 1]['level']; while ($j > 0) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) { $k = $j; //this is the start of the node break; } else { $j--; } } $temp = $vals[$i]; while ($i > $k) { $vals[$i] = $vals[$i - 1]; $i--; } $vals[$i] = $temp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDown') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a field below us if ($vals[$i + 1]['tag'] == 'ID') { $temp = $vals[$i]; $vals[$i] = $vals[$i + 1]; $vals[$i + 1] = $temp; } //if we have a node below us if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') { $j = $i + 1; $lvl = $vals[$i + 1]['level']; while ($j < sizeof($vals)) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) { $k = $j; //this is the start of the node break; } else { $j++; } } $temp = $vals[$i]; while ($i < $k) { $vals[$i] = $vals[$i + 1]; $i++; } $vals[$i] = $temp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldUpIn') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if the Node is above us if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') { $tmp = $vals[$i]; $vals[$i] = $vals[$i - 1]; $vals[$i - 1] = $tmp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDownIn') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if the Node is above us if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') { $tmp = $vals[$i]; $vals[$i] = $vals[$i + 1]; $vals[$i + 1] = $tmp; } $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldUpOut') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a node above us $j = $i - 1; $lvl = $vals[$i]['level'] - 1; while ($j > 0) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) { $k = $j; break; } else { $j--; } } $temp = $vals[$i]; while ($i > $k) { $vals[$i] = $vals[$i - 1]; $i--; } $vals[$i] = $temp; $form->layout = $this->valsToXML($vals); $form->save(); break; } } } if ($request->action == 'moveFieldDownOut') { for ($i = 0; $i < sizeof($vals); $i++) { if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) { //if we have a node below us $j = $i + 1; $lvl = $vals[$i]['level'] - 1; while ($j < sizeof($vals)) { if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) { $k = $j; break; } else { $j++; } } $temp = $vals[$i]; while ($i < $k) { $vals[$i] = $vals[$i + 1]; $i++; } $vals[$i] = $temp; $form->layout = $this->valsToXML($vals); $form->save(); break; } } } }
/** * * Display a view for mass assigning a value to many records at once * * @param $pid * @param $fid * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ public function showMassAssignmentView($pid, $fid) { if (!$this->checkPermissions($fid, 'modify')) { return redirect()->back(); } $form = FormController::getForm($fid); $fields = $form->fields()->get(); return view('records.mass-assignment', compact('form', 'fields', 'pid', 'fid')); }
private function addPresets(Form $form, $fid) { $preset = Form::where('fid', '=', $fid)->first(); $field_assoc = array(); $form->layout = $preset->layout; foreach ($preset->fields()->get() as $field) { $new = new Field(); $new->pid = $form->pid; $new->fid = $form->fid; $new->order = $field->order; $new->type = $field->type; $new->name = $field->name; $new->slug = $field->slug . '_' . $form->slug; $new->desc = $field->desc; $new->required = $field->required; $new->default = $field->default; $new->options = $field->options; $new->save(); $field_assoc[$field->flid] = $new->flid; } $xmlArray = FormController::xmlToArray($form->layout); for ($i = 0; $i < sizeof($xmlArray); $i++) { if ($xmlArray[$i]['tag'] == 'ID') { $temp = $field_assoc[$xmlArray[$i]['value']]; $xmlArray[$i]['value'] = $temp; } } $x = new FieldNavController(); $xmlString = $x->valsToXML($xmlArray); $form->layout = $xmlString; $form->save(); }
<?php $vals = \App\Http\Controllers\FormController::xmlToArray($form->layout); ?> @for($i=0;$i<sizeof($vals);$i++) @if($vals[$i]['tag']=='ID') @include($fieldview,['field' => App\Field::where('flid', '=', $vals[$i]['value'])->first()]) @elseif($vals[$i]['tag']=='NODE') <?php $level = $vals[$i]['level']; $title = $vals[$i]['attributes']['TITLE']; $node = array(); $i++; while ($vals[$i]['tag'] != 'NODE' | $vals[$i]['type'] != 'close' | $vals[$i]['level'] != $level) { array_push($node, $vals[$i]); $i++; } ?> @include('forms.layout.nested',['node' => $node, 'title' => $title, 'fieldview' => $fieldview]) @endif @endfor
/** * Rolls back a record. * * @param Request $request */ public function rollback(Request $request) { $revision = Revision::where('id', '=', $request['revision'])->first(); $form = FormController::getForm($revision->fid); if ($revision->type == 'create') { $record = Record::where('rid', '=', $revision->rid)->first(); $revision = RevisionController::storeRevision($record->rid, 'delete'); $record->delete(); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $revision->rid . ' has been deleted.', 'Success!'); } elseif ($revision->type == 'delete') { if (RecordController::exists($revision->rid)) { flash()->overlay('Cannot recreate a record that already exists.'); } else { $record = new Record(); $record->rid = $revision->rid; $record->fid = $revision->fid; $record->pid = $form->pid; $record->owner = $revision->owner; $record->save(); $record->kid = $record->pid . '-' . $record->fid . '-' . $record->rid; $record->save(); RevisionController::redo($record, $form, $revision, false); RevisionController::storeRevision($record->rid, 'create'); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!'); } } else { $record = RecordController::getRecord($revision->rid); RevisionController::redo($record, $form, $revision, true); flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!'); } }
private function checkPermissions($fid, $permission = '') { switch ($permission) { case 'create': if (!\Auth::user()->canCreateFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to create fields for that form.', 'Whoops.'); return false; } return true; case 'edit': if (!\Auth::user()->canEditFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to edit fields for that form.', 'Whoops.'); return false; } return true; case 'delete': if (!\Auth::user()->canDeleteFields(FormController::getForm($fid))) { flash()->overlay('You do not have permission to delete fields for that form.', 'Whoops.'); return false; } return true; default: if (!\Auth::user()->inAFormGroup(FormController::getForm($fid))) { flash()->overlay('You do not have permission to view that field.', 'Whoops.'); return false; } return true; } }