diff --git a/app/Http/Controllers/TestResultController.php b/app/Http/Controllers/TestResultController.php
index e7db160a..97c41b0b 100644
--- a/app/Http/Controllers/TestResultController.php
+++ b/app/Http/Controllers/TestResultController.php
@@ -12,6 +12,7 @@ use App\MedicalCenter;
use App\TestType;
use App\Gallery;
use App\Uploadable;
+use App\Media;
use Intervention\Image\ImageManagerStatic as Image;
use Intervention\Image\ImageManager;
use Illuminate\Support\Facades\Storage;
@@ -113,14 +114,12 @@ class TestResultController extends Controller
public function store(StoreTestResultRequest $request)
{
- // dd($request->result);
try {
$return_value = \DB::transaction(function () use ($request) {
$TestResult = [
'user_id' => auth('api')->user()->id,
'cycle_number' => $request->cycle_number,
- // 'device_id' => $request->device_id,
'date' => $request->date,
'test_type_id' => $request->test_type_id,
'result' => $request->result,
@@ -174,25 +173,18 @@ class TestResultController extends Controller
}
///////////////////////////////////////////////////////////////////////////Inputs
///////////////////////////////////////////////////////////////////////////Images
- if ($request->imgs != null) {
-
- foreach ($request->imgs as $key => $img) {
- $Image = $img;
- $Manager = new ImageManager(array('driver' => 'imagick'));
- $InterventionImage = $Manager->make($Image);
-
- // $InterventionImage = Image::make($Image);
- $Mime = explode('/', $InterventionImage->mime());
-
- $ImageName = time().$key.'.'.$Mime[1];
- $Path = 'uploads'.'/TestResults'.'/'.$TestResultObj->id .'/'.$ImageName;
-
- Storage::disk('public')->makeDirectory('TestResults'.'/'.$TestResultObj->id);
- $InterventionImage->save(public_path($Path));
-
- $GalleryObj = Gallery::create(['user_id' => auth('api')->user()->id, 'path' => $Path]);
- $Uploadable = Uploadable::create(['uploadable_id' => $TestResultObj->id, 'uploadable_type' => 'App\TestResult', 'gallery_id' => $GalleryObj->id, 'image_role' => 'TitleImage']);
- }
+ $Images = Media::whereNull('model_id')->where('batch_id', $request->file_batch_id)->get();
+ if($Images){
+ foreach ($Images as $Image) {
+ $NewPath = 'media'.'/TestResults'.'/'.$TestResultObj->id .'/'.$Image->file_name;
+ Storage::disk('public')->makeDirectory('TestResults'.'/'.$TestResultObj->id);
+ if (\File::exists(public_path($Image->path))) {
+ \File::move(public_path($Image->path), public_path($NewPath));
+ }
+ $Image->model_id = $TestResultObj->id;
+ $Image->path = $NewPath;
+ $Image->save();
+ }
}
///////////////////////////////////////////////////////////////////////////Images
@@ -252,13 +244,12 @@ class TestResultController extends Controller
}
$ImagesPath = [];
- if (count($TestResult->TitleImage)) {
- foreach ($TestResult->TitleImage as $Key => $TitleImage) {
- $ImagesPath[] = $TitleImage->path;
+ if (count($TestResult->images)) {
+ foreach ($TestResult->images as $Key => $Image) {
+ $ImagesPath[] = $Image->path;
}
$TestResult['imagesPath'] = $ImagesPath;
}
- // dd($TestResult->test_type()->device_label);
$TestResult['device_label'] = $TestResult->test_type->device_label;
return \MessageResponse::data($TestResult);
}
@@ -282,9 +273,10 @@ class TestResultController extends Controller
}
$ImagesPath = [];
- if (count($TestResult->TitleImage)) {
- foreach ($TestResult->TitleImage as $Key => $TitleImage) {
- $ImagesPath[] = $TitleImage->path;
+
+ if (count($TestResult->images)) {
+ foreach ($TestResult->images as $Key => $Image) {
+ $ImagesPath[] = $Image;
}
$TestResult['imagesPath'] = $ImagesPath;
}
@@ -297,8 +289,8 @@ class TestResultController extends Controller
public static function storage_path($path)
{
- if (starts_with($path, 'uploads/')) {
- $path = substr($path, 8);
+ if (starts_with($path, 'media/')) {
+ $path = substr($path, 6);
}
return $path;
}
@@ -306,9 +298,7 @@ class TestResultController extends Controller
public function update(StoreTestResultRequest $request, TestResult $TestResult)
{
$TestResultData = [
- // 'autoclave_id' => $request->autoclave_id,
'cycle_number' => $request->cycle_number,
- // 'device_id' => $request->device_id,
'date' => $request->date,
'test_type_id' => $request->test_type_id,
'result' => $request->result,
@@ -363,71 +353,6 @@ class TestResultController extends Controller
}
}
/////////////////////////////////////////////////////////////////////Images
- $images = '';
- $imageExist = [];
- $imagesDeleted = [];
- if (count($TestResult->TitleImage))
- {
- $images = $TestResult->TitleImage;
- foreach ($images as $key => $image) {
-
- $imageExist[] = '/'.$image->path;
- if (!in_array('/'.$image->path, $request->imgs)) {
- $imagesDeleted[] = $image->path;
- }
- }
-
- }
-
- if ($request->imgs != null) {
- $request_imgs = array_diff($request->imgs, $imageExist);
-
- foreach ($request_imgs as $key => $img) {//
-
- if (strrpos($img, "base64") !== false) {
-
- $Image = $img;
- $Manager = new ImageManager(array('driver' => 'imagick'));
- $InterventionImage = $Manager->make($Image);
- // $InterventionImage = Image::make($Image);
- $Mime = explode('/', $InterventionImage->mime());
-
- $ImageName = time().$key.'.'.$Mime[1];
- $Path = 'uploads'.'/TestResults'.'/'.$TestResult->id .'/'.$ImageName;
-
- Storage::disk('public')->makeDirectory('TestResults'.'/'.$TestResult->id);
- $InterventionImage->save(public_path($Path));
-
- //--------------------------------------------------------
- $GalleryObj = Gallery::create(['user_id' => auth('api')->user()->id, 'path' => $Path]);
- $Uploadable = Uploadable::create(['uploadable_id' => $TestResult->id, 'uploadable_type' => 'App\TestResult', 'gallery_id' => $GalleryObj->id, 'image_role' => 'TitleImage']);
- //--------------------------------------------------------
- }
- }
-
- // if (count($imagesDeleted)) {
- // foreach ($imagesDeleted as $key => $imageDeleted) {
- // $Gallery = Gallery::where('path', $imageDeleted)->first();
- // if ($Gallery) {
- // Storage::disk('public')->delete(static::storage_path($imageDeleted));
- // Uploadable::where('gallery_id', $Gallery->id)->where('uploadable_id', $TestResult->id)->where('uploadable_type', get_class($TestResult))->delete();
- // $Gallery->delete();
- // }
- // }
- // }
-
- }
- if (count($imagesDeleted)) {
- foreach ($imagesDeleted as $key => $imageDeleted) {
- $Gallery = Gallery::where('path', $imageDeleted)->first();
- if ($Gallery) {
- Storage::disk('public')->delete(static::storage_path($imageDeleted));
- Uploadable::where('gallery_id', $Gallery->id)->where('uploadable_id', $TestResult->id)->where('uploadable_type', get_class($TestResult))->delete();
- $Gallery->delete();
- }
- }
- }
-
return \MessageResponse::success(null,trans('messages.update'));
}
@@ -439,11 +364,10 @@ class TestResultController extends Controller
if (count($TestResult->input_values)) {
InputValue::where('test_result_id', $TestResult->id)->get()->each->delete();
}
- if (count($TestResult->TitleImage)){
- foreach ($TestResult->TitleImage as $image) {
+ if (count($TestResult->images)){
+ foreach ($TestResult->images as $image) {
Storage::disk('public')->delete(static::storage_path($image->path));
- Uploadable::where('gallery_id', $image->id)->where('uploadable_id', $TestResult->id)->where('uploadable_type', get_class($TestResult))->delete();
- Gallery::where('id', $image->id)->delete();
+ Media::where('id', $image->id)->delete();
}
}
$TestResult->delete();
diff --git a/app/Http/Controllers/UploadController.php b/app/Http/Controllers/UploadController.php
new file mode 100644
index 00000000..3062c32d
--- /dev/null
+++ b/app/Http/Controllers/UploadController.php
@@ -0,0 +1,92 @@
+ 'required|image|mimes:jpeg,png,jpg|max:2048',
+ ];
+ $this->validate($request, $rules);
+
+ if ($request->model_id !== null && is_numeric($request->model_id)) {
+ $Model = 'App\\'.$request->model_type;
+ $Object = $Model::findOrFail($request->model_id);
+ if ($Object) {
+ $Image = $request->file('image');
+ $Manager = new ImageManager(array('driver' => 'imagick'));
+ $InterventionImage = $Manager->make($Image);
+ $Mime = explode('/', $InterventionImage->mime());
+
+ $ImageName = time().'.'.$Mime[1];
+ $Path = 'media'.'/TestResults'.'/'.$Object->id .'/'.$ImageName;
+
+ Storage::disk('public')->makeDirectory('TestResults'.'/'.$Object->id);
+ $InterventionImage->save(public_path($Path));
+
+ $MediaData = [
+ 'model_id' => $Object->id,
+ 'batch_id' => $request->batch_id,
+ 'model_type' => 'App\\'.$request->model_type,
+ 'path' => $Path,
+ 'user_id' => auth('api')->user()->id,
+ 'file_name' => $ImageName
+ ];
+ $Media = Media::create($MediaData);
+ }
+ }
+ else {
+ $Image = $request->file('image');
+ $Manager = new ImageManager(array('driver' => 'imagick'));
+ $InterventionImage = $Manager->make($Image);
+ $Mime = explode('/', $InterventionImage->mime());
+
+ $ImageName = time().'.'.$Mime[1];
+ $Path = 'media'.'/Temp'.'/'.$request->batch_id .'/'.$ImageName;
+
+ Storage::disk('public')->makeDirectory('Temp'.'/'.$request->batch_id);
+ $InterventionImage->save(public_path($Path));
+
+ $MediaData = [
+ 'model_id' => null,
+ 'batch_id' => $request->batch_id,
+ 'model_type' => 'App\\'.$request->model_type,
+ 'path' => $Path,
+ 'user_id' => auth('api')->user()->id,
+ 'file_name' => $ImageName
+ ];
+ $Media = Media::create($MediaData);
+ }
+ return \MessageResponse::success(trans('messages.success_message'), null, $Media);
+ }
+
+ public function deleteImage(Request $request)
+ {
+ if ($request->model_id != null && is_numeric($request->model_id)) {
+ $Media = Media::findOrFail($request->media_id);
+ if($Media){
+ if (\File::exists(public_path($Media->path))) {
+ \File::delete(public_path($Media->path));
+ }
+ $Media->delete();
+ }
+ }
+ else {
+ $Media = Media::findOrFail($request->media_id);
+ if($Media){
+ if(\File::exists(public_path($Media->path))){
+ \File::delete(public_path($Media->path));
+ }
+ $Media->delete();
+ }
+ }
+ return \MessageResponse::success(trans('messages.success_message'));
+ }
+}
diff --git a/app/Media.php b/app/Media.php
new file mode 100644
index 00000000..b445ee02
--- /dev/null
+++ b/app/Media.php
@@ -0,0 +1,22 @@
+belongsTo('App\User');
+ }
+ public function model()
+ {
+ return $this->morphTo();
+ }
+
+}
diff --git a/app/TestResult.php b/app/TestResult.php
index 69d0cf57..0f9bd2c0 100644
--- a/app/TestResult.php
+++ b/app/TestResult.php
@@ -19,6 +19,10 @@ class TestResult extends Model
{
return $this->hasMany('App\InputValue');
}
+ public function images()
+ {
+ return $this->morphMany('App\Media', 'model');
+ }
public function TitleImage()
{
return $this->morphToMany('App\Gallery', 'uploadable')->wherePivot('image_role', 'TitleImage');
diff --git a/app/Uploadable.php b/app/Uploadable.php
index 5a36207a..6918b2a9 100644
--- a/app/Uploadable.php
+++ b/app/Uploadable.php
@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
class Uploadable extends Model
{
- protected $fillable = ['uploadable_id', 'uploadable_type', 'gallery_id', 'image_role'];
+ protected $fillable = ['uploadable_id', 'uploadable_type', 'gallery_id', 'image_role', 'batch_id'];
public $timestamps = false;
public function gallery()
diff --git a/config/filesystems.php b/config/filesystems.php
index e43f3cba..c6f3c6d0 100644
--- a/config/filesystems.php
+++ b/config/filesystems.php
@@ -50,7 +50,7 @@ return [
'public' => [
'driver' => 'local',
- 'root' => public_path('uploads'),
+ 'root' => public_path('media'),
// 'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
diff --git a/public/media/TestResults/79/1591704182.png b/public/media/TestResults/79/1591704182.png
new file mode 100644
index 00000000..6415ee73
Binary files /dev/null and b/public/media/TestResults/79/1591704182.png differ
diff --git a/public/media/TestResults/79/1591704272.jpeg b/public/media/TestResults/79/1591704272.jpeg
new file mode 100644
index 00000000..15c7f4d9
Binary files /dev/null and b/public/media/TestResults/79/1591704272.jpeg differ
diff --git a/public/media/TestResults/79/1591706622.jpeg b/public/media/TestResults/79/1591706622.jpeg
new file mode 100644
index 00000000..80520094
Binary files /dev/null and b/public/media/TestResults/79/1591706622.jpeg differ
diff --git a/resources/js/vue/components/core/Dropzone.vue b/resources/js/vue/components/core/Dropzone.vue
new file mode 100644
index 00000000..3e4a7589
--- /dev/null
+++ b/resources/js/vue/components/core/Dropzone.vue
@@ -0,0 +1,95 @@
+
+