Browse Source

Merge pull request #46 from andriawan/patch-issue-45

Pull Request for closing #45
pull/50/head
Nafies Luthfi 6 years ago
committed by GitHub
parent
commit
a907c21f11
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      app/Entities/Projects/JobsRepository.php
  2. 22
      resources/views/projects/jobs/add-from-other-project.blade.php
  3. 32
      tests/Feature/ManageJobsTest.php

16
app/Entities/Projects/JobsRepository.php

@ -49,13 +49,15 @@ class JobsRepository extends BaseRepository
$newJob->project_id = $projectId;
$newJob->save();
$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();
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();
}
}
}
DB::commit();

22
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
})();

32
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,
]);
}
}
Loading…
Cancel
Save