public function getClasses() { return $this->hasMany(Classes::className(), ['class_id' => 'class_id'])->viaTable('{{%class_users}}', ['user_id' => 'id']); }
public function actionPostMessages($id) { $sender = User::findIdentityByAccessToken(Yii::$app->request->get('access-token')); $type = $sender->user_type == "trainer" || $sender->user_type == "studio" ? "student" : "trainer"; $receiver = User::findOne(['user_id' => $id]); if (!$receiver || !$sender) { return ApiHelper::errorResponse("User not found", 404); } $trainer_ = $type === "trainer" ? $receiver->id : $sender->id; $student_ = $type !== "trainer" ? $receiver->id : $sender->id; $result = Classes::canUserSendMessage($trainer_, $student_); if (!$result) { return ApiHelper::errorResponse("You cannot chat with this user", 403); } $message = new Chat(); $chatData = ['sender_id' => $sender->id, 'receiver_id' => $receiver->id, 'message_text' => Yii::$app->request->post('message_text')]; $message->load($chatData, ''); if (!$message->save()) { return ApiHelper::errorResponse($message->getErrors(), 422); } $info = $sender->getUserInfo($id)['payment']; $body = "You have a new message from {$info->payment_first_name} {$info->payment_last_name} " . Yii::$app->params['email_new_message_link']; $return = Yii::$app->mailer->compose()->setTo($receiver->user_email)->setFrom(Yii::$app->params['adminEmail'])->setSubject('New message from ' . $info->payment_first_name . " " . $info->payment_last_name)->setTextBody($body)->send(); return ApiHelper::successResponse(["sended" => $return]); }
public function actionDispute() { $user = $this->checkAccess("create"); $class_id = (int) Yii::$app->request->post('class_id'); $dispute_type = (int) Yii::$app->request->post('dispute_type'); $dispute = \common\models\TransactionHistory::checkDispute($class_id, $user->user_id); $class = \common\models\Classes::findOne($class_id); if ($dispute && $class) { if ($class->class_etime + 60 * 60 * 24 < time()) { return ApiHelper::errorResponse('Time for dispute expired.'); } $dispute->transaction_dispute_status = 'open'; $dispute->transaction_dispute_time = time(); $dispute->transaction_dispute_type = $dispute_type; $dispute->save(); return ApiHelper::successResponse(true); } return ApiHelper::errorResponse('Incorrect Access.'); }
public static function getWeekEarningPdf($user_id, $speriod, $eperiod) { $array = []; $subquery = (new \yii\db\Query())->from('classes')->select('class_id')->where(['class_trainer_id' => $user_id])->andWhere('`class_etime` >= :start AND `class_etime` <= :end', [":start" => $speriod, ":end" => $eperiod])->all(); if ($subquery) { foreach ($subquery as $val) { @($array[] = $val['class_id']); } $array = implode(',', $array); $subquery = TransactionHistory::find()->select('class_id')->where("`class_id` IN ({$array})")->andWhere(['transaction_dispute_status' => 'close'])->orWhere(['transaction_dispute_status' => 'declined'])->all(); if ($subquery) { $array = []; foreach ($subquery as $val) { @($array[] = $val['class_id']); } $array = implode(',', $array); return Classes::find()->where("`class_id` IN ({$array})"); } } return false; }