Lots of additions and restructuring

This commit is contained in:
2021-10-30 21:58:43 -04:00
parent 9cf11e982f
commit 20cac8c378
37 changed files with 4465 additions and 117 deletions

View File

@@ -0,0 +1,27 @@
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using TOOHUCardAPI.Data.Models;
namespace TOOHUCardAPI.Data.Repositories
{
public class CardRepository
{
private readonly AppDbContext _context;
public CardRepository(AppDbContext context)
{
_context = context;
}
public async Task<Card> GetCardByItemCode(string itemCode, bool allowNull = false)
{
Card card = await _context.Cards.FirstOrDefaultAsync(card => card.ItemCode == itemCode);
if (card == null && !allowNull)
{
throw new InvalidCardException();
}
return card;
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using TOOHUCardAPI.Data.Models;
@@ -20,46 +21,56 @@ namespace TOOHUCardAPI.Data.Repositories
private IQueryable<User> GetAllUsersQuery()
{
return _appDbContext.Users.Include(u => u.EncodedCardGroups).AsQueryable();
return _appDbContext.Users
.Include(u => u.EncodedCardGroups)
.Include(u => u.CardLevels)
.ThenInclude(cl => cl.Card)
.AsSingleQuery()
.AsQueryable();
}
public User GetUser(string steamId)
public async Task<User> GetUser(string steamId, bool allowNull = false)
{
return GetAllUsersQuery().FirstOrDefault(user => user.SteamId.Equals(steamId));
User user = await GetAllUsersQuery().FirstOrDefaultAsync(user => user.SteamId.Equals(steamId));
if (user == null && !allowNull)
{
throw new InvalidUserException();
}
return user;
}
public User CreateUser(string steamId)
public async Task<User> CreateUser(string steamId)
{
User user = new User()
{
SteamId = steamId,
Vip = true,
EndTime = DateTime.MaxValue,
LevelList = string.Empty,
PetLevel = 1,
EncodedCardGroups = new List<EncodedCardGroup>()
};
_appDbContext.Users.Add(user);
_appDbContext.SaveChanges();
await _appDbContext.Users.AddAsync(user);
await _appDbContext.SaveChangesAsync();
return user;
}
public User UpdateUser(User user)
public async Task<User> UpdateUser(User user)
{
var trackedUser = GetAllUsersQuery().FirstOrDefault(u => u.SteamId == user.SteamId);
if (trackedUser == default)
{
return trackedUser;
return null;
}
_appDbContext.Update(user);
_appDbContext.SaveChanges();
await _appDbContext.SaveChangesAsync();
return user;
}
public User GetOrCreateUser(string steamId)
public async Task<User> GetOrCreateUser(string steamId)
{
User user = GetUser(steamId) ?? CreateUser(steamId);
User user = await GetUser(steamId, true) ?? await CreateUser(steamId);
return user;
}
}