Exemplo n.º 1
0
 /**
  * Count number of closed issue in the project
  *
  * @return int
  */
 public function countClosedIssues()
 {
     return Project\Issue::join('projects', 'projects.id', '=', 'projects_issues.project_id')->where(function (Eloquent\Builder $query) {
         $query->where('projects.status', '=', Project::STATUS_OPEN);
         $query->where('projects_issues.status', '=', Project\Issue::STATUS_CLOSED);
     })->orWhere('projects_issues.status', '=', Project\Issue::STATUS_CLOSED)->count();
 }
Exemplo n.º 2
0
 /**
  *  Delete a project
  *
  * @return void
  *
  * @throws \Exception
  */
 public function delete()
 {
     $id = $this->id;
     parent::delete();
     /* Delete all children from the project */
     Project\Issue::where('project_id', '=', $id)->delete();
     Project\Issue\Comment::where('project_id', '=', $id)->delete();
     Project\User::where('project_id', '=', $id)->delete();
     User\Activity::where('parent_id', '=', $id)->delete();
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     if (!Schema::hasTable('tags')) {
         Schema::create('tags', function (Blueprint $table) {
             $table->increments('id')->unsigned();
             $table->bigInteger('parent_id')->default(0);
             $table->string('name', 255)->unique();
             $table->string('bgcolor', 50)->nullable();
             $table->boolean('group');
             $table->timestamps();
         });
         $groups = ['status', 'type', 'resolution'];
         foreach ($groups as $group) {
             $model = new Model\Tag();
             $model->name = $group;
             $model->group = true;
             $model->save();
         }
         $tags = [['name' => 'open', 'parent_id' => 'status', 'bgcolor' => '#c43c35'], ['name' => 'testing', 'parent_id' => 'status', 'bgcolor' => '#6c8307'], ['name' => 'closed', 'parent_id' => 'status', 'bgcolor' => '#46a546'], ['name' => 'feature', 'parent_id' => 'type', 'bgcolor' => '#62cffc'], ['name' => 'bug', 'parent_id' => 'type', 'bgcolor' => '#f89406'], ['name' => 'won\'t fix', 'parent_id' => 'resolution', 'bgcolor' => '#812323'], ['name' => 'fixed', 'parent_id' => 'resolution', 'bgcolor' => '#048383']];
         foreach ($tags as $tag) {
             $model = new Model\Tag();
             $model->name = $tag['name'];
             $model->bgcolor = $tag['bgcolor'];
             $model->parent_id = Model\Tag::where('name', '=', $tag['parent_id'])->first()->id;
             $model->group = false;
             $model->save();
         }
     }
     if (!Schema::hasTable('projects_issues_tags')) {
         Schema::create('projects_issues_tags', function (Blueprint $table) {
             $table->bigInteger('issue_id');
             $table->bigInteger('tag_id');
             $table->primary(['issue_id', 'tag_id']);
         });
     }
     $openIssues = Model\Project\Issue::where('status', '=', Model\Project\Issue::STATUS_OPEN)->lists('id');
     if (count($openIssues) > 0) {
         $openTag = Model\Tag::where('parent_id', '=', Model\Tag::where('name', '=', 'status')->first()->id)->where('name', '=', 'open')->first();
         $openTag->issues()->attach($openIssues);
     }
     $closedIssues = Model\Project\Issue::where('status', '=', Model\Project\Issue::STATUS_CLOSED)->lists('id');
     if (count($closedIssues) > 0) {
         $closedTag = Model\Tag::where('parent_id', '=', Model\Tag::where('name', '=', 'status')->first()->id)->where('name', '=', 'closed')->first();
         $closedTag->issues()->attach($closedIssues);
     }
     // Create activity type for tag update
     $activity = new Model\Activity();
     $activity->description = 'Updated issue tags';
     $activity->activity = 'update-issue-tags';
     $activity->save();
 }
Exemplo n.º 4
0
 /**
  * Fetch an issue by column
  *
  * @param string          $field
  * @param int|string|bool $value
  *
  * @return Model\Project\Issue
  */
 public function fetchIssueBy($field, $value)
 {
     return Model\Project\Issue::where($field, '=', $value)->first();
 }
Exemplo n.º 5
0
 /**
  * Ajax: move an issue to another project
  *
  * @param Issue   $issue
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function postChangeProject(Issue $issue, Request $request)
 {
     $issue->changeProject($request->input('project_id'));
     return response()->json(['status' => true, 'url' => $issue->to()]);
 }
Exemplo n.º 6
0
 /**
  * To create a new issue
  *
  * @param Project\Issue           $issue
  * @param FormRequest\GlobalIssue $request
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function postNewIssue(Project\Issue $issue, FormRequest\GlobalIssue $request)
 {
     $project = Project::find((int) $request->input('project'));
     $issue->setRelation('project', $project);
     $issue->setRelation('user', $this->auth->user());
     $issue->createIssue(['title' => $request->input('title'), 'body' => $request->input('body'), 'tag' => $request->input('tag'), 'upload_token' => $request->input('upload_token'), 'assigned_to' => (int) $project->default_assignee, 'time_quote' => 0]);
     return redirect($issue->to())->with('notice', trans('tinyissue.issue_has_been_created'));
 }