add version 0.4.6.6

master
Amir Hossein Khademi 2024-02-27 14:20:41 +03:30
parent d72bf848b5
commit cce4acaa00
12 changed files with 67 additions and 23 deletions

View File

@ -1 +1 @@
0.3.6.5 0.4.6.6

View File

@ -6,8 +6,8 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
<AssemblyVersion>0.3.6.5</AssemblyVersion> <AssemblyVersion>0.4.6.6</AssemblyVersion>
<FileVersion>0.3.6.5</FileVersion> <FileVersion>0.4.6.6</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -15,17 +15,17 @@ public class RoleController : ICarterModule
group.MapGet("/permission", GetPermissions) group.MapGet("/permission", GetPermissions)
.WithDisplayName("Permissions") .WithDisplayName("Permissions")
.RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles, ApplicationPermission.ViewRoles))
.HasApiVersion(1.0); .HasApiVersion(1.0);
group.MapGet("", GetAllAsync) group.MapGet("", GetAllAsync)
.WithDisplayName("GetAllRoles") .WithDisplayName("GetAllRoles")
.RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles , ApplicationPermission.ViewRoles))
.HasApiVersion(1.0); .HasApiVersion(1.0);
group.MapGet("{id}", GetAsync) group.MapGet("{id}", GetAsync)
.WithDisplayName("GetOneRole") .WithDisplayName("GetOneRole")
.RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles, ApplicationPermission.ViewRoles))
.HasApiVersion(1.0); .HasApiVersion(1.0);
//group.MapPost("", Post) //group.MapPost("", Post)

View File

@ -27,7 +27,6 @@ public class UserController : ICarterModule
group.MapPost("/role/change/{roleId}", ChangeUserRoleAsync) group.MapPost("/role/change/{roleId}", ChangeUserRoleAsync)
.WithDisplayName("GetUserProfile") .WithDisplayName("GetUserProfile")
.RequireAuthorization(builder => builder.RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageUsers))
.HasApiVersion(1.0); .HasApiVersion(1.0);
group.MapPost("", Post) group.MapPost("", Post)

View File

