public function actionIndex2() { $searchModel = new GradeSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); if (Yii::$app->request->post('hasEditable')) { $gradeId = Yii::$app->request->post('editableKey'); $grade = Grade::findOne($gradeId); $subject = Subject::findOne($grade->subject_subject_id); $out = Json::encode(['output' => '', 'message' => '']); $post = []; $posted = current($_POST['Grade']); $post['Grade'] = $posted; if ($grade->load($post)) { if ($grade->grade_approval_status == 'Approved') { $grade->grade_approved_by = Yii::$app->user->identity->username; } else { $grade->grade_approved_by = null; } if ($grade->takenStatus == null) { $grade->takenStatus = 'Not Taken'; } // $subjectTakenStatus = ArrayHelper::map(Subject::find() // ->where(['subject_id'=>$grade->subject_subject_id]) // ->all(),'subject_id','subject_taken_status'); $subject->subject_taken_status = $grade->takenStatus; $subject->save(); $grade->save(); } echo $out; return; } return $this->render('index2', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); }
protected function findModel($id) { if (($model = Subject::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Subject::find(); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->joinWith('grades'); $query->joinWith('scholarScholar'); $query->andFilterWhere(['subject_id' => $this->subject_id, 'scholar_scholar_id' => $this->scholar_scholar_id, 'scholar_school_school_id' => $this->scholar_school_school_id, 'subject_term' => $this->subject_term, 'subject_units' => $this->subject_units]); $query->andFilterWhere(['like', 'subject_name', $this->subject_name])->andFilterWhere(['like', 'subject_taken_status', $this->subject_taken_status])->andFilterWhere(['like', 'subject_approval_status', $this->subject_approval_status])->andFilterWhere(['like', 'subject_approved_by', $this->subject_approved_by])->andFilterWhere(['like', 'grades.grade_raw_grade', $this->rawGrade])->andFilterWhere(['like', 'scholar.scholar_first_name', $this->firstName])->andFilterWhere(['like', 'scholar.scholar_middle_name', $this->middleName])->andFilterWhere(['like', 'scholar.scholar_last_name', $this->lastName]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Subject::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!isset($this->dob)) { if (isset($this->dob_yyyy) && isset($this->dob_mm) && isset($this->dob_dd)) { $this->dob = sprintf('%s-%s-%s', $this->dob_yyyy, $this->dob_mm, $this->dob_dd); } } if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails $query->where('0=1'); return $dataProvider; } print_r($this->dob); // grid filtering conditions $query->andFilterWhere(['id' => $this->id, 'dob' => $this->dob, 'screening_form_id' => $this->screening_form_id, 'project_id' => $this->project_id, 'gp_opt_id' => $this->gp_opt_id, 'email_opt_id' => $this->email_opt_id, 'sex_id' => $this->sex_id, 'sort_order' => $this->sort_order, 'status_id' => $this->status_id, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, 'created_by' => $this->created_by, 'updated_by' => $this->updated_by]); $query->Where(['=', 'first_name', $this->first_name])->andWhere(['=', 'last_name', $this->last_name])->andWhere(['=', 'dob', $this->dob]); return $dataProvider; }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = parent::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!isset($params['dob'])) { if (isset($this->dob_yyyy) && isset($this->dob_mm) && isset($this->dob_dd)) { $this->dob = sprintf('%s-%s-%s', $this->dob_yyyy, $this->dob_mm, $this->dob_dd); } } if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails $query->where('0=1'); return $dataProvider; } if (isset($params['hash'])) { $query->Where(['=', 'hash', $params['hash']])->andWhere(['=', 'status_id', Types::$status['active']['id']]); } else { $query->Where(['=', 'first_name', $this->first_name])->andWhere(['=', 'last_name', $this->last_name])->andWhere(['=', 'dob', $this->dob])->andWhere(['=', 'status_id', Types::$status['active']['id']]); } return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getSubject() { return $this->hasOne(Subject::className(), ['id' => 'subject_id']); }
public function createScreeningPdf($hash) { $screening_entry_model = ScreeningEntry::findOne(['hash' => $hash]); $screening_form_model = ScreeningForm::findOne(['id' => $screening_entry_model->screening_form_id]); $subject_model = Subject::findOne(['id' => $screening_entry_model->subject_id]); $count = 1; //$permissions = \SetaPDF_Core_SecHandler::PERM_DIGITAL_PRINT ; $this->_font = 'Helvetica'; //class_exists('TCPDF', true); // trigger Composers autoloader to load the TCPDF class $pdf = new \FPDI(); $pdf->SetAutoPageBreak(true); // add a page $pdf->SetTopMargin(30); $pdf->AddPage(); $pdf->setSourceFile(\yii::$app->basePath . "/../letterhead-mini-header.pdf"); $tplIdx = $pdf->importPage(1); // use the imported page and place it at point 10,10 with a width of 100 mm $pdf->useTemplate($tplIdx, 0, 0); $pdf->SetFont($this->_font, '', 9); $pdf->SetXY(10, 6); $pdf->Cell(0, 3, 'Confidential - Participant screening form'); $pdf->SetFont($this->_font, '', 12); $pdf->SetXY(10, 14); $pdf->MultiCell(150, 3, yii::$app->DateComponent->timestampToUkDate($screening_entry_model->created_at), 0, 'R'); $pdf->MultiCell(100, 3, $screening_entry_model->screening_form_title, 0, ''); $pdf->Ln(); $pdf->SetFont($this->_font, '', 9); $pdf->Cell(100, 4, sprintf('Participant: %s %s (dob %s)', $screening_entry_model->subject->first_name, $screening_entry_model->subject->last_name, yii::$app->DateComponent->isoToUkDate($screening_entry_model->subject->dob))); $pdf->Cell(50, 4, sprintf('Identifier: %s', $screening_entry_model->subject->cubric_id), 0, '', 'R'); $pdf->Ln(); $pdf->Cell(100, 4, sprintf('Researcher: %s %s (project %s)', $screening_entry_model->researcher->first_name, $screening_entry_model->researcher->last_name, $screening_entry_model->project->code)); $pdf->Cell(50, 4, sprintf('Resource: %s', $screening_entry_model->resource_title), 0, '', 'R'); $pdf->SetXY(10, 38); $pdf->SetFont($this->_font, '', 12); $pdf->Cell(150, 4, sprintf('Responses')); $pdf->SetFont($this->_font, '', 9); $pdf->Ln(); foreach (yii::$app->screeningresponse->getResponses($hash) as $response) { if (strlen($response['caption']) > 0) { $pdf->Ln(); $pdf->MultiCell(180, 4, sprintf('%s ', $response['caption']), 0, 'U'); $count = 1; } $pdf->MultiCell(180, 4, sprintf('%s. %s ', $count, $response['content'])); $pdf->SetFont($this->_font, 'B', 9); if ($response['response'] === null) { $response['response'] = 'Not specified / Unknown.'; } $pdf->MultiCell(180, 4, sprintf('%s ', $response['response'])); $pdf->SetFont($this->_font, '', 9); $count++; $pdf->Ln(); } $pdf->Ln(); $pdf->SetFont($this->_font, '', 12); $pdf->Cell(180, 4, sprintf('Signatures')); $pdf->Ln(); $pdf->Ln(); $pdf->SetFont($this->_font, '', 9); $pdf->Cell(100, 4, 'Participant '); $pdf->Cell(100, 4, 'Researcher '); $pdf->Ln(); $pdf->Ln(); $currentX = $pdf->GetX(); $currentY = $pdf->GetY(); $pdf->Image(sprintf('/tmp/subject-%s.png', $hash), $currentX, $currentY); $currentX = $pdf->GetX(); $pdf->Image(sprintf('/tmp/researcher-%s.png', $hash), $currentX + 100, $currentY); // now write some text above the imported page // NOW SET ScreeningEntry::progress_id = PUBLISHED so it cannot be edited again. // $pdfData = $pdf->Output('S'); // create a writer // create a Http writer //$writer = new \SetaPDF_Core_Writer_Http("fpdf-sign-demo.pdf", true); // load document by filename //$document = new \SetaPDF_Core_Document::loadByString($pdfData, $writer); //$document = new \SetaPDF_Core_Reader_File($pdf->Output(), $writer); $writer = new \SetaPDF_Core_Writer_File("/Users/Spiro/tmp/myPDF.pdf"); $document = \SetaPDF_Core_Document::loadByString($pdf->Output("S"), $writer); // let's prepare the temporary file writer: \SetaPDF_Core_Writer_TempFile::setTempDir("/tmp/"); // create a signer instance for the document $signer = new \SetaPDF_Signer($document); // add a field with the name "Signature" to the top left of page 1 $signer->addSignatureField(\SetaPDF_Signer_SignatureField::DEFAULT_FIELD_NAME, 1, \SetaPDF_Signer_SignatureField::POSITION_LEFT_BOTTOM, array('x' => 10, 'y' => 10), 180, 50); // set some signature properties $signer->setReason('Integrity'); $signer->setLocation('CUBRIC'); $signer->setContactInfo('+44 2920 703859'); // ccreate an OpenSSL module instance $module = new \SetaPDF_Signer_Signature_Module_OpenSsl(); // set the sign certificate $module->setCertificate(file_get_contents("/Users/spiro/Sites/projects/certs/certificate.pem")); // set the private key for the sign certificate $module->setPrivateKey(array(file_get_contents("/Users/spiro/Sites/projects/certs/key.pem"), "")); // create a Signature appearance $visibleAppearance = new \SetaPDF_Signer_Signature_Appearance_Dynamic($module); // choose a document to get the background from and convert the art box to an xObject $backgroundDocument = \SetaPDF_Core_Document::loadByFilename(Yii::getAlias('@frontend/web/img/cubric-logo.pdf')); $backgroundXObject = $backgroundDocument->getCatalog()->getPages()->getPage(1)->toXObject($document); // format the date $visibleAppearance->setShowFormat(\SetaPDF_Signer_Signature_Appearance_Dynamic::CONFIG_DATE, 'd-m-Y H:i:s'); // disable the distinguished name $visibleAppearance->setShow(\SetaPDF_Signer_Signature_Appearance_Dynamic::CONFIG_DISTINGUISHED_NAME, false); // set the background with 50% opacity $visibleAppearance->setGraphic($backgroundXObject, 0.5); //$visibleAppearance->setBackgroundLogo($backgroundXObject, .5); // sign/certify the document // define the appearance $signer->setAppearance($visibleAppearance); $signer->sign($module); if (file_exists(sprintf('/tmp/subject-%s.png', $hash))) { } // unlink(sprintf('/tmp/subject-%s.png' , $hash)); if (file_exists(sprintf('/tmp/researcher-%s.png', $hash))) { } // unlink(sprintf('/tmp/researcher-%s.png' , $hash)); return true; }
/** * @return \yii\db\ActiveQuery */ public function getSubjects0() { return $this->hasMany(Subject::className(), ['gp_opt_id' => 'id']); }
<button type="button" class="remove-item btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button> </div> <div class="clearfix"></div> </div> <div class="panel-body"> <?php // necessary for update action. if (!$modelAddress->isNewRecord) { echo Html::activeHiddenInput($modelAddress, "[{$i}]grade_id"); } ?> <div class="row"> <div class="col-sm-6"> <?php echo $form->field($modelAddress, "[{$i}]subject_subject_id")->dropDownList(ArrayHelper::map(Subject::find()->where(['scholar_scholar_id' => $modelCustomer->subject_scholar_scholar_id])->all(), 'subject_id', 'subject_name', 'subject_term', 'scholar_scholar_id')); ?> </div> <div class="col-sm-4"> <?php echo $form->field($modelAddress, "[{$i}]grade_raw_grade")->textInput(['maxlength' => true]); ?> </div> </div><!-- .row --> </div> </div> <?php } ?>
public function actionFinish($sig) { $screening_entry_model = ScreeningEntry::findOne(['hash' => $sig]); if ($screening_entry_model === null) { throw new \yii\web\HttpException(404, yii::t('app', 'Page cannot be found.')); } $subject_model = Subject::findOne(['id' => $screening_entry_model->subject_id]); Yii::$app->user->logout(); return $this->render('finish', ['cubric_identifier' => $subject_model->cubric_id]); }
<button type="button" class="remove-item btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button> </div> <div class="clearfix"></div> </div> <div class="panel-body"> <?php // necessary for update action. if (!$modelAddress->isNewRecord) { echo Html::activeHiddenInput($modelAddress, "[{$i}]id"); } ?> <div class="row"> <div class="col-sm-6"> <?php echo $form->field($modelAddress, "[{$i}]subject_subject_id")->dropDownList(ArrayHelper::map(Subject::find()->all(), 'subject_id', 'subject_name', 'scholar_scholar_id')); ?> </div> <div class="col-sm-4"> <?php echo $form->field($modelAddress, "[{$i}]grade_raw_grade")->textInput(['maxlength' => true]); ?> </div> </div><!-- .row --> </div> </div> <?php } ?>
/** * @return \yii\db\ActiveQuery */ public function getSubjects0() { return $this->hasMany(Subject::className(), ['scholar_school_school_id' => 'school_school_id']); }
use common\models\Subject; use yii\helpers\ArrayHelper; use common\models\Scholar; /* @var $this yii\web\View */ /* @var $model common\models\Grade */ /* @var $form yii\widgets\ActiveForm */ ?> <div class="grade-form"> <?php $form = ActiveForm::begin(); ?> <?php echo $form->field($model, 'subject_subject_id')->widget(Select2::classname(), ['data' => ArrayHelper::map(Subject::find()->all(), 'subject_id', 'subject_name'), 'language' => 'en', 'options' => ['placeholder' => 'Select Scholar ID'], 'pluginOptions' => ['allowClear' => true]]); ?> <?php echo $form->field($model, 'subject_scholar_scholar_id')->widget(Select2::classname(), ['data' => ArrayHelper::map(Scholar::find()->all(), 'scholar_id', 'scholar_last_name', 'scholar_id'), 'language' => 'en', 'options' => ['placeholder' => 'Select Scholar ID'], 'pluginOptions' => ['allowClear' => true]]); ?> <?php echo $form->field($model, 'grade_school_year_start')->textInput(); ?> <?php echo $form->field($model, 'grade_school_year_end')->textInput(); ?> <?php
public function getSubjectName() { return $this->hasOne(Subject::className(), ['id' => 'subject_id'])->one()->title; }
/** * @return \yii\db\ActiveQuery */ public function getFaqSubjects0() { return $this->hasMany(Subject::className(), ['id' => 'faq_subject_id'])->viaTable('faq_subject', ['faq_id' => 'id']); }
<?php use yii\helpers\Html; use kartik\grid\GridView; use kartik\export\ExportMenu; use yii\helpers\ArrayHelper; use common\models\Scholar; use common\models\School; use common\models\Subject; $exportedValues = [['class' => 'kartik\\grid\\SerialColumn'], ['attribute' => 'subject_scholar_scholar_id'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'subject_subject_id', 'editableOptions' => ['inputType' => '\\kartik\\select2\\Select2', 'options' => ['data' => ArrayHelper::map(Subject::find()->all(), 'subject_id', 'subject_name')]], 'value' => 'subjectSubject.subject_name'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'takenStatus', 'editableOptions' => ['inputType' => 'dropDownList', 'pluginOptions' => ['allowClear' => true], 'data' => ["Not Taken" => "Not Taken", "Taken" => "Taken", "Failed" => "Failed"], 'widgetClass' => 'kartik\\select2\\Select2'], 'value' => 'subjectSubject.subject_taken_status'], ['attribute' => 'firstName', 'value' => 'scholarScholar.scholar_first_name'], ['attribute' => 'middleName', 'value' => 'scholarScholar.scholar_middle_name'], ['attribute' => 'lastName', 'value' => 'scholarScholar.scholar_last_name'], ['attribute' => 'subject_scholar_school_school_id', 'value' => 'schoolSchool.school_name'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'grade_school_year_start'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'grade_school_year_end'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'grade_raw_grade'], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'grade_approval_status', 'editableOptions' => ['inputType' => 'dropDownList', 'pluginOptions' => ['allowClear' => true], 'data' => ["Not Approved" => "Not Approved", "Approved" => "Approved"], 'widgetClass' => 'kartik\\select2\\Select2']], ['attribute' => 'grade_approved_by'], ['class' => 'kartik\\grid\\ActionColumn']]; $export = ExportMenu::widget(['dataProvider' => $dataProvider, 'columns' => $exportedValues, 'exportConfig' => ['Excel5' => false, 'Excel2007' => false], 'noExportColumns' => [13], 'target' => '_blank', 'columnSelectorOptions' => ['label' => 'Columns', 'class' => 'btn btn-danger'], 'fontAwesome' => true, 'dropdownOptions' => ['label' => 'Export All', 'class' => 'btn btn-success']]); /* @var $this yii\web\View */ /* @var $searchModel common\models\SchoolSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = 'Grades'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?php echo Html::encode($this->title); ?> </h1> <?php echo Html::a('Group By School', ['index'], ['class' => 'btn btn-success']); echo Html::a('Show Only Grade Records', ['index2'], ['class' => 'btn btn-success']); ?> <div class="school-index"> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'pjax' => true, 'pjaxSettings' => ['neverTimeout' => true], 'columns' => $exportedValues, 'toolbar' => [['content' => Html::a('Create Grade', ['groupcreate'], ['class' => 'btn btn-success'])], '{toggleData}', $export], 'export' => ['fontAwesome' => true, 'label' => 'Export All', 'target' => '_blank'], 'panel' => ['type' => GridView::TYPE_PRIMARY, 'heading' => 'Grade List']]); ?> </div> <br>
public function actionFaq() { return $this->render('faq', ['list' => Faq::find()->where(['active' => 1])->orderBy('id asc')->all(), 'subjects' => Subject::find()->all()]); }