// Konstruktor tworzący obiekt zawierający dane niezbędne do zapisu w bazie. // Tworzony jest plik XML zawierający dane wprowadzone podczas tworzenia karty. public CharacterChartDbModel( CharacterChart chart, ApplicationUser user = null ) : this(user) { ChartID = chart.ChartID; Name = chart.Name; GenerateXml(chart); }
public CharacterChartViewModel( CharacterChart Chart ) { ChartID = Chart.ChartID; UserID = Chart.UserID; Name = Chart.Name; ChartDescription = Chart.ChartDescription; DataNames = Chart.DataNames; StatNames = Chart.StatNames; AttributeNames = Chart.AttributeNames; SkillNames = Chart.SkillNames; Equipment = Chart.Equipment; Description = Chart.Description; }
// Metoda tworząca plik XML z danymi. Nazwa pliku jest równa wartości pola ChartID // przekazanego w obiekcie typu CharacterChart. Jeżeli pole to będzie NULL, to // funkcja nie stworzy pliku. // // UWAGA! Nadpisuje istniejące pliki! void GenerateXml(CharacterChart chart, string Source = null) { if (chart.ChartID == null) return; if (Source == null) { CharacterChartSrc = DefaultConstants.Application.DefaultXmlLocalization( ChartID.ToString(), DefaultConstants.Application.DefaultChartXmlFolder ); } else { CharacterChartSrc = DefaultConstants.Application.DefaultXmlLocalization( ChartID.ToString(), Source.ToString() ); } // Tworzenie nowego pliku XML. Dalszy opis w XmlModels.Chart(CharacterChart chart) XmlModels.Chart chartXml = new XmlModels.Chart(chart); return; }
public async Task<ActionResult> Create(CharacterChartViewModel Model) { if (ModelState.IsValid) { var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); CharacterChart Chart = new CharacterChart(Request.Form); CharacterChartDbModel ChartModel_DB = new CharacterChartDbModel(Chart,user); ChartModel_DB = db.CharacterCharts.Add(ChartModel_DB); await db.SaveChangesAsync(); return RedirectToAction("Success", new { ChartID = ChartModel_DB.ChartID }); } return View(Model); }
// Konstruktor bindujący dane z POSTa na model. CharacterID oraz Name są // pobierane z pól formularza // // todo: Przy większym ruchu na stronie może nastąpić powtórzenie ID w czasie // tworzenia karty, najlepiej było by tworzyć nowy ID teraz. /// <summary>Tworzy gotowy obiekt do zapisu w bazie</summary> /// <param name="PostData">Tablica klucz-wartość z danymi z żądania</param> public Character( NameValueCollection PostData, HttpFileCollectionBase Files = null, ApplicationUser User = null ) : this(User) { // Pobieranie danych karty, której szablon został wykorzystany CharacterChart chart = new CharacterChart(PostData.Get("ChartID")); if (chart != null) { // Parsowanie danych z pól mających zawierać liczby. W przypadku, gdy parsowanie // się nie powiedzie, do pola przypisane zostaje 0. int[] Skills = DefaultMethods.ToIntArray(PostData.GetValues("Skill")); int[] Attributes = DefaultMethods.ToIntArray(PostData.GetValues("Attribute")); int[] Stats = DefaultMethods.ToIntArray(PostData.GetValues("Stat")); // Przesyłanie awatarów postaci string AvatarSource = this.AvatarImg; if (Files["AvatarImg"] != null) { AvatarSource = DefaultConstants.Application.DefaultImgLocalization( PostData.Get("CharacterID"), DefaultConstants.Application.DefaultCharacterAvatarFolder, Files["AvatarImg"].ContentType); Files["AvatarImg"].SaveAs(HttpContext.Current.Server.MapPath(AvatarSource)); } // Przypisywanie do modelu danych z POSTa CharacterID = PostData.Get("CharacterID"); ChartID = PostData.Get("ChartID"); Name = PostData.Get("Name"); AvatarImg = AvatarSource; Data = DefaultMethods.ToDictionary(chart.DataNames, PostData.GetValues("Data")); this.Stats = DefaultMethods.ToDictionary(chart.StatNames, Stats); this.Attributes = DefaultMethods.ToDictionary(chart.AttributeNames, Attributes); this.Skills = DefaultMethods.ToDictionary(chart.SkillNames, Skills); Equipment = PostData.GetValues("Equipment"); Description = PostData.Get("Description"); } }
// Konstruktor przeznaczony do wykorzystania w widoku dla kreatora postaci. Przygotowuje wszystkie // wymagane pola pod konkretną kartę. /// <summary>Tworzy nowy model gracza w oparciu o szablon karty</summary> /// <param name="chart">Szablon karty</param> /// <param name="user">Dane użytkownika</param> public Character( CharacterChart chart, ApplicationUser user = null ) : this(user) { CharacterID = new Key(DefaultConstants.GeneratedCharacterKeyLength).Value; Data = DefaultMethods.ToDictionary<string>(chart.DataNames); Stats = DefaultMethods.ToDictionary<int>(chart.StatNames); Attributes = DefaultMethods.ToDictionary<int>(chart.AttributeNames); Skills = DefaultMethods.ToDictionary<int>(chart.SkillNames); IsDescription = chart.Description; IsEquipment = chart.Equipment; ChartID = chart.ChartID; }