diff --git a/.version b/.version
index c8f5a9a..b40757e 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-0.2.3.1
\ No newline at end of file
+0.2.3.2
\ No newline at end of file
diff --git a/Brizco.Api/Brizco.Api.csproj b/Brizco.Api/Brizco.Api.csproj
index 34f9939..7158b34 100644
--- a/Brizco.Api/Brizco.Api.csproj
+++ b/Brizco.Api/Brizco.Api.csproj
@@ -6,8 +6,8 @@
enable
Linux
..\docker-compose.dcproj
- 0.2.3.1
- 0.2.3.1
+ 0.2.3.2
+ 0.2.3.2
diff --git a/Brizco.Core/EntityServices/ActivityService.cs b/Brizco.Core/EntityServices/ActivityService.cs
index edecafe..c2eaf70 100644
--- a/Brizco.Core/EntityServices/ActivityService.cs
+++ b/Brizco.Core/EntityServices/ActivityService.cs
@@ -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().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().Update(activity);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
}
@@ -50,7 +51,7 @@ public class ActivityService : IActivityService
}
- public async Task UnDoneActivityAsync(Guid activityId,string undoneReason, CancellationToken cancellationToken)
+ public async Task UnDoneActivityAsync(Guid activityId, string undoneReason, CancellationToken cancellationToken)
{
var activity = await _repositoryWrapper.SetRepository()
.TableNoTracking
@@ -70,20 +71,35 @@ public class ActivityService : IActivityService
if (shiftPlan.Id == Guid.Empty)
return false;
- var tasks = await _repositoryWrapper.SetRepository()
- .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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskDay in _repositoryWrapper.SetRepository().Entities on task.Id equals taskDay.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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();
+ tasks.AddRange(weeklyTasks);
+ tasks.AddRange(dailyTasks);
+ tasks.AddRange(customTasks);
var shiftPlanPositions = await _repositoryWrapper.SetRepository()
.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 CreateActivitiesByShiftPlan(Guid shiftPlanId,CancellationToken cancellationToken)
+ public async Task 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()
- .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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskDay in _repositoryWrapper.SetRepository().Entities on task.Id equals taskDay.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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().Entities
+ join taskShift in _repositoryWrapper.SetRepository().Entities on task.Id equals taskShift.TaskId
+ join taskRoutine in _repositoryWrapper.SetRepository().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();
+ tasks.AddRange(weeklyTasks);
+ tasks.AddRange(dailyTasks);
+ tasks.AddRange(customTasks);
+
var shiftPlanPositions = await _repositoryWrapper.SetRepository()
.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);
}
}
}
diff --git a/Brizco.Core/EntityServices/UserService.cs b/Brizco.Core/EntityServices/UserService.cs
index ad8a417..b0091c3 100644
--- a/Brizco.Core/EntityServices/UserService.cs
+++ b/Brizco.Core/EntityServices/UserService.cs
@@ -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;