Working on getMyAssignments
This commit is contained in:
parent
fa7c2b1f64
commit
40a3b657d9
18
e-suite.API.Common/e-suite.API.Common/GetMyAssignments.cs
Normal file
18
e-suite.API.Common/e-suite.API.Common/GetMyAssignments.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using e_suite.Database.Core.Models;
|
||||||
|
using eSuite.Core.Miscellaneous;
|
||||||
|
|
||||||
|
namespace e_suite.API.Common;
|
||||||
|
|
||||||
|
public class GetMyAssignments : IGeneralId
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public Guid Guid { get; set; }
|
||||||
|
|
||||||
|
public GeneralIdRef? User { get; set; }
|
||||||
|
|
||||||
|
public GeneralIdRef? Role { get; set; }
|
||||||
|
public string TaskType { get; set; }
|
||||||
|
public string TaskName { get; set; }
|
||||||
|
public DateTimeOffset? StartDateTime { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using e_suite.Database.Core.Models;
|
using e_suite.Database.Core.Models;
|
||||||
using e_suite.Database.Core.Tables.Workflow;
|
|
||||||
|
|
||||||
namespace e_suite.API.Common;
|
namespace e_suite.API.Common;
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
using e_suite.Database.Audit;
|
using e_suite.Database.Audit;
|
||||||
|
using e_suite.Utilities.Pagination;
|
||||||
|
|
||||||
namespace e_suite.API.Common;
|
namespace e_suite.API.Common;
|
||||||
|
|
||||||
public interface IActivityManager
|
public interface IActivityManager
|
||||||
{
|
{
|
||||||
Task CreateActivity(AuditUserDetails auditUserDetails, CreateActivity template, CancellationToken cancellationToken);
|
Task CreateActivity(AuditUserDetails auditUserDetails, CreateActivity template, CancellationToken cancellationToken);
|
||||||
|
Task<PaginatedData<GetMyAssignments>> GetMyActiveAssignmentsAsync(AuditUserDetails auditUserDetails, Paging paging, CancellationToken cancellationToken);
|
||||||
}
|
}
|
||||||
@ -23,4 +23,5 @@ public interface IActivityRepository : IRepository
|
|||||||
|
|
||||||
Task AddActivityTasksAsync(AuditUserDetails auditUserDetails, IEnumerable<ActivityTask> activityTasks, CancellationToken cancellationToken);
|
Task AddActivityTasksAsync(AuditUserDetails auditUserDetails, IEnumerable<ActivityTask> activityTasks, CancellationToken cancellationToken);
|
||||||
Task UpdateActivityTasksAsync(AuditUserDetails auditUserDetails, ICollection<ActivityTask> tasks, CancellationToken cancellationToken);
|
Task UpdateActivityTasksAsync(AuditUserDetails auditUserDetails, ICollection<ActivityTask> tasks, CancellationToken cancellationToken);
|
||||||
|
IQueryable<ActivityAssignment> GetAssignments();
|
||||||
}
|
}
|
||||||
@ -14,11 +14,12 @@ namespace eSuite.API.Controllers;
|
|||||||
[ApiController]
|
[ApiController]
|
||||||
public class TasksController : ESuiteControllerBase
|
public class TasksController : ESuiteControllerBase
|
||||||
{
|
{
|
||||||
private readonly IWorkflowTemplateManager _workflowTemplateManager;
|
private readonly IActivityManager _activityManager;
|
||||||
|
//private readonly IWorkflowTemplateManager _workflowTemplateManager;
|
||||||
|
|
||||||
public TasksController()
|
public TasksController(IActivityManager activityManager)
|
||||||
{
|
{
|
||||||
|
_activityManager = activityManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -37,6 +38,7 @@ public class TasksController : ESuiteControllerBase
|
|||||||
CancellationToken cancellationToken = default!
|
CancellationToken cancellationToken = default!
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return Ok();
|
var result = await _activityManager.GetMyActiveAssignmentsAsync(AuditUserDetails, paging, cancellationToken);
|
||||||
|
return Ok(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,6 +54,9 @@ public class Role : IGeneralId, ISoftDeletable
|
|||||||
[ForeignKey(nameof(DomainId))]
|
[ForeignKey(nameof(DomainId))]
|
||||||
public virtual Domain Domain { get; set; } = null!;
|
public virtual Domain Domain { get; set; } = null!;
|
||||||
|
|
||||||
|
[ForeignKey(nameof(Id))]
|
||||||
|
public virtual ICollection<UserRole> UserRoles { get; set; }
|
||||||
|
|
||||||
public static void OnModelCreating(ModelBuilder modelBuilder)
|
public static void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<Role>().HasData(new Role
|
modelBuilder.Entity<Role>().HasData(new Role
|
||||||
|
|||||||
@ -4,8 +4,12 @@ using e_suite.Database.Audit;
|
|||||||
using e_suite.Database.Core.Extensions;
|
using e_suite.Database.Core.Extensions;
|
||||||
using e_suite.Database.Core.Tables.Activity;
|
using e_suite.Database.Core.Tables.Activity;
|
||||||
using e_suite.Messaging.Common;
|
using e_suite.Messaging.Common;
|
||||||
|
using e_suite.Utilities.Pagination;
|
||||||
using eSuite.Core.Miscellaneous;
|
using eSuite.Core.Miscellaneous;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using eSuite.Core.Enums;
|
||||||
|
|
||||||
namespace e_suite.Modules.RunningActivityManager;
|
namespace e_suite.Modules.RunningActivityManager;
|
||||||
|
|
||||||
@ -49,4 +53,33 @@ public class ActivityManager : IActivityManager
|
|||||||
if (progressActivityRef != null)
|
if (progressActivityRef != null)
|
||||||
_activityMessageSender.ProgressActivity(progressActivityRef);
|
_activityMessageSender.ProgressActivity(progressActivityRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<PaginatedData<GetMyAssignments>> GetMyActiveAssignmentsAsync(AuditUserDetails auditUserDetails, Paging paging, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var myAssignments = _activityRepository.GetAssignments().Where(x => x.Deleted == false );
|
||||||
|
|
||||||
|
myAssignments = myAssignments.Where(x => x.ActivityState == ActivityState.Active);
|
||||||
|
myAssignments = myAssignments.Where(x => x.UserId != null && x.UserId == auditUserDetails.UserId
|
||||||
|
|| (
|
||||||
|
x.Role.UserRoles.Any( u => u.UserId == auditUserDetails.UserId)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
var paginatedData = await PaginatedData.Paginate<ActivityAssignment, GetMyAssignments>(myAssignments, paging,
|
||||||
|
MyActiveAssignmentsKeySelector, cancellationToken);
|
||||||
|
|
||||||
|
return paginatedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Expression<Func<ActivityAssignment, object>> MyActiveAssignmentsKeySelector(string sortKey)
|
||||||
|
{
|
||||||
|
return sortKey?.ToLowerInvariant() switch
|
||||||
|
{
|
||||||
|
"id" => x => x.Id,
|
||||||
|
"guid" => x => x.Guid,
|
||||||
|
"startdatetime" => x => x.StartDateTime,
|
||||||
|
"lastupdated" => x => x.LastUpdated,
|
||||||
|
_ => x => x.Id
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -57,4 +57,14 @@ public class ActivityRepository : RepositoryBase, IActivityRepository
|
|||||||
{
|
{
|
||||||
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
|
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IQueryable<ActivityAssignment> GetAssignments()
|
||||||
|
{
|
||||||
|
return DatabaseDbContext.ActivityAssignments
|
||||||
|
.Include( x => x.User)
|
||||||
|
.Include(x => x.Role)
|
||||||
|
.ThenInclude( x => x.UserRoles)
|
||||||
|
.ThenInclude( x=> x.User)
|
||||||
|
.Include(x => x.Task);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user