edms2023/app/Observers/SharedFileObserver.php

115 lines
3.5 KiB
PHP

<?php
namespace App\Observers;
use App\SharedFile;
use App\User;
class SharedFileObserver
{
/**
* Handle the shared file "created" event.
*
* @param \App\SharedFile $sharedFile
* @return void
*/
public function created(SharedFile $sharedFile)
{
if($sharedFile->department_id!=null)
{
$users = User::where('department_id', $sharedFile->department->id)->pluck('id')->toArray();
$files = SharedFile::where('shared_by', auth()->user()->id)->where('path_to_root', 'LIKE', '%;'. $sharedFile->file_id .';%')
->where(function($q) use($sharedFile, $users){
$q->orWhere('department_id', $sharedFile->department_id)
->orWhereIn('user_id', $users);
})->get();
foreach($files as $file)
{
$file->delete();
}
}
else if($sharedFile->user_id!=null)
{
$files = SharedFile::where('shared_by', auth()->user()->id)->where('user_id', $sharedFile->user_id)->where('path_to_root', 'LIKE', '%;'. $sharedFile->file_id .';%')->get();
foreach($files as $file)
{
$file->delete();
}
}
if(($sharedFile->permission == 1) && SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 2)->exist())
$sharedFile->delete();
else if($sharedFile->permission == 2)
if(SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 1)->exist())
SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 1)->delete();
if($sharedFile->path_to_root == "")
{
$sharedFile->show_home = 1;
$sharedFile->saveWithoutEvents();
}
else
{
$found=false;
$shares = SharedFile::where('department_id', $sharedFile->department_id)->where('user_id', $sharedFile->user_id)->where('file_id', $sharedFile->file_id)->get(['id', 'show_home']);
foreach($shares as $share)
{
if(preg_match("/;".$share->file_id.";/", $sharedFile->path_to_root))
$found=true;
}
if($found == false)
{
$sharedFile->show_home = 1;
$sharedFile->saveWithoutEvents();
}
}
}
/**
* Handle the shared file "updated" event.
*
* @param \App\SharedFile $sharedFile
* @return void
*/
public function updated(SharedFile $sharedFile)
{
//
}
/**
* Handle the shared file "deleted" event.
*
* @param \App\SharedFile $sharedFile
* @return void
*/
public function deleted(SharedFile $sharedFile)
{
//
}
/**
* Handle the shared file "restored" event.
*
* @param \App\SharedFile $sharedFile
* @return void
*/
public function restored(SharedFile $sharedFile)
{
//
}
/**
* Handle the shared file "force deleted" event.
*
* @param \App\SharedFile $sharedFile
* @return void
*/
public function forceDeleted(SharedFile $sharedFile)
{
//
}
}