# MyProjectController
app / Http / Controllers / MyProjectController.php
# index
public function index(){
return view('Project.project.user');
}
1
2
3
2
3
# show
public function show($id){
$project = Project::with('projectLeaderInfo', 'projectMemberInfo', 'taskInfo')
->where('id', $id)
->where(function ($query){
$query->whereHas('projectLeaderInfo', function ($q){
// whereHas many to manay
$q->where('user_id', auth()->id());
})
->orWhereHas('projectMemberInfo', function ($q){
$q->where('user_id', auth()->id());
});
})
->firstOrfail();
return view('Project.project.myProjectDetail', ['project'=>$project]);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# projectTable
public function projectTable(){
$projects = Project::with('projectLeaderInfo','projectMemberInfo')
->whereHas('projectLeaderInfo', function ($query){
// whereHas many to manay
$query->where('user_id', auth()->id());
})
->orWhereHas('projectMemberInfo', function ($query){
$query->where('user_id', auth()->id());
});
return Datatables::of($projects)
->editColumn('description', function ($each){
return Str::limit($each->description, 50);
})
->addColumn('leaders', function ($each){
$output = '<div>';
foreach ( $each->projectLeaderInfo as $leader){
$output .= '<img src="'.$leader->profileImagePath().'" class="profile-image-table-p">';
}
return $output .'</div>';
})
->addColumn('members', function ($each){
$output = '<div>';
foreach ( $each->projectMemberInfo as $member){
$output .= '<img src="'.$member->profileImagePath().'" class="profile-image-table-p">';
}
return $output .'</div>';
})
->editColumn('priority', function ($each){
if ($each->priority == 'high'){
return '<span class="badge bg-success py-2 px-4 rounded-pill">High</span>';
}elseif ($each->priority == 'middle'){
return '<span class="badge bg-warning py-2 px-3 rounded-pill">Middle</span>';
}else{
return '<span class="badge bg-danger py-2 px-4 rounded-pill">Low</span>';
}
})
->editColumn('status', function ($each){
if ( $each->status == 'complete' ){
return '<span class="badge bg-success py-2 px-2 rounded-pill">Complete</span>';
}elseif ($each->status == 'in_progress'){
return '<span class="badge bg-primary py-2 px-2 rounded-pill">In Progress</span>';
} else{
return '<span class="badge bg-info py-2 px-3 rounded-pill">Pending</span>';
}
})
->addColumn('action', function ($each){
$detail = '<a href="'. route('myproject.show', $each->id) .'" class="btn btn-outline-primary me-2"><i class="fa-solid fa-circle-info"></i></a>';
return '<div class="d-flex">'. $detail .'</div>';
})
->addColumn('plus_icon', function ($each){
return null;
})
->rawColumns(['leaders', 'members', 'priority', 'status', 'action']) // for HTML return
->make(true);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Code Overview
<?php
namespace App\Http\Controllers;
use App\Models\Project;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Yajra\DataTables\DataTables;
class MyProjectController extends Controller
{
public function index(){
return view('Project.project.user');
}
public function show($id){
$project = Project::with('projectLeaderInfo', 'projectMemberInfo', 'taskInfo')
->where('id', $id)
->where(function ($query){
$query->whereHas('projectLeaderInfo', function ($q){
// whereHas many to manay
$q->where('user_id', auth()->id());
})
->orWhereHas('projectMemberInfo', function ($q){
$q->where('user_id', auth()->id());
});
})
->firstOrfail();
return view('Project.project.myProjectDetail', ['project'=>$project]);
}
public function projectTable(){
$projects = Project::with('projectLeaderInfo','projectMemberInfo')
->whereHas('projectLeaderInfo', function ($query){
// whereHas many to manay
$query->where('user_id', auth()->id());
})
->orWhereHas('projectMemberInfo', function ($query){
$query->where('user_id', auth()->id());
});
return Datatables::of($projects)
->editColumn('description', function ($each){
return Str::limit($each->description, 50);
})
->addColumn('leaders', function ($each){
$output = '<div>';
foreach ( $each->projectLeaderInfo as $leader){
$output .= '<img src="'.$leader->profileImagePath().'" class="profile-image-table-p">';
}
return $output .'</div>';
})
->addColumn('members', function ($each){
$output = '<div>';
foreach ( $each->projectMemberInfo as $member){
$output .= '<img src="'.$member->profileImagePath().'" class="profile-image-table-p">';
}
return $output .'</div>';
})
->editColumn('priority', function ($each){
if ($each->priority == 'high'){
return '<span class="badge bg-success py-2 px-4 rounded-pill">High</span>';
}elseif ($each->priority == 'middle'){
return '<span class="badge bg-warning py-2 px-3 rounded-pill">Middle</span>';
}else{
return '<span class="badge bg-danger py-2 px-4 rounded-pill">Low</span>';
}
})
->editColumn('status', function ($each){
if ( $each->status == 'complete' ){
return '<span class="badge bg-success py-2 px-2 rounded-pill">Complete</span>';
}elseif ($each->status == 'in_progress'){
return '<span class="badge bg-primary py-2 px-2 rounded-pill">In Progress</span>';
} else{
return '<span class="badge bg-info py-2 px-3 rounded-pill">Pending</span>';
}
})
->addColumn('action', function ($each){
$detail = '<a href="'. route('myproject.show', $each->id) .'" class="btn btn-outline-primary me-2"><i class="fa-solid fa-circle-info"></i></a>';
return '<div class="d-flex">'. $detail .'</div>';
})
->addColumn('plus_icon', function ($each){
return null;
})
->rawColumns(['leaders', 'members', 'priority', 'status', 'action']) // for HTML return
->make(true);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89