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;
 }
 /**
  * @testdox
  * @test
  */
 public function dates()
 {
     $crew = new Crew(['name' => 'Test Crew']);
     $crew->save();
     // Open start date.
     $date1 = new CrewUnavailability();
     $date1->crew_id = $crew->id;
     $date1->end_date = '2015-09-01';
     $date1->save();
     $this->assertNull($date1->start_date);
     $this->assertFalse($date1->availableOn('2015-08-01'));
     $this->assertTrue($date1->availableOn('2015-09-08'));
     // Both dates given.
     $date2 = new CrewUnavailability();
     $date2->crew_id = $crew->id;
     $date2->start_date = '2015-09-10';
     $date2->end_date = '2015-09-20';
     $date2->save();
     $this->assertTrue($date2->availableOn('2015-09-09'));
     $this->assertFalse($date2->availableOn('2015-09-10'));
     $this->assertFalse($date2->availableOn('2015-09-12'));
     $this->assertFalse($date2->availableOn('2015-09-20'));
     $this->assertTrue($date2->availableOn('2015-09-21'));
     // Open end date.
     $date3 = new CrewUnavailability();
     $date3->crew_id = $crew->id;
     $date3->start_date = '2015-10-05';
     $date3->save();
     $this->assertTrue($date3->availableOn('2015-10-04'));
     $this->assertFalse($date3->availableOn('2015-10-06'));
     // Only 1 day.
     $date4 = new CrewUnavailability();
     $date4->crew_id = $crew->id;
     $date4->start_date = '2015-10-05';
     $date4->end_date = '2015-10-05';
     $date4->save();
     $this->assertTrue($date4->availableOn('2015-10-04'));
     $this->assertFalse($date4->availableOn('2015-10-05'));
     $this->assertFalse($date4->availableOn('2015-10-05 12:34:00'));
     $this->assertTrue($date4->availableOn('2015-10-06'));
 }
 public function save(Request $request, $id = null)
 {
     if (!$this->user->isAdmin()) {
         return redirect('crews');
     }
     \DB::beginTransaction();
     $crew = Crew::findOrNew($id);
     $crew->name = $request->input('name');
     $crew->comments = $request->input('comments');
     $crew->save();
     // Save crew members.
     \DB::table('crew_members')->where('crew_id', '=', $crew->id)->delete();
     foreach (explode(',', $request->input('members')) as $member) {
         $user = User::whereUsername($member)->first();
         if ($user) {
             $crewMember = new CrewMember();
             $crewMember->user_id = $user->id;
             $crewMember->crew_id = $crew->id;
             $crewMember->save();
         }
     }
     // Save availability dates.
     \DB::table('crew_unavailabilities')->where('crew_id', '=', $crew->id)->delete();
     foreach ($request->input('unavailabilities') as $unavail) {
         if (empty($unavail['start_date']) && empty($unavail['end_date'])) {
             continue;
         }
         $date = new \App\Model\CrewUnavailability();
         $date->crew_id = $crew->id;
         $date->start_date = $unavail['start_date'];
         $date->end_date = $unavail['end_date'];
         $date->save();
     }
     \DB::commit();
     return redirect('crews');
 }
Beispiel #4
0
 /**
  * @testdox Crews' dates of unavailability are those date periods during which they can not work.
  */
 public function dates()
 {
     $crew = new Crew(['name' => 'Test Crew']);
     $crew->save();
     // Open start date.
     $date1 = new CrewUnavailability();
     $date1->crew_id = $crew->id;
     $date1->end_date = '2015-09-01';
     $date1->save();
     $this->assertEquals(1, $crew->crewUnavailabilities->count());
     $this->assertTrue($crew->availableOn('2015-09-08'));
     $this->assertFalse($crew->availableOn('2015-08-01'));
     // Closed both ends.
     $date2 = new CrewUnavailability();
     $date2->crew_id = $crew->id;
     $date2->start_date = '2015-09-10';
     $date2->end_date = '2015-09-20';
     $date2->save();
     $crew->load('crewUnavailabilities');
     $this->assertEquals(2, $crew->crewUnavailabilities->count());
     $this->assertFalse($crew->availableOn('2015-09-10'));
     $this->assertFalse($crew->availableOn('2015-09-12'));
     $this->assertFalse($crew->availableOn('2015-09-20'));
     $this->assertTrue($crew->availableOn('2015-09-21'));
     // Open end date.
     $date3 = new CrewUnavailability();
     $date3->crew_id = $crew->id;
     $date3->start_date = '2015-10-05';
     $date3->save();
     $crew->load('crewUnavailabilities');
     $this->assertEquals(3, $crew->crewUnavailabilities->count());
     $this->assertTrue($crew->availableOn('2015-10-04'));
     $this->assertFalse($crew->availableOn('2015-10-06'));
     // All previous availabilities should still hold.
     $this->assertTrue($crew->availableOn('2015-09-08'));
     $this->assertFalse($crew->availableOn('2015-08-01'));
     $this->assertFalse($crew->availableOn('2015-09-10'));
     $this->assertFalse($crew->availableOn('2015-09-12'));
     $this->assertFalse($crew->availableOn('2015-09-20'));
     $this->assertTrue($crew->availableOn('2015-09-21'));
     $this->assertTrue($crew->availableOn('2015-10-04'));
     $this->assertFalse($crew->availableOn('2015-10-06'));
 }
 public function scheduled(Request $reqest)
 {
     $this->view->title = "Job Schedule";
     $this->view->breadcrumbs = ['job-lists' => 'Job Lists', 'job-lists/scheduled' => 'Scheduled'];
     $startDate = new \DateTime($reqest->input('start_date'));
     $endDate = new \DateTime($reqest->input('end_date'));
     if ($startDate->diff($endDate, true)->d < 7) {
         $endDate->add(new \DateInterval('P14D'));
     }
     $datePeriod = new \DatePeriod($startDate, new \DateInterval('P1D'), $endDate);
     $this->view->start_date = $startDate->format('Y-m-d');
     $this->view->end_date = $endDate->format('Y-m-d');
     $this->view->job_lists = [];
     $jobLists = JobList::whereBetween('start_date', [$this->view->start_date, $this->view->end_date])->groupBy(['crew_id', 'start_date'])->get();
     foreach ($jobLists as $jl) {
         if (!isset($this->view->job_lists[$jl->crew->name])) {
             $this->view->job_lists[$jl->crew->name] = [];
         }
         $this->view->job_lists[$jl->crew->name][$jl->start_date] = $jl;
     }
     $this->view->dates = $datePeriod;
     $this->view->crews = Crew::query()->orderBy('name')->get();
     return $this->view;
 }