mirror of
https://github.com/morbalint/kemkas-backend.git
synced 2026-07-17 21:23:46 +00:00
203 lines
7.6 KiB
C#
203 lines
7.6 KiB
C#
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(Karakter2eDto dto);
|
|
|
|
public void Update(V2Karakter original, Karakter2eDto dto);
|
|
}
|
|
|
|
public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService
|
|
{
|
|
public V2Karakter Convert(Karakter2eDto 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.PajzsId,
|
|
Pancel = dto.Felszereles.PancelId,
|
|
AranyTaller = dto.Felszereles.AranyTaller,
|
|
ElektrumTaller = dto.Felszereles.ElektrumTaller,
|
|
EzustTaller = dto.Felszereles.EzustTaller,
|
|
};
|
|
|
|
karakter.KarakterKepzettsegek = ConvertKarakterKepzettsegek(dto, karakter);
|
|
var felszereles = dto.Felszereles.Fegyverek.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = karakter,
|
|
IsFegyver = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}).ToList();
|
|
felszereles.AddRange(dto.Felszereles.Viselt.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = karakter,
|
|
IsViselt = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
felszereles.AddRange(dto.Felszereles.Cipelt.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = karakter,
|
|
IsCipelt = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
felszereles.AddRange(dto.Felszereles.Aprosagok.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = karakter,
|
|
IsAprosag = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
karakter.Felszereles = felszereles;
|
|
|
|
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();
|
|
|
|
karakter.Varazslatok = dto.Varazslatok?.Select(v => new V2KarakterVarazslat
|
|
{
|
|
Karakter = karakter,
|
|
Bekeszitve = v.Bekeszitve,
|
|
VarazslatId = v.VarazslatId,
|
|
}).ToHashSet() ?? [];
|
|
|
|
return karakter;
|
|
}
|
|
|
|
public void Update(V2Karakter original, Karakter2eDto dto)
|
|
{
|
|
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.AranyTaller = dto.Felszereles.AranyTaller;
|
|
original.ElektrumTaller = dto.Felszereles.ElektrumTaller;
|
|
original.EzustTaller = dto.Felszereles.EzustTaller;
|
|
|
|
original.KarakterKepzettsegek = ConvertKarakterKepzettsegek(dto, original);
|
|
var felszereles = dto.Felszereles.Fegyverek.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = original,
|
|
IsFegyver = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}).ToList();
|
|
felszereles.AddRange(dto.Felszereles.Viselt.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = original,
|
|
IsViselt = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
felszereles.AddRange(dto.Felszereles.Cipelt.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = original,
|
|
IsCipelt = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
felszereles.AddRange(dto.Felszereles.Aprosagok.Select(x => new V2Felszereles
|
|
{
|
|
Karakter = original,
|
|
IsAprosag = true,
|
|
TargyId = x.Id,
|
|
Count = x.Count,
|
|
}));
|
|
original.Felszereles = felszereles;
|
|
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();
|
|
|
|
if (dto.Varazslatok == null)
|
|
{
|
|
original.Varazslatok = new HashSet<V2KarakterVarazslat>();
|
|
}
|
|
else
|
|
{
|
|
var dtoVarazslatok = dto.Varazslatok.ToList();
|
|
var toAdd = dtoVarazslatok.Where(v => original.Varazslatok.Any(x => x.VarazslatId == v.VarazslatId))
|
|
.Select(v => new V2KarakterVarazslat
|
|
{
|
|
VarazslatId = v.VarazslatId,
|
|
Bekeszitve = v.Bekeszitve,
|
|
}).ToList();
|
|
var toUpdate = original.Varazslatok
|
|
.Select(x =>
|
|
{
|
|
var dtoVarazslat = dtoVarazslatok.FirstOrDefault(v => v.VarazslatId == x.VarazslatId);
|
|
return (dbVarazslat: x, dtoVarazslat);
|
|
})
|
|
.Where(x => x.dtoVarazslat != null)
|
|
.Select(x =>
|
|
{
|
|
x.dbVarazslat.Bekeszitve = x.dtoVarazslat!.Bekeszitve;
|
|
return x.dbVarazslat;
|
|
})
|
|
.ToList();
|
|
original.Varazslatok = toAdd.Concat(toUpdate).ToHashSet();
|
|
}
|
|
}
|
|
|
|
private static List<V2KarakterKepzettseg> ConvertKarakterKepzettsegek(Karakter2eDto 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;
|
|
}
|
|
} |