using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using ZeroFramework.DeviceCenter.Application.Models.ResourceGroups; using ZeroFramework.DeviceCenter.Application.PermissionProviders; using ZeroFramework.DeviceCenter.Application.Services.Generics; using ZeroFramework.DeviceCenter.Application.Services.ResourceGroups; namespace ZeroFramework.DeviceCenter.API.Controllers { [Route("api/[controller]")] [ApiController] public class ResourceGroupsController(IResourceGroupApplicationService resourceGroupApplicationService) : ControllerBase { private readonly IResourceGroupApplicationService _resourceGroupApplicationService = resourceGroupApplicationService; [HttpGet] [Authorize(ResourceGroupPermissions.ResourceGroups.Default)] public async Task> GetResourceGroups([FromQuery] ResourceGroupPagedRequestModel model) { return await _resourceGroupApplicationService.GetListAsync(model); } [HttpGet("{id:guid}")] [Authorize(ResourceGroupPermissions.ResourceGroups.Default)] public async Task GetResourceGroup(Guid id) { return await _resourceGroupApplicationService.GetAsync(id); } [HttpPost] [Authorize(ResourceGroupPermissions.ResourceGroups.Create)] public async Task PostResourceGroup([FromBody] ResourceGroupCreateRequestModel model) { return await _resourceGroupApplicationService.CreateAsync(model); } [HttpPut("{id:guid}")] [Authorize(ResourceGroupPermissions.ResourceGroups.Edit)] public async Task PutResourceGroup(Guid id, [FromBody] ResourceGroupUpdateRequestModel model) { model.Id = id; return await _resourceGroupApplicationService.UpdateAsync(id, model); } [HttpDelete("{id:guid}")] [Authorize(ResourceGroupPermissions.ResourceGroups.Delete)] public async Task DeleteResourceGroup(Guid id) { await _resourceGroupApplicationService.DeleteAsync(id); } } }