@ -176,6 +176,13 @@ public static class ApplicationClaims
Title = "مشاهده گزارشات", Title = "مشاهده گزارشات",
Detail = "دسترسی به مشاهده گزارشات" Detail = "دسترسی به مشاهده گزارشات"
}; };
public static ClaimDto ViewRoles { get; } = new ClaimDto
{
Type = CustomClaimType.Permission,
Value = ApplicationPermission.ViewRoles,
Title = "مشاهده نقش ها",
Detail = "دسترسی به مشاهده نقش ها"
};
public static ClaimDto ManageUsers { get; } = new ClaimDto public static ClaimDto ManageUsers { get; } = new ClaimDto
{ {
Type = CustomClaimType.Permission, Type = CustomClaimType.Permission,
@ -201,9 +208,10 @@ public static class ApplicationClaims
ManageShiftPlans, ManageShiftPlans,
ViewShifts, ViewShifts,
ManageShifts, ManageShifts,
ViewRoles,
ManageUsers, ManageUsers,
ViewUsers ViewUsers,
ViewComplexes, ViewComplexes,
ManageComplexes, ManageComplexes,
@ -233,6 +241,9 @@ public static class ApplicationClaims
ViewUsers.GetClaim, ViewUsers.GetClaim,
ManageUsers.GetClaim, ManageUsers.GetClaim,
ViewRoles.GetClaim,
ViewTasks.GetClaim, ViewTasks.GetClaim,
ManageTasks.GetClaim, ManageTasks.GetClaim,
@ -245,6 +256,7 @@ public static class ApplicationClaims
ManageActivities.GetClaim, ManageActivities.GetClaim,
ViewActivities.GetClaim, ViewActivities.GetClaim,
ChangeActivityStatus.GetClaim,
ManageRoutines.GetClaim, ManageRoutines.GetClaim,
ViewRoutines.GetClaim, ViewRoutines.GetClaim,
@ -267,10 +279,13 @@ public static class ApplicationClaims
ManageActivities.GetClaim, ManageActivities.GetClaim,
ViewActivities.GetClaim, ViewActivities.GetClaim,
ChangeActivityStatus.GetClaim,
ViewUsers.GetClaim, ViewUsers.GetClaim,
ManageUsers.GetClaim, ManageUsers.GetClaim,
ViewRoles.GetClaim,
ViewTasks.GetClaim, ViewTasks.GetClaim,
ManageTasks.GetClaim, ManageTasks.GetClaim,
@ -295,6 +310,8 @@ public static class ApplicationClaims
public static List<Claim> ViewerOwnerClaims = new List<Claim> public static List<Claim> ViewerOwnerClaims = new List<Claim>
{ {
ManageReports.GetClaim,
ViewStaffs.GetClaim, ViewStaffs.GetClaim,
ViewActivities.GetClaim, ViewActivities.GetClaim,

View File

@ -3,6 +3,7 @@ public static class ApplicationPermission
{ {
public const string ManageReports = nameof(ManageReports); public const string ManageReports = nameof(ManageReports);
public const string ManageRoles = nameof(ManageRoles); public const string ManageRoles = nameof(ManageRoles);
public const string ViewRoles = nameof(ViewRoles);
public const string ManageUsers = nameof(ManageUsers); public const string ManageUsers = nameof(ManageUsers);
public const string ViewUsers = nameof(ViewUsers); public const string ViewUsers = nameof(ViewUsers);

View File

@ -36,6 +36,7 @@
<Using Include="Brizco.Core.CoreServices.ReportServices.Commands" /> <Using Include="Brizco.Core.CoreServices.ReportServices.Commands" />
<Using Include="Brizco.Core.EntityServices.Abstracts" /> <Using Include="Brizco.Core.EntityServices.Abstracts" />
<Using Include="Brizco.Domain.CommandQueries.Commands" /> <Using Include="Brizco.Domain.CommandQueries.Commands" />
<Using Include="Brizco.Domain.CommandQueries.Queries" />
<Using Include="Brizco.Domain.Dtos.LargDtos" /> <Using Include="Brizco.Domain.Dtos.LargDtos" />
<Using Include="Brizco.Domain.Dtos.PageDto" /> <Using Include="Brizco.Domain.Dtos.PageDto" />
<Using Include="Brizco.Domain.Dtos.RequestDtos" /> <Using Include="Brizco.Domain.Dtos.RequestDtos" />
@ -47,6 +48,7 @@
<Using Include="Brizco.Domain.Mappers" /> <Using Include="Brizco.Domain.Mappers" />
<Using Include="Brizco.Repository.Abstracts" /> <Using Include="Brizco.Repository.Abstracts" />
<Using Include="Brizco.Repository.Repositories.Base.Contracts" /> <Using Include="Brizco.Repository.Repositories.Base.Contracts" />
<Using Include="Mapster" />
<Using Include="MediatR" /> <Using Include="MediatR" />
<Using Include="Microsoft.AspNetCore.Identity" /> <Using Include="Microsoft.AspNetCore.Identity" />
<Using Include="Microsoft.EntityFrameworkCore" /> <Using Include="Microsoft.EntityFrameworkCore" />
@ -54,6 +56,7 @@
<Using Include="NPOI.SS.UserModel" /> <Using Include="NPOI.SS.UserModel" />
<Using Include="NPOI.SS.Util" /> <Using Include="NPOI.SS.Util" />
<Using Include="NPOI.XSSF.UserModel" /> <Using Include="NPOI.XSSF.UserModel" />
<Using Include="System.Security.Claims" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -50,7 +50,7 @@ public class ComplexService : IComplexService
if (!createViewerResult.Succeeded) if (!createViewerResult.Succeeded)
throw new AppException(string.Join('|', createViewerResult.Errors)); throw new AppException(string.Join('|', createViewerResult.Errors));
foreach (var claim in ApplicationClaims.ManagerClaims) foreach (var claim in ApplicationClaims.ViewerOwnerClaims)
await _roleManager.AddClaimAsync(viewOwnerRole, claim); await _roleManager.AddClaimAsync(viewOwnerRole, claim);
var superVisorRole = new ApplicationRole var superVisorRole = new ApplicationRole

View File

@ -1,9 +1,4 @@
using System.Security.Claims; namespace Brizco.Core.EntityServices;
using Brizco.Domain.CommandQueries.Queries;
using Brizco.Domain.Mappers;
using Mapster;
namespace Brizco.Core.EntityServices;
public class UserService : IUserService public class UserService : IUserService
{ {
@ -37,6 +32,8 @@ public class UserService : IUserService
var user = await _userManager.FindByIdAsync(userId.ToString()); var user = await _userManager.FindByIdAsync(userId.ToString());
if (user == null) if (user == null)
throw new AppException("User NotFound", ApiResultStatusCode.NotFound); throw new AppException("User NotFound", ApiResultStatusCode.NotFound);
if (user.SignUpStatus < SignUpStatus.ComplexCreated)
throw new UnauthorizedAccessException("SignUp is not completed");
var response = new ProfileResponseDto(); var response = new ProfileResponseDto();
@ -87,7 +84,21 @@ public class UserService : IUserService
if (!Guid.TryParse(_currentUserService.UserId, out var userId)) if (!Guid.TryParse(_currentUserService.UserId, out var userId))
throw new AppException("Wrong Token", ApiResultStatusCode.UnAuthorized); throw new AppException("Wrong Token", ApiResultStatusCode.UnAuthorized);
if (!Guid.TryParse(_currentUserService.ComplexId, out var complexId))
throw new AppException("Wrong Token", ApiResultStatusCode.UnAuthorized);
AccessToken<ApplicationUserSDto, ComplexUserRoleSDto> jwt; AccessToken<ApplicationUserSDto, ComplexUserRoleSDto> jwt;
var complexUser = await _repositoryWrapper.SetRepository<ComplexUser>()
.TableNoTracking
.Where(mcu => mcu.UserId == userId && mcu.ComplexId == complexId)
.Select(ComplexUserMapper.ProjectToSDto)
.FirstOrDefaultAsync(cancellationToken);
if (complexUser == null)
throw new AppException("User role is wrong", ApiResultStatusCode.BadRequest);
var complexUserRole = await _repositoryWrapper.SetRepository<ComplexUserRole>() var complexUserRole = await _repositoryWrapper.SetRepository<ComplexUserRole>()
.TableNoTracking .TableNoTracking
.Where(c => c.Id == roleId) .Where(c => c.Id == roleId)
@ -97,17 +108,9 @@ public class UserService : IUserService
if (complexUserRole == null) if (complexUserRole == null)
throw new AppException("Role not found", ApiResultStatusCode.NotFound); throw new AppException("Role not found", ApiResultStatusCode.NotFound);
var complexUser = await _repositoryWrapper.SetRepository<ComplexUser>()
.TableNoTracking
.Where(mcu => mcu.Id == complexUserRole.ComplexUserId)
.Select(ComplexUserMapper.ProjectToSDto)
.FirstOrDefaultAsync(cancellationToken);
var user = await _userManager.FindByIdAsync(userId.ToString()); var user = await _userManager.FindByIdAsync(userId.ToString());
if (user == null) if (user == null)
throw new AppException("User not found", ApiResultStatusCode.NotFound); throw new AppException("User not found", ApiResultStatusCode.NotFound);
if (complexUser?.UserId != user.Id)
throw new AppException("User role is wrong", ApiResultStatusCode.BadRequest);
user.SelectedComplexUserRoleId = complexUserRole.Id; user.SelectedComplexUserRoleId = complexUserRole.Id;
await _userManager.UpdateAsync(user); await _userManager.UpdateAsync(user);

View File

@ -9,6 +9,7 @@ public class ShiftPlanSDto : BaseDto<ShiftPlanSDto,ShiftPlan>
public int UndoneActivitiesCount { get; set; } public int UndoneActivitiesCount { get; set; }
public int DoneActivitiesCount { get; set; } public int DoneActivitiesCount { get; set; }
public int TotalActivitiesCount { get; set; } public int TotalActivitiesCount { get; set; }
public int StaffCount { get; set; }
public int CompletePercent { get; internal set; } public int CompletePercent { get; internal set; }
public string CompleteDescription { get; internal set; } = string.Empty; public string CompleteDescription { get; internal set; } = string.Empty;
public Guid ShiftId { get; set; } public Guid ShiftId { get; set; }

View File

@ -61,9 +61,22 @@ public class GetShiftPlansQueryHandler : IRequestHandler<GetShiftsQuery, List<Sh
.Skip(request.Page * 15).Take(15) .Skip(request.Page * 15).Take(15)
.Select(ShiftMapper.ProjectToSDto) .Select(ShiftMapper.ProjectToSDto)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
} }
foreach (var shift in shifts)
{
var shiftDays = new List<DayOfWeek>();
shift.Days.OrderBy(d=>d).ToList().ForEach(d =>
{
if(d==DayOfWeek.Saturday)
shiftDays.Insert(0,d);
else{
shiftDays.Add(d);}
});
shift.Days = shiftDays;
}
return shifts; return shifts;
} }

View File

@ -112,6 +112,13 @@ public class GetShiftPlansQueryHandler : IRequestHandler<GetShiftPlansQuery, Lis
} }
} }
foreach (var shiftPlan in shiftPlans)
{
shiftPlan.StaffCount = await _repositoryWrapper.SetRepository<ShiftPlanUser>()
.TableNoTracking
.CountAsync(spu => spu.ShiftPlanId == shiftPlan.Id, cancellationToken);
}
return shiftPlans; return shiftPlans;
} }
} }