Ignore:
Timestamp:
10/21/21 23:45:59 (3 years ago)
Author:
beratkjufliju <kufliju@…>
Branches:
develop, master
Children:
4b7e2d3
Parents:
6b95845
Message:

added fileTypes controller, notifications, excel export, edited views

File:
1 edited

Legend:

Unmodified
Added
Removed
  • app/Http/Controllers/Dashboard/DepartmentsController.php

    r6b95845 rc6b84df  
    77use App\Http\Requests\Dashboard\UpdateDepartmentRequest;
    88use App\Models\Department;
    9 use App\Models\Document;
    109use App\Models\File;
    1110use App\Models\User;
     11use App\Notifications\NewDepartmentCreated;
    1212use Carbon\Carbon;
    13 use Illuminate\Http\Request;
    1413use App\Http\Controllers\Controller;
    15 use Illuminate\Support\Facades\Auth;
     14use Illuminate\Support\Facades\Notification;
    1615use Illuminate\Support\Facades\Storage;
    17 use function Illuminate\Events\queueable;
     16use Illuminate\Filesystem\Filesystem;
    1817
    1918class DepartmentsController extends Controller
     
    4039        $location = 'Departments' . DIRECTORY_SEPARATOR . $request->code;
    4140
    42         if(!Storage::disk('local')->has($location)){
    43             Storage::disk('local')->makeDirectory($location);
     41        if(!Storage::disk('uploads')->has($location)){
     42            Storage::disk('uploads')->makeDirectory($location);
    4443
    4544        }
    46         $department->location = Storage::disk('local')->path('') . $location;
     45        $department->location = $location;
    4746        $department->user_id = auth()->id();
     47
     48        $users = User::all();
     49        Notification::send($users, new NewDepartmentCreated("New department created"));
    4850
    4951        $department->save();
     
    6567        $department = Department::findOrFail($id);
    6668
    67         $documents = $department->document;
     69        $folders = $department->folder;
    6870        $oldLocation = DIRECTORY_SEPARATOR . 'Departments' . DIRECTORY_SEPARATOR . $department->code;
    6971
    7072        $department->name = $request->name;
    7173        $department->code = $request->code;
     74        $department->updated_at = Carbon::now();
    7275
    7376        if($department->isDirty('code'))
    7477        {
    7578            $location = 'Departments' . DIRECTORY_SEPARATOR . $request->code;
    76             if(!Storage::disk('local')->has($location)){
    77                 Storage::disk('local')->move($oldLocation, $location);
    78                 $department->location = Storage::disk('local')->path('') . $location;
     79            if(!Storage::disk('uploads')->has($location)){
     80                Storage::disk('uploads')->move($oldLocation, $location);
     81                $department->location = $location;
    7982            }
    8083
    81             foreach ($documents as $document) {
    82                 foreach($document->files as $file) {
    83                     $file->location = $location . DIRECTORY_SEPARATOR . $document->name . DIRECTORY_SEPARATOR . $file->name;
     84            foreach ($folders as $folder) {
     85                    $currArchId = explode('/', $folder->arch_id)[1];
     86                    $folder->arch_id = $department->code . '/' . $currArchId;
     87                    $folder->save();
     88                foreach($folder->files as $file) {
     89                    $file->location = $location . DIRECTORY_SEPARATOR . $folder->name . DIRECTORY_SEPARATOR . $file->name;
    8490                    $file->save();
    8591                }
     
    98104        $department = Department::find($id);
    99105        //$department->delete();
    100         $documents = $department->document()->count();
     106        $folders = $department->folder()->count();
    101107
    102         if($documents > 0){
    103             Alert::flash($department->name . " has " . $documents . " document/s associated", "error");
     108        if($folders > 0){
     109            Alert::flash($department->name . " has " . $folders . " document/s associated", "error");
    104110        }
    105111        else {
     
    111117        return redirect()->route("dashboard.departments.index");
    112118    }
     119
     120    public function downloadAll()
     121    {
     122        $zip_file=Storage::disk('uploads')->path('Departments.zip');
     123        $zip = new \ZipArchive();
     124        $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
     125        $path = Storage::disk('uploads')->path('Departments');
     126        $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
     127        $flag=false;
     128
     129        foreach ($files as $file)
     130        {
     131            if(File::all()->count() > 0) {
     132
     133                // We're skipping all subfolders
     134                if (!$file->isDir()) {
     135                    $filePath = $file->getRealPath();
     136                    // extracting filename with substr/strlen
     137                    $relativePath = substr($filePath, strlen($path) + 1);
     138                    $zip->addFile($filePath, $relativePath);
     139                }
     140            }
     141            else
     142            {
     143                $flag=true;
     144            break;
     145            }
     146        }
     147        if(!$flag) {
     148            $zip->close();
     149            $headers = array('Content-Type' => 'application/octet-stream',);
     150            $zip_new_name = Carbon::now()->format('d.m.Y - H:i') . '- Departments.zip';
     151            return response()->download($zip_file, $zip_new_name, $headers);
     152        }
     153        else {
     154            Alert::flash("All departments are empty", "warning");
     155            return redirect()->route("dashboard.departments.index");
     156        }
     157    }
     158
     159    public function downloadDepartment($id)
     160    {
     161        $department = Department::find($id);
     162
     163        $FileSystem = new Filesystem();
     164        $zip_file = Storage::disk('uploads')->path('Department.zip');
     165        $zip = new \ZipArchive();
     166        $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
     167        $path = Storage::disk('uploads')->path($department->location) . DIRECTORY_SEPARATOR;
     168        $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
     169
     170        $filesInDept = $FileSystem->allFiles($path);
     171
     172        if(!empty($filesInDept)) {
     173        foreach ($files as $file) {
     174            if (!$file->isDir()) {
     175                $filePath = $file->getRealPath();
     176                // extracting filename with substr/strlen
     177                $relativePath = substr($filePath, strlen($path) + 1);
     178                $zip->addFile($filePath, $relativePath);
     179            }
     180        }
     181        $zip->close();
     182        $headers = array('Content-Type' => 'application/octet-stream',);
     183            $zip_new_name = Carbon::now()->format('d.m.Y - H:i') . $department->name . '.zip';
     184        return response()->download($zip_file, $zip_new_name, $headers);
     185        }
     186        else{
     187            Alert::flash("This department has no files", "warning");
     188            return redirect()->route("dashboard.departments.index");
     189        }
     190
     191    }
    113192}
Note: See TracChangeset for help on using the changeset viewer.