Merge pull request #1842 from cuneytsenturk/master
File group drag and drop developement
This commit is contained in:
@ -66,7 +66,17 @@ class Payments extends Controller
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
return view('purchases.payments.create', compact('accounts', 'currencies', 'account_currency_code', 'currency', 'vendors', 'categories', 'payment_methods'));
|
||||
$file_type_mimes = explode(',', config('filesystems.mimes'));
|
||||
|
||||
$file_types = [];
|
||||
|
||||
foreach ($file_type_mimes as $mime) {
|
||||
$file_types[] = '.' . $mime;
|
||||
}
|
||||
|
||||
$file_types = implode(',', $file_types);
|
||||
|
||||
return view('purchases.payments.create', compact('accounts', 'currencies', 'account_currency_code', 'currency', 'vendors', 'categories', 'payment_methods', 'file_types'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -166,7 +176,17 @@ class Payments extends Controller
|
||||
|
||||
$date_format = $this->getCompanyDateFormat();
|
||||
|
||||
return view('purchases.payments.edit', compact('payment', 'accounts', 'currencies', 'currency', 'vendors', 'categories', 'payment_methods', 'date_format'));
|
||||
$file_type_mimes = explode(',', config('filesystems.mimes'));
|
||||
|
||||
$file_types = [];
|
||||
|
||||
foreach ($file_type_mimes as $mime) {
|
||||
$file_types[] = '.' . $mime;
|
||||
}
|
||||
|
||||
$file_types = implode(',', $file_types);
|
||||
|
||||
return view('purchases.payments.edit', compact('payment', 'accounts', 'currencies', 'currency', 'vendors', 'categories', 'payment_methods', 'date_format', 'file_types'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,7 +66,17 @@ class Revenues extends Controller
|
||||
|
||||
$payment_methods = Modules::getPaymentMethods();
|
||||
|
||||
return view('sales.revenues.create', compact('accounts', 'currencies', 'account_currency_code', 'currency', 'customers', 'categories', 'payment_methods'));
|
||||
$file_type_mimes = explode(',', config('filesystems.mimes'));
|
||||
|
||||
$file_types = [];
|
||||
|
||||
foreach ($file_type_mimes as $mime) {
|
||||
$file_types[] = '.' . $mime;
|
||||
}
|
||||
|
||||
$file_types = implode(',', $file_types);
|
||||
|
||||
return view('sales.revenues.create', compact('accounts', 'currencies', 'account_currency_code', 'currency', 'customers', 'categories', 'payment_methods', 'file_types'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -166,7 +176,17 @@ class Revenues extends Controller
|
||||
|
||||
$date_format = $this->getCompanyDateFormat();
|
||||
|
||||
return view('sales.revenues.edit', compact('revenue', 'accounts', 'currencies', 'currency', 'customers', 'categories', 'payment_methods', 'date_format'));
|
||||
$file_type_mimes = explode(',', config('filesystems.mimes'));
|
||||
|
||||
$file_types = [];
|
||||
|
||||
foreach ($file_type_mimes as $mime) {
|
||||
$file_types[] = '.' . $mime;
|
||||
}
|
||||
|
||||
$file_types = implode(',', $file_types);
|
||||
|
||||
return view('sales.revenues.edit', compact('revenue', 'accounts', 'currencies', 'currency', 'customers', 'categories', 'payment_methods', 'date_format', 'file_types'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -148,6 +148,7 @@ class Kernel extends HttpKernel
|
||||
'company.currencies' => \App\Http\Middleware\LoadCurrencies::class,
|
||||
'company.settings' => \App\Http\Middleware\LoadSettings::class,
|
||||
'company.signed' => \App\Http\Middleware\SignedCompany::class,
|
||||
'dropzone' => \App\Http\Middleware\Dropzone::class,
|
||||
'header.x' => \App\Http\Middleware\AddXHeader::class,
|
||||
'menu.admin' => \App\Http\Middleware\AdminMenu::class,
|
||||
'menu.portal' => \App\Http\Middleware\PortalMenu::class,
|
||||
|
65
app/Http/Middleware/Dropzone.php
Normal file
65
app/Http/Middleware/Dropzone.php
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
class Dropzone
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (($request->method() != 'POST') && ($request->method() != 'PATCH')) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
$multiple = false;
|
||||
|
||||
foreach ($request->all() as $key => $value) {
|
||||
if (!is_array($value)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$files = [];
|
||||
$uploaded = [];
|
||||
|
||||
foreach ($value as $index => $parameter) {
|
||||
// single file uploaded..
|
||||
if (!is_array($parameter) && !$multiple) {
|
||||
if (!Arr::has($value, 'dropzone')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$request->request->set('uploaded_' . $key, $value);
|
||||
|
||||
unset($request[$key]);
|
||||
break;
|
||||
}
|
||||
|
||||
// multiple file uploaded..
|
||||
if (!Arr::has($parameter, 'dropzone')) {
|
||||
$files[] = $parameter;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$multiple = true;
|
||||
$uploaded[] = $parameter;
|
||||
}
|
||||
|
||||
if ($multiple && $uploaded) {
|
||||
$request->request->set('uploaded_' . $key, $uploaded);
|
||||
$request->request->set($key, $files);
|
||||
}
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
@ -41,7 +41,7 @@ class Transaction extends FormRequest
|
||||
'contact_id' => 'nullable|integer',
|
||||
'category_id' => 'required|integer',
|
||||
'payment_method' => 'required|string',
|
||||
'attachment' => $attachment,
|
||||
'attachment.*' => $attachment,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -37,9 +37,11 @@ class CreateTransaction extends Job
|
||||
|
||||
// Upload attachment
|
||||
if ($this->request->file('attachment')) {
|
||||
$media = $this->getMedia($this->request->file('attachment'), 'transactions');
|
||||
foreach ($this->request->file('attachment') as $attachment) {
|
||||
$media = $this->getMedia($attachment, 'transactions');
|
||||
|
||||
$this->transaction->attachMedia($media, 'attachment');
|
||||
$this->transaction->attachMedia($media, 'attachment');
|
||||
}
|
||||
}
|
||||
|
||||
// Recurring
|
||||
|
@ -37,9 +37,15 @@ class UpdateTransaction extends Job
|
||||
|
||||
// Upload attachment
|
||||
if ($this->request->file('attachment')) {
|
||||
$media = $this->getMedia($this->request->file('attachment'), 'transactions');
|
||||
$this->deleteMediaModel($this->transaction, 'attachment', $this->request);
|
||||
|
||||
$this->transaction->attachMedia($media, 'attachment');
|
||||
foreach ($this->request->file('attachment') as $attachment) {
|
||||
$media = $this->getMedia($attachment, 'transactions');
|
||||
|
||||
$this->transaction->attachMedia($media, 'attachment');
|
||||
}
|
||||
} elseif (!$this->request->file('attachment') && $this->transaction->attachment) {
|
||||
$this->deleteMediaModel($this->transaction, 'attachment', $this->request);
|
||||
}
|
||||
|
||||
// Recurring
|
||||
|
@ -46,13 +46,15 @@ class UpdateDocument extends Job
|
||||
\DB::transaction(function () {
|
||||
// Upload attachment
|
||||
if ($this->request->file('attachment')) {
|
||||
$this->document->delete_attachment();
|
||||
$this->deleteMediaModel($this->document, 'attachment', $this->request);
|
||||
|
||||
foreach ($this->request->file('attachment') as $attachment) {
|
||||
$media = $this->getMedia($attachment, Str::plural($this->document->type));
|
||||
|
||||
$this->document->attachMedia($media, 'attachment');
|
||||
}
|
||||
} elseif (!$this->request->file('attachment') && $this->document->attachment) {
|
||||
$this->deleteMediaModel($this->document, 'attachment', $this->request);
|
||||
}
|
||||
|
||||
$this->deleteRelationships($this->document, ['items', 'item_taxes', 'totals']);
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Models\Banking;
|
||||
|
||||
use App\Abstracts\Model;
|
||||
use App\Models\Common\Media as MediaModel;
|
||||
use App\Models\Setting\Category;
|
||||
use App\Scopes\Transaction as Scope;
|
||||
use App\Traits\Currencies;
|
||||
@ -320,7 +321,16 @@ class Transaction extends Model
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->getMedia('attachment')->last();
|
||||
return $this->getMedia('attachment')->all();
|
||||
}
|
||||
|
||||
public function delete_attachment()
|
||||
{
|
||||
if ($attachments = $this->attachment) {
|
||||
foreach ($attachments as $file) {
|
||||
MediaModel::where('id', $file->id)->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,10 +3,10 @@
|
||||
namespace App\Traits;
|
||||
|
||||
use MediaUploader;
|
||||
use App\Models\Common\Media as MediaModel;
|
||||
|
||||
trait Uploads
|
||||
{
|
||||
|
||||
public function getUploadedFilePath($file, $folder = 'settings', $company_id = null)
|
||||
{
|
||||
$path = '';
|
||||
@ -63,4 +63,35 @@ trait Uploads
|
||||
|
||||
return MediaUploader::importPath($disk, $path);
|
||||
}
|
||||
|
||||
public function deleteMediaModel($model, $parameter, $request = null)
|
||||
{
|
||||
$medias = $model->$parameter;
|
||||
|
||||
if (!$medias) {
|
||||
return;
|
||||
}
|
||||
|
||||
$already_uploaded = [];
|
||||
|
||||
if ($request && isset($request['uploaded_' . $parameter])) {
|
||||
$uploaded = $request['uploaded_' . $parameter];
|
||||
|
||||
if (count($medias) == count($uploaded)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($uploaded as $old_media) {
|
||||
$already_uploaded[] = $old_media['id'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ((array)$medias as $media) {
|
||||
if (in_array($media->id, $already_uploaded)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
MediaModel::where('id', $media->id)->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user