using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace MarcoBMS.Services.Controllers { [Route("api/[controller]")] [ApiController] // [Authorize] public class FeatureController : ControllerBase { private readonly ApplicationDbContext _context; public FeatureController(ApplicationDbContext context) { _context = context; } private ICollection GetFeaturePermissionVMs(Feature model) { ICollection features = []; if (model.FeaturePermissions != null) { foreach (FeaturePermission permission in model.FeaturePermissions) { FeaturePermissionVM item = permission.ToFeaturePermissionVMFromFeaturePermission(); features.Add(item); } } return features; } [HttpGet] public async Task GetAllFeatures() { var roles = await _context.Features.Include("FeaturePermissions").Include("Module").ToListAsync(); var rolesVM = roles.Select(c => new FeatureVM() { Id = c.Id, Name = c.Name, Description = c.Description, FeaturePermissions = GetFeaturePermissionVMs(c), ModuleId = c.ModuleId, ModuleName = c.Module != null ? c.Module.Name : string.Empty, IsActive = c.IsActive }); return Ok(ApiResponse.SuccessResponse(rolesVM, "Success.", 200)); } } }