diff --git a/app/Http/Controllers/WishesController.php b/app/Http/Controllers/WishesController.php new file mode 100644 index 0000000..0d8f8cc --- /dev/null +++ b/app/Http/Controllers/WishesController.php @@ -0,0 +1,45 @@ +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, Wish $wish) + { + $request->validate([ + 'name' => 'required|string|max:256', + 'price' => 'nullable|numeric', + 'url' => 'nullable|url', + ]); + + $wish->update($request->all()); + return response()->json($wish); + } + + public function destroy(Wish $wish) + { + $wish->delete(); + return response()->json(null, 204); + } +} diff --git a/app/Models/Wish.php b/app/Models/Wish.php new file mode 100644 index 0000000..6f2b42d --- /dev/null +++ b/app/Models/Wish.php @@ -0,0 +1,16 @@ +belongsTo(User::class); + } +} diff --git a/resources/css/app.css b/resources/css/app.css index e69de29..c1b8af1 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -0,0 +1,9 @@ +.link-no-decor { + color: white; + text-decoration: none; + cursor: pointer; +} + +.link-no-decor:hover { + color: #093160; +} diff --git a/resources/store/user.js b/resources/store/user.js index 02542cf..29eae75 100644 --- a/resources/store/user.js +++ b/resources/store/user.js @@ -6,8 +6,6 @@ export const useUserStore = defineStore('user', { user: null, token: localStorage.getItem('auth_token') || null, }), - // could also be defined as - // state: () => ({ count: 0 }) actions: { setUser(user) { this.user = user; diff --git a/resources/store/wish.js b/resources/store/wish.js new file mode 100644 index 0000000..100c4d7 --- /dev/null +++ b/resources/store/wish.js @@ -0,0 +1,47 @@ +import {defineStore} from 'pinia'; +import axios from "axios"; + +export const useWishStore = defineStore('wish', { + state: () => ({ + wishesList: [] + }), + actions: { + pushWish(wish){ + this.wishesList.push(wish); + }, + async getUserWishes(user_id, token){ + let result = null; + await axios.get(`/api/wish/user_wishes/${user_id.toString()}`, + { + headers: { + Authorization: `Bearer ${token}`, + token: token + } + } + ).then((response)=>{ + result = response.data; + }); + return result; + }, + async create(user_id, name, price, url, token){ + let newWish = null; + await axios.post(`/api/wish/create`, + { + user_id: user_id, + name: name, + price: price, + url: url + }, + { + headers: { + Authorization: `Bearer ${token}`, + token: token + }, + } + ).then((response)=>{ + newWish = {status: response.status, statusText: response.statusText, data: response.data}; + }); + return newWish; + } + }, +}) diff --git a/resources/views/Welcome.vue b/resources/views/Welcome.vue index 0d68a9b..bd842a9 100644 --- a/resources/views/Welcome.vue +++ b/resources/views/Welcome.vue @@ -68,14 +68,4 @@ export default { color: white; } -.link-no-decor { - color: white; - text-decoration: none; - cursor: pointer; -} - -.link-no-decor:hover { - color: #093160; -} - diff --git a/resources/views/Wishlist/Wishlist.vue b/resources/views/Wishlist/Wishlist.vue index ff537ca..b0b2f61 100644 --- a/resources/views/Wishlist/Wishlist.vue +++ b/resources/views/Wishlist/Wishlist.vue @@ -1,11 +1,36 @@