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; }
/** * 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; }
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; }
/** * 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(); // } } }
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')); }
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(); }
/** * Отправка отчета менеджеру о выполнении поручения * создаем отчет, меняем статус поручения и уведомляем менеджера об отправки отчетности * Проверен (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'; } } }
/** * 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; } } }
public function getAssignment() { return $this->hasOne(Assignment::className(), ['id' => 'obj_id'])->andWhere(['bid_type' => R::BID_ASSIGNMENT]); }
/** * Завершение поручения. * Меняем статус поручения и уведомляем испонителя. * Отчет не трогаем т.к. в дальнейшем надо будет выводить статистику по проедалынной работе. * Проверен (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']); }