public void AutoDelete() { NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.isSaved == false && ctd.CreatedAt < DateTime.Now.AddHours(-6)); if (CharToDelete != null) { //Need to unravel the new character object and delete the character objects connected to it //Spell Associations - check //Feature Associations - check //playerClass - check //playerRace - check //playerStat - check //playerBG - check List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList(); foreach (SpellAssoc sa in SpellsAssocToDelete) { _context.Spell_Associations.Remove(sa); } List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList(); foreach (FeatureAssoc fa in FeatAssocToDelete) { _context.Feature_Associations.Remove(fa); } PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId); _context.PlayerClasses.Remove(PClassToDelete); PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId); _context.PlayerRaces.Remove(PRaceToDelete); PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId); _context.PlayerStats.Remove(PStatToDelete); PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId); _context.PlayerBGs.Remove(PGBToDelete); _context.NewCharacter.Remove(CharToDelete); } }
public IActionResult deleteChar(int characterid) { NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.CharacterId == characterid); if (CharToDelete != null) { List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList(); foreach (SpellAssoc sa in SpellsAssocToDelete) { _context.Spell_Associations.Remove(sa); } List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList(); foreach (FeatureAssoc fa in FeatAssocToDelete) { _context.Feature_Associations.Remove(fa); } PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId); _context.PlayerClasses.Remove(PClassToDelete); PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId); _context.PlayerRaces.Remove(PRaceToDelete); PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId); _context.PlayerStats.Remove(PStatToDelete); PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId); _context.PlayerBGs.Remove(PGBToDelete); _context.NewCharacter.Remove(CharToDelete); } _context.SaveChanges(); int?SessionId = HttpContext.Session.GetInt32("UserId"); return(RedirectToAction("Profile", new { ID = SessionId })); }
public IActionResult SpecificGeneration(string selectedrace, string selectedclass, string selectedlevel) { AutoDelete(); int? SessionId = HttpContext.Session.GetInt32("UserId"); User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId); if (SessionUser == null) { return(View("UserLogin")); } int Level = Int32.Parse(selectedlevel); if (Level == 0) //Assign the base choice value as == 0 { Level = rand.Next(1, 21); } //creating input for creation and modification of base in other functions PlayerStat playerStat = new PlayerStat(Level); // Run player stat through background PlayerBG playerBG = new PlayerBG(); // Returns player Stat VVV playerBG.BGSelector(playerStat, playerBG); // Determines player Race and then run stats PlayerRace playerRace = new PlayerRace(); // Returns player Stat VVV // Determine Player Class and run playerStat if (selectedrace != "Random") { playerRace.SpecificRaceSelector(Level, playerStat, playerRace, selectedrace); } else { playerRace.RaceSelector(Level, playerStat, playerRace); } PlayerClass playerClass = new PlayerClass(Level, playerStat); // Returns player Stat VVV if (selectedclass != "Random") { playerClass.SpecClassSelector(Level, playerStat, playerClass, selectedclass); } else { playerClass.ClassSelector(Level, playerStat, playerClass); } // reruns numbers based on updated proficiencies and skill increases playerStat.UpdatePro(playerStat); // create connection to all character objects within the character NewCharacter newPlayer = new NewCharacter(Level, playerStat, playerRace, playerClass, playerBG, SessionUser); _context.PlayerStats.Add(playerStat); _context.PlayerBGs.Add(playerBG); _context.PlayerClasses.Add(playerClass); _context.PlayerRaces.Add(playerRace); _context.NewCharacter.Add(newPlayer); // Feat Generation List <Feature> charFeatures = _context.Features.Where(f => ((f.FeatSource == playerClass.ClassName) && (f.FeatLevel <= Level)) || ((f.FeatSource == playerClass.SubClassName) && (f.FeatLevel <= Level))).ToList(); foreach (Feature feat in charFeatures) { var Fassoc = new FeatureAssoc(newPlayer, feat); _context.Feature_Associations.Add(Fassoc); _context.SaveChanges(); } List <Feature> Feats = _context.NewCharacter.Include(c => c.FeaturesList) .ThenInclude(fa => fa.FeatureA) .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId) .FeaturesList.Select(f => f.FeatureA) .OrderBy(f => f.FeatLevel) .ToList(); List <Spell> ClassAvailbleSpells = _context.Spells.Where(s => s.Source1 == newPlayer.playerClass.ClassName || s.Source2 == newPlayer.playerClass.ClassName || s.Source3 == newPlayer.playerClass.ClassName || s.Source4 == newPlayer.playerClass.ClassName || s.Source5 == newPlayer.playerClass.ClassName || s.Source6 == newPlayer.playerClass.ClassName || s.Source7 == newPlayer.playerClass.ClassName ).ToList(); List <Spell> NonClassSpells = _context.Spells.Where(s => s.Source1 != newPlayer.playerClass.ClassName || s.Source2 != newPlayer.playerClass.ClassName || s.Source3 != newPlayer.playerClass.ClassName || s.Source4 != newPlayer.playerClass.ClassName || s.Source5 != newPlayer.playerClass.ClassName || s.Source6 != newPlayer.playerClass.ClassName || s.Source7 != newPlayer.playerClass.ClassName ).ToList(); Spell FetchSpell = new Spell(); List <Spell> availableSpells = FetchSpell.GetPossibleSpells(newPlayer, ClassAvailbleSpells, NonClassSpells); SpellAssoc AlwaysPreppedChecker = new SpellAssoc(); foreach (Spell s in availableSpells) { SpellAssoc a = new SpellAssoc(newPlayer, s);//always true AlwaysPreppedChecker.AlwaysPreppedChecker(newPlayer, s, a); _context.Spell_Associations.Add(a); _context.SaveChanges(); } List <Spell> Spells = _context.NewCharacter .Include(c => c.SpellList) .ThenInclude(sa => sa.SpellA) .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId) .SpellList.Select(s => s.SpellA) .OrderBy(f => f.SpellLevel) .ThenBy(f => f.SpellName) .ToList(); _context.SaveChanges(); int passiveperception = 10 + newPlayer.playerStat.Perception; //Dynamic model with USer, Login, Character dynamic MyModel = new ExpandoObject(); MyModel.User = SessionUser; MyModel.Login = new Login(); MyModel.Character = newPlayer; MyModel.Features = Feats; MyModel.Spells = Spells; MyModel.PassivePerception = passiveperception; return(View("Index", MyModel)); }