What code do you have so far? What do you struggle with?
Please note that in this forum we are happy to help you with Yii-related issues. It’s not our job to translate business requirements into code. That’s your job.
See my Code so far
Zone:
view
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\bootstrap\Modal;
?>
<?php
if($this->context->action->id == 'update')
$action = ['update', 'id'=>$_REQUEST['id']];
else
$action = ['create'];
?>
<div class="col-xs-12 col-lg-12">
<div class="<?php echo $model->isNewRecord ? 'box-success' : 'box-info'; ?> box view-item col-xs-12 col-lg-12">
<div class="zone-form">
<?php $form = ActiveForm::begin([
'id' => 'zone-form',
'action' => $action,
'enableAjaxValidation' => true,
]); ?>
<?= $form->field($model, 'zone_name', ['inputOptions'=>[ 'class'=>'form-control', 'placeholder' => Yii::t('app', 'Inspection Zone')] ] )->textInput(['maxlength' => 50])->label(false); ?>
<div class="form-group col-xs-12 col-sm-6 col-lg-4 no-padding">
<div class="col-xs-6">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-block btn-success' : 'btn btn-block btn-info']) ?>
</div>
<div class="col-xs-6">
<?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default btn-block']) ?>
</div>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
Inspection
Model
<?php
namespace app\modules\inspection\models;
use Yii;
use app\modules\inspection\models\Inspection;
use app\modules\inspection\models\InspectionSearch;
use app\modules\consumers\models\Building;
use app\modules\contractors\models\Inspector;
use app\modules\User;
/**
* This is the model class for table "inspector".
*
* @property string $inspector_name
* @property integer $company_id
* @property integer $is_valid
* @property string $location_long
* @property string $location_lat
* @property string $address
* @property integer $cac_number
* @property string $email
* @property string $electrical_equipment_name
* @property string $electrical_software_name
* @property integer $laptop_num
* @property integer $pc_num
* @property integer $printer_num
* @property string $phone_num
* @property string $nerc_staff_num
* @property string $years_of_experience
* @property string $nerc_staff_name
* @property integer $is_certified
*/
class Inspection extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'inspection_sheet';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['name', 'building_id', 'inspector_id', 'date_inspected', 'compliance_score'], 'required'],
[['building_id', 'inspector_id'], 'integer'],
[['name'], 'string'],
[['inspection_comment'], 'string'],
[['name'], 'string', 'max' => 254]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'name' => 'Inspection Sheet Name',
'building_id' => 'Building',
'inspector_id' => 'Inspector',
'compliance_score' => 'Score',
'inspection_comment' => 'Inspection Comment',
'date_inspected' => 'Date Inspected',
];
}
public static function getBuildingInspectionCategory($bid)
{
$buildingIcc = self::find()->andWhere(['is_status'=>0, 'building_id'=>$bid]);
return $buildingIcc;
}
public function getInspectionInspector()
{
return $this->hasOne(Inspector::className(), ['company_id' => 'inspector_id']);
}
public function getInspectionBuilding()
{
return $this->hasOne(Building::className(), ['building_id' => 'building_id']);
}
public static function getInspectionView($inspector=-1,$appraisal=-1)
{
$conection=Yii::$app()->db;
}
public static function getRatingScale()
{
$conection=Yii::$app()->db;
$sql="select * from inspection_rating_scale";
$command=$conection->createCommand($sql);
$vapp=$command->queryAll();
return new ArrayDataProvider($vapp);
}
public static function getAppraisalView()
{
}
public static function getOverallRatingAverage()
{
}
}
View
<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\helpers\ArrayHelper;
use yii\widgets\Pjax;
/* @var $this yii\web\View */
/* @var $searchModel app\models\InspectorSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */
$this->title = 'Inspections';
$this->params['breadcrumbs'][] = $this->title;
$this->title = Yii::t('inspection', 'Manage Inspection Sheet');
$this->params['breadcrumbs'][] = ['label' => Yii::t('inspection', 'Inspection & Monitoring'), 'url' => ['default/index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<?php
if(Yii::$app->session->hasFlash('green-0') || Yii::$app->session->hasFlash('red-0')) :
?>
<div class="col-xs-12">
<div class="alert alert-dismissible" style="background-color: #FFFFFF;border-color: #00c0ef;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span></button>
<?php
foreach (Yii::$app->session->getAllFlashes() as $key => $message) {
echo '<p class="text-'.preg_split('/[\s,-]+/', $key)[0].'" style="padding-bottom:10px">'.$message.'</p>';
}
?>
</div>
</div>
<?php
endif;
?>
<div class="col-xs-12">
<div class="col-lg-8 col-sm-8 col-xs-12 no-padding"><h3 class="box-title"><i class="fa fa-th-list"></i> <?= $this->title ?></h3></div>
<div class="col-lg-4 col-sm-4 col-xs-12 no-padding" style="padding-top: 20px !important;">
<div class="col-xs-4 left-padding">
<?= Html::a(Yii::t('inspection', 'CREATE SHEET'), ['inspection0step'], ['class' => 'btn btn-block btn-success']) ?>
</div>
<div class="col-xs-4 left-padding">
<?= Html::a(Yii::t('inspection', 'PDF'), ['/export-data/export-to-pdf', 'model'=>get_class($searchModel)], ['class' => 'btn btn-block btn-warning', 'target'=>'_blank']) ?>
</div>
<div class="col-xs-4 left-padding">
<?= Html::a(Yii::t('inspection', 'EXCEL'), ['/export-data/export-excel', 'model'=>get_class($searchModel)], ['class' => 'btn btn-block btn-primary', 'target'=>'_blank']) ?>
</div>
</div>
</div>
<div class="col-xs-12" style="padding-top: 10px;">
<div class="box">
<div class="box-body table-responsive">
<div class="inspector-sheet-index">
<?php $visible = Yii::$app->user->can("/inspection/inspection/view") ? true : false; ?>
<?php Pjax::begin([ 'enablePushState' => false ]); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'summary'=>'',
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'label' => Yii::t('app','Building'),
'attribute' => 'building_id',
'value' => 'inspectionBuilding.building_name',
'filter' => ArrayHelper::map(app\modules\consumers\models\Building::find()->all(), 'building_id', 'building_name')
],
[
'label' => Yii::t('app','Inspector'),
'attribute' => 'inspector_id',
'value' => 'inspectionInspector.inspector_name',
'filter' => ArrayHelper::map(app\modules\contractors\models\Inspector::find()->all(), 'company_id', 'inspector_name')
],
[
'attribute' => 'date_inspected',
'value' => function ($model) {
return Yii::$app->formatter->asDate($model->date_inspected);
},
'filter' => \yii\jui\DatePicker::widget([
'model'=>$searchModel,
'attribute'=>'date_inspected',
'clientOptions' =>[
'dateFormat' => 'dd-mm-yyyy',
'changeMonth'=> true,
'changeYear'=> true,
'defaultValue'=>null,
'yearRange'=>'1900:'.(date('Y')+1),
'defaultDate'=> null,],
'options'=>[
'class' => 'form-control',
'value' => NULL,
],
]),
'format' => 'html',
],
'compliance_score',
[
'class' => 'app\components\CustomActionColumn',
'template' => '{view}',
'buttons' => [
'view' => function ($url, $model) {
return ((Yii::$app->user->can("")) ? Html::a('<span class="glyphicon glyphicon-search"></span>', $url, ['title' => Yii::t('inspection', 'View'),]) : '');
// /inspection/inspection/view
}
],
'visible' => $visible,
],
],
]);
Pjax::end(); ?>
</div>
</div>
</div>
</div>