Skip to content

Commit c2f60d1

Browse files
committed
1 parent 67f8b7b commit c2f60d1

17 files changed

+199
-107
lines changed

app/Http/Controllers/FileUpload.php

Lines changed: 67 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,78 +3,93 @@
33
namespace App\Http\Controllers;
44

55
use App\Models\File;
6+
use App\Models\Workflow\Orders;
7+
use App\Models\Workflow\Quotes;
8+
use App\Models\Products\Products;
9+
use App\Models\Workflow\Invoices;
10+
use App\Models\Products\StockMove;
11+
use App\Models\Workflow\Deliverys;
12+
use App\Models\Companies\Companies;
13+
use App\Models\Purchases\Purchases;
14+
use App\Models\Workflow\Opportunities;
615
use App\Http\Requests\StoreFileRequest;
16+
use App\Models\Purchases\PurchaseReceipt;
17+
use App\Models\Quality\QualityNonConformity;
718

819
class FileUpload extends Controller
920
{
21+
/**
22+
* @param \App\Http\Requests\StoreFileRequest $request
23+
* @return \Illuminate\Http\RedirectResponse
24+
*/
25+
public function fileUpload(StoreFileRequest $request)
26+
{
27+
return $this->handleFileUpload($request, 'file');
28+
}
29+
1030
/**
11-
* @param \Illuminate\Http\Request $request
31+
* @param \App\Http\Requests\StoreFileRequest $request
1232
* @return \Illuminate\Http\RedirectResponse
1333
*/
14-
public function fileUpload(StoreFileRequest $request){
34+
public function photoUpload(StoreFileRequest $request)
35+
{
36+
return $this->handleFileUpload($request, 'photo', true);
37+
}
1538

16-
$fileName = auth()->id() . '_' . time() . '.'. $request->file->extension();
17-
$oringalFileName = $request->file->getClientOriginalName();
39+
/**
40+
* Handle the file upload logic.
41+
*
42+
* @param \App\Http\Requests\StoreFileRequest $request
43+
* @param string $directory
44+
* @param bool $asPhoto
45+
* @return \Illuminate\Http\RedirectResponse
46+
*/
47+
private function handleFileUpload(StoreFileRequest $request, string $directory, bool $asPhoto = false)
48+
{
49+
$fileName = auth()->id() . '_' . time() . '.' . $request->file->extension();
50+
$originalFileName = $request->file->getClientOriginalName();
1851
$type = $request->file->getClientMimeType();
1952
$size = $request->file->getSize();
2053

21-
$request->file->move(public_path('file'), $fileName);
54+
$request->file->move(public_path($directory), $fileName);
2255

23-
File::create([
56+
$fileData = [
2457
'user_id' => auth()->id(),
2558
'name' => $fileName,
26-
'original_file_name' => $oringalFileName,
59+
'original_file_name' => $originalFileName,
2760
'type' => $type,
2861
'size' => $size,
29-
'companies_id' => $request->companies_id,
30-
'opportunities_id' => $request->opportunities_id,
31-
'quotes_id' => $request->quotes_id,
32-
'orders_id' => $request->orders_id,
33-
'deliverys_id' => $request->deliverys_id,
34-
'invoices_id' => $request->invoices_id,
35-
'products_id' => $request->products_id,
36-
'purchases_id' => $request->purchases_id,
37-
'purchase_receipts_id' => $request->purchase_receipts_id,
38-
'quality_non_conformities_id' => $request->quality_non_conformities_id,
39-
'stock_move_id' => $request->stock_move_id,
40-
]);
62+
];
4163

42-
return back()->with('success','File has been uploaded.')->with('file', $fileName);
43-
}
44-
45-
/**
46-
* @param \Illuminate\Http\Request $request
47-
* @return \Illuminate\Http\RedirectResponse
48-
*/
49-
public function photoUpload(StoreFileRequest $request){
64+
if ($asPhoto) {
65+
$fileData['as_photo'] = 1;
66+
}
5067

51-
$fileName = auth()->id() . '_' . time() . '.'. $request->file->extension();
52-
$oringalFileName = $request->file->getClientOriginalName();
53-
$type = $request->file->getClientMimeType();
54-
$size = $request->file->getSize();
68+
$file = File::create($fileData);
5569

56-
$request->file->move(public_path('photo'), $fileName);
70+
$associations = [
71+
'companies_id' => Companies::class,
72+
'opportunities_id' => Opportunities::class,
73+
'quotes_id' => Quotes::class,
74+
'orders_id' => Orders::class,
75+
'deliverys_id' => Deliverys::class,
76+
'invoices_id' => Invoices::class,
77+
'products_id' => Products::class,
78+
'purchases_id' => Purchases::class,
79+
'purchase_receipts_id' => PurchaseReceipt::class,
80+
'quality_non_conformities_id' => QualityNonConformity::class,
81+
'stock_move_id' => StockMove::class,
82+
];
5783

58-
File::create([
59-
'user_id' => auth()->id(),
60-
'name' => $fileName,
61-
'original_file_name' => $oringalFileName,
62-
'type' => $type,
63-
'size' => $size,
64-
'companies_id' => $request->companies_id,
65-
'opportunities_id' => $request->opportunities_id,
66-
'quotes_id' => $request->quotes_id,
67-
'orders_id' => $request->orders_id,
68-
'deliverys_id' => $request->deliverys_id,
69-
'invoices_id' => $request->invoices_id,
70-
'products_id' => $request->products_id,
71-
'purchases_id' => $request->purchases_id,
72-
'purchase_receipts_id' => $request->purchase_receipts_id,
73-
'quality_non_conformities_id' => $request->quality_non_conformities_id,
74-
'stock_move_id' => $request->stock_move_id,
75-
'as_photo' => 1,
76-
]);
84+
foreach ($associations as $key => $model) {
85+
if ($request->filled($key)) {
86+
$entity = $model::find($request->$key);
87+
if ($entity) {
88+
$entity->files()->save($file);
89+
}
90+
}
91+
}
7792

78-
return back()->with('success','File has been uploaded.')->with('file', $fileName);
93+
return back()->with('success', 'File has been uploaded.')->with('file', $fileName);
7994
}
8095
}

app/Models/Companies/Companies.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,9 @@ public function getPurchasesCountAttribute()
137137
// Relationship with the files associated with the Companies
138138
public function files()
139139
{
140-
return $this->hasMany(File::class);
140+
return $this->morphToMany(File::class, 'fileable');
141141
}
142+
142143
// Relationship with the Rating associated with the Companies
143144
public function rating()
144145
{

app/Models/File.php

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,79 +19,69 @@
1919
class File extends Model
2020
{
2121
use HasFactory;
22+
2223
protected $fillable = [
2324
'user_id',
2425
'name',
2526
'original_file_name',
2627
'type',
2728
'size',
28-
'companies_id',
29-
'opportunities_id',
30-
'quotes_id',
31-
'orders_id',
32-
'deliverys_id',
33-
'invoices_id',
34-
'products_id',
35-
'purchases_id',
36-
'purchase_receipts_id',
37-
'quality_non_conformities_id',
38-
'stock_move_id',
39-
'as_photo'
29+
'as_photo',
4030
];
41-
4231

43-
public function companie()
32+
public function companies()
4433
{
45-
return $this->belongsTo(Companies::class, 'companies_id');
34+
return $this->morphedByMany(Companies::class, 'fileable');
4635
}
4736

48-
public function quotes()
37+
public function opportunities()
4938
{
50-
return $this->belongsTo(Quotes::class, 'quotes_id');
39+
return $this->morphedByMany(Opportunities::class, 'fileable');
5140
}
5241

53-
public function Opportunities()
42+
public function quotes()
5443
{
55-
return $this->belongsTo(Opportunities::class, 'opportunities_id');
44+
return $this->morphedByMany(Quotes::class, 'fileable');
5645
}
5746

58-
public function order()
47+
public function orders()
5948
{
60-
return $this->belongsTo(Orders::class, 'orders_id');
49+
return $this->morphedByMany(Orders::class, 'fileable');
6150
}
6251

63-
public function delivery()
52+
public function deliverys()
6453
{
65-
return $this->belongsTo(Deliverys::class, 'deliverys_id');
54+
return $this->morphedByMany(Deliverys::class, 'fileable');
6655
}
6756

68-
public function invoice()
57+
public function invoices()
6958
{
70-
return $this->belongsTo(Invoices::class, 'invoices_id');
59+
return $this->morphedByMany(Invoices::class, 'fileable');
7160
}
7261

73-
public function product()
62+
public function products()
7463
{
75-
return $this->belongsTo(Products::class, 'products_id');
64+
return $this->morphedByMany(Products::class, 'fileable');
7665
}
7766

7867
public function purchaseReceipt()
7968
{
80-
return $this->belongsTo(PurchaseReceipt::class, 'purchase_receipts_id');
69+
return $this->morphedByMany(PurchaseReceipt::class, 'fileable');
8170
}
8271

83-
public function qualityNonConformity()
72+
public function stockMove()
8473
{
85-
return $this->belongsTo(QualityNonConformity::class, 'quality_non_conformities_id');
74+
return $this->morphedByMany(StockMove::class, 'fileable');
8675
}
8776

88-
public function UserManagement()
77+
public function qualityNonConformity()
8978
{
90-
return $this->belongsTo(User::class, 'users_id');
79+
return $this->morphedByMany(QualityNonConformity::class, 'fileable');
9180
}
92-
public function StockMove()
81+
82+
public function UserManagement()
9383
{
94-
return $this->belongsTo(StockMove::class, 'stock_move_id');
84+
return $this->belongsTo(User::class, 'users_id');
9585
}
9686

9787
public function GetPrettySize()

app/Models/Products/Products.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ public function getTotalUnFinishedTaskLinesQtyAttribute()
277277
// Relationship with the files associated with the Quote
278278
public function files()
279279
{
280-
return $this->hasMany(File::class);
280+
return $this->morphToMany(File::class, 'fileable');
281281
}
282282

283283
public function SubAssembly()

app/Models/Products/StockMove.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ public function purchaseReceiptLines()
6565
// Relationship with the files associated with the delevery
6666
public function files()
6767
{
68-
return $this->hasMany(File::class);
68+
return $this->morphToMany(File::class, 'fileable');
6969
}
7070

7171
// Relationship with the files only photo associated with the delevery
7272
public function photos()
7373
{
74-
return $this->hasMany(File::class)->where('as_photo', 1);
74+
return $this->morphToMany(File::class, 'fileable')->where('as_photo', 1);
7575
}
7676

7777
public function GetPrettyCreatedAttribute()

app/Models/Purchases/PurchaseReceipt.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ public function PurchaseReceiptLines()
4848
return $this->hasMany(PurchaseReceiptLines::class)->orderBy('ordre');
4949
}
5050

51-
// Relationship with the files associated with the Quote
51+
// Relationship with the files associated with the PurchaseReceipt
5252
public function files()
5353
{
54-
return $this->hasMany(File::class, 'purchase_receipts_id');
54+
return $this->morphToMany(File::class, 'fileable');
5555
}
5656

5757
public function GetshortCreatedAttribute()

app/Models/Purchases/Purchases.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function PurchaseLines()
5858
// Relationship with the files associated with the Purchases
5959
public function files()
6060
{
61-
return $this->hasMany(File::class);
61+
return $this->morphToMany(File::class, 'fileable');
6262
}
6363

6464
// Relationship with the Rating associated with the Purchases

app/Models/Quality/QualityNonConformity.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ public function task()
103103
return $this->belongsTo(Task::class, 'task_id');
104104
}
105105

106-
// Relationship with the files associated with the Quote
106+
// Relationship with the files associated with the non-conformity
107107
public function files()
108108
{
109-
return $this->hasMany(File::class);
109+
return $this->morphToMany(File::class, 'fileable');
110110
}
111111

112112
public function GetPrettyCreatedAttribute()

app/Models/Workflow/CreditNotes.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ public function getTotalPriceAttribute()
7070
return $creditNoteCalculator->getTotalPrice();
7171
}
7272

73-
// Relationship with the files associated with the delevery
73+
// Relationship with the files associated with the CreditNotes
7474
public function files()
7575
{
76-
return $this->hasMany(File::class);
76+
return $this->morphToMany(File::class, 'fileable');
7777
}
7878

7979
public function GetshortCreatedAttribute()

app/Models/Workflow/Deliverys.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ public function DeliveryLines()
6969
// Relationship with the files associated with the delevery
7070
public function files()
7171
{
72-
return $this->hasMany(File::class);
72+
return $this->morphToMany(File::class, 'fileable');
7373
}
7474

7575
// Relationship with the files only photo associated with the delevery
7676
public function photos()
7777
{
78-
return $this->hasMany(File::class)->where('as_photo', 1);
78+
return $this->morphToMany(File::class, 'fileable')->where('as_photo', 1);
7979
}
8080

8181
// Relationship with the packagings associated with the delevery

0 commit comments

Comments
 (0)