mirror of
https://github.com/morbalint/kemkas.git
synced 2026-07-18 03:13:46 +00:00
feat 2e save to DB
not fully tested, but seems to work overall
This commit is contained in:
@@ -4,12 +4,12 @@ using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public interface ICharacterDbModelToDtoService
|
||||
public interface ICharacterDbModelToDto1EService
|
||||
{
|
||||
public Character1eDto Convert(V1Karakter entity);
|
||||
}
|
||||
|
||||
public class CharacterDbModelToDtoService : ICharacterDbModelToDtoService
|
||||
public class CharacterDbModelToDto1EService : ICharacterDbModelToDto1EService
|
||||
{
|
||||
public Character1eDto Convert(V1Karakter entity)
|
||||
{
|
||||
|
||||
@@ -5,13 +5,13 @@ namespace Kemkas.Web.Services.FirstEdition.Character;
|
||||
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddCharacterServices(this IServiceCollection serviceCollection)
|
||||
public static IServiceCollection AddCharacter1EServices(this IServiceCollection serviceCollection)
|
||||
{
|
||||
serviceCollection.AddScoped<ICurrentUserService, CurrentUserService>();
|
||||
|
||||
serviceCollection.AddTransient<ICharacterValidationService, CharacterValidationService>();
|
||||
serviceCollection.AddTransient<ICharacter1EDtoToDbModelService, Character1EDtoToDbModelService>();
|
||||
serviceCollection.AddTransient<ICharacterDbModelToDtoService, CharacterDbModelToDtoService>();
|
||||
serviceCollection.AddTransient<ICharacterDbModelToDto1EService, CharacterDbModelToDto1EService>();
|
||||
serviceCollection.AddScoped<ICharacterPersistenceService, CharacterPersistenceService>();
|
||||
return serviceCollection;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ public interface ICharacter2EDtoToDbModelService
|
||||
public void Update(V2Karakter original, Character2eDto dto);
|
||||
}
|
||||
|
||||
public class Character1EDtoToDbModelService : ICharacter2EDtoToDbModelService
|
||||
public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService
|
||||
{
|
||||
public V2Karakter Convert(Character2eDto dto)
|
||||
{
|
||||
@@ -57,7 +57,38 @@ public class Character1EDtoToDbModelService : ICharacter2EDtoToDbModelService
|
||||
|
||||
public void Update(V2Karakter original, Character2eDto dto)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
original.Nev = dto.Nev;
|
||||
original.Nem = dto.Nem;
|
||||
original.Kor = dto.Kor;
|
||||
original.Isten = dto.Isten;
|
||||
original.Jellem = JellemExtensions.Convert(dto.Jellem);
|
||||
original.Faj = FajExtensions.Convert2E(dto.Faj);
|
||||
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 = ConvertKarakterKepzettsegek(dto, original);
|
||||
original.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V2Felszereles
|
||||
{
|
||||
Karakter = original,
|
||||
IsFegyver = true,
|
||||
TargyId = x,
|
||||
}).ToList();
|
||||
original.Szintlepesek = dto.Szintlepesek.Select((x, i) => new V2Szintlepes
|
||||
{
|
||||
Karakter = original,
|
||||
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();
|
||||
}
|
||||
|
||||
private static List<V2KarakterKepzettseg> ConvertKarakterKepzettsegek(Character2eDto dto, V2Karakter karakter)
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
using Kemkas.Web.Db.Enums;
|
||||
using Kemkas.Web.Db.Models;
|
||||
using Kemkas.Web.ViewModels;
|
||||
|
||||
namespace Kemkas.Web.Services.SecondEdition.Character;
|
||||
|
||||
public interface ICharacterDbModelToDto2EService
|
||||
{
|
||||
public Character2eDto Convert(V2Karakter entity);
|
||||
}
|
||||
|
||||
public class CharacterDbModelToDto2EService : ICharacterDbModelToDto2EService
|
||||
{
|
||||
public Character2eDto Convert(V2Karakter entity)
|
||||
{
|
||||
return new Character2eDto
|
||||
{
|
||||
Nev = entity.Nev,
|
||||
Nem = entity.Nem,
|
||||
Kor = entity.Kor,
|
||||
Jellem = entity.Jellem.Convert(),
|
||||
Isten = entity.Isten,
|
||||
Faj = entity.Faj.Convert(),
|
||||
Tulajdonsagok = new KarakterTulajdonsagokDto
|
||||
{
|
||||
Ero = entity.Ero,
|
||||
Ugy = entity.Ugyesseg,
|
||||
Egs = entity.Egeszseg,
|
||||
Int = entity.Intelligencia,
|
||||
Bol = entity.Bolcsesseg,
|
||||
Kar = entity.Karizma,
|
||||
},
|
||||
Kepzettsegek = entity.KarakterKepzettsegek.Where(x => !x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(),
|
||||
Tolvajkepzettsegek = entity.KarakterKepzettsegek.Where(x => x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(),
|
||||
Szint = entity.Szint,
|
||||
Felszereles = new KarakterFelszerelesDto
|
||||
{
|
||||
PajzsId = entity.Pajzs,
|
||||
PancelId = entity.Pancel,
|
||||
FegyverIds = entity.Felszereles.Where(x => x.IsFegyver).Select(x => x.TargyId).ToList(),
|
||||
},
|
||||
IsPublic = entity.IsPublic,
|
||||
Szintlepesek = entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(sz => new Szintlepes
|
||||
{
|
||||
Osztaly = sz.Osztaly.Convert(),
|
||||
KalozKritikus = sz.Osztaly == Osztaly2E.Tengeresz ? sz.FegyverSpecializacio : null,
|
||||
HarcosFegyver = sz.Osztaly == Osztaly2E.Harcos ? sz.FegyverSpecializacio : null,
|
||||
TulajdonsagNoveles = sz.TulajdonsagNoveles?.Convert(),
|
||||
HProll = sz.HpRoll,
|
||||
TolvajExtraKepzettseg = sz.TolvajExtraKepzettseg?.Convert()
|
||||
}).ToList()
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Kemkas.Web.Services.SecondEdition.Character;
|
||||
|
||||
public static class ServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddCharacter2EServices(this IServiceCollection serviceCollection)
|
||||
{
|
||||
serviceCollection.AddTransient<ICharacter2EDtoToDbModelService, Character2EDtoToDbModelService>();
|
||||
serviceCollection.AddTransient<ICharacterDbModelToDto2EService, CharacterDbModelToDto2EService>();
|
||||
return serviceCollection;
|
||||
}
|
||||
}
|
||||
@@ -54,13 +54,13 @@ public class CharacterPersistenceService(
|
||||
|
||||
public async Task<V1Karakter?> GetCharacter1EById(Guid id, bool tracking = false)
|
||||
{
|
||||
IQueryable<V1Karakter> queriable = dbContext.Karakterek.Include(x => x.KarakterKepzettsegek)
|
||||
IQueryable<V1Karakter> queryable = dbContext.Karakterek.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles);
|
||||
|
||||
queriable = tracking ? queriable.AsTracking() : queriable.AsNoTracking();
|
||||
queryable = tracking ? queryable.AsTracking() : queryable.AsNoTracking();
|
||||
|
||||
var entity = await queriable
|
||||
var entity = await queryable
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (entity?.OwnerUserId is null || entity.IsPublic)
|
||||
@@ -74,13 +74,13 @@ public class CharacterPersistenceService(
|
||||
|
||||
public async Task<V2Karakter?> GetCharacter2EById(Guid id, bool tracking = false)
|
||||
{
|
||||
IQueryable<V2Karakter> queriable = dbContext.Karakterek2E.Include(x => x.KarakterKepzettsegek)
|
||||
IQueryable<V2Karakter> queryable = dbContext.Karakterek2E.Include(x => x.KarakterKepzettsegek)
|
||||
.Include(x => x.Szintlepesek)
|
||||
.Include(x => x.Felszereles);
|
||||
|
||||
queriable = tracking ? queriable.AsTracking() : queriable.AsNoTracking();
|
||||
queryable = tracking ? queryable.AsTracking() : queryable.AsNoTracking();
|
||||
|
||||
var entity = await queriable
|
||||
var entity = await queryable
|
||||
.FirstOrDefaultAsync(x => x.Id == id);
|
||||
|
||||
if (entity?.OwnerUserId is null || entity.IsPublic)
|
||||
@@ -113,19 +113,28 @@ public class CharacterPersistenceService(
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
var characters2E = await dbContext.Karakterek2E
|
||||
var characters2ERaw = await dbContext.Karakterek2E.Include(k => k.Szintlepesek)
|
||||
.Where(k => k.OwnerUserId == currentUser.Id)
|
||||
.Select(k => new CharacterListItemDto
|
||||
.Select(k => new
|
||||
{
|
||||
Id = k.Id,
|
||||
Name = k.Nev,
|
||||
Szint = k.Szint,
|
||||
Faj = k.Faj.Convert(),
|
||||
Osztaly = "TODO!", // TODO: support for multiclass characters
|
||||
Edition = "2e"
|
||||
k.Id,
|
||||
k.Nev,
|
||||
k.Szint,
|
||||
k.Faj,
|
||||
Osztalyok = k.Szintlepesek.Select(x => x.Osztaly).ToList(),
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
var characters2E = characters2ERaw.Select(k => new CharacterListItemDto
|
||||
{
|
||||
Id = k.Id,
|
||||
Name = k.Nev,
|
||||
Szint = k.Szint,
|
||||
Faj = k.Faj.Convert(),
|
||||
Osztaly = string.Join('/', k.Osztalyok.Select(o => o.Convert())),
|
||||
Edition = "2e"
|
||||
});
|
||||
|
||||
characters.AddRange(characters2E);
|
||||
|
||||
return characters;
|
||||
|
||||
Reference in New Issue
Block a user