diff --git a/SessionCompanion/SessionCompanion.Database/ApplicationDbContext.cs b/SessionCompanion/SessionCompanion.Database/ApplicationDbContext.cs index 9b78d69..c5359f5 100644 --- a/SessionCompanion/SessionCompanion.Database/ApplicationDbContext.cs +++ b/SessionCompanion/SessionCompanion.Database/ApplicationDbContext.cs @@ -127,3 +127,4 @@ namespace SessionCompanion.Database } } } + diff --git a/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json b/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json new file mode 100644 index 0000000..c739b8f --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json @@ -0,0 +1,985 @@ +[ + { + "id": 1, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 4, + "Initiative": 2, + "HealthPoints": 8, + "CurrentHealthPoints": 8, + "ArmorClass": 5, + "Proficiency": 2 + }, + "biography": { + "Name": "Ulora", + "ClassId": 2, + "RaceId": 3, + "AlignmentId": "LawfulGood", + "BackgroundId": 2, + "Sex": "Female", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 11, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 12, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 44 + }, + { + "SpellId": 57 + } + ], + "charisma": { + "Value": 5, + "Modification": -2, + "SavingThrows": 0, + "CanSavingThrows": false, + "Deception": 0, + "CanDeception": false, + "Intimidation": 0, + "CanIntimidation": false, + "Performance": 0, + "CanPerformance": false, + "Persuasion": 0, + "CanPersuasion": false + }, + "constitution": { + "Value": 12, + "Modification": 2, + "SavingThrows": 2, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 15, + "Modification": 2, + "SavingThrows": 3, + "CanSaveThrows": true, + "Acrobatics": 3, + "CanAcrobatics": true, + "SleightOfHand": 2, + "CanSleightOfHand": true, + "Stealth": 3, + "canStealth": true + }, + "intelligence": { + "Value": 14, + "Modification": 4, + "SavingThrows": 2, + "CanSaveThrows": true, + "arcana": 2, + "canArcana": true, + "History": 4, + "CanHistory": true, + "Investigation": 3, + "CanInvestigation": true, + "Nature": 1, + "CanNature": true, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 8, + "Modification": -1, + "SavingThrows": 0, + "CanSaveThrows": false, + "Athletics": 0, + "canAthletics": false + }, + "wisdom": { + "Value": 10, + "Modification": 0, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 1, + "CanAnimalHandling": true, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 2, + "CanPerception": true, + "Survival": 0, + "CanSurvival": false + } + }, + { + "id": 2, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 3, + "Initiative": 5, + "HealthPoints": 12, + "CurrentHealthPoints": 11, + "ArmorClass": 4, + "Proficiency": 1 + }, + "biography": { + "Name": "Nucate", + "ClassId": 1, + "RaceId": 1, + "AlignmentId": "LawfulGood", + "BackgroundId": 1, + "Sex": "Male", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 30, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 25, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 2 + }, + { + "SpellId": 42 + } + ], + "charisma": { + "Value": 10, + "Modification": 3, + "SavingThrows": 0, + "CanSavingThrows": false, + "Deception": 0, + "CanDeception": false, + "Intimidation": 1, + "CanIntimidation": true, + "Performance": 2, + "CanPerformance": true, + "Persuasion": 0, + "CanPersuasion": false + }, + "constitution": { + "Value": 11, + "Modification": 4, + "SavingThrows": 2, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 10, + "Modification": 1, + "SavingThrows": 4, + "CanSaveThrows": true, + "Acrobatics": 3, + "CanAcrobatics": true, + "SleightOfHand": 1, + "CanSleightOfHand": true, + "Stealth": 2, + "canStealth": true + }, + "intelligence": { + "Value": 6, + "Modification": -2, + "SavingThrows": 1, + "CanSaveThrows": true, + "arcana": 1, + "canArcana": true, + "History": 4, + "CanHistory": true, + "Investigation": 0, + "CanInvestigation": false, + "Nature": 1, + "CanNature": true, + "Religion": 3, + "canReligion": true + }, + "strength": { + "Value": 10, + "Modification": 1, + "SavingThrows": 0, + "CanSaveThrows": false, + "Athletics": 2, + "canAthletics": true + }, + "wisdom": { + "Value": 11, + "Modification": 3, + "SavingThrows": 1, + "CanSaveThrows": true, + "AnimalHandling": 2, + "canAnimalHandling": true, + "Insight": 1, + "canInsight": true, + "medicine": 0, + "CanMedicine": false, + "Perception": 5, + "CanPerception": true, + "Survival": 2, + "CanSurvival": true + } + }, + { + "id": 3, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 4, + "Initiative": 2, + "HealthPoints": 17, + "CurrentHealthPoints": 16, + "ArmorClass": 6, + "Proficiency": 3 + }, + "biography": { + "Name": "Muraraj", + "ClassId": 2, + "RaceId": 2, + "AlignmentId": "LawfulGood", + "BackgroundId": 1, + "Sex": "Male", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 1, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 2, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + }, + { + "WeaponId": 10, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 42 + } + ], + "charisma": { + "Value": 15, + "Modification": 2, + "SavingThrows": 2, + "CanSaveThrows": true, + "Deception": 1, + "CanDeception": true, + "Intimidation": 4, + "CanIntimidation": true, + "Performance": 2, + "CanPerformance": true, + "Persuasion": 2, + "CanPersuasion": true + }, + "constitution": { + "Value": 15, + "Modification": 4, + "SavingThrows": 2, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 8, + "Modification": -1, + "SavingThrows": 0, + "CanSaveThrows": false, + "Acrobatics": 0, + "CanAcrobatics": false, + "SleightOfHand": 0, + "CanSleightOfHand": false, + "Stealth": 0, + "canStealth": false + }, + "intelligence": { + "Value": 8, + "Modification": -1, + "SavingThrows": 0, + "CanSaveThrows": false, + "arcana": 0, + "canArcana": false, + "History": 0, + "CanHistory": false, + "Investigation": 0, + "CanInvestigation": false, + "Nature": 0, + "CanNature": false, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 18, + "Modification": 4, + "SavingThrows": 3, + "CanSaveThrows": true, + "Athletics": 5, + "canAthletics": true + }, + "wisdom": { + "Value": 6, + "Modification": -3, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 0, + "CanAnimalHandling": false, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 0, + "CanPerception": false, + "Survival": 0, + "CanSurvival": false + } + }, + { + "id": 5, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 8, + "Initiative": 7, + "HealthPoints": 7, + "CurrentHealthPoints": 7, + "ArmorClass": 2, + "Proficiency": 3 + }, + "biography": { + "Name": "Amarena", + "ClassId": 2, + "RaceId": 1, + "AlignmentId": "LawfulGood", + "BackgroundId": 2, + "Sex": "Female", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 2, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 14, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + }, + { + "WeaponId": 4, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 2 + } + ], + "charisma": { + "Value": 7, + "Modification": -2, + "SavingThrows": 0, + "CanSavingThrows": false, + "Deception": 0, + "CanDeception": false, + "Intimidation": 0, + "CanIntimidation": false, + "Performance": 0, + "CanPerformance": false, + "Persuasion": 0, + "CanPersuasion": false + }, + "constitution": { + "Value": 11, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 17, + "Modification": 4, + "SavingThrows": 3, + "CanSaveThrows": true, + "Acrobatics": 4, + "CanAcrobatics": true, + "SleightOfHand": 2, + "CanSleightOfHand": true, + "Stealth": 5, + "canStealth": true + }, + "intelligence": { + "Value": 10, + "Modification": 0, + "SavingThrows": 0, + "CanSaveThrows": false, + "arcana": 0, + "canArcana": false, + "History": 0, + "CanHistory": false, + "Investigation": 0, + "CanInvestigation": false, + "Nature": 0, + "CanNature": false, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 14, + "Modification": 2, + "SavingThrows": 1, + "CanSaveThrows": true, + "Athletics": 3, + "canAthletics": true + }, + "wisdom": { + "Value": 7, + "Modification": 0, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 0, + "canAnimalHandling": false, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 0, + "CanPerception": false, + "Survival": 0, + "CanSurvival": false + } + }, + { + "id": 6, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 2, + "Initiative": 3, + "HealthPoints": 17, + "CurrentHealthPoints": 17, + "ArmorClass": 5, + "Proficiency": 1 + }, + "biography": { + "Name": "Yaz' uw Emul", + "ClassId": 1, + "RaceId": 3, + "AlignmentId": "LawfulGood", + "BackgroundId": 3, + "Sex": "Male", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 16, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 14, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 2 + }, + { + "SpellId": 65 + }, + { + "SpellId": 44 + } + ], + "charisma": { + "Value": 10, + "Modification": 0, + "SavingThrows": 0, + "CanSavingThrows": false, + "Deception": 1, + "CanDeception": true, + "Intimidation": 2, + "CanIntimidation": true, + "Performance": 0, + "CanPerformance": false, + "Persuasion": 0, + "CanPersuasion": false + }, + "constitution": { + "Value": 14, + "Modification": 4, + "SavingThrows": 1, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 6, + "Modification": -3, + "SavingThrows": 0, + "CanSaveThrows": false, + "Acrobatics": 0, + "CanAcrobatics": false, + "SleightOfHand": 0, + "CanSleightOfHand": false, + "Stealth": 0, + "canStealth": false + }, + "intelligence": { + "Value": 11, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true, + "arcana": 0, + "canArcana": false, + "History": 2, + "CanHistory": true, + "Investigation": 1, + "CanInvestigation": true, + "Nature": 0, + "CanNature": false, + "Religion": 4, + "canReligion": true + }, + "strength": { + "Value": 18, + "Modification": 4, + "SavingThrows": 2, + "CanSaveThrows": true, + "Athletics": 4, + "canAthletics": true + }, + "wisdom": { + "Value": 9, + "Modification": -1, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 0, + "canAnimalHandling": false, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 0, + "CanPerception": false, + "Survival": 0, + "CanSurvival": false + } + }, + { + "id": 7, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 5, + "Initiative": 4, + "HealthPoints": 13, + "CurrentHealthPoints": 13, + "ArmorClass": 2, + "Proficiency": 1 + }, + "biography": { + "Name": "Kamul", + "ClassId": 2, + "RaceId": 1, + "AlignmentId": "LawfulGood", + "BackgroundId": 1, + "Sex": "Female", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 18, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 1, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 3 + }, + { + "SpellId": 85 + }, + { + "SpellId": 94 + } + ], + "charisma": { + "Value": 10, + "Modification": 0, + "SavingThrows": 0, + "CanSavingThrows": false, + "Deception": 2, + "CanDeception": true, + "Intimidation": 0, + "CanIntimidation": false, + "Performance": 1, + "CanPerformance": true, + "Persuasion": 2, + "CanPersuasion": true + }, + "constitution": { + "Value": 8, + "Modification": -2, + "SavingThrows": 0, + "CanSaveThrows": false + }, + "dexterity": { + "Value": 12, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true, + "Acrobatics": 2, + "CanAcrobatics": true, + "SleightOfHand": 1, + "CanSleightOfHand": true, + "Stealth": 0, + "canStealth": false + }, + "intelligence": { + "Value": 15, + "Modification": 4, + "SavingThrows": 2, + "CanSaveThrows": true, + "arcana": 4, + "canArcana": true, + "History": 1, + "CanHistory": true, + "Investigation": 1, + "CanInvestigation": true, + "Nature": 6, + "CanNature": true, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 13, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true, + "Athletics": 2, + "canAthletics": true + }, + "wisdom": { + "Value": 13, + "Modification": 2, + "SavingThrows": 2, + "CanSaveThrows": true, + "AnimalHandling": 1, + "canAnimalHandling": true, + "Insight": 4, + "canInsight": true, + "medicine": 2, + "CanMedicine": true, + "Perception": 5, + "CanPerception": true, + "Survival": 2, + "CanSurvival": true + } + }, + { + "id": 8, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 9, + "Initiative": 6, + "HealthPoints": 7, + "CurrentHealthPoints": 7, + "ArmorClass": 4, + "Proficiency": 1 + }, + "biography": { + "Name": "Mu", + "ClassId": 1, + "RaceId": 3, + "AlignmentId": "LawfulGood", + "BackgroundId": 2, + "Sex": "Male", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 1, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 17, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + }, + { + "WeaponId": 27, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 3 + } + ], + "charisma": { + "Value": 11, + "Modification": 1, + "SavingThrows": 1, + "CanSavingThrows": true, + "Deception": 1, + "CanDeception": true, + "Intimidation": 0, + "CanIntimidation": false, + "Performance": 0, + "CanPerformance": false, + "Persuasion": 0, + "CanPersuasion": false + }, + "constitution": { + "Value": 13, + "Modification": 2, + "SavingThrows": 1, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 17, + "Modification": 4, + "SavingThrows": 3, + "CanSaveThrows": true, + "Acrobatics": 3, + "CanAcrobatics": true, + "SleightOfHand": 4, + "CanSleightOfHand": true, + "Stealth": 1, + "canStealth": true + }, + "intelligence": { + "Value": 8, + "Modification": -2, + "SavingThrows": 0, + "CanSaveThrows": false, + "arcana": 0, + "canArcana": false, + "History": 0, + "CanHistory": false, + "Investigation": 0, + "CanInvestigation": false, + "Nature": 0, + "CanNature": false, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 18, + "Modification": 4, + "SavingThrows": 3, + "CanSaveThrows": true, + "Athletics": 5, + "canAthletics": true + }, + "wisdom": { + "Value": 8, + "Modification": -2, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 0, + "canAnimalHandling": false, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 0, + "CanPerception": false, + "Survival": 0, + "CanSurvival": false + } + }, + { + "id": 9, + "userId": -1, + "statistics": { + "ExperiencePoints": 0, + "Level": 1, + "Speed": 4, + "Initiative": 3, + "HealthPoints": 12, + "CurrentHealthPoints": 12, + "ArmorClass": 3, + "Proficiency": 1 + }, + "biography": { + "Name": "Aarak", + "ClassId": 2, + "RaceId": 3, + "AlignmentId": "LawfulGood", + "BackgroundId": 2, + "Sex": "Female", + "Languages": "Common", + "background": { + "Origin": "No origin", + "History": "Nothing much" + } + }, + "characterWeapons": [ + { + "WeaponId": 4, + "InUse": true, + "HoldInRightHand": true, + "HoldInLeftHand": false + }, + { + "WeaponId": 7, + "InUse": false, + "HoldInRightHand": false, + "HoldInLeftHand": false + } + ], + "characterSpells": [ + { + "SpellId": 1 + }, + { + "SpellId": 55 + } + ], + "charisma": { + "Value": 12, + "Modification": 2, + "SavingThrows": 1, + "CanSavingThrows": true, + "Deception": 0, + "CanDeception": false, + "Intimidation": 0, + "CanIntimidation": false, + "Performance": 0, + "CanPerformance": false, + "Persuasion": 3, + "CanPersuasion": true + }, + "constitution": { + "Value": 11, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true + }, + "dexterity": { + "Value": 15, + "Modification": 3, + "SavingThrows": 2, + "CanSaveThrows": true, + "Acrobatics": 2, + "CanAcrobatics": true, + "SleightOfHand": 1, + "CanSleightOfHand": true, + "Stealth": 4, + "canStealth": true + }, + "intelligence": { + "Value": 12, + "Modification": 1, + "SavingThrows": 1, + "CanSaveThrows": true, + "arcana": 0, + "canArcana": false, + "History": 0, + "CanHistory": false, + "Investigation": 0, + "CanInvestigation": false, + "Nature": 2, + "CanNature": true, + "Religion": 0, + "canReligion": false + }, + "strength": { + "Value": 15, + "Modification": 4, + "SavingThrows": 3, + "CanSaveThrows": true, + "Athletics": 2, + "canAthletics": true + }, + "wisdom": { + "Value": 6, + "Modification": -4, + "SavingThrows": 0, + "CanSaveThrows": false, + "AnimalHandling": 0, + "canAnimalHandling": false, + "Insight": 0, + "canInsight": false, + "medicine": 0, + "CanMedicine": false, + "Perception": 0, + "CanPerception": false, + "Survival": 0, + "CanSurvival": false + } + } +] diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/GameActionRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/GameActionRepository.cs new file mode 100644 index 0000000..4c08429 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/GameActionRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class GameActionRepository : Repository, IRepository + { + public GameActionRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/LegendaryActionRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/LegendaryActionRepository.cs new file mode 100644 index 0000000..6cd9a0c --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/LegendaryActionRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class LegendaryActionRepository : Repository, IRepository + { + public LegendaryActionRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/MonsterActionsRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterActionsRepository.cs new file mode 100644 index 0000000..73817a4 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterActionsRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class MonsterActionsRepository : Repository, IRepository + { + public MonsterActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/MonsterLegendaryActionsRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterLegendaryActionsRepository.cs new file mode 100644 index 0000000..b68cd81 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterLegendaryActionsRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class MonsterLegendaryActionsRepository : Repository, IRepository + { + public MonsterLegendaryActionsRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/MonsterRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterRepository.cs new file mode 100644 index 0000000..d79da11 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class MonsterRepository : Repository, IRepository + { + public MonsterRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/MonsterSpecialAbilitiesRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterSpecialAbilitiesRepository.cs new file mode 100644 index 0000000..ea2f25b --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/MonsterSpecialAbilitiesRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class MonsterSpecialAbilitiesRepository : Repository, IRepository + { + public MonsterSpecialAbilitiesRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Repositories/SpecialAbilityRepository.cs b/SessionCompanion/SessionCompanion.Database/Repositories/SpecialAbilityRepository.cs new file mode 100644 index 0000000..77c2764 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Repositories/SpecialAbilityRepository.cs @@ -0,0 +1,14 @@ +using SessionCompanion.Database.Repositories.Base; +using SessionCompanion.Database.Tables; +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.Database.Repositories +{ + public class SpecialAbilityRepository : Repository, IRepository + { + public SpecialAbilityRepository(ApplicationDbContext _dbContext) : base(_dbContext) + { } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/SessionCompanion.Database.csproj b/SessionCompanion/SessionCompanion.Database/SessionCompanion.Database.csproj index 120ad3e..a157829 100644 --- a/SessionCompanion/SessionCompanion.Database/SessionCompanion.Database.csproj +++ b/SessionCompanion/SessionCompanion.Database/SessionCompanion.Database.csproj @@ -21,8 +21,4 @@ - - - - diff --git a/SessionCompanion/SessionCompanion.Database/Tables/GameAction.cs b/SessionCompanion/SessionCompanion.Database/Tables/GameAction.cs new file mode 100644 index 0000000..a523153 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/GameAction.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class GameAction : BaseEntity + { + // + /// Nazwa akcji + /// + public string Name { get; set; } + + /// + /// Opis akcji + /// + public string Description { get; set; } + + public int AttackBonus { get; set; } + + public int? DamageDice { get; set; } + public int? DamageDiceAmount { get; set; } + + public int? DamageBonus { get; set; } + + public virtual ICollection MonsterActions { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/LegendaryAction.cs b/SessionCompanion/SessionCompanion.Database/Tables/LegendaryAction.cs new file mode 100644 index 0000000..32c16a0 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/LegendaryAction.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class LegendaryAction : BaseEntity + { + // + /// Nazwa legendarnej akcji + /// + public string Name { get; set; } + + /// + /// Opis akcji + /// + public string Description { get; set; } + + public virtual ICollection MonsterLegendaryActions { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/Monster.cs b/SessionCompanion/SessionCompanion.Database/Tables/Monster.cs new file mode 100644 index 0000000..6c641ab --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/Monster.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class Monster : BaseEntity + { + /// + /// Nazwa potwora + /// + public string Name { get; set; } + + /// + /// Rozmiar potwora + /// + public string Size { get; set; } + + /// + /// Rodzaj potwora + /// + public string Type { get; set; } + + /// + /// Podtyp potwora + /// + public string Subtype { get; set; } + + /// + /// Charakter potwora + /// + public string Alignment { get; set; } + + /// + /// Poziom pancerza potwora + /// + public int ArmorClass { get; set; } + + /// + /// Iloś punktów zycia potwora + /// + public int HitPoints { get; set; } + + /// + /// Ilość kości określajacych punkty życia potwora + /// + public int HitDiceAmount { get; set; } + + /// + /// Kość którą rzucamy aby określić punkty życia potwora + /// + public int HitDiceType { get; set; } + + /// + /// Szybkość chodzenia potwora + /// + public string WalkSpeed { get; set; } + + /// + /// Szybkość pływania potwora + /// + public string SwimSpeed { get; set; } + + /// + /// Szybkość latania potwora + /// + public string FlySpeed { get; set; } + + /// + /// Punkty zręczności potwora + /// + public int Dexterity { get; set; } + public int? DexteritySave { get; set; } + + /// + /// Punkty siły potwora + /// + public int Strength { get; set; } + public int? StrengthSave { get; set; } + + /// + /// Punkty kondycji potwora + /// + public int Constitution { get; set; } + public int? ConstitutionSave { get; set; } + + /// + /// Punkty inteligencji potwora + /// + public int Intelligence { get; set; } + public int? IntelligenceSave { get; set; } + + /// + /// Punkty mądrości potwora + /// + public int Wisdom { get; set; } + public int? WisdomSave { get; set; } + + /// + /// Punkty charyzmy potwora + /// + public int Charisma { get; set; } + public int? CharismaSave { get; set; } + + /// + /// Poziom trudności potwora + /// + public int ChallengeRating { get; set; } + + /// + /// Punkty doświadczenia za zabicie potwora + /// + public int ExperiencePoints { get; set; } + + /// + /// Połączenie z tabelą MonsterActions + /// + public virtual ICollection MonsterAction { get; set; } + + /// + /// Na jakie stany odporny jest potwor + /// + public string MonsterConditionImmunities { get; set; } + + /// + /// Na jakie obrazenia odporny jest potwor + /// + public string MonsterDamageImmunities { get; set; } + + /// + /// Na jakie obrazenia potwor ma zmniejszoną słabosc + /// + public string MonsterDamageResistances { get; set; } + + /// + /// Na co potwor jest wrazliwy + /// + public string MonsterDamageVulnerabilities { get; set; } + + /// + /// Jezyki jakimi wlada potwor + /// + public string MonsterLanguages { get; set; } + + /// + /// Połączenie z tabelą MonsterLegendaryActions + /// + public virtual ICollection MonsterLegendaryAction { get; set; } + + /// + /// Połączenie z tabelą MonsterSenses + /// + public string MonsterSenses { get; set; } + + /// + /// Połączenie z tabelą MonsterSpecialAbilities + /// + public virtual ICollection MonsterSpecialAbility { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/MonsterAction.cs b/SessionCompanion/SessionCompanion.Database/Tables/MonsterAction.cs new file mode 100644 index 0000000..d3b9b88 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/MonsterAction.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class MonsterAction : BaseEntity + { + /// + /// Id potwora + /// + public int MonsterId { get; set; } + + /// + /// Połączenie z tabelą Monsters + /// + public virtual Monster Monster { get; set; } + + public int GameActionId { get; set; } + public virtual GameAction GameAction { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/MonsterLegendaryAction.cs b/SessionCompanion/SessionCompanion.Database/Tables/MonsterLegendaryAction.cs new file mode 100644 index 0000000..7d8c47e --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/MonsterLegendaryAction.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class MonsterLegendaryAction : BaseEntity + { + /// + /// Id potwora + /// + public int MonsterId { get; set; } + public int LegendaryActionId { get; set; } + + /// + /// Połączenie z tabelą Monster + /// + public virtual Monster Monster { get; set; } + + public virtual LegendaryAction LegendaryActions { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/MonsterSpecialAbility.cs b/SessionCompanion/SessionCompanion.Database/Tables/MonsterSpecialAbility.cs new file mode 100644 index 0000000..d2e1492 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/MonsterSpecialAbility.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class MonsterSpecialAbility : BaseEntity + { + public int SpecialAbilityId { get; set; } + + + public int? DamageDice { get; set; } + + public int? DamageDiceAmount { get; set; } + /// + /// Id potwora + /// + public int? MonsterId { get; set; } + + public virtual SpecialAbility SpecialAbility { get; set; } + /// + /// Połączenie z tabelą Monster + /// + public virtual Monster Monster { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Database/Tables/SpecialAbility.cs b/SessionCompanion/SessionCompanion.Database/Tables/SpecialAbility.cs new file mode 100644 index 0000000..edb0380 --- /dev/null +++ b/SessionCompanion/SessionCompanion.Database/Tables/SpecialAbility.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.Database.Tables +{ + public class SpecialAbility : BaseEntity + { + // + /// Nazwa umiejętności + /// + public string Name { get; set; } + + /// + /// Opis umiejętności + /// + public string Description { get; set; } + + public int? DamageDice { get; set; } + + public int? DamageDiceAmount { get; set; } + + public virtual ICollection MonsterSpecialAbilities { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterArmorService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterArmorService.cs index 7106bd8..72103af 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterArmorService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterArmorService.cs @@ -15,5 +15,6 @@ namespace SessionCompanion.Services.Interfaces public interface ICharacterArmorService : IServiceBase { Task> ChangeCharacterArmor(int characterId, int newArmorId); + Task> GetCharacterArmorsTaskList(int characterId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterOtherEquipmentService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterOtherEquipmentService.cs index ec20aca..e9e8a90 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterOtherEquipmentService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterOtherEquipmentService.cs @@ -12,5 +12,6 @@ namespace SessionCompanion.Services.Interfaces public interface ICharacterOtherEquipmentService : IServiceBase { + Task> GetCharacterOtherEquipmentList(int characterId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs index 026f0f7..715f6f3 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs @@ -1,6 +1,8 @@ using SessionCompanion.Database.Tables; using SessionCompanion.Services.Base; using SessionCompanion.ViewModels.CharacterViewModels; +using SessionCompanion.ViewModels.ClassViewModels; +using SessionCompanion.ViewModels.RaceViewModels; using SessionCompanion.ViewModels.UniversalModels; using System; using System.Collections.Generic; @@ -15,5 +17,6 @@ namespace SessionCompanion.Services.Interfaces Task> GetUserLoginCharacters(int userId); Task> GetCharacterStatistics(int characterId); Task GetBasicCharacterbasicInfo(int characterId); + Task> GetCharactersFromTemplate(List raceViewModels, List classViewModels); } } diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterWeaponService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterWeaponService.cs index 3ac386e..8206eb9 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterWeaponService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterWeaponService.cs @@ -4,7 +4,11 @@ using SessionCompanion.ViewModels.CharacterWeaponViewModels; namespace SessionCompanion.Services.Interfaces { + using System.Collections.Generic; + using System.Threading.Tasks; + public interface ICharacterWeaponService : IServiceBase { + Task> GetCharacterWeaponsList(int characterId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterArmorService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterArmorService.cs index 3eaaf16..89744cc 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterArmorService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterArmorService.cs @@ -18,11 +18,13 @@ namespace SessionCompanion.Services.Services using SessionCompanion.ViewModels.ApiResponses; using SessionCompanion.ViewModels.CharacterArmorViewModels; using SessionCompanion.Extensions.EitherType; + using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels; public class CharacterArmorService : ServiceBase, ICharacterArmorService { public CharacterArmorService(IMapper mapper, IRepository repository) : base(mapper, repository) { } + public async Task> ChangeCharacterArmor(int characterId, int newArmorId) { CharacterArmor armorInUse = new CharacterArmor(); @@ -40,7 +42,7 @@ namespace SessionCompanion.Services.Services if (armorToUse is null) return new ErrorResponse() { StatusCode = 204, Message = "No weapon to change to" }; - + if (armorInUse is null) { armorToUse.InUse = true; @@ -70,5 +72,17 @@ namespace SessionCompanion.Services.Services return new ErrorResponse() { StatusCode = 500, Message = e.Message }; } } + /// + /// Metoda pobiera listę pancerzy konkretnej postaci + /// + /// Id postaci + /// Lista pancerzy posiadanych przez postać + public async Task> GetCharacterArmorsTaskList(int characterId) + { + var characterWeapons = await Repository.Get().Where(a => a.CharacterId.Equals(characterId)).Include(a => a.Armor).ToListAsync(); + + var result = Mapper.Map>(characterWeapons); + return result; + } } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterOtherEquipmentService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterOtherEquipmentService.cs index 1d80427..83187dc 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterOtherEquipmentService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterOtherEquipmentService.cs @@ -1,7 +1,11 @@ namespace SessionCompanion.Services.Services { + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; using AutoMapper; + using Microsoft.EntityFrameworkCore; using SessionCompanion.Database.Repositories.Base; using SessionCompanion.Database.Tables; using SessionCompanion.Services.Base; @@ -13,5 +17,17 @@ public CharacterOtherEquipmentService(IMapper mapper, IRepository repository) : base(mapper, repository) { } + /// + /// Metoda pobiera listę pozostałego ekwipunku konkretnej postaci + /// + /// Id postaci + /// Lista pozostałego ekwpinuku posiadanego przez postać + public async Task> GetCharacterOtherEquipmentList(int characterId) + { + var characterWeapons = await Repository.Get().Where(a => a.CharacterId.Equals(characterId)).Include(a => a.OtherEquipment).ToListAsync(); + + var result = Mapper.Map>(characterWeapons); + return result; + } } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs index ddbf698..808c168 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs @@ -16,12 +16,14 @@ using System.IO; using Newtonsoft.Json.Linq; using SessionCompanion.ViewModels.UniversalModels; using SessionCompanion.Services.Helpers; +using SessionCompanion.ViewModels.RaceViewModels; +using SessionCompanion.ViewModels.ClassViewModels; namespace SessionCompanion.Services.Services { public class CharacterService : ServiceBase, ICharacterService { - public CharacterService(IMapper mapper, IRepository repository) : base(mapper, repository) + public CharacterService(IMapper mapper, IRepository repository, IRepository classRepository) : base(mapper, repository) { } /// @@ -111,5 +113,31 @@ namespace SessionCompanion.Services.Services var result = Mapper.Map(character); return result; } + + /// + /// Function returns basic stats from Characters in templates + /// + /// + public async Task> GetCharactersFromTemplate(List raceViewModels, List classViewModels) + { + const string file = "../SessionCompanion.Database/JsonData/characters_templates.json"; + List basicStats = new List(); + using (StreamReader reader = new StreamReader(file)) + { + var json = await reader.ReadToEndAsync(); + foreach (var item in JArray.Parse(json)) + { + CharacterFromTemplatesSimpleViewModel characterFromTemplatesSimpleViewModel = new CharacterFromTemplatesSimpleViewModel() + { + Id = (int)item["id"], + Class = classViewModels.Where(c => c.Id.Equals((int)item["biography"]["ClassId"])).Select(c => c.Name).Single(), + Race = raceViewModels.Where(r => r.Id.Equals((int)item["biography"]["RaceId"])).Select(r => r.Name).Single(), + Name = (string)item["biography"]["Name"] + }; + basicStats.Add(characterFromTemplatesSimpleViewModel); + } + } + return basicStats; + } } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterWeaponService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterWeaponService.cs index 3dae1ac..2e54b32 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterWeaponService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterWeaponService.cs @@ -7,9 +7,28 @@ using SessionCompanion.ViewModels.CharacterWeaponViewModels; namespace SessionCompanion.Services.Services { + using System.Collections.Generic; + using System.Linq; + using System.Threading.Tasks; + + using Microsoft.EntityFrameworkCore; + public class CharacterWeaponService : ServiceBase, ICharacterWeaponService { public CharacterWeaponService(IMapper mapper, IRepository repository) : base(mapper, repository) { } + + /// + /// Metoda pobiera listę broni konkretnej postaci + /// + /// Id postaci + /// Lista broni posiadanych przez postać + public async Task> GetCharacterWeaponsList(int characterId) + { + var characterWeapons = await Repository.Get().Where(w => w.CharacterId.Equals(characterId)).Include(w => w.Weapon).ToListAsync(); + + var result = Mapper.Map>(characterWeapons); + return result; + } } } diff --git a/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterFromTemplatesSimpleViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterFromTemplatesSimpleViewModel.cs new file mode 100644 index 0000000..dbf4079 --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterFromTemplatesSimpleViewModel.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.ViewModels.CharacterViewModels +{ + public class CharacterFromTemplatesSimpleViewModel + { + /// + /// Id postaci + /// + public int Id { get; set; } + /// + /// Imie postaci + /// + public string Name { get; set; } + /// + /// Nazwa rasy postaci + /// + public string Race { get; set; } + /// + /// Nazwa Klasy postaci + /// + public string Class { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/GameActionViewModels/GameActionViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/GameActionViewModels/GameActionViewModel.cs new file mode 100644 index 0000000..ea919c9 --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/GameActionViewModels/GameActionViewModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.GameActionViewModels +{ + public class GameActionViewModel + { + public int Id { get; set; } + public string Name { get; set; } + + /// + /// Opis akcji + /// + public string Description { get; set; } + + public int AttackBonus { get; set; } + + public int? DamageDice { get; set; } + public int? DamageDiceAmount { get; set; } + + public int? DamageBonus { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/LegendaryActionViewModels/LegendaryActionViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/LegendaryActionViewModels/LegendaryActionViewModel.cs new file mode 100644 index 0000000..0e5b6f2 --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/LegendaryActionViewModels/LegendaryActionViewModel.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.LegendaryActionViewModels +{ + public class LegendaryActionViewModel + { + public int Id { get; set; } + // + /// Nazwa legendarnej akcji + /// + public string Name { get; set; } + + /// + /// Opis akcji + /// + public string Description { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/MonsterActionsViewModels/MonsterActionsViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/MonsterActionsViewModels/MonsterActionsViewModel.cs new file mode 100644 index 0000000..84dda2d --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/MonsterActionsViewModels/MonsterActionsViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.MonsterActionsViewModels +{ + public class MonsterActionsViewModel + { + public int Id { get; set; } + /// + /// Id potwora + /// + public int MonsterId { get; set; } + + public int GameActionId { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/MonsterLegendaryActionsViewModels/MonsterLegendaryActionsViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/MonsterLegendaryActionsViewModels/MonsterLegendaryActionsViewModel.cs new file mode 100644 index 0000000..b5f546d --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/MonsterLegendaryActionsViewModels/MonsterLegendaryActionsViewModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.MonsterLegendaryActionsViewModels +{ + public class MonsterLegendaryActionsViewModel + { + public int Id { get; set; } + public int MonsterId { get; set; } + public int LegendaryActionId { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/MonsterSpecialAbilitiesViewModels/MonsterSpecialAbilitiesViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/MonsterSpecialAbilitiesViewModels/MonsterSpecialAbilitiesViewModel.cs new file mode 100644 index 0000000..de1eb2f --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/MonsterSpecialAbilitiesViewModels/MonsterSpecialAbilitiesViewModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.MonsterSpecialAbilitiesViewModels +{ + public class MonsterSpecialAbilitiesViewModel + { + public int Id { get; set; } + public int MonsterId { get; set; } + public int LegendaryActionId { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterAllInformationViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterAllInformationViewModel.cs new file mode 100644 index 0000000..270c9d4 --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterAllInformationViewModel.cs @@ -0,0 +1,156 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.MonsterViewModels +{ + using SessionCompanion.ViewModels.GameActionViewModels; + using SessionCompanion.ViewModels.LegendaryActionViewModels; + using SessionCompanion.ViewModels.SpecialAbilityViewModels; + + public class MonsterAllInformationViewModel + { + public int Id { get; set; } + /// + /// Nazwa potwora + /// + public string Name { get; set; } + + /// + /// Rozmiar potwora + /// + public string Size { get; set; } + + /// + /// Rodzaj potwora + /// + public string Type { get; set; } + + /// + /// Podtyp potwora + /// + public string Subtype { get; set; } + + /// + /// Charakter potwora + /// + public string Alignment { get; set; } + + /// + /// Poziom pancerza potwora + /// + public int ArmorClass { get; set; } + + /// + /// Iloś punktów zycia potwora + /// + public int HitPoints { get; set; } + + /// + /// Ilość kości określajacych punkty życia potwora + /// + public int HitDiceAmount { get; set; } + + /// + /// Kość którą rzucamy aby określić punkty życia potwora + /// + public int HitDiceType { get; set; } + + /// + /// Szybkość chodzenia potwora + /// + public string WalkSpeed { get; set; } + + /// + /// Szybkość pływania potwora + /// + public string SwimSpeed { get; set; } + + /// + /// Szybkość latania potwora + /// + public string FlySpeed { get; set; } + + /// + /// Punkty zręczności potwora + /// + public int Dexterity { get; set; } + public int? DexteritySave { get; set; } + + /// + /// Punkty siły potwora + /// + public int Strength { get; set; } + public int? StrengthSave { get; set; } + + /// + /// Punkty kondycji potwora + /// + public int Constitution { get; set; } + public int? ConstitutionSave { get; set; } + + /// + /// Punkty inteligencji potwora + /// + public int Intelligence { get; set; } + public int? IntelligenceSave { get; set; } + + /// + /// Punkty mądrości potwora + /// + public int Wisdom { get; set; } + public int? WisdomSave { get; set; } + + /// + /// Punkty charyzmy potwora + /// + public int Charisma { get; set; } + public int? CharismaSave { get; set; } + + /// + /// Poziom trudności potwora + /// + public int ChallengeRating { get; set; } + + /// + /// Punkty doświadczenia za zabicie potwora + /// + public int ExperiencePoints { get; set; } + + /// + /// Na jakie stany odporny jest potwor + /// + public string MonsterConditionImmunities { get; set; } + + /// + /// Na jakie obrazenia odporny jest potwor + /// + public string MonsterDamageImmunities { get; set; } + + /// + /// Na jakie obrazenia potwor ma zmniejszoną słabosc + /// + public string MonsterDamageResistances { get; set; } + + /// + /// Na co potwor jest wrazliwy + /// + public string MonsterDamageVulnerabilities { get; set; } + + /// + /// Jezyki jakimi wlada potwor + /// + public string MonsterLanguages { get; set; } + + /// + /// Połączenie z tabelą MonsterSenses + /// + public string MonsterSenses { get; set; } + + public ICollection MonsterGameActions { get; set; } + + public ICollection MonsteLegendaryActions { get; set; } + + public ICollection MonsterSpecialAbilities { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterViewModel.cs new file mode 100644 index 0000000..00c89f0 --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/MonsterViewModels/MonsterViewModel.cs @@ -0,0 +1,146 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.MonsterViewModels +{ + public class MonsterViewModel + { + public int Id { get; set; } + /// + /// Nazwa potwora + /// + public string Name { get; set; } + + /// + /// Rozmiar potwora + /// + public string Size { get; set; } + + /// + /// Rodzaj potwora + /// + public string Type { get; set; } + + /// + /// Podtyp potwora + /// + public string Subtype { get; set; } + + /// + /// Charakter potwora + /// + public string Alignment { get; set; } + + /// + /// Poziom pancerza potwora + /// + public int ArmorClass { get; set; } + + /// + /// Iloś punktów zycia potwora + /// + public int HitPoints { get; set; } + + /// + /// Ilość kości określajacych punkty życia potwora + /// + public int HitDiceAmount { get; set; } + + /// + /// Kość którą rzucamy aby określić punkty życia potwora + /// + public int HitDiceType { get; set; } + + /// + /// Szybkość chodzenia potwora + /// + public string WalkSpeed { get; set; } + + /// + /// Szybkość pływania potwora + /// + public string SwimSpeed { get; set; } + + /// + /// Szybkość latania potwora + /// + public string FlySpeed { get; set; } + + /// + /// Punkty zręczności potwora + /// + public int Dexterity { get; set; } + public int? DexteritySave { get; set; } + + /// + /// Punkty siły potwora + /// + public int Strength { get; set; } + public int? StrengthSave { get; set; } + + /// + /// Punkty kondycji potwora + /// + public int Constitution { get; set; } + public int? ConstitutionSave { get; set; } + + /// + /// Punkty inteligencji potwora + /// + public int Intelligence { get; set; } + public int? IntelligenceSave { get; set; } + + /// + /// Punkty mądrości potwora + /// + public int Wisdom { get; set; } + public int? WisdomSave { get; set; } + + /// + /// Punkty charyzmy potwora + /// + public int Charisma { get; set; } + public int? CharismaSave { get; set; } + + /// + /// Poziom trudności potwora + /// + public int ChallengeRating { get; set; } + + /// + /// Punkty doświadczenia za zabicie potwora + /// + public int ExperiencePoints { get; set; } + + /// + /// Na jakie stany odporny jest potwor + /// + public string MonsterConditionImmunities { get; set; } + + /// + /// Na jakie obrazenia odporny jest potwor + /// + public string MonsterDamageImmunities { get; set; } + + /// + /// Na jakie obrazenia potwor ma zmniejszoną słabosc + /// + public string MonsterDamageResistances { get; set; } + + /// + /// Na co potwor jest wrazliwy + /// + public string MonsterDamageVulnerabilities { get; set; } + + /// + /// Jezyki jakimi wlada potwor + /// + public string MonsterLanguages { get; set; } + + /// + /// Połączenie z tabelą MonsterSenses + /// + public string MonsterSenses { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/SpecialAbilityViewModels/SpecialAbilityViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/SpecialAbilityViewModels/SpecialAbilityViewModel.cs new file mode 100644 index 0000000..570140d --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/SpecialAbilityViewModels/SpecialAbilityViewModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace SessionCompanion.ViewModels.SpecialAbilityViewModels +{ + public class SpecialAbilityViewModel + { + public int Id { get; set; } + // + /// Nazwa umiejętności + /// + public string Name { get; set; } + + /// + /// Opis umiejętności + /// + public string Description { get; set; } + + public int? DamageDice { get; set; } + + public int? DamageDiceAmount { get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion/Configurations/RepositoryConfiguration.cs b/SessionCompanion/SessionCompanion/Configurations/RepositoryConfiguration.cs index 1e9659d..3ae65db 100644 --- a/SessionCompanion/SessionCompanion/Configurations/RepositoryConfiguration.cs +++ b/SessionCompanion/SessionCompanion/Configurations/RepositoryConfiguration.cs @@ -36,6 +36,13 @@ namespace SessionCompanion.Configurations services.AddScoped, CharacterOtherEquipmentRepository>(); services.AddScoped, WeaponRepository>(); services.AddScoped, CharacterWeaponRepository>(); + services.AddScoped, GameActionRepository>(); + services.AddScoped, LegendaryActionRepository>(); + services.AddScoped, MonsterActionsRepository>(); + services.AddScoped, MonsterLegendaryActionsRepository>(); + services.AddScoped, MonsterRepository>(); + services.AddScoped, MonsterSpecialAbilitiesRepository>(); + services.AddScoped, SpecialAbilityRepository>(); return services; } } diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index f59f3c7..4fd9901 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -9,6 +9,7 @@ namespace SessionCompanion.Controllers { using SessionCompanion.Hubs; using SessionCompanion.ViewModels.UniversalModels; + using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -19,11 +20,15 @@ namespace SessionCompanion.Controllers { private readonly ICharacterService _service; private readonly SessionHubData _sessionHubData; + private readonly IRaceService _raceService; + private readonly IClassService _classService; - public CharacterController(ICharacterService service) + public CharacterController(ICharacterService service, IRaceService raceService, IClassService classService) { this._service = service; this._sessionHubData = new SessionHubData(); + this._raceService = raceService; + this._classService = classService; } /// @@ -105,5 +110,29 @@ namespace SessionCompanion.Controllers }; return info; } + + /// + /// Metoda zwraca podstawowe informacje dla postaci z Templatek + /// + /// liste podstawowych informacji o postaciach z templatki + [HttpGet("getTemplateCharacters")] + public async Task>> GetTemplateCharacters() + { + var races = _raceService.Get().ToList(); + var classes = _classService.Get().ToList(); + try + { + var templateCharacters = await _service.GetCharactersFromTemplate(races, classes); + return templateCharacters.ToList(); + } + catch (Exception e) + { + return new ErrorResponse() + { + StatusCode = 500, + Message = e.Message + }; + } + } } } \ No newline at end of file diff --git a/SessionCompanion/SessionCompanion/Controllers/EquipmentController.cs b/SessionCompanion/SessionCompanion/Controllers/EquipmentController.cs new file mode 100644 index 0000000..ef1fd92 --- /dev/null +++ b/SessionCompanion/SessionCompanion/Controllers/EquipmentController.cs @@ -0,0 +1,69 @@ +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace SessionCompanion.Controllers +{ + using SessionCompanion.Extensions.EitherType; + using SessionCompanion.Services.Interfaces; + using SessionCompanion.ViewModels.ApiResponses; + using SessionCompanion.ViewModels.CharacterArmorViewModels; + using SessionCompanion.ViewModels.CharacterOtherEquipmentViewModels; + using SessionCompanion.ViewModels.CharacterWeaponViewModels; + + [Route("api/character/equipment")] + [ApiController] + public class EquipmentController : Controller + { + private readonly ICharacterArmorService _characterArmorServic; + + private readonly ICharacterOtherEquipmentService _characterOtherEquipmentService; + + private readonly ICharacterWeaponService _characterWeaponService; + + public EquipmentController(ICharacterArmorService characterArmorService, + ICharacterOtherEquipmentService characterOtherEquipmentService, + ICharacterWeaponService characterWeaponService) + { + this._characterArmorServic = characterArmorService; + this._characterOtherEquipmentService = characterOtherEquipmentService; + this._characterWeaponService = characterWeaponService; + } + + /// + /// Zwraca listę pozostałego ekwipunku dla danej postaci + /// + /// Id postaci + /// Lista pozostałego ekwipunku lub błąd + [HttpGet("getOtherEquipment")] + public async Task, ErrorResponse>> GetCharacterOtherEquipment(int characterId) + { + return await this._characterOtherEquipmentService.GetCharacterOtherEquipmentList(characterId); + } + + /// + /// Zwraca listę pancerzy posiadanych przez daną postać + /// + /// Id postaci + /// Lista pozostałego ekwipunku lub błąd + [HttpGet("getArmors")] + public async Task, ErrorResponse>> GetCharacterArmors(int characterId) + { + return await this._characterArmorServic.GetCharacterArmorsTaskList(characterId); + } + + /// + /// Zwraca listę broni posiadanej przez daną postać + /// + /// Id postaci + /// Lista broni lub błąd + [HttpGet("getWeapons")] + public async Task, ErrorResponse>> GetCharacterWeapons(int characterId) + { + return await this._characterWeaponService.GetCharacterWeaponsList(characterId); + } + + } +} diff --git a/SessionCompanion/SessionCompanion/Controllers/UserController.cs b/SessionCompanion/SessionCompanion/Controllers/UserController.cs index 0f8f9d7..7074092 100644 --- a/SessionCompanion/SessionCompanion/Controllers/UserController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/UserController.cs @@ -6,13 +6,16 @@ using System.Threading.Tasks; namespace SessionCompanion.Controllers { using System; + using System.Collections.Generic; + using System.Linq; using System.Security.Policy; using Microsoft.AspNetCore.SignalR; - + using SessionCompanion.Database.Tables; using SessionCompanion.Extensions.EitherType; using SessionCompanion.Hubs; using SessionCompanion.ViewModels.ApiResponses; + using SessionCompanion.ViewModels.CharacterViewModels; using SessionCompanion.ViewModels.UserViewModels; [Route("api/user")] @@ -20,13 +23,15 @@ namespace SessionCompanion.Controllers public class UserController : Controller { private readonly IUserService _service; + private readonly ICharacterService _characterService; private SessionHubData _sessionHubData; - public UserController(IUserService service) + public UserController(IUserService service, ICharacterService characterService) { this._service = service; this._sessionHubData = new SessionHubData(); + this._characterService = characterService; } /// @@ -41,13 +46,31 @@ namespace SessionCompanion.Controllers UserViewModel user = await _service.SearchUserByUsername(userName); if (user != null && user.Password.Equals(password)) - return user.Id; + { + List userCharactersIds = _characterService.Get(c => c.UserId.Equals(user.Id)).Result.Select(c => c.Id).ToList(); - return new ErrorResponse() - { - StatusCode = 403, - Message = "User name not found or incorrect password" - }; + foreach(int characterId in userCharactersIds) + { + if (SessionHubData.ConnectedCharacters.ContainsKey(characterId)) + { + return new ErrorResponse() + { + StatusCode = 403, + Message = "User is already logged in" + }; + } + } + + return user.Id; + } + else + { + return new ErrorResponse() + { + StatusCode = 403, + Message = "User name not found or incorrect password" + }; + } }