change activity service

master
Amir Hossein Khademi 2024-08-14 15:15:44 +03:30
parent cba03cc53b
commit 9a4ac43e2a
9 changed files with 25 additions and 25 deletions

View File

@ -1 +1 @@
1.4.11.5 1.4.12.9

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>1.4.11.5</AssemblyVersion> <AssemblyVersion>1.4.12.9</AssemblyVersion>
<FileVersion>1.4.11.5</FileVersion> <FileVersion>1.4.12.9</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -4,7 +4,6 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<LangVersion>10</LangVersion> <LangVersion>10</LangVersion>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -99,20 +99,20 @@ public class JwtService(
private AccessToken<TUserDto> BaseGenerate<TUserDto, TUser>(TUser user, List<Claim> claims) where TUser : ApplicationUser private AccessToken<TUserDto> BaseGenerate<TUserDto, TUser>(TUser user, List<Claim> claims) where TUser : ApplicationUser
{ {
var secretKey = Encoding.UTF8.GetBytes(_siteSettings.JwtSettings.SecretKey); var secretKey = Encoding.UTF8.GetBytes(_siteSettings.JwtSettings.SecretKey);
var signingCredintial = new SigningCredentials(new SymmetricSecurityKey(secretKey), SecurityAlgorithms.HmacSha512Signature); var signingCredential = new SigningCredentials(new SymmetricSecurityKey(secretKey), SecurityAlgorithms.HmacSha512Signature);
var desctiptor = new SecurityTokenDescriptor var descriptor = new SecurityTokenDescriptor
{ {
Issuer = _siteSettings.JwtSettings.Issuer, Issuer = _siteSettings.JwtSettings.Issuer,
Audience = _siteSettings.JwtSettings.Audience, Audience = _siteSettings.JwtSettings.Audience,
IssuedAt = DateTime.Now, IssuedAt = DateTime.Now,
NotBefore = DateTime.Now, NotBefore = DateTime.Now,
Expires = DateTime.Now.AddDays(_siteSettings.JwtSettings.ExpireAddDay), Expires = DateTime.Now.AddDays(_siteSettings.JwtSettings.ExpireAddDay),
SigningCredentials = signingCredintial, SigningCredentials = signingCredential,
Subject = new ClaimsIdentity(claims) Subject = new ClaimsIdentity(claims)
}; };
var handler = new JwtSecurityTokenHandler(); var handler = new JwtSecurityTokenHandler();
var token = new AccessToken<TUserDto>(handler.CreateJwtSecurityToken(desctiptor)); var token = new AccessToken<TUserDto>(handler.CreateJwtSecurityToken(descriptor));
token.User = user.Adapt<TUserDto>(); token.User = user.Adapt<TUserDto>();
return token; return token;
} }
@ -120,20 +120,20 @@ public class JwtService(
private AccessToken<TUserDto, TRole> BaseGenerate<TUserDto, TUser, TRole>(TUser user, List<Claim> claims) where TUser : ApplicationUser private AccessToken<TUserDto, TRole> BaseGenerate<TUserDto, TUser, TRole>(TUser user, List<Claim> claims) where TUser : ApplicationUser
{ {
var secretKey = Encoding.UTF8.GetBytes(_siteSettings.JwtSettings.SecretKey); var secretKey = Encoding.UTF8.GetBytes(_siteSettings.JwtSettings.SecretKey);
var signingCredintial = new SigningCredentials(new SymmetricSecurityKey(secretKey), SecurityAlgorithms.HmacSha512Signature); var signingCredential = new SigningCredentials(new SymmetricSecurityKey(secretKey), SecurityAlgorithms.HmacSha512Signature);
var desctiptor = new SecurityTokenDescriptor var descriptor = new SecurityTokenDescriptor
{ {
Issuer = _siteSettings.JwtSettings.Issuer, Issuer = _siteSettings.JwtSettings.Issuer,
Audience = _siteSettings.JwtSettings.Audience, Audience = _siteSettings.JwtSettings.Audience,
IssuedAt = DateTime.Now, IssuedAt = DateTime.Now,
NotBefore = DateTime.Now, NotBefore = DateTime.Now,
Expires = DateTime.Now.AddDays(_siteSettings.JwtSettings.ExpireAddDay), Expires = DateTime.Now.AddDays(_siteSettings.JwtSettings.ExpireAddDay),
SigningCredentials = signingCredintial, SigningCredentials = signingCredential,
Subject = new ClaimsIdentity(claims) Subject = new ClaimsIdentity(claims)
}; };
var handler = new JwtSecurityTokenHandler(); var handler = new JwtSecurityTokenHandler();
var token = new AccessToken<TUserDto, TRole>(handler.CreateJwtSecurityToken(desctiptor)); var token = new AccessToken<TUserDto, TRole>(handler.CreateJwtSecurityToken(descriptor));
token.User = user.Adapt<TUserDto>(); token.User = user.Adapt<TUserDto>();
token.Permissions = claims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList(); token.Permissions = claims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList();
return token; return token;
@ -145,7 +145,8 @@ public class JwtService(
var clFac = await userSignInManager.ClaimsFactory.CreateAsync(baseUser); var clFac = await userSignInManager.ClaimsFactory.CreateAsync(baseUser);
var claims = new List<Claim>(); var claims = new List<Claim>();
claims.Add(new Claim("JwtID", jwtId)); claims.Add(new Claim("JwtID", jwtId));
claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName)); if (baseUser.UserName != null)
claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName));
claims.Add(new Claim("SignUpStatus", ((int)baseUser.SignUpStatus).ToString())); claims.Add(new Claim("SignUpStatus", ((int)baseUser.SignUpStatus).ToString()));
claims.Add(new Claim(ClaimTypes.NameIdentifier, baseUser.Id.ToString())); claims.Add(new Claim(ClaimTypes.NameIdentifier, baseUser.Id.ToString()));
if (baseUser.Email != null) if (baseUser.Email != null)
@ -159,10 +160,13 @@ public class JwtService(
private async Task<List<Claim>> GetClaims<TUser>(TUser baseUser, string jwtId, string roleId) where TUser : ApplicationUser private async Task<List<Claim>> GetClaims<TUser>(TUser baseUser, string jwtId, string roleId) where TUser : ApplicationUser
{ {
var applicationRole = await roleManager.FindByIdAsync(roleId); var applicationRole = await roleManager.FindByIdAsync(roleId);
if (applicationRole == null)
throw new Exception("Role not found");
var roleClaims = await roleManager.GetClaimsAsync(applicationRole); var roleClaims = await roleManager.GetClaimsAsync(applicationRole);
var claims = new List<Claim>(); var claims = new List<Claim>();
claims.Add(new Claim("SignUpStatus", ((int)baseUser.SignUpStatus).ToString())); claims.Add(new Claim("SignUpStatus", ((int)baseUser.SignUpStatus).ToString()));
claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName)); if (baseUser.UserName != null)
claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName));
claims.Add(new Claim(ClaimTypes.NameIdentifier, baseUser.Id.ToString())); claims.Add(new Claim(ClaimTypes.NameIdentifier, baseUser.Id.ToString()));
claims.Add(new Claim(ClaimTypes.Role, applicationRole.EnglishName)); claims.Add(new Claim(ClaimTypes.Role, applicationRole.EnglishName));
claims.Add(new Claim("RoleId", applicationRole.Id.ToString())); claims.Add(new Claim("RoleId", applicationRole.Id.ToString()));
@ -171,7 +175,7 @@ public class JwtService(
claims.AddRange(roleClaims); claims.AddRange(roleClaims);
claims.Add(new Claim("JwtID", jwtId)); claims.Add(new Claim("JwtID", jwtId));
claims.Add(new Claim(ClaimTypes.Gender, baseUser.Gender == 0 ? "Female" : "Mail")); claims.Add(new Claim(ClaimTypes.Gender, baseUser.Gender == 0 ? "Female" : "Mail"));
claims.Add(new Claim("FullName",baseUser.FirstName+ " " +baseUser.LastName)); claims.Add(new Claim("FullName", baseUser.FirstName + " " + baseUser.LastName));
return claims; return claims;
} }

