From 36581159ad7374b7191015c8d2fbdb4388387430 Mon Sep 17 00:00:00 2001 From: Muhammad Irwan Andriawan Date: Sat, 14 Sep 2019 17:17:02 +0700 Subject: [PATCH 1/4] fix issue error Undefined index: xxx_task_ids by checking with isset --- app/Entities/Projects/JobsRepository.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/Entities/Projects/JobsRepository.php b/app/Entities/Projects/JobsRepository.php index 5f206dd..50ee550 100755 --- a/app/Entities/Projects/JobsRepository.php +++ b/app/Entities/Projects/JobsRepository.php @@ -49,13 +49,17 @@ class JobsRepository extends BaseRepository $newJob->project_id = $projectId; $newJob->save(); - $selectedTasks = $job->tasks()->whereIn('id', $jobsData[$job->id.'_task_ids'])->get(); + if(isset($jobsData[$job->id.'_task_ids'])){ + + $selectedTasks = $job->tasks()->whereIn('id', $jobsData[$job->id.'_task_ids'])->get(); + + foreach ($selectedTasks as $task) { + $newTask = $task->replicate(); + $newTask->progress = 0; + $newTask->job_id = $newJob->id; + $newTask->save(); + } - foreach ($selectedTasks as $task) { - $newTask = $task->replicate(); - $newTask->progress = 0; - $newTask->job_id = $newJob->id; - $newTask->save(); } } DB::commit(); From f5307c5608b2e71efe720a88a5467be83c8329ee Mon Sep 17 00:00:00 2001 From: Muhammad Irwan Andriawan Date: Sat, 14 Sep 2019 17:18:36 +0700 Subject: [PATCH 2/4] Add jquery implementation on selecting child task trigger selecting job for better logic --- .../projects/jobs/add-from-other-project.blade.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/resources/views/projects/jobs/add-from-other-project.blade.php b/resources/views/projects/jobs/add-from-other-project.blade.php index 55f63cb..c2d9290 100755 --- a/resources/views/projects/jobs/add-from-other-project.blade.php +++ b/resources/views/projects/jobs/add-from-other-project.blade.php @@ -75,9 +75,31 @@ @if ($selectedProject) @foreach ($selectedProject->jobs as $job) + $('#job_id_{{ $job->id }}').change(function () { $('.job_id_{{ $job->id }}_tasks').prop('checked', this.checked); }); + + @foreach($job->tasks as $task) + + $('#{{ $job->id }}_task_id_{{ $task->id }}').change(function () { + + var condition = false; + + $.each($(".job_id_{{ $job->id }}_tasks"), function( key, value ) { + if(value.checked == true){ + condition = true + } + }); + + + if(condition == true){ + $('#job_id_{{ $job->id }}').prop('checked', true); + } + }); + + @endforeach + @endforeach @endif })(); From 37d1bdbb4a3113c70260e4d2a128494cd4d35a5d Mon Sep 17 00:00:00 2001 From: Muhammad Irwan Andriawan Date: Sat, 14 Sep 2019 17:48:10 +0700 Subject: [PATCH 3/4] Fix coding style to pass styleci --- app/Entities/Projects/JobsRepository.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Entities/Projects/JobsRepository.php b/app/Entities/Projects/JobsRepository.php index 50ee550..b8fdd6c 100755 --- a/app/Entities/Projects/JobsRepository.php +++ b/app/Entities/Projects/JobsRepository.php @@ -49,8 +49,7 @@ class JobsRepository extends BaseRepository $newJob->project_id = $projectId; $newJob->save(); - if(isset($jobsData[$job->id.'_task_ids'])){ - + if (isset($jobsData[$job->id.'_task_ids'])) { $selectedTasks = $job->tasks()->whereIn('id', $jobsData[$job->id.'_task_ids'])->get(); foreach ($selectedTasks as $task) { @@ -59,7 +58,6 @@ class JobsRepository extends BaseRepository $newTask->job_id = $newJob->id; $newTask->save(); } - } } DB::commit(); From fc335781197fda20b1c43246929edb0c9413308d Mon Sep 17 00:00:00 2001 From: Muhammad Irwan Andriawan Date: Sat, 14 Sep 2019 21:05:51 +0700 Subject: [PATCH 4/4] add new test case for testing clone jobs without tasks --- tests/Feature/ManageJobsTest.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/Feature/ManageJobsTest.php b/tests/Feature/ManageJobsTest.php index 55569bd..18dbf73 100644 --- a/tests/Feature/ManageJobsTest.php +++ b/tests/Feature/ManageJobsTest.php @@ -242,4 +242,36 @@ class ManageJobsTest extends TestCase 'id' => $task->id, ]); } + + /** @test */ + public function admin_can_clone_jobs_without_tasks() + { + $user = $this->adminUserSigningIn(); + $customer = factory(Customer::class)->create(); + $projects = factory(Project::class, 2)->create(['customer_id' => $customer->id]); + $jobs = factory(Job::class, 3)->create(['project_id' => $projects[0]->id]); + $tasks1 = factory(Task::class, 3)->create(['job_id' => $jobs[0]->id]); + $tasks2 = factory(Task::class, 3)->create(['job_id' => $jobs[1]->id]); + + $this->visitRoute('projects.jobs.add-from-other-project', [$projects[1]->id, 'project_id' => $projects[0]->id]); + + $this->submitForm(trans('job.add'), [ + 'job_ids['.$jobs[0]->id.']' => $jobs[0]->id, + 'job_ids['.$jobs[1]->id.']' => $jobs[1]->id, + ]); + + $this->seeInDatabase('jobs', [ + 'name' => $jobs[0]->name, + 'price' => $jobs[0]->price, + 'project_id' => $projects[1]->id, + 'worker_id' => $jobs[0]->worker_id, + ]); + + $this->seeInDatabase('jobs', [ + 'name' => $jobs[1]->name, + 'price' => $jobs[1]->price, + 'project_id' => $projects[1]->id, + 'worker_id' => $jobs[1]->worker_id, + ]); + } }