public async Task<ActionResult> Edit(CharacterDbModel character) { if (ModelState.IsValid) { var user = db.Users.Find(User.Identity.GetUserId()); Character characterModel = new Character( Request.Form, Request.Files, user); CharacterDbModel dbModel = new CharacterDbModel( characterModel, user); db.Entry(character).State = EntityState.Modified; await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(character); }
public async Task<ActionResult> Create(CharacterViewModel Model) { if (ModelState.IsValid) { var user = db.Users.Find(User.Identity.GetUserId()); Character characterModel = new Character( Request.Form, Request.Files, user); CharacterDbModel dbModel = new CharacterDbModel( characterModel, user); db.Characters.Add(dbModel); await db.SaveChangesAsync(); return RedirectToAction("Index"); } return View(Model); }
// Konstruktor tworzący gotowy model. Dane pobiera zarówno z bazy danych, jak i z pliku // XML, dlatego warto upewnić się, że plik rzeczywiście istnieje. // // todo: Obsługa wyjątków w przypadku, gdy odczytywanie pliku nie powiedzie się: // * ArgumentNullException - gdy nie zostanie przekazana nazwa pliku (CharacterID) // * FileNotFoundException - gdy plik nie istnieje // * NullReferenceException - następstwo dwóch poprzednich, powstanie pusty obiekt, // z którego będziemy próbowali odczytać dane /// <summary>Tworzy kompletny obiekt gracza zawierający wszystkie informacje</summary> /// <param name="characterDb">Model z danymi z bazy</param> public Character( CharacterDbModel characterDb ) { // Przepisywanie danych do obiektu z bazy danych CharacterID = characterDb.CharacterID; ChartID = characterDb.ChartID; UserID = characterDb.UserID; Name = characterDb.CharacterName; AvatarImg = characterDb.AvatarImgSrc; // Uzupełnianie danych użytkownika, który stworzył gracza if (UserID != null) { UserData = new User(ApplicationDbContext.Create().Users.Find(UserID)); } else UserData = null; // Odczytywanie pliku XML // UWAGA - Nie sprawdza, czy plik istnieje, możliwy wyjątek! XmlModels.Character characterXml = new XmlModels.Character(CharacterID); // Przepisywanie danych do obiektu z pliku XML Data = DefaultMethods.ToDictionary(characterXml.Data); Stats = DefaultMethods.ToDictionary(characterXml.Stat); Attributes = DefaultMethods.ToDictionary(characterXml.Attribute); Skills = DefaultMethods.ToDictionary(characterXml.Skill); if (characterXml.Equipment != null) Equipment = characterXml.Equipment.ToArray(); else Equipment = null; if (characterXml.Description != null) Description = characterXml.Description.ToString(); else Description = null; }