source: app/Http/Controllers/Dashboard/DepartmentsController.php@ 9141ace

develop
Last change on this file since 9141ace was 9141ace, checked in by beratkjufliju <kufliju@…>, 3 years ago

bug fix

  • Property mode set to 100644
File size: 5.9 KB
RevLine 
[194a359]1<?php
2
3namespace App\Http\Controllers\Dashboard;
4
5use App\Helpers\Alert;
6use App\Http\Requests\Dashboard\NewDepartmentRequest;
7use App\Http\Requests\Dashboard\UpdateDepartmentRequest;
8use App\Models\Department;
[6b95845]9use App\Models\File;
[194a359]10use App\Models\User;
[c6b84df]11use App\Notifications\NewDepartmentCreated;
[d795fa6]12use Carbon\Carbon;
[194a359]13use App\Http\Controllers\Controller;
[c6b84df]14use Illuminate\Support\Facades\Notification;
[24a616f]15use Illuminate\Support\Facades\Storage;
[c6b84df]16use Illuminate\Filesystem\Filesystem;
[194a359]17
18class DepartmentsController extends Controller
19{
20 public function index()
21 {
22 return view("dashboard.departments.index")->with([
[24a616f]23 "departments" => Department::all(),
[194a359]24 ]);
25 }
26
27 public function create()
28 {
29 return view("dashboard.departments.create");
30 }
31
[120759b]32 public function store(NewDepartmentRequest $request)
33 {
34 $department = new Department();
35
36 $department->name = $request->name;
37 $department->code = $request->code;
38
[b9c4a92]39 $location = 'Departments' . DIRECTORY_SEPARATOR . $request->code;
[e6c1f87]40
[c6b84df]41 if(!Storage::disk('uploads')->has($location)){
42 Storage::disk('uploads')->makeDirectory($location);
[120759b]43
[b9c4a92]44 }
[c6b84df]45 $department->location = $location;
[120759b]46 $department->user_id = auth()->id();
47
[c6b84df]48 $users = User::all();
49
[120759b]50 $department->save();
51
52 Alert::flash("New Department added successfully");
53
54 return redirect()->route("dashboard.departments.index");
55 }
56
[d795fa6]57 public function editShow($id)
58 {
59 return view("dashboard.departments.edit")->with([
60 "department" => Department::findOrFail($id)
61 ]);
62 }
63
[194a359]64 public function edit(UpdateDepartmentRequest $request, $id)
65 {
66 $department = Department::findOrFail($id);
67
[c6b84df]68 $folders = $department->folder;
[b9c4a92]69 $oldLocation = DIRECTORY_SEPARATOR . 'Departments' . DIRECTORY_SEPARATOR . $department->code;
[24a616f]70
[194a359]71 $department->name = $request->name;
72 $department->code = $request->code;
[c6b84df]73 $department->updated_at = Carbon::now();
[194a359]74
[24a616f]75 if($department->isDirty('code'))
76 {
[b9c4a92]77 $location = 'Departments' . DIRECTORY_SEPARATOR . $request->code;
[c6b84df]78 if(!Storage::disk('uploads')->has($location)){
79 Storage::disk('uploads')->move($oldLocation, $location);
80 $department->location = $location;
[24a616f]81 }
[6b95845]82
[c6b84df]83 foreach ($folders as $folder) {
84 $currArchId = explode('/', $folder->arch_id)[1];
85 $folder->arch_id = $department->code . '/' . $currArchId;
86 $folder->save();
87 foreach($folder->files as $file) {
88 $file->location = $location . DIRECTORY_SEPARATOR . $folder->name . DIRECTORY_SEPARATOR . $file->name;
[6b95845]89 $file->save();
90 }
91 }
[24a616f]92 }
93
[194a359]94 $department->save();
95
96 Alert::flash("Department edited successfully");
97
98 return redirect()->route("dashboard.departments.index");
99 }
100
[d795fa6]101 public function destroy($id)
[194a359]102 {
103 $department = Department::find($id);
[d795fa6]104 //$department->delete();
[c6b84df]105 $folders = $department->folder()->count();
[194a359]106
[c6b84df]107 if($folders > 0){
108 Alert::flash($department->name . " has " . $folders . " document/s associated", "error");
[d795fa6]109 }
110 else {
111 $department->delete();
[194a359]112
[d795fa6]113 Alert::flash($department->name . " deleted successfully");
114 }
[194a359]115
116 return redirect()->route("dashboard.departments.index");
117 }
[c6b84df]118
119 public function downloadAll()
120 {
[2740efc]121 try {
122 $zip_file = Storage::disk('uploads')->path('Departments.zip');
123 $zip = new \ZipArchive();
124 $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
[2279f71]125
[2740efc]126 $path = Storage::disk('uploads')->path('Departments');
[df6e9ec]127
[68694d4]128 $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
129
[159e7df]130 foreach ($files as $file) {
131
[2740efc]132 // We're skipping all subfolders
133 if (!$file->isDir()) {
134 $filePath = $file->getRealPath();
135 // extracting filename with substr/strlen
136 $relativePath = substr($filePath, strlen($path) + 1);
137 $zip->addFile($filePath, $relativePath);
138 }
[bbcbb57]139 }
[2740efc]140 $zip->close();
141 $headers = array('Content-Type' => 'application/octet-stream');
142 $zip_new_name = Carbon::now()->format('d.m.Y - H:i') . '- Departments.zip';
143 return response()->download($zip_file, $zip_new_name, $headers);
[bbcbb57]144 }
[2740efc]145 catch(\Exception $e){
[9141ace]146 abort(403, "No files found");
[2740efc]147 }
[c6b84df]148 }
149
150 public function downloadDepartment($id)
151 {
[94f05dc]152 try {
[df6e9ec]153 $department = Department::find($id);
154 $zip_file=Storage::disk('uploads')->path('Department.zip');
155 $zip = new \ZipArchive();
156 $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
157 $path = Storage::disk('uploads')->path($department->location);
158
[159e7df]159 $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
160 foreach ($files as $file) {
[94f05dc]161
162 // We're skipping all subfolders
[159e7df]163 if (!$file->isDir()) {
164 $filePath = $file->getRealPath();
165 // extracting filename with substr/strlen
166 $relativePath = substr($filePath, strlen($path) + 1);
167 $zip->addFile($filePath, $relativePath);
168 }
[94f05dc]169 }
[159e7df]170 $zip->close();
[94f05dc]171 $headers = array('Content-Type' => 'application/octet-stream');
172 $zip_new_name = Carbon::now()->format('d.m.Y - H:i') . '- Departments.zip';
[159e7df]173 return response()->download($zip_file, $zip_new_name, $headers);
[c6b84df]174 }
[94f05dc]175 catch(\Exception $e){
176 Alert::flash("All departments are empty", "warning");
[4b7e2d3]177 return redirect()->back();
[94f05dc]178 }
[c6b84df]179 }
[194a359]180}
Note: See TracBrowser for help on using the repository browser.