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;
 }