Wishlist/app/Http/Controllers/WishesController.php

103 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Wish;
use App\Models\User;
class WishesController extends Controller
{
public function getUserWishes(Request $request, string $user_id)
{
$result = [];
$wishes = Wish::select('id', 'name', 'price', 'url', 'book_user_id')->where('user_id', '=', $user_id)->get();
foreach ($wishes as $wish){
$book_user_raw = User::find($wish['book_user_id']);
$book_user = null;
if (isset($book_user_raw)){
$book_user = [
'id' => $book_user_raw['id'],
'name' => $book_user_raw['name']
];
}
$result[] = [
'id' => $wish['id'],
'name' => $wish['name'],
'price' => $wish['price'],
'url' => $wish['url'],
'book_user' => $book_user
];
}
return $result;
}
public function getUsername(Request $request){
$request->validate([
'user_id' => 'required|exists:users,id'
]);
$username = ['username' => User::find($request->get('user_id'))['name']];
return response()->json($username, 201);
}
public function getWishById(Request $request, string $id)
{
return Wish::select('id', 'name', 'price', 'url')->where('id', '=', $id)->get();
}
public function create(Request $request)
{
$request->validate([
'user_id' => 'required|exists:users,id',
'name' => 'required|string|max:256',
'price' => 'nullable|numeric',
'url' => 'nullable|url',
]);
$wish = Wish::create($request->all());
return response()->json($wish, 201);
}
public function update(Request $request)
{
$request->validate([
'id' => 'required|exists:wishes,id',
'user_id' => 'required|exists:users,id',
'name' => 'required|string|max:256',
'price' => 'nullable|numeric',
'url' => 'nullable|url',
]);
$wish = Wish::find($request->get('id'));
$wish->name = $request->get('name');
$wish->price = $request->get('price');
$wish->url = $request->get('url');
$wish->save();
return response()->json($wish);
}
public function destroy(Request $request)
{
$request->validate([
'id' => 'required|exists:wishes,id',
]);
// $wish->delete();
Wish::destroy($request->get('id'));
return response()->json(null, 204);
}
public function book(Request $request)
{
$request->validate([
'id' => 'required|exists:wishes,id',
'user_id' => 'required|exists:users,id'
]);
$wish = Wish::find($request->get('id'));
if (isset($wish->book_user_id)){
return response()->json(["error" => 'Уже забронировано' ], 409);
}
$wish->book_user_id = $request->get('user_id');
$wish->save();
return response()->json($wish, 200);
}
}