parent
e067a5fe73
commit
b0f6d6543c
|
@ -6,8 +6,8 @@
|
|||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
|
||||
<AssemblyVersion>0.2.3.1</AssemblyVersion>
|
||||
<FileVersion>0.2.3.1</FileVersion>
|
||||
<AssemblyVersion>0.2.3.2</AssemblyVersion>
|
||||
<FileVersion>0.2.3.2</FileVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -3,6 +3,7 @@ using Brizco.Domain.Entities.Shift;
|
|||
using Brizco.Domain.Entities.Task;
|
||||
using System.Threading.Tasks;
|
||||
using Brizco.Domain.Mappers;
|
||||
using Task = Brizco.Domain.Entities.Task.Task;
|
||||
|
||||
namespace Brizco.Core.EntityServices;
|
||||
|
||||
|
@ -11,7 +12,7 @@ public class ActivityService : IActivityService
|
|||
private readonly IMediator _mediator;
|
||||
private readonly IRepositoryWrapper _repositoryWrapper;
|
||||
|
||||
public ActivityService(IMediator mediator,IRepositoryWrapper repositoryWrapper)
|
||||
public ActivityService(IMediator mediator, IRepositoryWrapper repositoryWrapper)
|
||||
{
|
||||
_mediator = mediator;
|
||||
_repositoryWrapper = repositoryWrapper;
|
||||
|
@ -38,10 +39,10 @@ public class ActivityService : IActivityService
|
|||
{
|
||||
var activity = await _repositoryWrapper.SetRepository<Activity>().TableNoTracking
|
||||
.FirstOrDefaultAsync(a => a.Id == activityRequestDto.ActivityId, cancellationToken);
|
||||
if(activity==null)
|
||||
if (activity == null)
|
||||
continue;
|
||||
|
||||
activity.CompleteActivity(activityRequestDto.IsCompleted,activityRequestDto.PerformanceDescription);
|
||||
activity.CompleteActivity(activityRequestDto.IsCompleted, activityRequestDto.PerformanceDescription);
|
||||
_repositoryWrapper.SetRepository<Activity>().Update(activity);
|
||||
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
|
@ -50,7 +51,7 @@ public class ActivityService : IActivityService
|
|||
}
|
||||
|
||||
|
||||
public async Task<bool> UnDoneActivityAsync(Guid activityId,string undoneReason, CancellationToken cancellationToken)
|
||||
public async Task<bool> UnDoneActivityAsync(Guid activityId, string undoneReason, CancellationToken cancellationToken)
|
||||
{
|
||||
var activity = await _repositoryWrapper.SetRepository<Activity>()
|
||||
.TableNoTracking
|
||||
|
@ -70,20 +71,35 @@ public class ActivityService : IActivityService
|
|||
if (shiftPlan.Id == Guid.Empty)
|
||||
return false;
|
||||
|
||||
var tasks = await _repositoryWrapper.SetRepository<Brizco.Domain.Entities.Task.Task>()
|
||||
.ExecuteCommand(
|
||||
$@"SELECT t.""Id"", t.""Amount"", t.""AmountType"", t.""ComplexId"",
|
||||
t.""CreatedAt"", t.""CreatedBy"", t.""Description"", t.""Discriminator"", t.""HasDisposed"", t.""IsDisposable"", t.""IsRemoved"", t.""ModifiedAt"",
|
||||
t.""ModifiedBy"", t.""RemovedAt"", t.""RemovedBy"", t.""ScheduleType"", t.""SetFor"", t.""Title"", t.""Type"", t.""DoneAt"", t.""IsDone"",
|
||||
t.""PerformanceDescription"", t.""ShiftId"", t.""Status"", t.""UserId"" , t.""IsActivity"" , t.""UnDoneReason""
|
||||
FROM public.""Tasks"" t
|
||||
INNER JOIN public.""TaskShifts"" t1 ON t.""Id"" = t1.""TaskId""
|
||||
INNER JOIN public.""TaskDays"" t2 ON t.""Id"" = t1.""TaskId""
|
||||
INNER JOIN public.""TaskRoutines"" t3 ON t.""Id"" = t1.""TaskId""
|
||||
AND {shiftPlan.ShiftId} = t1.""ShiftId""
|
||||
AND {shiftPlan.RoutineId} = t3.""RoutineId""
|
||||
AND {shiftPlan.PlanFor.DayOfWeek} = t2.""DayOfWeek""
|
||||
GROUP BY t.""Id""").AsNoTracking().ToListAsync(cancellationToken);
|
||||
var dailyTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId && task.ScheduleType == TaskScheduleType.Daily
|
||||
select task).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var weeklyTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskDay in _repositoryWrapper.SetRepository<TaskDay>().Entities on task.Id equals taskDay.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId &&
|
||||
taskDay.DayOfWeek == shiftPlan.PlanFor.DayOfWeek && task.ScheduleType == TaskScheduleType.Weekly
|
||||
group task by task.Id into groupedTask
|
||||
select groupedTask.FirstOrDefault()).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var customTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId &&
|
||||
task.ScheduleType == TaskScheduleType.Custom && task.SetFor.Date == shiftPlan.PlanFor.Date
|
||||
select task).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var tasks = new List<Task>();
|
||||
tasks.AddRange(weeklyTasks);
|
||||
tasks.AddRange(dailyTasks);
|
||||
tasks.AddRange(customTasks);
|
||||
|
||||
var shiftPlanPositions = await _repositoryWrapper.SetRepository<ShiftPlanUser>()
|
||||
.TableNoTracking
|
||||
|
@ -110,40 +126,56 @@ GROUP BY t.""Id""").AsNoTracking().ToListAsync(cancellationToken);
|
|||
foreach (var taskPosition in taskPositions)
|
||||
{
|
||||
var foundedUser = shiftPlanPositions.FirstOrDefault(spu => spu.PositionId == taskPosition.PositionId);
|
||||
if(foundedUser == null)
|
||||
if (foundedUser == null)
|
||||
continue;
|
||||
if (activity.UserId != foundedUser.UserId)
|
||||
{
|
||||
|
||||
await _mediator.Send(new UpdateActivityCommand(activity.Id,activity.Status,activity.DoneAt,activity.PerformanceDescription,
|
||||
activity.Type,activity.Title,activity.Description,activity.IsDisposable,activity.SetFor,activity.HasDisposed,activity.Amount
|
||||
,activity.AmountType,activity.ScheduleType,shiftPlan.ShiftId,foundedUser.UserId), cancellationToken);
|
||||
await _mediator.Send(new UpdateActivityCommand(activity.Id, activity.Status, activity.DoneAt, activity.PerformanceDescription,
|
||||
activity.Type, activity.Title, activity.Description, activity.IsDisposable, activity.SetFor, activity.HasDisposed, activity.Amount
|
||||
, activity.AmountType, activity.ScheduleType, shiftPlan.ShiftId, foundedUser.UserId), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task<bool> CreateActivitiesByShiftPlan(Guid shiftPlanId,CancellationToken cancellationToken)
|
||||
public async Task<bool> CreateActivitiesByShiftPlan(Guid shiftPlanId, CancellationToken cancellationToken)
|
||||
{
|
||||
var shiftPlan = await _mediator.Send(new GetShiftPlanQuery(shiftPlanId), cancellationToken);
|
||||
if (shiftPlan.Id == Guid.Empty)
|
||||
return false;
|
||||
|
||||
var tasks = await _repositoryWrapper.SetRepository<Brizco.Domain.Entities.Task.Task>()
|
||||
.ExecuteCommand(
|
||||
$@"SELECT t.""Id"", t.""Amount"", t.""AmountType"", t.""ComplexId"",
|
||||
t.""CreatedAt"", t.""CreatedBy"", t.""Description"", t.""Discriminator"", t.""HasDisposed"", t.""IsDisposable"", t.""IsRemoved"", t.""ModifiedAt"",
|
||||
t.""ModifiedBy"", t.""RemovedAt"", t.""RemovedBy"", t.""ScheduleType"", t.""SetFor"", t.""Title"", t.""Type"", t.""DoneAt"", t.""IsDone"",
|
||||
t.""PerformanceDescription"", t.""ShiftId"", t.""Status"", t.""UserId"" , t.""IsActivity"" , t.""UnDoneReason""
|
||||
FROM public.""Tasks"" t
|
||||
INNER JOIN public.""TaskShifts"" t1 ON t.""Id"" = t1.""TaskId""
|
||||
INNER JOIN public.""TaskDays"" t2 ON t.""Id"" = t1.""TaskId""
|
||||
INNER JOIN public.""TaskRoutines"" t3 ON t.""Id"" = t1.""TaskId""
|
||||
AND {shiftPlan.ShiftId} = t1.""ShiftId""
|
||||
AND {shiftPlan.RoutineId} = t3.""RoutineId""
|
||||
AND {shiftPlan.PlanFor.DayOfWeek} = t2.""DayOfWeek""
|
||||
GROUP BY t.""Id""").AsNoTracking().ToListAsync(cancellationToken);
|
||||
var dailyTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId && task.ScheduleType == TaskScheduleType.Daily
|
||||
select task).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var weeklyTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskDay in _repositoryWrapper.SetRepository<TaskDay>().Entities on task.Id equals taskDay.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId &&
|
||||
taskDay.DayOfWeek == shiftPlan.PlanFor.DayOfWeek && task.ScheduleType == TaskScheduleType.Weekly
|
||||
group task by task.Id into groupedTask
|
||||
select groupedTask.FirstOrDefault()).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var customTasks = await (from task in _repositoryWrapper.SetRepository<Task>().Entities
|
||||
join taskShift in _repositoryWrapper.SetRepository<TaskShift>().Entities on task.Id equals taskShift.TaskId
|
||||
join taskRoutine in _repositoryWrapper.SetRepository<TaskRoutine>().Entities on task.Id equals taskRoutine
|
||||
.TaskId
|
||||
where taskShift.ShiftId == shiftPlan.ShiftId && taskRoutine.RoutineId == shiftPlan.RoutineId &&
|
||||
task.ScheduleType == TaskScheduleType.Custom && task.SetFor.Date == shiftPlan.PlanFor.Date
|
||||
select task).AsNoTracking().ToListAsync(cancellationToken);
|
||||
|
||||
var tasks = new List<Task>();
|
||||
tasks.AddRange(weeklyTasks);
|
||||
tasks.AddRange(dailyTasks);
|
||||
tasks.AddRange(customTasks);
|
||||
|
||||
|
||||
var shiftPlanPositions = await _repositoryWrapper.SetRepository<ShiftPlanUser>()
|
||||
.TableNoTracking
|
||||
|
@ -163,8 +195,8 @@ GROUP BY t.""Id""").AsNoTracking().ToListAsync(cancellationToken);
|
|||
if (fundedUser != null)
|
||||
{
|
||||
await _mediator.Send(new CreateActivityCommand(task.Type, task.Title, task.Description, task.IsDisposable,
|
||||
shiftPlan.PlanFor, task.HasDisposed, task.Amount, task.AmountType,
|
||||
task.ScheduleType, shiftPlan.ShiftId, fundedUser.UserId),cancellationToken);
|
||||
shiftPlan.PlanFor, task.HasDisposed, task.Amount, task.AmountType,
|
||||
task.ScheduleType, shiftPlan.ShiftId, fundedUser.UserId), cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using System.Security.Claims;
|
||||
using Brizco.Domain.CommandQueries.Queries;
|
||||
using Brizco.Domain.Entities.Complex;
|
||||
using Brizco.Domain.Mappers;
|
||||
using Mapster;
|
||||
|
||||
|
@ -58,6 +59,25 @@ public class UserService : IUserService
|
|||
response.Permissions = roleClaims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var complexUserRole = complexUsers.FirstOrDefault();
|
||||
if (complexUserRole != null)
|
||||
{
|
||||
user.SelectedComplexUserRoleId = complexUserRole.Id;
|
||||
await _userManager.UpdateAsync(user);
|
||||
userSDto.SelectedComplexName = complexUserRole!.ComplexName;
|
||||
userSDto.SelectedRoleName = complexUserRole!.RoleName;
|
||||
response.User.SelectedRoleId = complexUserRole!.Id;
|
||||
var role = await _roleManager.FindByIdAsync(complexUserRole.RoleId.ToString());
|
||||
if (role != null)
|
||||
{
|
||||
var roleClaims = await _roleManager.GetClaimsAsync(role);
|
||||
response.Permissions = roleClaims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
response.Roles = complexUsers;
|
||||
return response;
|
||||
|
|
Loading…
Reference in New Issue