1 | <?php |
||||
2 | |||||
3 | namespace App\Http\Controllers; |
||||
4 | |||||
5 | use App\Articles; |
||||
6 | use App\DoctorDetail; |
||||
7 | use App\Hospital; |
||||
8 | use App\Thread; |
||||
9 | use Carbon\Carbon; |
||||
10 | use App\City; |
||||
11 | use App\DoctorSpecialization; |
||||
12 | use Illuminate\Http\Request; |
||||
13 | use Illuminate\Support\Facades\Auth; |
||||
14 | use Illuminate\Support\Facades\Hash; |
||||
15 | use Illuminate\Support\Facades\Storage; |
||||
16 | |||||
17 | class DocController extends Controller |
||||
18 | { |
||||
19 | /** |
||||
20 | * Create a new controller instance |
||||
21 | * |
||||
22 | * DocController constructor. |
||||
23 | * @return void |
||||
24 | */ |
||||
25 | public function __construct() |
||||
26 | { |
||||
27 | $this->middleware('auth:doctor'); |
||||
28 | } |
||||
29 | |||||
30 | /** |
||||
31 | * Show dashboard page |
||||
32 | * |
||||
33 | * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View |
||||
34 | * @throws \Exception |
||||
35 | */ |
||||
36 | public function dashboard() |
||||
37 | { |
||||
38 | $doctor = $this->currentUser(); |
||||
39 | |||||
40 | $since = new Carbon(Auth::guard('doctor')->user()->created_at); |
||||
41 | $data = [ |
||||
42 | 'doctor' => $doctor, |
||||
43 | 'articles' => count(Articles::all()), |
||||
44 | 'threads' => count(Thread::all()), |
||||
45 | 'role' => session('role'), |
||||
46 | 'since' => $since, |
||||
47 | 'warning' => null |
||||
48 | |||||
49 | ]; |
||||
50 | |||||
51 | if( $doctor->city_id == null || |
||||
52 | $doctor->gender == null || |
||||
53 | $doctor->biography == null || |
||||
54 | $doctor->profile_picture == 'user-default.jpg') { |
||||
55 | |||||
56 | $data['warning'] = 'Sepertinya anda belum melengkapi data diri anda, segera lengkapi data diri anda.'; |
||||
57 | } |
||||
58 | return view('pages.dashboard')->with('data', $data); |
||||
59 | } |
||||
60 | |||||
61 | /** |
||||
62 | * Show profile page |
||||
63 | * |
||||
64 | * @param $id |
||||
65 | * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View |
||||
66 | */ |
||||
67 | public function profile($id) |
||||
68 | { |
||||
69 | $doctor = $this->currentUser(); |
||||
70 | if($doctor->id == $id) { |
||||
71 | $data = [ |
||||
72 | 'doctor' => $doctor |
||||
73 | ]; |
||||
74 | |||||
75 | return view('pages.profile')->with('data', $data); |
||||
76 | } |
||||
77 | return redirect()->back()->with('warning', 'Anda tidak berhak mengakses laman tersebut.'); |
||||
78 | } |
||||
79 | |||||
80 | /** |
||||
81 | * Show edit profile form |
||||
82 | * |
||||
83 | * @param $id |
||||
84 | * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View |
||||
85 | */ |
||||
86 | public function edit($id) |
||||
87 | { |
||||
88 | $doctor = $this->currentUser(); |
||||
89 | if($doctor->id == $id) { |
||||
90 | $specialization = DoctorSpecialization::pluck('name', 'id'); |
||||
91 | $cities = City::pluck('name', 'id'); |
||||
92 | |||||
93 | $data = [ |
||||
94 | 'doctor' => $doctor, |
||||
95 | 'specialization' => $specialization, |
||||
96 | 'cities' => $cities |
||||
97 | ]; |
||||
98 | |||||
99 | return view('pages.profile-edit')->with('data', $data); |
||||
100 | } |
||||
101 | return redirect()->back()->with('warning', 'Anda tidak berhak mengakses laman tersebut.'); |
||||
102 | } |
||||
103 | |||||
104 | /** |
||||
105 | * Update profile |
||||
106 | * |
||||
107 | * @param Request $request |
||||
108 | * @param $id |
||||
109 | * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector |
||||
110 | * @throws \Illuminate\Validation\ValidationException |
||||
111 | */ |
||||
112 | public function update(Request $request, $id) |
||||
0 ignored issues
–
show
|
|||||
113 | { |
||||
114 | $this->validate($request, [ |
||||
115 | 'profile_picture' => 'image|nullable|max:3999', |
||||
116 | 'name' => 'required', |
||||
117 | 'email' => 'required|email', |
||||
118 | 'gender' => 'required', |
||||
119 | 'city_id' => 'required', |
||||
120 | 'specialization_id' => 'required', |
||||
121 | 'biography' => 'required|min:200' |
||||
122 | ]); |
||||
123 | |||||
124 | $doctor = $this->currentUser(); |
||||
125 | $img = null; |
||||
126 | |||||
127 | if($request->hasFile('profile_picture')) { |
||||
128 | |||||
129 | if( $doctor->profile_picture != "user-default.jpg") { |
||||
130 | Storage::delete('public/user_images/'.$doctor->profile_picture); |
||||
131 | } |
||||
132 | |||||
133 | // Get Filename.ext |
||||
134 | $fileNameWExt = $request->file('profile_picture')->getClientOriginalName(); |
||||
135 | // Get Filename |
||||
136 | $fileName = pathinfo($fileNameWExt, PATHINFO_FILENAME); |
||||
137 | // Get ext |
||||
138 | $ext = $request->file('profile_picture')->getClientOriginalExtension(); |
||||
139 | // Filename to Store |
||||
140 | $img = $fileName.'_'.time().'.'.$ext; |
||||
141 | // Upload Image |
||||
142 | $path = $request->file('profile_picture')->storeAs('public/user_images', $img); |
||||
0 ignored issues
–
show
|
|||||
143 | } |
||||
144 | |||||
145 | $doctor->name = $request->input('name'); |
||||
146 | $doctor->email = $request->input('email'); |
||||
147 | $doctor->city_id = $request->input('city_id'); |
||||
148 | $doctor->gender = $request->input('gender'); |
||||
149 | $doctor->specialization_id = $request->input('specialization_id'); |
||||
150 | $doctor->biography = $request->input('biography'); |
||||
151 | if($request->hasFile('profile_picture')) { |
||||
152 | $doctor->profile_picture = $img; |
||||
153 | } |
||||
154 | |||||
155 | if($doctor->save()) { |
||||
156 | return redirect(route('doctor.profile', $doctor->id))->with('success', 'Profil berhasil diperbarui !'); |
||||
157 | } |
||||
158 | |||||
159 | return redirect(route('doctor.profile.edit', $doctor->id))->with('failed', 'Pembaruan profil gagal !'); |
||||
160 | } |
||||
161 | |||||
162 | /** |
||||
163 | * Show edit password form |
||||
164 | * |
||||
165 | * @param $id |
||||
166 | * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View |
||||
167 | */ |
||||
168 | public function editPass($id) |
||||
169 | { |
||||
170 | $doctor = $this->currentUser(); |
||||
171 | if($doctor->id == $id) { |
||||
172 | $data = [ |
||||
173 | 'doctor' => $doctor |
||||
174 | ]; |
||||
175 | return view('pages.profile-password')->with('data', $data); |
||||
176 | } |
||||
177 | |||||
178 | return redirect()->back()->with('warning', 'Anda tidak berhak mengakses laman tersebut.'); |
||||
179 | } |
||||
180 | |||||
181 | /** |
||||
182 | * Change current password |
||||
183 | * |
||||
184 | * @param Request $request |
||||
185 | * @param $id |
||||
186 | * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector |
||||
187 | * @throws \Illuminate\Validation\ValidationException |
||||
188 | */ |
||||
189 | public function updatePass(Request $request, $id) |
||||
0 ignored issues
–
show
The parameter
$id is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. ![]() |
|||||
190 | { |
||||
191 | $doctor = $this->currentUser(); |
||||
192 | if($this->validatePass($request->input('old_password'))) { |
||||
193 | if($request->input('old_password') == $request->input('new_password')) { |
||||
194 | return redirect(route('doctor.password.edit', $doctor->id))->with('warning', 'Password baru tidak boleh sama dengan Password lama.'); |
||||
195 | } |
||||
196 | |||||
197 | $this->validate($request, [ |
||||
198 | 'old_password' => 'required|min:6', |
||||
199 | 'new_password' => 'required_with:password_confirmation|same:password_confirmation|min:6', |
||||
200 | 'password_confirmation' => 'required|min:6' |
||||
201 | ]); |
||||
202 | |||||
203 | $doctor->password = Hash::make($request->input('new_password')); |
||||
204 | $doctor->save(); |
||||
205 | |||||
206 | return redirect(route('doctor.profile', $doctor->id))->with('success', 'Password berhasil diubah !'); |
||||
207 | } |
||||
208 | return redirect(route('doctor.password.edit', $doctor->id))->with('failed', 'Password lama tidak cocok.'); |
||||
209 | } |
||||
210 | |||||
211 | /** |
||||
212 | * Remove current used profile picture |
||||
213 | * |
||||
214 | * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector |
||||
215 | */ |
||||
216 | public function removeImage() |
||||
217 | { |
||||
218 | $doctor = $this->currentUser(); |
||||
219 | if($doctor->profile_picture != "user-default.jpg") { |
||||
220 | Storage::delete('public/user_images/'.$doctor->profile_picture); |
||||
221 | } |
||||
222 | |||||
223 | $doctor->profile_picture = "user-default.jpg"; |
||||
224 | if($doctor->save()) { |
||||
225 | return redirect(route('doctor.profile.edit', $doctor->id))->with('success', 'Foto profil berhasil dihapus !'); |
||||
226 | } |
||||
227 | return redirect(route('doctor.profile.edit', $doctor->id))->with('failed', 'Gagal menghapus foto profil.'); |
||||
228 | } |
||||
229 | |||||
230 | /** |
||||
231 | * Delete account |
||||
232 | * |
||||
233 | * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector |
||||
234 | */ |
||||
235 | public function destroy() |
||||
236 | { |
||||
237 | $doctor = $this->currentUser(); |
||||
238 | if($doctor->delete()) { |
||||
239 | session()->flush(); |
||||
240 | return redirect(route('doctor.login'))->with('success', 'Akun telah dihapus !'); |
||||
241 | } |
||||
242 | return redirect(route('doctor.dashboard'))->with('failed', 'Penghapusan akun gagal.'); |
||||
243 | } |
||||
244 | |||||
245 | /** |
||||
246 | * Show Hospital page on profile |
||||
247 | * |
||||
248 | * @param $id |
||||
249 | * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View |
||||
250 | */ |
||||
251 | public function hospital($id) |
||||
252 | { |
||||
253 | $doctor = $this->currentUser(); |
||||
254 | if($doctor->id == $id) { |
||||
255 | $data = [ |
||||
256 | 'doctor' => $doctor, |
||||
257 | 'hospitals' => Hospital::where('city_id', $doctor->city_id)->paginate(5), |
||||
258 | 'detail' => DoctorDetail::where('doctor_id', $doctor->city_id) |
||||
259 | ]; |
||||
260 | |||||
261 | return view('pages.profile-hospital')->with('data', $data); |
||||
262 | } |
||||
263 | return redirect()->back()->with('warning', 'Anda tidak berhak mengakses laman tersebut.'); |
||||
264 | } |
||||
265 | |||||
266 | public function regHospital(Request $request) |
||||
267 | { |
||||
268 | $this->validate($request, [ |
||||
269 | 'hospital_id' => 'required' |
||||
270 | ]); |
||||
271 | |||||
272 | $dd = new DoctorDetail; |
||||
273 | $dd->doctor_id = $this->currentUser()->id; |
||||
274 | $dd->hospital_id = $request->input('hospital_id'); |
||||
275 | |||||
276 | if($dd->save()) { |
||||
277 | return redirect(route('doctor.profile.hospital', $this->currentUser()->id))->with('success', 'Rumah Sakit baru ditambahkan !'); |
||||
278 | } |
||||
279 | return redirect(route('doctor.profile.hospital', $this->currentUser()->id))->with('failed', 'Gagal menambah Rumah Sakit.'); |
||||
280 | } |
||||
281 | |||||
282 | public function unregHospital($doctorId, $hospitalId) |
||||
283 | { |
||||
284 | if($this->currentUser()->id != $doctorId) { |
||||
285 | return redirect()->back()->with('warning', 'Anda tidak berhak mengakses laman tersebut.'); |
||||
286 | } |
||||
287 | $dd = DoctorDetail::where('doctor_id', $this->currentUser()->id) |
||||
288 | ->where('hospital_id', $hospitalId); |
||||
289 | if($dd != null) { |
||||
290 | if($dd->delete()) { |
||||
291 | return redirect(route('doctor.profile.hospital', $this->currentUser()->id))->with('success', 'Rumah Sakit dihapus !'); |
||||
292 | } |
||||
293 | return redirect(route('doctor.profile.hospital', $this->currentUser()->id))->with('failed', 'Gagal menghapus Rumah Sakit, Data tidak ditemukan.'); |
||||
294 | } |
||||
295 | return redirect(route('doctor.profile.hospital', $this->currentUser()->id))->with('failed', 'Error !, Telah terjadi kesalahan.'); |
||||
296 | } |
||||
297 | |||||
298 | /** |
||||
299 | * Get current logged in Doctor |
||||
300 | * |
||||
301 | * @return mixed |
||||
302 | */ |
||||
303 | private function currentUser() |
||||
304 | { |
||||
305 | return Auth::guard('doctor')->user(); |
||||
306 | } |
||||
307 | |||||
308 | /** |
||||
309 | * Validate old password |
||||
310 | * |
||||
311 | * @param string $oldPassword |
||||
312 | * @return bool |
||||
313 | */ |
||||
314 | private function validatePass(string $oldPassword) |
||||
315 | { |
||||
316 | $doctor = $this->currentUser(); |
||||
317 | if(Hash::check($oldPassword, $doctor->password)) { |
||||
318 | return true; |
||||
319 | } |
||||
320 | |||||
321 | return false; |
||||
322 | } |
||||
323 | |||||
324 | } |
||||
325 |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.