mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-17 19:03:46 +00:00
update character
This commit is contained in:
@@ -8,6 +8,8 @@ namespace Kemkas.Web.Services.Character;
|
||||
public interface ICharacterDtoToDbModelService
|
||||
{
|
||||
public V1Karakter Convert(CharacterDto dto);
|
||||
|
||||
public void Update(V1Karakter original, CharacterDto dto);
|
||||
}
|
||||
|
||||
public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
@@ -45,6 +47,34 @@ public class CharacterDtoToDbModelService : ICharacterDtoToDbModelService
|
||||
return karakter;
|
||||
}
|
||||
|
||||
public void Update(V1Karakter original, CharacterDto 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.Ero = dto.Tulajdonsagok.Ero;
|
||||
original.Ugyesseg = dto.Tulajdonsagok.Ugy;
|
||||
original.Egeszseg = dto.Tulajdonsagok.Egs;
|
||||
original.Intelligencia = dto.Tulajdonsagok.Int;
|
||||
original.Bolcsesseg = dto.Tulajdonsagok.Bol;
|
||||
original.Karizma = dto.Tulajdonsagok.Kar;
|
||||
original.Szint = dto.Szint;
|
||||
original.Pajzs = dto.Felszereles.PajzsId;
|
||||
original.Pancel = dto.Felszereles.PancelId;
|
||||
original.KarakterKepzettsegek = ConvertKepzettsegek(dto, original);
|
||||
original.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V1Felszereles
|
||||
{
|
||||
Karakter = original,
|
||||
IsFegyver = true,
|
||||
Name = x,
|
||||
}).ToList();
|
||||
original.Szintlepesek = ConvertSzintLepes(dto, original);
|
||||
}
|
||||
|
||||
// TODO: this is unnecessary duplication of business logic!!
|
||||
private static List<V1Szintlepes> ConvertSzintLepes(CharacterDto dto, V1Karakter karakter)
|
||||
{
|
||||
|
||||
@@ -11,9 +11,11 @@ public interface ICharacterPersistenceService
|
||||
{
|
||||
public Task<Guid> StoreNewCharacter(V1Karakter karakter, bool isPublic = false);
|
||||
|
||||
public Task<V1Karakter?> GetCharacterById(Guid id);
|
||||
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(
|
||||
@@ -33,12 +35,15 @@ public class CharacterPersistenceService(
|
||||
return karakter.Id;
|
||||
}
|
||||
|
||||
public async Task<V1Karakter?> GetCharacterById(Guid id)
|
||||
public async Task<V1Karakter?> GetCharacterById(Guid id, bool tracking = false)
|
||||
{
|
||||
var entity = await dbContext.Karakterek
|
||||
.Include(x => x.KarakterKepzettsegek)
|
||||
IQueryable<V1Karakter> queriable = dbContext.Karakterek.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles)
|
||||
.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)
|
||||
@@ -72,4 +77,11 @@ public class CharacterPersistenceService(
|
||||
|
||||
return characters;
|
||||
}
|
||||
|
||||
public async Task UpdateCharacter(V1Karakter karakter, bool isPublic = false)
|
||||
{
|
||||
karakter.IsPublic = isPublic;
|
||||
dbContext.Karakterek.Attach(karakter);
|
||||
await dbContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user