feat: add image_id for template
This commit is contained in:
@@ -17,7 +17,8 @@ public function createTemplate(Request $request)
|
|||||||
'exhale' => 'required|integer|min:0',
|
'exhale' => 'required|integer|min:0',
|
||||||
'breath_hold' => 'required|integer|min:0',
|
'breath_hold' => 'required|integer|min:0',
|
||||||
'duration' => 'sometimes|integer|min:0',
|
'duration' => 'sometimes|integer|min:0',
|
||||||
'description' => 'sometimes|string|nullable'
|
'description' => 'sometimes|string|nullable',
|
||||||
|
'image_id' => 'nullable|exists:images,id',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$template = BreathingTemplate::create([
|
$template = BreathingTemplate::create([
|
||||||
@@ -27,10 +28,11 @@ public function createTemplate(Request $request)
|
|||||||
'exhale' => $data['exhale'],
|
'exhale' => $data['exhale'],
|
||||||
'breath_hold'=> $data['breath_hold'] ?? 0,
|
'breath_hold'=> $data['breath_hold'] ?? 0,
|
||||||
'duration'=> $data['duration'] ?? 60,
|
'duration'=> $data['duration'] ?? 60,
|
||||||
'description' => $data['description'] ?? null
|
'description' => $data['description'] ?? null,
|
||||||
|
'image_id' => $data['image_id'] ?? null,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response()->json(['message' => 'Template created', 'template' => $template]);
|
return response()->json(['message' => 'Template created', 'template' => $template->load('image')]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateTemplate(Request $request, $id)
|
public function updateTemplate(Request $request, $id)
|
||||||
@@ -45,12 +47,13 @@ public function updateTemplate(Request $request, $id)
|
|||||||
'exhale' => 'sometimes|required|integer|min:0',
|
'exhale' => 'sometimes|required|integer|min:0',
|
||||||
'breath_hold' => 'sometimes|integer|min:0',
|
'breath_hold' => 'sometimes|integer|min:0',
|
||||||
'duration' => 'sometimes|integer|min:0',
|
'duration' => 'sometimes|integer|min:0',
|
||||||
'description' => 'sometimes|string|nullable'
|
'description' => 'sometimes|string|nullable',
|
||||||
|
'image_id' => 'nullable|exists:images,id',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$template->update($data);
|
$template->update($data);
|
||||||
|
|
||||||
return response()->json(['message' => 'Template updated', 'template' => $template]);
|
return response()->json(['message' => 'Template updated', 'template' => $template->load('image')]);
|
||||||
}
|
}
|
||||||
public function deleteTemplate($id)
|
public function deleteTemplate($id)
|
||||||
{
|
{
|
||||||
@@ -63,21 +66,43 @@ public function deleteTemplate($id)
|
|||||||
return response()->json(['message' => 'Template deleted']);
|
return response()->json(['message' => 'Template deleted']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUserTemplates()
|
|
||||||
{
|
|
||||||
$templates = BreathingTemplate::where('user_id', auth()->id())->get();
|
|
||||||
return response()->json($templates);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function getTemplates()
|
public function getTemplates()
|
||||||
{
|
{
|
||||||
|
$userId = auth()->id();
|
||||||
|
|
||||||
$templates = BreathingTemplate::whereNull('user_id')
|
$templates = BreathingTemplate::whereNull('user_id')
|
||||||
->orWhere('user_id', auth()->id())
|
->orWhere('user_id', $userId)
|
||||||
->get();
|
->with('image') // eager load image
|
||||||
|
->get()
|
||||||
|
->map(function ($template) {
|
||||||
|
if ($template->image) {
|
||||||
|
$template->image_url = asset('storage/' . $template->image->path);
|
||||||
|
} else {
|
||||||
|
$template->image_url = null;
|
||||||
|
}
|
||||||
|
return $template;
|
||||||
|
});
|
||||||
|
|
||||||
return response()->json($templates);
|
return response()->json($templates);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUserTemplates()
|
||||||
|
{
|
||||||
|
$templates = BreathingTemplate::where('user_id', auth()->id())
|
||||||
|
->with('image') // eager load image
|
||||||
|
->get()
|
||||||
|
->map(function ($template) {
|
||||||
|
if ($template->image) {
|
||||||
|
$template->image_url = asset('storage/' . $template->image->path);
|
||||||
|
} else {
|
||||||
|
$template->image_url = null;
|
||||||
|
}
|
||||||
|
return $template;
|
||||||
|
});
|
||||||
|
|
||||||
|
return response()->json($templates);
|
||||||
|
}
|
||||||
|
|
||||||
// public function store(Request $request)
|
// public function store(Request $request)
|
||||||
// {
|
// {
|
||||||
// $data = $request->validate([
|
// $data = $request->validate([
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
class BreathingTemplate extends Model
|
class BreathingTemplate extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = ['user_id', 'name', 'inhale', 'exhale', 'breath_hold' , 'duration' , 'description'];
|
protected $fillable = ['user_id', 'name', 'inhale', 'exhale', 'breath_hold' , 'duration' , 'description','image_id'];
|
||||||
|
|
||||||
public function user()
|
public function user()
|
||||||
{
|
{
|
||||||
@@ -17,4 +17,9 @@ public function sessions()
|
|||||||
{
|
{
|
||||||
return $this->hasMany(UserBreathingSession::class, 'template_id');
|
return $this->hasMany(UserBreathingSession::class, 'template_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function image()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Image::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('breathing_templates', function (Blueprint $table) {
|
||||||
|
$table->unsignedBigInteger('image_id')->nullable()->after('description');
|
||||||
|
$table->foreign('image_id')->references('id')->on('images')->onDelete('set null');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('breathing_templates', function (Blueprint $table) {
|
||||||
|
$table->dropForeign(['image_id']);
|
||||||
|
$table->dropColumn('image_id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -109,7 +109,6 @@
|
|||||||
Route::get('/slider', [SliderController::class, 'index']);
|
Route::get('/slider', [SliderController::class, 'index']);
|
||||||
|
|
||||||
/// images
|
/// images
|
||||||
|
|
||||||
Route::post('/images', [ImageController::class, 'store']);
|
Route::post('/images', [ImageController::class, 'store']);
|
||||||
Route::get('/images/private', [ImageController::class, 'userImages']);
|
Route::get('/images/private', [ImageController::class, 'userImages']);
|
||||||
Route::get('/images/all', [ImageController::class, 'allImages']);
|
Route::get('/images/all', [ImageController::class, 'allImages']);
|
||||||
@@ -119,6 +118,4 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user