public function search($tip, $data)
 {
     /**
      * @var EntityQuery $query
      */
     $query = KursExtended::findTip($tip);
     $query->orderBy('least([[ochnoe_nachalo]], [[zaochnoe_nachalo]])');
     if ($this->load($data) && $this->validate()) {
         if ($this->kategoriiSlushatelej) {
             $query->joinWith('kategoriiSlushatelejRel')->andWhere(['kategoriya_slushatelya.id' => $this->kategoriiSlushatelej]);
         }
         $query->andFilterWhere(['and', ['like', 'kurs.nazvanie', $this->nazvanie], ['kurs.rukovoditel' => $this->rukovoditel], ['kurs.raschitano_chasov' => $this->chasy], ['kurs.plan_prospekt_god' => $this->planProspektGod]]);
         if ($this->nachalo || $this->konec) {
             $nach = self::dateToQuotedSql($this->nachalo, true);
             $kon = self::dateToQuotedSql($this->konec);
             $query->andWhere("(coalesce(least(ochnoe_nachalo, zaochnoe_nachalo),'-infinity') <= {$kon})" . " and ({$nach} <= coalesce(greatest(ochnoe_konec, zaochnoe_konec),'infinity'))");
         }
     }
     return new ActiveDataProvider(['query' => $query, 'sort' => false]);
 }