Beispiel #1
0
 public function testMerge()
 {
     // Basic merge.
     $tag1 = Tag::firstOrCreate(['name' => 'Tag 1']);
     $tag2 = Tag::firstOrCreate(['name' => 'Tag 2']);
     $this->assertSame(2, Tag::count());
     $tag1->merge($tag2);
     $this->assertSame(1, Tag::count());
     $this->assertSame('Tag 1', Tag::first()->name);
     // Merge when the other-tag has assets attached.
     $tag3 = Tag::firstOrCreate(['name' => 'Tag 3']);
     $asset = Asset::firstOrCreate(['identifier' => 'Asset 1']);
     $asset->addTags('Tag 3');
     $this->assertSame(2, Tag::count());
     $tag1->merge($tag3);
     $this->assertSame(1, Tag::count());
     $this->assertSame(1, $tag1->assets->count());
     $this->assertSame('Tag 1', $asset->tagsAsString());
     // What about when a JobList is already tagged with both tags?
     $type = new \App\Model\JobType();
     $type->save();
     $jobList = new JobList();
     $jobList->name = 'JL1';
     $jobList->type_id = $type->id;
     $jobList->save();
     $jobList->addTags('Tag 1, Tag 4, Tag 5');
     $tag4 = Tag::firstOrCreate(['name' => 'Tag 4']);
     $this->assertSame(3, Tag::count());
     $tag1->merge($tag4);
     $this->assertSame(2, Tag::count());
     $this->assertSame('Tag 1, Tag 5', $jobList->tagsAsString());
 }
Beispiel #2
0
 /**
  * @testdox A Job can be marked as complete with no date or any other metadata supplied.
  * @test
  */
 public function manualCompletion()
 {
     $type = new \App\Model\JobType();
     $type->save();
     $jobList = new JobList();
     $jobList->type_id = $type->id;
     $jobList->save();
     // One incomplete job
     $job = new Job();
     $job->job_list_id = $jobList->id;
     $job->save();
     $this->assertEquals('Incomplete', $job->status());
     //$job->resolution
 }
 /**
  * @testdox A JobList has a list of attached Jobs.
  */
 public function jobs()
 {
     $type = new \App\Model\JobType();
     $type->save();
     $jobList = new JobList();
     $jobList->type_id = $type->id;
     $jobList->save();
     // One incomplete job.
     $job = new Job();
     $job->job_list_id = $jobList->id;
     $job->save();
     $this->assertEquals(1, $jobList->jobs->count());
     $this->assertEquals(0, $jobList->percentComplete());
     $this->assertEquals(100, $jobList->percentIncomplete());
     // Two incomplete jobs.
     $job2 = new Job();
     $job2->job_list_id = $jobList->id;
     $job2->save();
     $jobList->load('jobs');
     $this->assertEquals(2, $jobList->jobs->count());
     $this->assertEquals(0, $jobList->percentComplete());
     $this->assertEquals(100, $jobList->percentIncomplete());
     // Complete one of them.
     $job->date_resolved = '2015-09-09';
     $job->save();
     $this->assertEquals(50, $jobList->percentIncomplete());
 }
 public function search(Request $request)
 {
     $searchTerm = $request->query('quick_s');
     $searchType = $request->query('quick_t');
     switch ($searchType) {
         case 'a':
             $asset = Asset::whereIdentifier($searchTerm)->first();
             if (isset($asset->id)) {
                 return redirect('assets/' . $asset->id);
             } else {
                 return redirect("assets?identifier={$searchTerm}");
             }
             break;
         case 'j':
             $job = Job::whereId($searchTerm)->first();
             if (isset($job->id)) {
                 return redirect('jobs/' . $job->id);
             } else {
                 return redirect("jobs?id={$searchTerm}");
             }
             break;
         case 'jl':
             $jobList = JobList::whereName($searchTerm)->first();
             if (isset($jobList->id)) {
                 return redirect('job-lists/' . $jobList->id);
             } else {
                 return redirect("job-lists?name={$searchTerm}");
             }
             break;
         default:
             $this->view->quick_t = $searchType;
             $this->view->quick_s = $searchTerm;
             return $this->view;
     }
 }
 public function home()
 {
     $this->view->title = $this->view->site_name;
     $this->view->asset_count = Asset::count();
     $this->view->user_count = User::count();
     $this->view->crew_count = Crew::count();
     $this->view->job_list_count = JobList::count();
     $this->view->job_count = Job::count();
     $this->view->tag_count = Tag::count();
     return $this->view;
 }
 public function geojson(Request $request, $id)
 {
     $jobList = JobList::find($id);
     $out = [];
     foreach ($jobList->jobs()->with('asset')->get() as $job) {
         $asset = $job->asset;
         if (empty($asset->longitude) || empty($asset->latitude)) {
             continue;
         }
         $out[] = ["type" => "Feature", "properties" => ["name" => $asset->identifier, "popupContent" => "This is where the Rockies play!"], "geometry" => ["type" => "Point", "coordinates" => [$asset->longitude, $asset->latitude]]];
     }
     return \Response::json($out);
 }