From 0faead3a346729f82a3b2c71941a8c8e6657363e Mon Sep 17 00:00:00 2001 From: "marcusferl@weifer.de" Date: Fri, 27 May 2022 07:44:42 +0200 Subject: [PATCH] =?UTF-8?q?Update=20Fuktion=20wurde=20eingef=C3=BCgt=20[Ht?= =?UTF-8?q?tpPut]=20Funktion=20erstellt=20um=20ins=20Json=20zu=20schreiben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SpeisenController.cs | 25 ++++++++++++++ Aps Single Page Anwendung/Models/Speise.cs | 4 +++ .../Repositories/FileSpeiseRepository.cs | 33 ++++++++++++++----- Aps Single Page Anwendung/data/speisen.json | 4 +-- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/Aps Single Page Anwendung/Controllers/SpeisenController.cs b/Aps Single Page Anwendung/Controllers/SpeisenController.cs index 41591c4..fb44f4e 100644 --- a/Aps Single Page Anwendung/Controllers/SpeisenController.cs +++ b/Aps Single Page Anwendung/Controllers/SpeisenController.cs @@ -40,6 +40,7 @@ namespace Aps_Single_Page_Anwendung.Controllers return Ok(sepeise); } + // Zum Hinzufügen von Daten [HttpPost] public IActionResult Post([FromBody] Speise speise) { @@ -50,5 +51,29 @@ namespace Aps_Single_Page_Anwendung.Controllers var result = _repository.CreateSpeise(speise); return CreatedAtAction("Get",new { id = result.Id },result); //Name der Action (Get), gibt Statuscode 201 zurück } + + [HttpPut("{id}")] + // Zum ändern der Daten + public IActionResult Put(int id, [FromBody] Speise speise) + { + if (id != speise.Id) + { + return BadRequest(); + } + + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + if(_repository.GetSpeiseById(id) == null) + { + return NotFound(); + } + var result = _repository.UpdateSpeise(speise); + return Ok(result); + + + } } } diff --git a/Aps Single Page Anwendung/Models/Speise.cs b/Aps Single Page Anwendung/Models/Speise.cs index 820d775..2325964 100644 --- a/Aps Single Page Anwendung/Models/Speise.cs +++ b/Aps Single Page Anwendung/Models/Speise.cs @@ -5,10 +5,14 @@ namespace Aps_Single_Page_Anwendung.Models public class Speise { public int Id { get; set; } + [Required] // Leere Felder sind damit nicht möglich public string Name { get; set; } public string Beschreibung { get; set; } + + [Range(0,25)] // Preis darf nur zwischen 0 und 25 Euro sein public double Preis { get; set; } + public int KategorieId { get; set; } public Kategorie Kategorie { get; set; } } diff --git a/Aps Single Page Anwendung/Repositories/FileSpeiseRepository.cs b/Aps Single Page Anwendung/Repositories/FileSpeiseRepository.cs index 25a31ae..b446bcd 100644 --- a/Aps Single Page Anwendung/Repositories/FileSpeiseRepository.cs +++ b/Aps Single Page Anwendung/Repositories/FileSpeiseRepository.cs @@ -33,13 +33,10 @@ namespace Aps_Single_Page_Anwendung.Repositories speisen.Add(speise); - var options = new JsonSerializerOptions - { - WriteIndented = true // Zeilenumbrüche - }; - var json = JsonSerializer.Serialize(speisen, options); - File.WriteAllText(_path, json); // schreibt ins File + Filesave(speisen); + return speise; + } public void DeleteSpeise(int id) @@ -64,9 +61,29 @@ namespace Aps_Single_Page_Anwendung.Repositories var speisen = JsonSerializer.Deserialize(json, option); return speisen; } - public Speise UpdateSpeise(Speise speise) + public Speise UpdateSpeise(Speise speise) { - throw new System.NotImplementedException(); + var speisen = GetSpeisen().ToList(); + var speiseToUpdate = speisen.SingleOrDefault(speise_ => speise_.Id == speise.Id); + speiseToUpdate.Name = speise.Name; + speiseToUpdate.Preis = speise.Preis; + speiseToUpdate.Beschreibung = speise.Beschreibung; + speiseToUpdate.KategorieId = speise.KategorieId; + + Filesave(speisen); + return speiseToUpdate; + } + + // Funktion zum schreiben in die Json Datai + public void Filesave(List speisen) + { + var options = new JsonSerializerOptions + { + WriteIndented = true // Zeilenumbrüche + }; + var json = JsonSerializer.Serialize(speisen, options); + File.WriteAllText(_path, json); // schreibt ins File + } } } diff --git a/Aps Single Page Anwendung/data/speisen.json b/Aps Single Page Anwendung/data/speisen.json index bb630ef..558381a 100644 --- a/Aps Single Page Anwendung/data/speisen.json +++ b/Aps Single Page Anwendung/data/speisen.json @@ -178,8 +178,8 @@ { "Id": 23, "Name": "Gemischter Salato", - "Beschreibung": "Salat nach Art des Hauses. Gemischter Salat, Mais, Paprika, K\u00E4se, Zwiebeln, Orange", - "Preis": 9.49, + "Beschreibung": "Salat nach Art des Hauses mit dem Besten aus der K\u00FCche. Gemischter Salat, Mais, Paprika, K\u00E4se, Zwiebeln, Orange", + "Preis": 19.49, "KategorieId": 1, "Kategorie": null }