add remove tactic route
continuous-integration/drone/push Build is passing Details

shared-tactic
maxime 1 year ago
parent aab1eb74a2
commit 6ae765733a

@ -160,4 +160,18 @@ public class TacticController(ITacticService service, IContextAccessor accessor)
var userId = accessor.CurrentUserId(HttpContext);
return new CanEditResponse(await service.IsOwnerOf(userId, tacticId));
}
[HttpDelete("/tactics/{tacticId:int}")]
[Authorize]
public async Task<IActionResult> RemoveTactic(int tacticId)
{
var userId = accessor.CurrentUserId(HttpContext);
if (!await service.IsOwnerOf(userId, tacticId))
{
return Unauthorized();
}
return await service.RemoveTactic(tacticId) ? Ok() : NotFound();
}
}

@ -195,4 +195,15 @@ public class DbTacticService(AppContext.AppContext context) : ITacticService
context.SharedTactics.Remove(sharedTactic);
return await context.SaveChangesAsync() > 0;
}
public async Task<bool> RemoveTactic(int tacticId)
{
var removed = await context.Tactics.Where(t => t.Id == tacticId).ExecuteDeleteAsync() > 0;
if (!removed)
return false;
await context.TacticSteps.Where(s => s.TacticId == tacticId).ExecuteDeleteAsync();
return true;
}
}

@ -98,4 +98,5 @@ public interface ITacticService
/// <returns>A task that represents the asynchronous operation. The task result contains a boolean indicating whether the removal was successful.</returns>
Task<bool> RemoveTacticStep(int tacticId, int stepId);
Task<bool> RemoveTactic(int tacticId);
}
Loading…
Cancel
Save