Пример #1
0
 /**
  * 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'));
 }
Пример #2
0
 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'));
 }
Пример #3
0
    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");
        }
    }
Пример #4
0
 /**
  * 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]));
 }
Пример #5
0
 /**
  * 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("/");
     }
 }
Пример #6
0
 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;
 }
Пример #7
0
 /**
  * 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;
             }
         }
     }
 }
Пример #8
0
 /**
  *
  * 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'));
 }
Пример #9
0
 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();
 }
Пример #10
0
<?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
Пример #11
0
 /**
  * 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!');
     }
 }
Пример #12
0
 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;
     }
 }