View File

@ -1,5 +1,4 @@
using Brizco.Domain.Entities.ShiftPlans; using Brizco.Domain.Entities.Tasks;
using Brizco.Domain.Entities.Tasks;
namespace Brizco.Core.EntityServices.Handlers.Activities; namespace Brizco.Core.EntityServices.Handlers.Activities;
@ -7,7 +6,6 @@ public class DoneActivityCommandHandler(IRepositoryWrapper repositoryWrapper) :
{ {
public async Task<bool> Handle(DoneActivityCommand request, CancellationToken cancellationToken) public async Task<bool> Handle(DoneActivityCommand request, CancellationToken cancellationToken)
{ {
var activity = await repositoryWrapper.SetRepository<Activity>() var activity = await repositoryWrapper.SetRepository<Activity>()
.TableNoTracking .TableNoTracking
.FirstOrDefaultAsync(a => a.Id == request.Id, cancellationToken); .FirstOrDefaultAsync(a => a.Id == request.Id, cancellationToken);

View File

@ -51,7 +51,7 @@ public class UpdateActivitiesByShiftPlanCommandHandler(IRepositoryWrapper reposi
var activities = await repositoryWrapper.SetRepository<Activity>() var activities = await repositoryWrapper.SetRepository<Activity>()
.TableNoTracking .TableNoTracking
.Where(a => a.ShiftPlanId == shiftPlan.ShiftId && a.SetFor.Date == shiftPlan.PlanFor.Date) .Where(a => a.ShiftPlanId == shiftPlan.Id && a.SetFor.Date == shiftPlan.PlanFor.Date)
.Select(ActivityMapper.ProjectToLDto) .Select(ActivityMapper.ProjectToLDto)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
foreach (var activity in activities) foreach (var activity in activities)

View File

@ -3,7 +3,7 @@
namespace Brizco.Core.Models.Api; namespace Brizco.Core.Models.Api;
public class ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string message = null) public class ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string? message = null)
{ {
public bool IsSuccess { get; set; } = isSuccess; public bool IsSuccess { get; set; } = isSuccess;
public ApiResultStatusCode StatusCode { get; set; } = statusCode; public ApiResultStatusCode StatusCode { get; set; } = statusCode;
@ -58,12 +58,12 @@ public class ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string me
#endregion #endregion
} }
public class ApiResult<TData>(bool isSuccess, ApiResultStatusCode statusCode, TData data, string message = null) public class ApiResult<TData>(bool isSuccess, ApiResultStatusCode statusCode, TData? data, string? message = null)
: ApiResult(isSuccess, statusCode, message) : ApiResult(isSuccess, statusCode, message)
where TData : class where TData : class
{ {
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public TData Data { get; set; } = data; public TData? Data { get; set; } = data;
#region Implicit Operators #region Implicit Operators

View File

@ -33,6 +33,8 @@ public class UpdateActivityCommandHandler(IRepositoryWrapper repositoryWrapper,
request.ScheduleType); request.ScheduleType);
newTask.Id = request.Id; newTask.Id = request.Id;
newTask.CreatedAt = task.CreatedAt;
newTask.CreatedBy = task.CreatedBy;
newTask.SetUser(request.UserId); newTask.SetUser(request.UserId);
newTask.SetShiftPlan(request.ShiftPlanId); newTask.SetShiftPlan(request.ShiftPlanId);

View File

@ -24,19 +24,16 @@ public class GetStaffQueryHandler(IRepositoryWrapper repositoryWrapper,ICurrentU
{ {
case DateTimeQueryFilter.Today: case DateTimeQueryFilter.Today:
activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.Date) activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.Date)
.Skip(request.Page * count).Take(count)
.Select(ActivityMapper.ProjectToSDto) .Select(ActivityMapper.ProjectToSDto)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
break; break;
case DateTimeQueryFilter.Yesterday: case DateTimeQueryFilter.Yesterday:
activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.AddDays(-1).Date) activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.AddDays(-1).Date)
.Skip(request.Page * count).Take(count)
.Select(ActivityMapper.ProjectToSDto) .Select(ActivityMapper.ProjectToSDto)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
break; break;
case DateTimeQueryFilter.Tomorrow: case DateTimeQueryFilter.Tomorrow:
activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.AddDays(1).Date) activities = await baseQuery.Where(s => s.SetFor.Date == DateTime.Now.AddDays(1).Date)
.Skip(request.Page * count).Take(count)
.Select(ActivityMapper.ProjectToSDto) .Select(ActivityMapper.ProjectToSDto)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
break; break;