using LightlessSync.API.Dto.Group; using LightlessSync.API.Routes; using LightlessSyncShared.Data; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace LightlessSyncServer.Controllers; [Route(LightlessAuth.Group)] [Authorize(Policy = "Internal")] public class GroupController : Controller { protected readonly ILogger Logger; protected readonly IDbContextFactory LightlessDbContextFactory; public GroupController(ILogger logger, IDbContextFactory lightlessDbContext) { Logger = logger; LightlessDbContextFactory = lightlessDbContext; } [Route(LightlessAuth.Disable_Profile)] [HttpPost] public async Task DisableGroupProfile([FromBody] GroupProfileAvailabilityRequest request) { using var dbContext = await LightlessDbContextFactory.CreateDbContextAsync(); Logger.LogInformation("Disabling profile for group with GID {GID}", request.GID); var group = await dbContext.GroupProfiles.FirstOrDefaultAsync(f => f.GroupGID == request.GID); if (group != null) { group.ProfileDisabled = true; } await dbContext.SaveChangesAsync(); } [Route(LightlessAuth.Enable_Profile)] [HttpPost] public async Task EnableGroupProfile([FromBody] GroupProfileAvailabilityRequest request) { using var dbContext = await LightlessDbContextFactory.CreateDbContextAsync(); Logger.LogInformation("Disabling profile for group with GID {GID}", request.GID); var group = await dbContext.GroupProfiles.FirstOrDefaultAsync(f => f.GroupGID == request.GID); if (group != null) { group.ProfileDisabled = false; } await dbContext.SaveChangesAsync(); } }