feat: add ci
This commit is contained in:
@@ -1,16 +1,36 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using mws.backend.dotnet.application.Common;
|
||||
using mws.backend.dotnet.application.Common.Repositories;
|
||||
using mws.backend.dotnet.application.MasterData;
|
||||
using mws.backend.dotnet.domain.MasterData;
|
||||
|
||||
namespace mws.backend.dotnet.infrastructure.Persistence.Repositories;
|
||||
|
||||
public class MasterDataRepository(AppDbContext db) : RepositoryBase<MasterDataEntry>(db), IMasterDataRepository
|
||||
{
|
||||
public Task<PagedResult<MasterDataEntry>> GetAllAsync(string? group, int page, int pageSize, CancellationToken ct = default) =>
|
||||
Set.Where(m => group == null || m.Group == group)
|
||||
.OrderBy(m => m.Group).ThenBy(m => m.SortOrder).ThenBy(m => m.Label)
|
||||
public Task<PagedResult<MasterDataEntry>> GetAllAsync(MasterDataFilter filter, int page, int pageSize, CancellationToken ct = default)
|
||||
{
|
||||
var query = Set.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.Group))
|
||||
{
|
||||
query = query.Where(m => m.Group == filter.Group);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.Term))
|
||||
{
|
||||
var lower = filter.Term.Trim().ToLower();
|
||||
query = query.Where(m => m.Label.ToLower().Contains(lower) || m.Value.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
if (filter.IsActive is { } active)
|
||||
{
|
||||
query = query.Where(m => m.IsActive == active);
|
||||
}
|
||||
|
||||
return query.OrderBy(m => m.Group).ThenBy(m => m.SortOrder).ThenBy(m => m.Label)
|
||||
.ToPagedResultAsync(page, pageSize, ct);
|
||||
}
|
||||
|
||||
public Task<List<MasterDataEntry>> GetActiveByGroupAsync(string group, CancellationToken ct = default) =>
|
||||
Set.Where(m => m.Group == group && m.IsActive)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using mws.backend.dotnet.application.Common;
|
||||
using mws.backend.dotnet.application.Common.Repositories;
|
||||
using mws.backend.dotnet.application.Projects;
|
||||
using mws.backend.dotnet.domain.Projects;
|
||||
|
||||
namespace mws.backend.dotnet.infrastructure.Persistence.Repositories;
|
||||
@@ -14,11 +15,36 @@ public class ProjectRepository(AppDbContext db) : RepositoryBase<Project>(db), I
|
||||
Set.Include(p => p.CreatedByUser).Include(p => p.UpdatedByUser)
|
||||
.FirstOrDefaultAsync(p => p.Id == projectId && p.Members.Any(m => m.UserId == userId), ct);
|
||||
|
||||
public Task<PagedResult<Project>> GetForUserAsync(Guid userId, int page, int pageSize, CancellationToken ct = default) =>
|
||||
Set.Include(p => p.CreatedByUser).Include(p => p.UpdatedByUser)
|
||||
.Where(p => p.Members.Any(m => m.UserId == userId))
|
||||
.OrderByDescending(p => p.UpdatedAt)
|
||||
.ToPagedResultAsync(page, pageSize, ct);
|
||||
public Task<PagedResult<Project>> GetForUserAsync(ProjectListFilter filter, int page, int pageSize, CancellationToken ct = default)
|
||||
{
|
||||
var query = Set.Include(p => p.CreatedByUser).Include(p => p.UpdatedByUser)
|
||||
.Where(p => p.Members.Any(m => m.UserId == filter.UserId));
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.Term))
|
||||
{
|
||||
var lower = filter.Term.Trim().ToLower();
|
||||
query = query.Where(p => p.Name.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
if (filter.Status is { } status)
|
||||
{
|
||||
query = query.Where(p => p.Status == status);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.CreatedBy))
|
||||
{
|
||||
var lower = filter.CreatedBy.Trim().ToLower();
|
||||
query = query.Where(p => p.CreatedByUser != null && p.CreatedByUser.DisplayName.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.UpdatedBy))
|
||||
{
|
||||
var lower = filter.UpdatedBy.Trim().ToLower();
|
||||
query = query.Where(p => p.UpdatedByUser != null && p.UpdatedByUser.DisplayName.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
return query.OrderByDescending(p => p.UpdatedAt).ToPagedResultAsync(page, pageSize, ct);
|
||||
}
|
||||
|
||||
public Task<List<Project>> SearchForUserAsync(Guid userId, string? term, CancellationToken ct = default)
|
||||
{
|
||||
@@ -51,13 +77,28 @@ public class ProjectRepository(AppDbContext db) : RepositoryBase<Project>(db), I
|
||||
public Task<ProjectMember?> GetMemberWithUserAsync(Guid projectId, Guid userId, CancellationToken ct = default) =>
|
||||
Db.ProjectMembers.Include(m => m.User).FirstOrDefaultAsync(m => m.ProjectId == projectId && m.UserId == userId, ct);
|
||||
|
||||
public Task<PagedResult<ProjectMember>> GetMembersWithUserAsync(Guid projectId, int page, int pageSize, CancellationToken ct = default) =>
|
||||
Db.ProjectMembers
|
||||
public Task<PagedResult<ProjectMember>> GetMembersWithUserAsync(Guid projectId, MemberListFilter filter, int page, int pageSize, CancellationToken ct = default)
|
||||
{
|
||||
var query = Db.ProjectMembers
|
||||
.Where(m => m.ProjectId == projectId)
|
||||
.Include(m => m.User)
|
||||
.OrderByDescending(m => m.Role)
|
||||
.AsQueryable();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(filter.Term))
|
||||
{
|
||||
var lower = filter.Term.Trim().ToLower();
|
||||
query = query.Where(m => m.User.Username.ToLower().Contains(lower) || m.User.DisplayName.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
if (filter.Role is { } role)
|
||||
{
|
||||
query = query.Where(m => m.Role == role);
|
||||
}
|
||||
|
||||
return query.OrderByDescending(m => m.Role)
|
||||
.ThenBy(m => m.User.DisplayName)
|
||||
.ToPagedResultAsync(page, pageSize, ct);
|
||||
}
|
||||
|
||||
public Task<int> CountOwnersAsync(Guid projectId, CancellationToken ct = default) =>
|
||||
Db.ProjectMembers.CountAsync(m => m.ProjectId == projectId && m.Role == MemberRole.Owner, ct);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using mws.backend.dotnet.application.Common;
|
||||
using mws.backend.dotnet.application.Common.Repositories;
|
||||
using mws.backend.dotnet.application.Users;
|
||||
using mws.backend.dotnet.domain.Users;
|
||||
|
||||
namespace mws.backend.dotnet.infrastructure.Persistence.Repositories;
|
||||
@@ -43,15 +44,20 @@ public class UserRepository(AppDbContext db) : RepositoryBase<User>(db), IUserRe
|
||||
return query.ToListAsync(ct);
|
||||
}
|
||||
|
||||
public Task<PagedResult<User>> SearchWithRolePagedAsync(string? term, int page, int pageSize, CancellationToken ct = default)
|
||||
public Task<PagedResult<User>> SearchWithRolePagedAsync(UserListFilter filter, int page, int pageSize, CancellationToken ct = default)
|
||||
{
|
||||
var query = Set.Include(u => u.UserRoles).ThenInclude(ur => ur.Role).AsQueryable();
|
||||
if (!string.IsNullOrWhiteSpace(term))
|
||||
if (!string.IsNullOrWhiteSpace(filter.Term))
|
||||
{
|
||||
var lower = term.Trim().ToLower();
|
||||
var lower = filter.Term.Trim().ToLower();
|
||||
query = query.Where(u => u.Username.ToLower().Contains(lower) || u.DisplayName.ToLower().Contains(lower));
|
||||
}
|
||||
|
||||
if (filter.IsActive is { } active)
|
||||
{
|
||||
query = query.Where(u => u.IsActive == active);
|
||||
}
|
||||
|
||||
return query.OrderBy(u => u.DisplayName).ToPagedResultAsync(page, pageSize, ct);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user