mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-22 14:59:34 +00:00
attachments upload
This commit is contained in:
1 parent
7cec94337b
commit
ed3300ad29
9 files changed
+689
-12
No files matched your search
@@ -2,20 +2,23 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Attachment;
|
||||
use App\Models\MasterTask;
|
||||
use App\Models\Team;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class MasterTaskController extends Controller
|
||||
{
|
||||
public function store(Request $request)
|
||||
{
|
||||
$image = base64_encode(file_get_contents($request->all()['data']['files'][0]));
|
||||
|
||||
echo $image;
|
||||
|
||||
dd('done');
|
||||
//// $image = base64_encode(file_get_contents($request->all()['data']['files'][0]));
|
||||
// $image = base64_encode(file_get_contents($request->all()['files']));
|
||||
//
|
||||
// echo $image;
|
||||
// dd(file_get_contents($request->all()['files']));
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'data.name' => 'required',
|
||||
@@ -23,6 +26,7 @@ class MasterTaskController extends Controller
|
||||
'data.duration' => 'required',
|
||||
'data.deadline' => 'required',
|
||||
'data.project_id' => 'required',
|
||||
'data.employees' => 'required',
|
||||
]);
|
||||
|
||||
if($validator->fails()){
|
||||
@@ -34,19 +38,22 @@ class MasterTaskController extends Controller
|
||||
$data['data']['title'] = $request->all()['data']['name'];
|
||||
$data['data']['estimated_time'] = $request->all()['data']['duration'];
|
||||
|
||||
|
||||
foreach ( $data['data']['employees'] as $key => $employee ) {
|
||||
$data['data']['employees'][$key]['user_id'] = $employee['id'];
|
||||
$data['data']['employees'][$key]['estimated_time'] = $employee['duration'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
$request->merge($data);
|
||||
|
||||
$mastertask = MasterTask::create($request->all()['data']);
|
||||
$mastertask->subtasks()->createMany($request->all()['data']['employees']);
|
||||
|
||||
// upload attachmentu
|
||||
if ($request->file('data')) {
|
||||
$attachments = Attachment::uploadAttachmentsToS3($request->file('data')['files'], $mastertask);
|
||||
$mastertask->attachments()->createMany($attachments);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Master Task created successfully',
|
||||
'mastertask' => $mastertask
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Attachment;
|
||||
use App\Models\MasterTask;
|
||||
use App\Models\SubTask;
|
||||
use App\Models\Team;
|
||||
@@ -40,6 +41,12 @@ class SubTaskController extends Controller
|
||||
$mastertask = MasterTask::find($mastertask_id);
|
||||
$subtask = $mastertask->subtasks()->create($request->all()['data']);
|
||||
|
||||
// upload attachmentu
|
||||
if ($request->file('data')) {
|
||||
$attachments = Attachment::uploadAttachmentsToS3($request->file('data')['files'], $mastertask);
|
||||
$subtask->attachments()->createMany($attachments);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Sub Task created successfully',
|
||||
'subtask' => $subtask
|
||||
|
||||
@@ -18,11 +18,10 @@ class AttachmentResource extends JsonResource
|
||||
'id' => $this->id,
|
||||
'content_type' => $this->content_type,
|
||||
'disk_name' => $this->disk_name,
|
||||
'extension' => $this->estimated_time,
|
||||
'extension' => $this->extension,
|
||||
'name' => $this->original_name,
|
||||
'file_size' => $this->file_size,
|
||||
'path' => $this->path,
|
||||
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,7 @@ class SubTaskResource extends JsonResource
|
||||
'project_code' => $this->mastertask->project->code,
|
||||
'master_task_id' => $this->mastertask->id,
|
||||
'master_task' => $this->mastertask->title,
|
||||
'team_id' => $this->mastertask->team->id,
|
||||
'team_id' => ($this->mastertask->team) ? $this->mastertask->team->id : null,
|
||||
'team' => $this->mastertask->team,
|
||||
'employee_id' => $this->user->id,
|
||||
'duration' => $this->estimated_time,
|
||||
@@ -28,6 +28,7 @@ class SubTaskResource extends JsonResource
|
||||
'is_finished' => $this->is_finished,
|
||||
'timeblocks' => TimeblockResource::collection($this->timeblocks),
|
||||
'timesheets' => TimesheetResource::collection($this->timesheets),
|
||||
'files' => AttachmentResource::collection($this->attachments),
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -4,15 +4,47 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class Attachment extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public $timestamps = true;
|
||||
public $guarded = ['id'];
|
||||
|
||||
public function mastertask()
|
||||
{
|
||||
return $this->belongsTo(MasterTask::class, 'master_task_id');
|
||||
}
|
||||
|
||||
public function subtask()
|
||||
{
|
||||
return $this->belongsTo(SubTask::class, 'sub_task_id');
|
||||
}
|
||||
|
||||
public static function uploadAttachmentsToS3($request, $mastertask)
|
||||
{
|
||||
$attachmentDataArray = [];
|
||||
|
||||
foreach ( $request as $file ) {
|
||||
$extension = $file->getClientOriginalExtension();
|
||||
$disk_name = uniqid() . '.' . $extension;
|
||||
|
||||
$path = 'jandl_taskmanager/attachments/' . $mastertask->id . '/' . $disk_name;
|
||||
|
||||
Storage::disk('s3')->put($path, $file->getContent(), 'public');
|
||||
|
||||
$attachmentDataArray[] = [
|
||||
'original_name' => $file->getClientOriginalName(),
|
||||
'disk_name' => $disk_name,
|
||||
'path' => Storage::disk('s3')->url($path),
|
||||
'extension' => $extension,
|
||||
'content_type' => $file->getMimeType(),
|
||||
'file_size' => $file->getSize(),
|
||||
];
|
||||
}
|
||||
|
||||
return $attachmentDataArray;
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,11 @@ class MasterTask extends Model
|
||||
{
|
||||
$users = $this->subtasks->pluck('user')->unique();
|
||||
|
||||
// ak nie je uvedeny ziaden team, tak sa vratia vsetci useri
|
||||
if (!$this->team){
|
||||
return $users;
|
||||
}
|
||||
|
||||
return $users->filter(function ($user) {
|
||||
return !in_array($this->team->id, $user->teams->pluck('id')->unique()->toArray());
|
||||
});
|
||||
|
||||
@@ -31,6 +31,11 @@ class SubTask extends Model
|
||||
{
|
||||
return $this->hasMany(Timesheet::class);
|
||||
}
|
||||
|
||||
public function attachments()
|
||||
{
|
||||
return $this->hasMany(Attachment::class);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user