for managers show only employees, show all profiles for users with permission show_all_profiles

This commit is contained in:
iIronside
2023-01-26 15:28:15 +03:00
parent 10853b44f8
commit 89e635798c
4 changed files with 27 additions and 120 deletions

View File

@ -2,7 +2,7 @@
namespace backend\modules\card\models;
use common\classes\Debug;
use backend\modules\employee\models\ManagerEmployee;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
@ -42,13 +42,24 @@ class UserCardSearch extends UserCard
*
* @return ActiveDataProvider
*/
public function search($params)
public function search($params): ActiveDataProvider
{
// $userId = Yii::$app->user->;
// $userCard = UserCard::findOne($userId);
if (Yii::$app->user->can('show_all_profiles')) {
$query = UserCard::find();
} else {
$userCard = UserCard::find()
->where(['id_user' => Yii::$app->user->id])
->one();
$query = UserCard::find();
$query->where(['id'])->distinct()
$employeeIdList = ManagerEmployee::find()
->where(['manager_id' => $userCard->manager->id])
->select('user_card_id')
->column();
$query = UserCard::find()->where(['in', 'user_card.id', $employeeIdList]);
}
$query->distinct()
->leftJoin('card_skill', 'card_skill.card_id=user_card.id')
->leftJoin('skill', 'skill.id=card_skill.skill_id');
@ -64,7 +75,7 @@ class UserCardSearch extends UserCard
return $dataProvider;
}
$query->where(['deleted_at' => null]);
$query->andWhere(['deleted_at' => null]);
if (isset($params['month'])) {
$query->andFilterWhere(['=', 'MONTH(dob)', $params['month']]);