// To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD
        public async Task <IActionResult> OnPostAsync(int roomNumber, int dungeonID)
        {
            AddedMessage = "";

            // get enemy ids which are already associated with this room
            var taken_enemy_ids = await _context.LootInRooms
                                  .Where(lir => (lir.DungeonID == dungeonID && lir.RoomNum == roomNumber))
                                  .Select(lir => lir.LootID)
                                  .ToListAsync();

            // get enemyInSets which are associated with the chosen set but not with an enemy in the previous list
            var liss = await _context.LootInSets
                       .Where(lis => (lis.LootSetID == LootSetID && !taken_enemy_ids.Contains(lis.LootID)))
                       .Include(lis => lis.Loot)
                       .ToListAsync();

            // add set
            // foreach lis
            // create a copy lir

            // for each enemy in the set
            foreach (LootInSet lis in liss)
            {
                // make a new LIR
                LootInRoom emptyLIR = new LootInRoom();

                // link LIR to proper room
                emptyLIR.DungeonID = dungeonID;
                emptyLIR.RoomNum   = roomNumber;

                // copy data from lis
                emptyLIR.LootID      = lis.LootID;
                emptyLIR.Count       = lis.Count;
                emptyLIR.Name        = lis.Name;
                emptyLIR.Description = lis.Description;

                // add LIR to database
                _context.LootInRooms.Add(emptyLIR);
                await _context.SaveChangesAsync();

                AddedMessage += $"Added {(lis.Name == null ? lis.Loot.Name : lis.Name)} x{lis.Count}\n";
            }
            // remove trailing newline
            AddedMessage.Trim('\n');

            // return to adding page
            return(RedirectToAction("./AddLootSet",
                                    new { roomNumber, dungeonID, addedMessage = AddedMessage }));
        }
Beispiel #2
0
        // To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD
        public async Task <IActionResult> OnPostAsync(int roomNumber, int dungeonID)
        {
            AddedMessage = "";

            // get enemy ids which are already associated with this room
            var taken_enemy_ids = await _context.EnemyInRooms
                                  .Where(eir => (eir.DungeonID == dungeonID && eir.RoomNum == roomNumber))
                                  .Select(eir => eir.EnemyID)
                                  .ToListAsync();

            // get enemyInSets which are associated with the chosen set but not with an enemy in the previous list
            var eiss = await _context.EnemyInSets
                       .Where(eis => (eis.EnemySetID == EnemySetID && !taken_enemy_ids.Contains(eis.EnemyID)))
                       .Include(eis => eis.Enemy)
                       .ToListAsync();

            // add set
            // foreach eis
            // create a copy eir

            // for each enemy in the set
            foreach (EnemyInSet eis in eiss)
            {
                // make a new EIR
                EnemyInRoom emptyEIR = new EnemyInRoom();

                // link EIR to proper room
                emptyEIR.DungeonID = dungeonID;
                emptyEIR.RoomNum   = roomNumber;

                // copy data from eis
                emptyEIR.EnemyID     = eis.EnemyID;
                emptyEIR.Count       = eis.Count;
                emptyEIR.Name        = eis.Name;
                emptyEIR.Description = eis.Description;

                // add EIR to database
                _context.EnemyInRooms.Add(emptyEIR);
                await _context.SaveChangesAsync();

                AddedMessage += $"Added {(eis.Name == null ? eis.Enemy.Name : eis.Name)} x{eis.Count}\n";
            }
            // remove trailing newline
            AddedMessage.Trim('\n');

            // return to adding page
            return(RedirectToAction("./AddEnemySet",
                                    new { roomNumber, dungeonID, saveChangesError = true }));
        }