feat: 2e save character initial implementation WIP
2e is hidden behind url navigation hiding, so hoping that nobody found it yet. Note: DB migration make this commit a bit risky!
This commit is contained in:
@@ -1,88 +0,0 @@
|
||||
using Kemkas.Web.Db;
|
||||
using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.Services.Identity;
|
||||
using Kemkas.Web.ViewModels;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Kemkas.Web.Services.Character;
|
||||
|
||||
public interface ICharacterPersistenceService
|
||||
{
|
||||
public Task<Guid> StoreNewCharacter(V1Karakter karakter, bool isPublic = false);
|
||||
|
||||
public Task<V1Karakter?> GetCharacterById(Guid id, bool tracking = false);
|
||||
|
||||
public Task<List<CharacterListItemDto>> GetAllCharactersOfUser();
|
||||
|
||||
public Task UpdateCharacter(V1Karakter karakter, bool isPublic = false);
|
||||
}
|
||||
|
||||
public class CharacterPersistenceService(
|
||||
ApplicationDbContext dbContext,
|
||||
ICurrentUserService currentUserService
|
||||
) : ICharacterPersistenceService
|
||||
{
|
||||
|
||||
public async Task<Guid> StoreNewCharacter(V1Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
karakter.OwnerUserId = currentUser?.Id;
|
||||
karakter.Id = Guid.Empty;
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek.Add(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
return karakter.Id;
|
||||
}
|
||||
|
||||
public async Task<V1Karakter?> GetCharacterById(Guid id, bool tracking = false)
|
||||
{
|
||||
IQueryable<V1Karakter> queriable = dbContext.Karakterek.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles);
|
||||
|
||||
queriable = tracking ? queriable.AsTracking() : queriable.AsNoTracking();
|
||||
|
||||
var entity = await queriable
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (entity?.OwnerUserId is null || entity.IsPublic)
|
||||
{
|
||||
return entity;
|
||||
}
|
||||
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
return entity.OwnerUserId == currentUser?.Id ? entity : null;
|
||||
}
|
||||
|
||||
public async Task<List<CharacterListItemDto>> GetAllCharactersOfUser()
|
||||
{
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
if (currentUser is null)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var characters = await dbContext.Karakterek
|
||||
.Where(k => k.OwnerUserId == currentUser.Id)
|
||||
.Select(k => new CharacterListItemDto
|
||||
{
|
||||
Id = k.Id,
|
||||
Name = k.Nev,
|
||||
Szint = k.Szint,
|
||||
Faj = k.Faj.Convert(),
|
||||
Osztaly = k.Osztaly.Convert(),
|
||||
Edition = "1e"
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
return characters;
|
||||
}
|
||||
|
||||
public async Task UpdateCharacter(V1Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek.Attach(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
+23
-23
@@ -3,18 +3,18 @@ using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.Character;
|
||||
namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public interface ICharacterDtoToDbModelService
|
||||
public interface ICharacter1EDtoToDbModelService
|
||||
{
|
||||
public V1Karakter Convert(CharacterDto dto);
|
||||
public V1Karakter Convert(Character1eDto dto);
|
||||
|
||||
public void Update(V1Karakter original, CharacterDto dto);
|
||||
public void Update(V1Karakter original, Character1eDto dto);
|
||||
}
|
||||
|
||||
public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService
|
||||
{
|
||||
public V1Karakter Convert(CharacterDto dto)
|
||||
public V1Karakter Convert(Character1eDto dto)
|
||||
{
|
||||
var karakter = new V1Karakter
|
||||
{
|
||||
@@ -23,8 +23,8 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
Kor = dto.Kor,
|
||||
Jellem = JellemExtensions.Convert(dto.Jellem),
|
||||
Isten = dto.Isten,
|
||||
Faj = FajExtensions.Convert(dto.Faj),
|
||||
Osztaly = OsztalyExtensions.Convert(dto.Osztaly),
|
||||
Faj = FajExtensions.Convert1E(dto.Faj),
|
||||
Osztaly = OsztalyExtensions.Convert1E(dto.Osztaly),
|
||||
Ero = dto.Tulajdonsagok.Ero,
|
||||
Ugyesseg = dto.Tulajdonsagok.Ugy,
|
||||
Egeszseg = dto.Tulajdonsagok.Egs,
|
||||
@@ -32,10 +32,10 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
Bolcsesseg = dto.Tulajdonsagok.Bol,
|
||||
Karizma = dto.Tulajdonsagok.Kar,
|
||||
Szint = dto.Szint,
|
||||
Pajzs = dto.Felszereles.PajzsId,
|
||||
Pancel = dto.Felszereles.PancelId
|
||||
};
|
||||
karakter.KarakterKepzettsegek = ConvertKepzettsegek(dto, karakter);
|
||||
karakter.Pajzs = dto.Felszereles.PajzsId;
|
||||
karakter.Pancel = dto.Felszereles.PancelId;
|
||||
karakter.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V1Felszereles
|
||||
{
|
||||
Karakter = karakter,
|
||||
@@ -47,15 +47,15 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
return karakter;
|
||||
}
|
||||
|
||||
public void Update(V1Karakter original, CharacterDto dto)
|
||||
public void Update(V1Karakter original, Character1eDto dto)
|
||||
{
|
||||
original.Nev = dto.Name;
|
||||
original.Nem = dto.Nem;
|
||||
original.Kor = dto.Kor;
|
||||
original.Jellem = JellemExtensions.Convert(dto.Jellem);
|
||||
original.Isten = dto.Isten;
|
||||
original.Faj = FajExtensions.Convert(dto.Faj);
|
||||
original.Osztaly = OsztalyExtensions.Convert(dto.Osztaly);
|
||||
original.Faj = FajExtensions.Convert1E(dto.Faj);
|
||||
original.Osztaly = OsztalyExtensions.Convert1E(dto.Osztaly);
|
||||
original.Ero = dto.Tulajdonsagok.Ero;
|
||||
original.Ugyesseg = dto.Tulajdonsagok.Ugy;
|
||||
original.Egeszseg = dto.Tulajdonsagok.Egs;
|
||||
@@ -76,7 +76,7 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
}
|
||||
|
||||
// TODO: this is unnecessary duplication of business logic!!
|
||||
private static List<V1Szintlepes> ConvertSzintLepes(CharacterDto dto, V1Karakter karakter)
|
||||
private static List<V1Szintlepes> ConvertSzintLepes(Character1eDto dto, V1Karakter karakter)
|
||||
{
|
||||
if (dto.HpRolls.Count < dto.Szint - 2)
|
||||
{
|
||||
@@ -103,15 +103,15 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
// OsztalySzint = 1,
|
||||
HpRoll = karakter.Osztaly switch // TODO: duplication of logic!!
|
||||
{
|
||||
Osztaly.Barbar => 12,
|
||||
Osztaly.Amazon or Osztaly.Harcos or Osztaly.Kaloz or Osztaly.Ijasz => 10,
|
||||
Osztaly.Pap => 8,
|
||||
Osztaly.Tolvaj => 6,
|
||||
Osztaly.Varazslo or Osztaly.Illuzionista => 4,
|
||||
Osztaly1E.Barbar => 12,
|
||||
Osztaly1E.Amazon or Osztaly1E.Harcos or Osztaly1E.Kaloz or Osztaly1E.Ijasz => 10,
|
||||
Osztaly1E.Pap => 8,
|
||||
Osztaly1E.Tolvaj => 6,
|
||||
Osztaly1E.Varazslo or Osztaly1E.Illuzionista => 4,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(karakter.Osztaly), karakter.Osztaly,
|
||||
"invalid osztaly!")
|
||||
},
|
||||
FegyverSpecializacio = karakter.Osztaly == Osztaly.Harcos ? dto.HarcosSpecializaciok[0] : null,
|
||||
FegyverSpecializacio = karakter.Osztaly == Osztaly1E.Harcos ? dto.HarcosSpecializaciok[0] : null,
|
||||
};
|
||||
|
||||
return Enumerable.Range(2, count: dto.Szint - 1).Select(szint =>
|
||||
@@ -131,13 +131,13 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
}).Prepend(level1).ToList();
|
||||
}
|
||||
|
||||
private static List<V1KarakterKepzettseg> ConvertKepzettsegek(CharacterDto dto, V1Karakter karakter)
|
||||
private static List<V1KarakterKepzettseg> ConvertKepzettsegek(Character1eDto dto, V1Karakter karakter)
|
||||
{
|
||||
var kepzettsegek = dto.Kepzettsegek.Select(x => new V1KarakterKepzettseg
|
||||
{
|
||||
Karakter = karakter,
|
||||
IsTolvajKepzettseg = false,
|
||||
Kepzettseg = KepzettsegExtensions.Convert(x),
|
||||
Kepzettseg = KepzettsegExtensions.Convert1E(x),
|
||||
}).ToList();
|
||||
if (dto.Tolvajkepzettsegek != null)
|
||||
{
|
||||
@@ -145,7 +145,7 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
{
|
||||
Karakter = karakter,
|
||||
IsTolvajKepzettseg = true,
|
||||
Kepzettseg = KepzettsegExtensions.Convert(x),
|
||||
Kepzettseg = KepzettsegExtensions.Convert1E(x),
|
||||
}));
|
||||
}
|
||||
return kepzettsegek;
|
||||
+6
-6
@@ -2,18 +2,18 @@ using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.Character;
|
||||
namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public interface ICharacterDbModelToDtoService
|
||||
{
|
||||
public CharacterDto Convert(V1Karakter entity);
|
||||
public Character1eDto Convert(V1Karakter entity);
|
||||
}
|
||||
|
||||
public class CharacterDbModelToDtoService : ICharacterDbModelToDtoService
|
||||
{
|
||||
public CharacterDto Convert(V1Karakter entity)
|
||||
public Character1eDto Convert(V1Karakter entity)
|
||||
{
|
||||
return new CharacterDto
|
||||
return new Character1eDto
|
||||
{
|
||||
Name = entity.Nev,
|
||||
Nem = entity.Nem,
|
||||
@@ -36,8 +36,8 @@ public class CharacterDbModelToDtoService : ICharacterDbModelToDtoService
|
||||
Szint = entity.Szint,
|
||||
HpRolls = entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Skip(1).Select(x => x.HpRoll).ToList(),
|
||||
TulajdonsagNovelesek = entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.TulajdonsagNoveles).Where(x => x is not null).Cast<Tulajdonsag>().Select(x => x.Convert()).ToList(),
|
||||
HarcosSpecializaciok = entity.Osztaly == Osztaly.Harcos ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast<string>().ToList() : [],
|
||||
KalozKritikus = entity.Osztaly == Osztaly.Kaloz ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast<string>().ToList() : [],
|
||||
HarcosSpecializaciok = entity.Osztaly == Osztaly1E.Harcos ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast<string>().ToList() : [],
|
||||
KalozKritikus = entity.Osztaly == Osztaly1E.Kaloz ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast<string>().ToList() : [],
|
||||
Felszereles = new KarakterFelszerelesDto
|
||||
{
|
||||
PajzsId = entity.Pajzs,
|
||||
+3
-2
@@ -1,6 +1,7 @@
|
||||
using Kemkas.Web.Services.Identity;
|
||||
using Kemkas.Web.Services.Shared;
|
||||
|
||||
namespace Kemkas.Web.Services.Character;
|
||||
namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
@@ -9,7 +10,7 @@ public static class ServiceCollectionExtensions
|
||||
serviceCollection.AddScoped<ICurrentUserService, CurrentUserService>();
|
||||
|
||||
serviceCollection.AddTransient<ICharacterValidationService, CharacterValidationService>();
|
||||
serviceCollection.AddTransient<ICharacterDtoToDbModelService, CharacterDtoToDbModelService>();
|
||||
serviceCollection.AddTransient<ICharacter1EDtoToDbModelService, Character1EDtoToDbModelService>();
|
||||
serviceCollection.AddTransient<ICharacterDbModelToDtoService, CharacterDbModelToDtoService>();
|
||||
serviceCollection.AddScoped<ICharacterPersistenceService, CharacterPersistenceService>();
|
||||
return serviceCollection;
|
||||
+3
-3
@@ -1,15 +1,15 @@
|
||||
using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.Character;
|
||||
namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public interface ICharacterValidationService
|
||||
{
|
||||
public string? Validate(CharacterDto dto);
|
||||
public string? Validate(Character1eDto dto);
|
||||
}
|
||||
|
||||
public class CharacterValidationService : ICharacterValidationService
|
||||
{
|
||||
public string? Validate(CharacterDto dto)
|
||||
public string? Validate(Character1eDto dto)
|
||||
{
|
||||
// TODO: add validation!!
|
||||
return null;
|
||||
@@ -0,0 +1,82 @@
|
||||
using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.SecondEdition.Character;
|
||||
|
||||
public interface ICharacter2EDtoToDbModelService
|
||||
{
|
||||
public V2Karakter Convert(Character2eDto dto);
|
||||
|
||||
public void Update(V2Karakter original, Character2eDto dto);
|
||||
}
|
||||
|
||||
public class Character1EDtoToDbModelService : ICharacter2EDtoToDbModelService
|
||||
{
|
||||
public V2Karakter Convert(Character2eDto dto)
|
||||
{
|
||||
var karakter = new V2Karakter
|
||||
{
|
||||
Nev = dto.Nev,
|
||||
Nem = dto.Nem,
|
||||
Kor = dto.Kor,
|
||||
Isten = dto.Isten,
|
||||
Jellem = JellemExtensions.Convert(dto.Jellem),
|
||||
Faj = FajExtensions.Convert2E(dto.Faj),
|
||||
Ero = dto.Tulajdonsagok.Ero,
|
||||
Ugyesseg = dto.Tulajdonsagok.Ugy,
|
||||
Egeszseg = dto.Tulajdonsagok.Egs,
|
||||
Intelligencia = dto.Tulajdonsagok.Int,
|
||||
Bolcsesseg = dto.Tulajdonsagok.Bol,
|
||||
Karizma = dto.Tulajdonsagok.Kar,
|
||||
Szint = dto.Szint,
|
||||
Pajzs = dto.Felszereles.PancelId,
|
||||
Pancel = dto.Felszereles.PancelId
|
||||
};
|
||||
|
||||
karakter.KarakterKepzettsegek = ConvertKarakterKepzettsegek(dto, karakter);
|
||||
karakter.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V2Felszereles
|
||||
{
|
||||
Karakter = karakter,
|
||||
IsFegyver = true,
|
||||
TargyId = x,
|
||||
}).ToList();
|
||||
karakter.Szintlepesek = dto.Szintlepesek.Select((x, i) => new V2Szintlepes
|
||||
{
|
||||
Karakter = karakter,
|
||||
Osztaly = OsztalyExtensions.Convert2E(x.Osztaly),
|
||||
KarakterSzint = (byte)(i + 1),
|
||||
HpRoll = x.HProll,
|
||||
FegyverSpecializacio = x.HarcosFegyver ?? x.KalozKritikus,
|
||||
TulajdonsagNoveles = x.TulajdonsagNoveles == null ? null : TulajdonsagExtensions.Convert(x.TulajdonsagNoveles),
|
||||
TolvajExtraKepzettseg = x.TolvajExtraKepzettseg == null ? null : KepzettsegExtensions.Convert2E(x.TolvajExtraKepzettseg),
|
||||
}).ToList();
|
||||
|
||||
return karakter;
|
||||
}
|
||||
|
||||
public void Update(V2Karakter original, Character2eDto dto)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private static List<V2KarakterKepzettseg> ConvertKarakterKepzettsegek(Character2eDto dto, V2Karakter karakter)
|
||||
{
|
||||
var kepzettsegek = dto.Kepzettsegek.Select(x => new V2KarakterKepzettseg
|
||||
{
|
||||
Karakter = karakter,
|
||||
IsTolvajKepzettseg = false,
|
||||
Kepzettseg = KepzettsegExtensions.Convert2E(x),
|
||||
}).ToList();
|
||||
if (dto.Tolvajkepzettsegek != null)
|
||||
{
|
||||
kepzettsegek.AddRange(dto.Tolvajkepzettsegek.Select(x => new V2KarakterKepzettseg
|
||||
{
|
||||
Karakter = karakter,
|
||||
IsTolvajKepzettseg = true,
|
||||
Kepzettseg = KepzettsegExtensions.Convert2E(x),
|
||||
}));
|
||||
}
|
||||
return kepzettsegek;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
using Kemkas.Web.Db;
|
||||
using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.Services.Identity;
|
||||
using Kemkas.Web.ViewModels;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Kemkas.Web.Services.Shared;
|
||||
|
||||
public interface ICharacterPersistenceService
|
||||
{
|
||||
public Task<Guid> StoreNewCharacter1E(V1Karakter karakter, bool isPublic = false);
|
||||
|
||||
public Task<Guid> StoreNewCharacter2E(V2Karakter karakter, bool isPublic = false);
|
||||
|
||||
public Task<V1Karakter?> GetCharacter1EById(Guid id, bool tracking = false);
|
||||
|
||||
public Task<V2Karakter?> GetCharacter2EById(Guid id, bool tracking = false);
|
||||
|
||||
public Task<List<CharacterListItemDto>> GetAllCharactersOfUser();
|
||||
|
||||
public Task UpdateCharacter1E(V1Karakter karakter, bool isPublic = false);
|
||||
|
||||
public Task UpdateCharacter2E(V2Karakter karakter, bool isPublic = false);
|
||||
}
|
||||
|
||||
public class CharacterPersistenceService(
|
||||
ApplicationDbContext dbContext,
|
||||
ICurrentUserService currentUserService
|
||||
) : ICharacterPersistenceService
|
||||
{
|
||||
|
||||
public async Task<Guid> StoreNewCharacter1E(V1Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
karakter.OwnerUserId = currentUser?.Id;
|
||||
karakter.Id = Guid.Empty;
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek.Add(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
return karakter.Id;
|
||||
}
|
||||
|
||||
public async Task<Guid> StoreNewCharacter2E(V2Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
karakter.OwnerUserId = currentUser?.Id;
|
||||
karakter.Id = Guid.Empty;
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek2E.Add(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
return karakter.Id;
|
||||
}
|
||||
|
||||
public async Task<V1Karakter?> GetCharacter1EById(Guid id, bool tracking = false)
|
||||
{
|
||||
IQueryable<V1Karakter> queriable = dbContext.Karakterek.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles);
|
||||
|
||||
queriable = tracking ? queriable.AsTracking() : queriable.AsNoTracking();
|
||||
|
||||
var entity = await queriable
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (entity?.OwnerUserId is null || entity.IsPublic)
|
||||
{
|
||||
return entity;
|
||||
}
|
||||
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
return entity.OwnerUserId == currentUser?.Id ? entity : null;
|
||||
}
|
||||
|
||||
public async Task<V2Karakter?> GetCharacter2EById(Guid id, bool tracking = false)
|
||||
{
|
||||
IQueryable<V2Karakter> queriable = dbContext.Karakterek2E.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles);
|
||||
|
||||
queriable = tracking ? queriable.AsTracking() : queriable.AsNoTracking();
|
||||
|
||||
var entity = await queriable
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (entity?.OwnerUserId is null || entity.IsPublic)
|
||||
{
|
||||
return entity;
|
||||
}
|
||||
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
return entity.OwnerUserId == currentUser?.Id ? entity : null;
|
||||
}
|
||||
|
||||
public async Task<List<CharacterListItemDto>> GetAllCharactersOfUser()
|
||||
{
|
||||
var currentUser = await currentUserService.GetCurrentUser();
|
||||
if (currentUser is null)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var characters = await dbContext.Karakterek
|
||||
.Where(k => k.OwnerUserId == currentUser.Id)
|
||||
.Select(k => new CharacterListItemDto
|
||||
{
|
||||
Id = k.Id,
|
||||
Name = k.Nev,
|
||||
Szint = k.Szint,
|
||||
Faj = k.Faj.Convert(),
|
||||
Osztaly = k.Osztaly.Convert(),
|
||||
Edition = "1e"
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
var characters2E = await dbContext.Karakterek2E
|
||||
.Where(k => k.OwnerUserId == currentUser.Id)
|
||||
.Select(k => new CharacterListItemDto
|
||||
{
|
||||
Id = k.Id,
|
||||
Name = k.Nev,
|
||||
Szint = k.Szint,
|
||||
Faj = k.Faj.Convert(),
|
||||
Osztaly = "TODO!", // TODO: support for multiclass characters
|
||||
Edition = "2e"
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
characters.AddRange(characters2E);
|
||||
|
||||
return characters;
|
||||
}
|
||||
|
||||
public async Task UpdateCharacter1E(V1Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek.Attach(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task UpdateCharacter2E(V2Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek2E.Attach(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user