/** * Returns if a sprint in a project is complete * @return boolean */ public function isComplete() { $issuesCount = $this->issues()->select('status_id')->where('sprint_id', '=', $this->id)->where('project_id', '=', $this->project_id)->count(); $issuesCompletedCount = $this->issues()->select('status_id')->where('sprint_id', '=', $this->id)->where('project_id', '=', $this->project_id)->whereIn('status_id', array(IssueStatus::getIdByMachineName('complete'), IssueStatus::getIdByMachineName('archive')))->count(); if ($issuesCompletedCount == $issuesCount) { return true; } return false; }
/** * Get the list of issues in a sprint by issue status * @param string $issueStatusMachineName * @param int $sprintId */ public static function getIssuesInSprintByIssueStatus($issueStatusMachineName, $sprintId) { $statusId = IssueStatus::getIdByMachineName($issueStatusMachineName); if ($statusId) { return Issue::where('sprint_id', '=', $sprintId)->where('status_id', '=', $statusId)->get(); } else { return false; } }
/** * quickAdd Add an issue from project plan view - inline form * @param IssueRequest $request * @return Response */ public function quickAdd(IssueRequest $request) { $todoIssueStatusId = IssueStatus::getIdByMachineName('todo'); $issue = new Issue(); $request['user_id'] = Auth::user()->id; $request['sprint_id'] = Project::findOrFail($request->project_id)->getBacklogSprint()->id; $request['status_id'] = $todoIssueStatusId; $issue->create($request->all()); return Redirect::back(); }
/** * Execute the console command. * * @return mixed */ public function handle() { $currentTimestamp = Carbon::now()->toDateTimeString(); $tomorrowTimestamp = Carbon::now()->addDay()->toDateTimeString(); $issuesWithDeadlineWithinADay = DB::table('issues')->select('id', 'deadline', 'title')->where('deadline', '>=', $currentTimestamp)->where('deadline', '<', $tomorrowTimestamp)->where('status_id', '!=', IssueStatus::getIdByMachineName('complete'))->where('status_id', '!=', IssueStatus::getIdByMachineName('archive'))->get(); Mail::send('emails.issuesDeadlineReminder', ['issuesWithDeadlineWithinADay' => $issuesWithDeadlineWithinADay], function ($message) { $message->from(env('MAIL_FROM_ADDRESS'), env('APP_NAME')); $message->to('*****@*****.**', 'Srikanth AD')->subject('Daily report: issues with deadlines within a day'); }); }
/** * quickAdd Add an issue from project plan view - inline form * @param IssueRequest $request * @return Response */ public function quickAdd(IssueRequest $request) { $todoIssueStatusId = IssueStatus::getIdByMachineName('todo'); $backlogSprintId = (int) Project::findOrFail($request->project_id)->getBacklogSprint()->id; $latestIssueInSprint = Sprint::findOrFail($backlogSprintId)->getLatestIssueInSprint(); $request['user_id'] = Auth::user()->id; $request['sprint_id'] = $backlogSprintId; $request['status_id'] = $todoIssueStatusId; if ($latestIssueInSprint) { $request['sort_prev'] = $latestIssueInSprint->id; } $issue = Issue::create($request->all()); //Update sort order for - previously - latest issue if (Utils::getIssueCountInSprint($backlogSprintId) > 1) { $previouslyLatestIssueInSprint = Issue::findOrFail($latestIssueInSprint->id); $previouslyLatestIssueInSprint->sort_next = $issue->id; $previouslyLatestIssueInSprint->save(); } return Redirect::back(); }
/** * getLatestIssueInSprint Get the latest issue from a sprint - by created at date * @return latest issue in sprint */ public function getLatestIssueInSprint() { $archiveStatusId = IssueStatus::getIdByMachineName('archive'); return $this->issues()->where('status_id', '!=', (int) $archiveStatusId)->orderBy('created_at', 'desc')->first(); }
/** * Get the collection of issues corresponding to a given sprint - that are not archived * @param integer $sprintId * @return collection */ public function getIssuesFromSprint($sprintId) { $archiveStatusId = IssueStatus::getIdByMachineName('archive'); return $this->issues()->where('status_id', '!=', (int) $archiveStatusId)->where('sprint_id', '=', (int) $sprintId)->get(); }