Ejemplo n.º 1
0
 private function classAssignment($joined_class)
 {
     $assignments = Assignment::with('classrooms')->whereHas('classrooms', function ($q) use($joined_class) {
         $q->where('deadline', '>', date('Y-m-d'));
         $q->whereIn('id', $joined_class);
     })->limit(5)->get();
     return $assignments;
 }
Ejemplo n.º 2
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function searchDone($params)
 {
     $query = Assignment::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['create_time' => SORT_DESC]]]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'deadline' => $this->deadline, 'status' => $this->status, 'notify_status' => $this->notify_status, 'notify_times' => $this->notify_times, 'create_time' => $this->create_time, 'update_time' => $this->update_time, 'user_id' => $this->user_id]);
     $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'description', $this->description])->andFilterWhere(['status' => R::ASSIGNMENT_DONE]);
     return $dataProvider;
 }
Ejemplo n.º 3
0
 public function deadline()
 {
     $data = [];
     $classrooms = Auth::user()->hasRole('teacher') ? Auth::user()->teacherclassrooms : Auth::user()->classrooms;
     $ids = $classrooms->map(function ($class) {
         return $class->id;
     })->toArray();
     $assignments = Assignment::whereHas('classrooms', function ($q) use($ids) {
         $q->where('deadline', '>', date('Y-m-d'));
         $q->whereIn('id', $ids);
     })->get();
     foreach ($assignments as $key => $assignment) {
         $data[$key]['title'] = $assignment->title;
         foreach ($assignment->classrooms as $classroom) {
             $data[$key]['start'] = Carbon::parse($classroom->pivot->created_at)->format('Y-m-d H:i:s');
             $data[$key]['end'] = Carbon::parse($classroom->pivot->deadline)->format('Y-m-d H:i:s');
         }
     }
     return $data;
 }
Ejemplo n.º 4
0
 /**
  * Try to find Assignment which not yet viewed by executer.
  * Calls when Executer run team/assignments
  */
 public function notifyAssignment()
 {
     $assignments = Assignment::find()->where(['user_id' => Yii::$app->user->identity->id, 'notify_status' => R::NOTIFY_ACTIVE])->all();
     foreach ($assignments as $assignment) {
         // if ($assignment->notify_times == 1) {
         $assignment->notify_status = R::NOTIFY_NOTIFIED;
         $assignment->save();
         // } else {
         // $assignment->notify_times += 1;
         // $assignment->save();
         // }
     }
 }
Ejemplo n.º 5
0
 public function assignments(Request $request)
 {
     $classrooms = $request->user()->hasRole('teacher') ? $request->user()->teacherclassrooms : $request->user()->classrooms;
     $page_title = 'Semua Tugas';
     $ids = $classrooms->map(function ($class) {
         return $class->id;
     })->toArray();
     $assignments = Assignment::whereHas('classrooms', function ($q) use($ids) {
         $q->where('deadline', '>=', date('Y-m-d'));
         $q->whereIn('id', $ids);
     })->paginate(10);
     return view('user.global.assignments', compact('assignments', 'page_title'));
 }
Ejemplo n.º 6
0
 public function detachSubmission(Request $request)
 {
     $this->validate($request, ['assignment_id' => 'exists:assignments,id', 'user_id' => 'exists:users,id']);
     $file = '';
     $assignment = Assignment::findOrFail($request->assignment_id);
     $user = $assignment->submissions()->where('user_id', $request->user_id)->first();
     $file = public_path('uploads/assignments/' . $user->pivot->file);
     if (file_exists($file) && $user->pivot->file) {
         unlink($file);
     }
     $assignment->submissions()->detach($request->user_id);
     \Flash::success('Jawaban siswa berhasil dibatalkan!');
     return redirect()->back();
 }
Ejemplo n.º 7
0
 /**
  * Отправка отчета менеджеру о выполнении поручения
  * создаем отчет, меняем статус поручения и уведомляем менеджера об отправки отчетности
  * Проверен (21.12.15)
  */
 public function actionSentAssign()
 {
     if (isset($_POST)) {
         $bid = new Bid();
         $bid->text = $_POST['text'];
         $bid->name = "Test";
         $bid->status = R::BID_SENT_TO_MANAGER;
         $bid->user_id = Yii::$app->user->identity->id;
         $bid->obj_id = $_POST['assignment_id'];
         $bid->bid_type = R::BID_ASSIGNMENT;
         $bid->notify_status = R::NOTIFY_ACTIVE;
         $bid->create_time = time();
         $bid->update_time = time();
         $bid->save();
         if ($bid->save()) {
             $bid->uploadFiles(Yii::$app->session['cs_' . Yii::$app->user->identity->id]);
             $assignment = Assignment::findOne($bid->obj_id);
             $assignment->status = R::ASSIGNMENT_PROCESS;
             $assignment->save();
             echo '1';
         }
     }
 }
Ejemplo n.º 8
0
 /**
  * Assignment Notification for Executer
  * If return true, RED CIRCLE will appear
  * runs in init() in each Controller
  */
 public function getAssignmentNotification()
 {
     if ($this->role == R::ADMIN) {
         //do nothing
     } elseif ($this->role == R::DESIGNER || $this->role == R::FRONTEND || $this->role == R::COPYRIGHTER || $this->role == R::PROTOTYPER || $this->role == R::TESTER || $this->role == R::BACKEND || $this->role == R::CONTENTER) {
         $stages = Assignment::find()->where(['user_id' => $this->id, 'status' => [R::ASSIGNMENT_CREATED, R::ASSIGNMENT_APPROVED, R::ASSIGNMENT_DONE], 'notify_status' => R::NOTIFY_ACTIVE])->count();
         if ($stages == 0) {
             return false;
         } else {
             return true;
         }
     }
 }
Ejemplo n.º 9
0
 public function getAssignment()
 {
     return $this->hasOne(Assignment::className(), ['id' => 'obj_id'])->andWhere(['bid_type' => R::BID_ASSIGNMENT]);
 }
Ejemplo n.º 10
0
 /**
  * Завершение поручения.
  * Меняем статус поручения и уведомляем испонителя.
  * Отчет не трогаем т.к. в дальнейшем надо будет выводить статистику по проедалынной работе.
  * Проверен (21.12.15)
  */
 public function actionDoneAssignment($id)
 {
     $model = Assignment::findOne($id);
     $model->status = R::ASSIGNMENT_DONE;
     $model->notify_status = R::NOTIFY_ACTIVE;
     $model->save();
     return $this->redirect(['assignments']);
 }