using DbController; using System.Text; using Tabletop.Core.Filters; using Tabletop.Core.Models; namespace Tabletop.Core.Services { public class TemplateService : IModelService { public async Task CreateAsync(Template input, IDbController dbController, CancellationToken cancellationToken = default) { string sql = $@"INSERT INTO Templates ( UserId, FractionId, Name, Force, UsedForce ) VALUES ( @USER_ID, @FRACTION_ID, @NAME, @FORCE, @USED_FORCE ); {dbController.GetLastIdSql()}"; input.TemplateId = await dbController.GetFirstAsync(sql, input.GetParameters(), cancellationToken); foreach(var unit in input.Units) { await UnitService.CreateTemplateUnitAsync(input.TemplateId, unit, dbController, cancellationToken); } } public async Task DeleteAsync(Template input, IDbController dbController, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UnitService.DeleteTemplateUnitsAsync(input.TemplateId, dbController, cancellationToken); string sql = "DELETE FROM Templates WHERE TemplateId = @TEMPLATE_ID"; await dbController.QueryAsync(sql, new { TEMPLATE_ID = input.TemplateId }, cancellationToken); } public async Task GetAsync(int templateId, IDbController dbController, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); string sql = @"SELECT * FROM Templates WHERE TemplateId = @TEMPLATE_ID"; var template = await dbController.GetFirstAsync