2024-10-27 16:50:34 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use App\Models\Wish;
|
2024-10-28 11:36:45 +03:00
|
|
|
use App\Models\User;
|
2024-10-27 16:50:34 +03:00
|
|
|
|
|
|
|
class WishesController extends Controller
|
|
|
|
{
|
|
|
|
public function getUserWishes(Request $request, string $user_id)
|
|
|
|
{
|
2024-11-20 20:35:01 +03:00
|
|
|
$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;
|
2024-10-27 16:50:34 +03:00
|
|
|
}
|
|
|
|
|
2024-10-28 11:36:45 +03:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
|
2024-10-27 16:50:34 +03:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2024-10-28 11:36:45 +03:00
|
|
|
public function update(Request $request)
|
2024-10-27 16:50:34 +03:00
|
|
|
{
|
|
|
|
$request->validate([
|
2024-10-28 11:36:45 +03:00
|
|
|
'id' => 'required|exists:wishes,id',
|
|
|
|
'user_id' => 'required|exists:users,id',
|
2024-10-27 16:50:34 +03:00
|
|
|
'name' => 'required|string|max:256',
|
|
|
|
'price' => 'nullable|numeric',
|
|
|
|
'url' => 'nullable|url',
|
|
|
|
]);
|
2024-10-28 11:36:45 +03:00
|
|
|
$wish = Wish::find($request->get('id'));
|
|
|
|
$wish->name = $request->get('name');
|
|
|
|
$wish->price = $request->get('price');
|
|
|
|
$wish->url = $request->get('url');
|
|
|
|
$wish->save();
|
2024-10-27 16:50:34 +03:00
|
|
|
return response()->json($wish);
|
|
|
|
}
|
|
|
|
|
2024-10-27 20:06:44 +03:00
|
|
|
public function destroy(Request $request)
|
2024-10-27 16:50:34 +03:00
|
|
|
{
|
2024-10-27 20:06:44 +03:00
|
|
|
$request->validate([
|
|
|
|
'id' => 'required|exists:wishes,id',
|
|
|
|
]);
|
|
|
|
// $wish->delete();
|
|
|
|
Wish::destroy($request->get('id'));
|
2024-10-27 16:50:34 +03:00
|
|
|
return response()->json(null, 204);
|
|
|
|
}
|
2025-01-09 12:08:44 +03:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
2025-01-13 10:48:48 +03:00
|
|
|
|
|
|
|
public function unbook(Request $request)
|
|
|
|
{
|
|
|
|
$request->validate([
|
|
|
|
'id' => 'required|exists:wishes,id'
|
|
|
|
]);
|
|
|
|
$wish = Wish::find($request->get('id'));
|
|
|
|
$wish->book_user_id = null;
|
|
|
|
$wish->save();
|
|
|
|
return response()->json($wish, 200);
|
|
|
|
}
|
2024-10-27 16:50:34 +03:00
|
|
|
}
|