diff --git a/api/src/Controllers/ItemsController.cs b/api/src/Controllers/ItemsController.cs index 86991f5..6989213 100644 --- a/api/src/Controllers/ItemsController.cs +++ b/api/src/Controllers/ItemsController.cs @@ -17,7 +17,7 @@ public class ItemsController : ControllerBase { [AllowAnonymous] // accessible if not authorized [HttpGet] - public async Task>> getItemss() { + public async Task>> getItems() { return Ok(await service_.GetAll()); } @@ -34,9 +34,16 @@ public class ItemsController : ControllerBase { [Authorize] // testing the authorization [HttpPost] - public async Task> createItem(Item item) { + public async Task> createItem(ItemDto item) { - var created = await service_.Create(item); + Item newItem = new Item { + Name = item.Name, + Description = item.Description, + CreatedAt = DateTime.UtcNow, + LastEditedAt = DateTime.UtcNow + }; + + var created = await service_.Create(newItem); return CreatedAtAction( nameof(getItem), @@ -47,9 +54,20 @@ public class ItemsController : ControllerBase { [Authorize] [HttpPut("{id}")] - public async Task> updateItem(int id, Item item) { + public async Task> updateItem(int id, ItemDto item) { - var updated = await service_.Update(item); + Item? oldItem = await service_.Get(id); + if(oldItem == null) return NotFound(); + + Item updatedItem = new Item { + Id = oldItem.Id, + Name = item.Name, + Description = item.Description, + CreatedAt = oldItem.CreatedAt, + LastEditedAt = DateTime.UtcNow + }; + + var updated = await service_.Update(updatedItem); if (updated == null) return NotFound(); diff --git a/client/src/api/ItemsApi.ts b/client/src/api/ItemsApi.ts index 517b015..097fa57 100644 --- a/client/src/api/ItemsApi.ts +++ b/client/src/api/ItemsApi.ts @@ -3,7 +3,7 @@ // this item service will handle all to <-> from the server when handling item objects import api from "./axios.ts" -import type { Item } from "../models/Item.ts"; +import type { Item, ItemDto } from "../models/Item.ts"; const API_URL: string = "/items"; @@ -11,8 +11,8 @@ export const getItems = () => api.get(`${API_URL}`); export const getItem = (id: number) => api.get(`${API_URL}/${id}`); -export const createItem = (data: Item) => api.post(`${API_URL}`, data); +export const createItem = (data: ItemDto) => api.post(`${API_URL}`, data); -export const updateItem = (id: number, data: Item) => api.put(`${API_URL}/${id}`, data); +export const updateItem = (id: number, data: ItemDto) => api.put(`${API_URL}/${id}`, data); export const deleteItem = (id: number) => api.delete(`${API_URL}/${id}`); diff --git a/client/src/models/Item.ts b/client/src/models/Item.ts index 089e210..18f6cff 100644 --- a/client/src/models/Item.ts +++ b/client/src/models/Item.ts @@ -7,13 +7,7 @@ export interface Item { lastEditedAt: string; } -export interface RegisterDto { - username: string; - email: string; - password: string; -} - -export interface LoginDto { - username: string; - password: string; +export interface ItemDto { + name: string; + description: string; } diff --git a/client/src/pages/ItemForm.vue b/client/src/pages/ItemForm.vue index ea62155..7350e46 100644 --- a/client/src/pages/ItemForm.vue +++ b/client/src/pages/ItemForm.vue @@ -48,7 +48,7 @@ async function save(): Promise {
- +
diff --git a/client/src/stores/ItemsStore.ts b/client/src/stores/ItemsStore.ts index d0d9267..7a59f2a 100644 --- a/client/src/stores/ItemsStore.ts +++ b/client/src/stores/ItemsStore.ts @@ -5,7 +5,7 @@ // sighh import { defineStore } from "pinia"; -import type { Item } from "../models/Item.ts"; +import type { Item, ItemDto } from "../models/Item.ts"; import * as itemsApi from "../api/ItemsApi"; interface ItemState { @@ -28,15 +28,15 @@ export const useItemsStore = defineStore("items", { this.loading = false; }, - async addItem(item: Item) { + async addItem(item: ItemDto) { const response = await itemsApi.createItem(item); this.items.push(response.data); }, - async updateItem(id: number, item: Item) { - await itemsApi.updateItem(id, item); + async updateItem(id: number, item: ItemDto) { + const response = await itemsApi.updateItem(id, item); const index = this.items.findIndex(i => i.id === id); - this.items[index] = item; + this.items[index] = response.data; }, async removeItem(id: number) {