added source feature
This commit is contained in:
		@@ -4,9 +4,9 @@ namespace App\Traits;
 | 
			
		||||
 | 
			
		||||
use App\Models\Module\Module;
 | 
			
		||||
use App\Traits\SiteApi;
 | 
			
		||||
use App\Utilities\Date;
 | 
			
		||||
use App\Utilities\Info;
 | 
			
		||||
use Cache;
 | 
			
		||||
use Date;
 | 
			
		||||
use Illuminate\Support\Facades\Cache;
 | 
			
		||||
 | 
			
		||||
trait Modules
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,8 @@ trait Recurring
 | 
			
		||||
        $frequency = ($request['recurring_frequency'] != 'custom') ? $request['recurring_frequency'] : $request['recurring_custom_frequency'];
 | 
			
		||||
        $interval = (($request['recurring_frequency'] != 'custom') || ($request['recurring_interval'] < 1)) ? 1 : (int) $request['recurring_interval'];
 | 
			
		||||
        $started_at = !empty($request['paid_at']) ? $request['paid_at'] : $request['issued_at'];
 | 
			
		||||
        $source = !empty($request['created_from']) ? $request['created_from'] : source_name();
 | 
			
		||||
        $owner = !empty($request['created_by']) ? $request['created_by'] : user_id();
 | 
			
		||||
 | 
			
		||||
        $this->recurring()->create([
 | 
			
		||||
            'company_id' => $this->company_id,
 | 
			
		||||
@@ -25,6 +27,8 @@ trait Recurring
 | 
			
		||||
            'interval' => $interval,
 | 
			
		||||
            'started_at' => $started_at,
 | 
			
		||||
            'count' => (int) $request['recurring_count'],
 | 
			
		||||
            'created_from' => $source,
 | 
			
		||||
            'created_by' => $owner,
 | 
			
		||||
        ]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -40,16 +44,27 @@ trait Recurring
 | 
			
		||||
        $started_at = !empty($request['paid_at']) ? $request['paid_at'] : $request['issued_at'];
 | 
			
		||||
 | 
			
		||||
        $recurring = $this->recurring();
 | 
			
		||||
        $model_exists = $recurring->count();
 | 
			
		||||
 | 
			
		||||
        $function = $recurring->count() ? 'update' : 'create';
 | 
			
		||||
 | 
			
		||||
        $recurring->$function([
 | 
			
		||||
        $data = [
 | 
			
		||||
            'company_id' => $this->company_id,
 | 
			
		||||
            'frequency' => $frequency,
 | 
			
		||||
            'interval' => $interval,
 | 
			
		||||
            'started_at' => $started_at,
 | 
			
		||||
            'count' => (int) $request['recurring_count'],
 | 
			
		||||
        ]);
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        if ($model_exists) {
 | 
			
		||||
            $recurring->update($data);
 | 
			
		||||
        } else {
 | 
			
		||||
            $source = !empty($request['created_from']) ? $request['created_from'] : source_name();
 | 
			
		||||
            $owner = !empty($request['created_by']) ? $request['created_by'] : user_id();
 | 
			
		||||
 | 
			
		||||
            $recurring->create(array_merge($data, [
 | 
			
		||||
                'created_from' => $source,
 | 
			
		||||
                'created_by' => $owner,
 | 
			
		||||
            ]));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getRecurringSchedule($set_until_date = true)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								app/Traits/Sources.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/Traits/Sources.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Traits;
 | 
			
		||||
 | 
			
		||||
trait Sources
 | 
			
		||||
{
 | 
			
		||||
    public function isSourcable(): bool
 | 
			
		||||
    {
 | 
			
		||||
        $sourcable = $this->sourcable ?: true;
 | 
			
		||||
 | 
			
		||||
        return ($sourcable === true) && in_array('created_from', $this->getFillable());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isNotSourcable(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return ! $this->isSourcable();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getSourceName($request = null): string
 | 
			
		||||
    {
 | 
			
		||||
        if (app()->runningInConsole()) {
 | 
			
		||||
            $source = 'console';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (empty($source)) {
 | 
			
		||||
            $request = $request ?: request();
 | 
			
		||||
 | 
			
		||||
            $source = $request->isApi() ? 'api' : null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (empty($source)) {
 | 
			
		||||
            $source = 'ui';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $source;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -22,6 +22,8 @@ trait Uploads
 | 
			
		||||
        return MediaUploader::makePrivate()
 | 
			
		||||
                            ->beforeSave(function(MediaModel $media) {
 | 
			
		||||
                                $media->company_id = company_id();
 | 
			
		||||
                                $media->created_from = source_name();
 | 
			
		||||
                                $media->created_by = user_id();
 | 
			
		||||
                            })
 | 
			
		||||
                            ->fromSource($file)
 | 
			
		||||
                            ->toDirectory($path)
 | 
			
		||||
@@ -41,6 +43,8 @@ trait Uploads
 | 
			
		||||
        return MediaUploader::makePrivate()
 | 
			
		||||
                            ->beforeSave(function(MediaModel $media) {
 | 
			
		||||
                                $media->company_id = company_id();
 | 
			
		||||
                                $media->created_from = source_name();
 | 
			
		||||
                                $media->created_by = user_id();
 | 
			
		||||
                            })
 | 
			
		||||
                            ->importPath($disk, $path);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user