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'); }
/** * @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; }