DashboardController::delete()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 14
rs 9.4285
cc 3
eloc 9
nc 2
nop 2
1
<?php
2
3
namespace LearnParty\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use LearnParty\Http\Requests;
7
use LearnParty\Http\Requests\VideoRequest;
8
use LearnParty\Video;
9
use LearnParty\Category;
10
use Auth;
11
12
class DashboardController extends Controller
13
{
14
    /**
15
     * Return view to create new Video post
16
     *
17
     * @return View Object
18
     */
19
    public function create()
20
    {
21
        $categories = Category::lists('name', 'id');
22
23
        return view('dashboard.new_video', compact('categories'));
24
    }
25
26
    /**
27
     * Add a new video and also add a list of all categories that it belongs
28
     * to
29
     *
30
     * @param  VideoRequest $request Request
31
     * @return Redirect to create page
32
     */
33
    public function store(VideoRequest $request)
34
    {
35
        $request['url'] = $this->videoRepository->makeYoutubeUrl($request->all()['url']);
36
37
        $newVideo = Auth::user()->videos()->create($request->all());
38
        $newVideo->categories()->sync($request->input('category_list'));
39
40
        return redirect('videos/' . $newVideo->id);
41
    }
42
43
    /**
44
     * Display the edit page for a new video.
45
     *
46
     * @param  integer $id Video Id
47
     * @return View    Edit video View
48
     */
49
    public function edit($id)
50
    {
51
        $video = Video::findOrFail($id);
52
53
        if (!$this->videoRepository->authorized($video)) {
54
            return redirect()->route('homepage');
55
        }
56
57
        $video->url = 'https://www.youtube.com/watch?v='.$video->url;
58
        $categories = Category::lists('name', 'id');
59
60
        return view('dashboard.edit_video', compact('categories', 'video'));
61
    }
62
63
    /**
64
     * Update an existing video
65
     *
66
     * @param  VideoRequest $request  Validation request
67
     * @param  integer       $id      Video Id
68
     * @return Redirect               Redirect to episode page
69
     */
70
    public function update(VideoRequest $request, $id)
71
    {
72
        $video = Video::findOrFail($id);
73
74
        if (!$this->videoRepository->authorized($video)) {
75
            return redirect()->route('homepage');
76
        }
77
78
        $request['url'] = $this->videoRepository->makeYoutubeUrl($request->all()['url']);
79
        $video->update($request->all());
80
        $video->categories()->sync($request->input('category_list'));
81
82
        $request->session()->flash('status', 'success');
83
        $request->session()->flash('message', 'Video successfully updated.');
84
85
        return redirect('dashboard/videos/' . $id . '/edit');
86
    }
87
88
    /**
89
     * Delete a video
90
     *
91
     * @param  Integer $id Video Id
92
     * @return Redirect     Redirect use to appropriate page
93
     */
94
    public function delete(Request $request, $id)
95
    {
96
        if ($this->videoRepository->authorized(Video::findOrFail($id)) && Video::destroy($id)) {
97
            $request->session()->flash('status', 'success');
98
            $request->session()->flash('message', 'Video successfully deleted.');
99
        } else {
100
            $request->session()->flash('status', 'error');
101
            $request->session()->flash('message', 'Error Deleting video. Please try again');
102
        }
103
104
        return [
105
            'message' => 'redirect'
106
        ];
107
    }
108
109
    /**
110
     * Return a list of all favorited user videos
111
     *
112
     * @return View
113
     */
114
    public function favorites()
115
    {
116
        $videos = Video::whereIn('id', Auth::user()->favorites->lists('video_id')->toArray());
117
        $favorites = [];
118
119
        $videos->each(function ($video, $Key) use (&$favorites) {
0 ignored issues
show
Unused Code introduced by
The parameter $Key is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
120
            $favorites[$video->id] = $video->favorites->count();
121
        });
122
123
        $videos = $videos->paginate(9);
124
125
        return view('dashboard.favorites', compact('videos', 'favorites'));
126
    }
127
128
    /**
129
     * Return a list of all videos uploaded by a user
130
     *
131
     * @return Video
132
     */
133
    public function uploads()
134
    {
135
        $videos = Auth::user()->videos()->paginate(9);
136
        return view('dashboard.uploads', compact('videos'));
137
    }
138
}
139