Example #1
0
 public function getClasses()
 {
     return $this->hasMany(Classes::className(), ['class_id' => 'class_id'])->viaTable('{{%class_users}}', ['user_id' => 'id']);
 }
Example #2
0
 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.');
 }
Example #4
0
 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;
 }