Added the total page and count in list APis for documnets
This commit is contained in:
parent
067da422c2
commit
830a9526dd
11
Marco.Pms.Model/Dtos/Util/ProjctLevelPermissionDto.cs
Normal file
11
Marco.Pms.Model/Dtos/Util/ProjctLevelPermissionDto.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using Marco.Pms.Model.Dtos.Roles;
|
||||
|
||||
namespace Marco.Pms.Model.Dtos.Util
|
||||
{
|
||||
public class ProjctLevelPermissionDto
|
||||
{
|
||||
public Guid EmployeeId { get; set; }
|
||||
public Guid ProjectId { get; set; }
|
||||
public FeaturesPermissionDto? Permission { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
using Marco.Pms.Model.Employees;
|
||||
using Marco.Pms.Model.Projects;
|
||||
using Marco.Pms.Model.Utilities;
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Marco.Pms.Model.Entitlements
|
||||
{
|
||||
public class ProjectLevelPermissionMapping : TenantRelation
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid EmployeeId { get; set; }
|
||||
|
||||
[ValidateNever]
|
||||
[ForeignKey("EmployeeId")]
|
||||
public Employee? Employee { get; set; }
|
||||
public Guid ProjectId { get; set; }
|
||||
|
||||
[ValidateNever]
|
||||
[ForeignKey("ProjectId")]
|
||||
public Project? Project { get; set; }
|
||||
public Guid PermissionId { get; set; }
|
||||
|
||||
[ValidateNever]
|
||||
[ForeignKey("PermissionId")]
|
||||
public FeaturePermission? Permission { get; set; }
|
||||
}
|
||||
}
|
@ -186,6 +186,9 @@ namespace Marco.Pms.Services.Controllers
|
||||
);
|
||||
}
|
||||
|
||||
var totalCount = await documentQuery.CountAsync();
|
||||
var totalPages = totalCount / pageSize;
|
||||
|
||||
// Apply pagination & ordering
|
||||
var documents = await documentQuery
|
||||
.OrderByDescending(t => t.UploadedAt)
|
||||
@ -202,7 +205,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
.ToListAsync();
|
||||
|
||||
// Map to ViewModel
|
||||
var response = documents.Select(doc =>
|
||||
var documentListVMs = documents.Select(doc =>
|
||||
{
|
||||
var version = versions.FirstOrDefault(v => v.ChildAttachmentId == doc.Id);
|
||||
var vm = _mapper.Map<DocumentListVM>(doc);
|
||||
@ -211,7 +214,16 @@ namespace Marco.Pms.Services.Controllers
|
||||
return vm;
|
||||
}).ToList();
|
||||
|
||||
_logger.LogInfo("Fetched {Count} documents for EntityId {EntityId}", response.Count, entityId);
|
||||
_logger.LogInfo("Fetched {Count} documents for EntityId {EntityId}", documentListVMs.Count, entityId);
|
||||
|
||||
var response = new
|
||||
{
|
||||
CurrentFilter = documentFilter,
|
||||
CurrentPage = pageNumber,
|
||||
TotalPages = totalPages,
|
||||
TotalEntites = totalCount,
|
||||
Data = documentListVMs,
|
||||
};
|
||||
|
||||
return Ok(ApiResponse<object>.SuccessResponse(response, "Document list fetched successfully", 200));
|
||||
}
|
||||
@ -404,12 +416,17 @@ namespace Marco.Pms.Services.Controllers
|
||||
}
|
||||
|
||||
// Retrieve all version mappings linked to the parent attachment and tenant
|
||||
var versionMappings = await _context.AttachmentVersionMappings
|
||||
var versionMappingsQuery = _context.AttachmentVersionMappings
|
||||
.Include(av => av.ChildAttachment)
|
||||
.ThenInclude(da => da!.UploadedBy)
|
||||
.Include(av => av.ChildAttachment)
|
||||
.ThenInclude(da => da!.UpdatedBy)
|
||||
.Where(av => av.ParentAttachmentId == parentAttachmentId && av.TenantId == tenantId)
|
||||
.Where(av => av.ParentAttachmentId == parentAttachmentId && av.TenantId == tenantId);
|
||||
|
||||
var totalPages = await versionMappingsQuery.CountAsync();
|
||||
var totalCount = totalPages / pageSize;
|
||||
|
||||
var versionMappings = await versionMappingsQuery
|
||||
.OrderByDescending(da => da.ChildAttachment!.UploadedAt)
|
||||
.Skip((pageNumber - 1) * pageSize)
|
||||
.Take(pageSize)
|
||||
@ -428,13 +445,21 @@ namespace Marco.Pms.Services.Controllers
|
||||
_logger.LogInfo("Found {Count} versions for ParentAttachmentId: {ParentAttachmentId}", versionMappings.Count, parentAttachmentId);
|
||||
|
||||
// Map the retrieved child attachments to view models with version info
|
||||
var response = versionMappings.Select(versionMapping =>
|
||||
var attachmentVersionVMs = versionMappings.Select(versionMapping =>
|
||||
{
|
||||
var documentVM = _mapper.Map<AttachmentVersionVM>(versionMapping.ChildAttachment);
|
||||
documentVM.Version = versionMapping.Version;
|
||||
return documentVM;
|
||||
}).ToList();
|
||||
|
||||
var response = new
|
||||
{
|
||||
CurrentPage = pageNumber,
|
||||
TotalPages = totalPages,
|
||||
TotalEntites = totalCount,
|
||||
Data = attachmentVersionVMs,
|
||||
};
|
||||
|
||||
_logger.LogInfo("Successfully mapped version data for ParentAttachmentId: {ParentAttachmentId}", parentAttachmentId);
|
||||
|
||||
return Ok(ApiResponse<object>.SuccessResponse(response, "Document versions fetched successfully", 200));
|
||||
|
@ -3,6 +3,7 @@ using AutoMapper.QueryableExtensions;
|
||||
using Marco.Pms.DataAccess.Data;
|
||||
using Marco.Pms.Model.Activities;
|
||||
using Marco.Pms.Model.Dtos.Project;
|
||||
using Marco.Pms.Model.Dtos.Util;
|
||||
using Marco.Pms.Model.Employees;
|
||||
using Marco.Pms.Model.Entitlements;
|
||||
using Marco.Pms.Model.MongoDBModels.Project;
|
||||
@ -46,6 +47,7 @@ namespace Marco.Pms.Services.Service
|
||||
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
|
||||
_generalHelper = generalHelper ?? throw new ArgumentNullException(nameof(generalHelper));
|
||||
}
|
||||
|
||||
#region =================================================================== Project Get APIs ===================================================================
|
||||
|
||||
public async Task<ApiResponse<object>> GetAllProjectsBasicAsync(Guid tenantId, Employee loggedInEmployee)
|
||||
@ -1462,6 +1464,36 @@ namespace Marco.Pms.Services.Service
|
||||
Response = ApiResponse<object>.SuccessResponse(new { id = task.Id }, "Task deleted successfully.", 200)
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region =================================================================== Project-Level Permission APIs ===================================================================
|
||||
public async Task<ApiResponse<object>> ManageProjectLevelPermissionAsync(ProjctLevelPermissionDto model, Guid tenantId, Employee loggedInEmployee)
|
||||
{
|
||||
var employeeTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
return await context.ProjectAllocations.FirstOrDefaultAsync(e => e.Id == model.EmployeeId && e.TenantId == tenantId && e.IsActive);
|
||||
});
|
||||
var projectTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
return await context.Projects.FirstOrDefaultAsync(p => p.Id == model.ProjectId && p.TenantId == tenantId);
|
||||
});
|
||||
var featurePermissionsTask = Task.Run(async () =>
|
||||
{
|
||||
await using var context = await _dbContextFactory.CreateDbContextAsync();
|
||||
});
|
||||
return ApiResponse<object>.SuccessResponse("");
|
||||
}
|
||||
public async Task<ApiResponse<object>> GetAssignedProjectLevelPermissionAsync(Guid employeeId, Guid projectId, Guid tenantId, Employee loggedInEmployee)
|
||||
{
|
||||
return ApiResponse<object>.SuccessResponse("");
|
||||
}
|
||||
public async Task<ApiResponse<object>> AssignProjectLevelModulesAsync(Guid tenantId, Employee loggedInEmployee)
|
||||
{
|
||||
return ApiResponse<object>.SuccessResponse("");
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region =================================================================== Helper Functions ===================================================================
|
||||
|
Loading…
x
Reference in New Issue
Block a user