public function getUnreadEmails($reload = false)
 {
     if ($this->_unreadEmails === null || $reload) {
         $this->_unreadEmails = Email::find()->where(['read' => 0, 'action' => Email::ACTION_RECEIVED])->count();
     }
     return $this->_unreadEmails;
 }
 /**
  * Creates data provider instance with search query applied
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     // Transform the date to a unix timestamp for usage in the search query
     if (isset($params['EmailSearch']['created_at']) && trim($params['EmailSearch']['created_at']) != '') {
         $origDate = $params['EmailSearch']['created_at'];
         $dateCreated = strtotime($origDate);
         $dateCreatedBeginOfDay = \DateTime::createFromFormat('Y-m-d H:i:s', (new \DateTime())->setTimestamp($dateCreated)->format('Y-m-d 00:00:00'))->getTimestamp();
         $dateCreatedEndOfDay = \DateTime::createFromFormat('Y-m-d H:i:s', (new \DateTime())->setTimestamp($dateCreated)->format('Y-m-d 23:59:59'))->getTimestamp();
     }
     $query = Email::find();
     // Add action filter
     $query->andFilterWhere(['action' => Yii::$app->session->get('emails.actionType')]);
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['created_at' => SORT_DESC]], 'pagination' => ['pageSize' => 50]]);
     if (!($this->load($params) && $this->validate())) {
         return $dataProvider;
     }
     if (isset($dateCreatedBeginOfDay) && isset($dateCreatedEndOfDay)) {
         $query->andFilterWhere(['between', 'created_at', $dateCreatedBeginOfDay, $dateCreatedEndOfDay]);
         // Format the date for display
         $this->created_at = date('d-m-Y', $dateCreated);
     }
     $query->andFilterWhere(['like', 'subject', $this->subject]);
     $query->andFilterWhere(['like', 'from', $this->from]);
     $query->andFilterWhere(['like', 'to', $this->to]);
     $query->andFilterWhere(['like', 'form', $this->form]);
     return $dataProvider;
 }
 protected function findModel($id)
 {
     if (($model = Email::findOne($id)) !== null) {
         return $model;
     } else {
         throw new NotFoundHttpException(Yii::t('app', 'The requested item does not exist'));
     }
 }
<?php

use yii\helpers\Html;
use infoweb\email\models\Email;
$this->title = Yii::t('app', 'View {modelClass}', ['modelClass' => Yii::t('infoweb/email', 'Email')]);
$this->params['breadcrumbs'][] = ['label' => Yii::t('infoweb/email', 'Emails') . ': ' . strtolower(Email::actionTypes()[Yii::$app->session->get('emails.actionType')]), 'url' => ['index']];
$this->params['breadcrumbs'][] = ['label' => "#{$model->id}", 'url' => ['update', 'id' => $model->id]];
$this->params['breadcrumbs'][] = Yii::t('app', 'View');
?>
<div class="email-update">

    <h1><?php 
echo Html::encode($this->title);
?>
</h1>

    <?php 
echo $this->render('_form', ['model' => $model]);
?>

</div>
 /**
  * Save's the form email to the database
  * 
  * @return  boolean
  */
 public function saveEmail()
 {
     $email = new Email($this->sendedMail);
     return $email->save();
 }
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getEmail()
 {
     return $this->hasOne(Email::className(), ['id' => 'email_id']);
 }
}, 'filterType' => GridView::FILTER_DATE, 'filterWidgetOptions' => ['pluginOptions' => ['format' => 'dd-mm-yyyy', 'autoclose' => true, 'todayHighlight' => true]], 'width' => '220px', 'hAlign' => 'center'], ['class' => 'kartik\\grid\\ActionColumn', 'template' => $buttonsTemplate, 'buttons' => ['resend' => function ($url, $model) {
    if (Yii::$app->session->get('emails.actionType') != Email::ACTION_SENT) {
        return false;
    }
    $resent = $model->getHistory()->resent()->count();
    $resentLabel = '';
    if ($resent) {
        $resentLabel = "&nbsp;<span class=\"label label-danger\">{$resent}</span>";
    }
    return Html::a("<span class=\"glyphicon glyphicon-send\"></span>{$resentLabel}", Url::toRoute(['email/update', 'id' => $model->id]), ['title' => Yii::t('infoweb/email', 'Resend'), 'data-pjax' => '0', 'data-toggle' => 'tooltip', 'class' => 'resend-btn']);
}], 'updateOptions' => ['title' => Yii::t('app', 'View'), 'data-toggle' => 'tooltip'], 'deleteOptions' => ['title' => Yii::t('app', 'Delete'), 'data-toggle' => 'tooltip'], 'width' => '120px']];
?>
<div class="email-index">
    <?php 
// Title
$actionTypes = Email::actionTypes();
if (!Yii::$app->getModule('email')->enableSent) {
    unset($actionTypes[Email::ACTION_SENT]);
}
?>
    <h1>
        <?php 
echo Html::encode($this->title);
?>
        : <?php 
echo Html::radioButtonGroup('actionType', Yii::$app->session->get('emails.actionType'), $actionTypes);
?>

        <?php 
// Buttons
?>