79 lines
2.7 KiB
C#
79 lines
2.7 KiB
C#
using CMSMicroservice.Application.Common.Interfaces;
|
|
using MediatR;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace CMSMicroservice.Application.ClubFeatureCQ.Commands.ToggleUserClubFeature;
|
|
|
|
/// <summary>
|
|
/// هندلر برای فعال/غیرفعال کردن ویژگی باشگاه کاربر
|
|
/// </summary>
|
|
public class ToggleUserClubFeatureCommandHandler : IRequestHandler<ToggleUserClubFeatureCommand, ToggleUserClubFeatureResponse>
|
|
{
|
|
private readonly IApplicationDbContext _context;
|
|
|
|
public ToggleUserClubFeatureCommandHandler(IApplicationDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<ToggleUserClubFeatureResponse> Handle(ToggleUserClubFeatureCommand request, CancellationToken cancellationToken)
|
|
{
|
|
// بررسی وجود کاربر
|
|
var userExists = await _context.Users
|
|
.AnyAsync(u => u.Id == request.UserId && !u.IsDeleted, cancellationToken);
|
|
|
|
if (!userExists)
|
|
{
|
|
return new ToggleUserClubFeatureResponse
|
|
{
|
|
Success = false,
|
|
Message = "کاربر یافت نشد"
|
|
};
|
|
}
|
|
|
|
// بررسی وجود ویژگی
|
|
var featureExists = await _context.ClubFeatures
|
|
.AnyAsync(cf => cf.Id == request.ClubFeatureId && !cf.IsDeleted, cancellationToken);
|
|
|
|
if (!featureExists)
|
|
{
|
|
return new ToggleUserClubFeatureResponse
|
|
{
|
|
Success = false,
|
|
Message = "ویژگی باشگاه یافت نشد"
|
|
};
|
|
}
|
|
|
|
// یافتن رکورد UserClubFeature
|
|
var userClubFeature = await _context.UserClubFeatures
|
|
.FirstOrDefaultAsync(
|
|
ucf => ucf.UserId == request.UserId
|
|
&& ucf.ClubFeatureId == request.ClubFeatureId
|
|
&& !ucf.IsDeleted,
|
|
cancellationToken);
|
|
|
|
if (userClubFeature == null)
|
|
{
|
|
return new ToggleUserClubFeatureResponse
|
|
{
|
|
Success = false,
|
|
Message = "این ویژگی برای کاربر یافت نشد"
|
|
};
|
|
}
|
|
|
|
// بهروزرسانی وضعیت
|
|
userClubFeature.IsActive = request.IsActive;
|
|
userClubFeature.LastModified = DateTime.UtcNow;
|
|
|
|
await _context.SaveChangesAsync(cancellationToken);
|
|
|
|
return new ToggleUserClubFeatureResponse
|
|
{
|
|
Success = true,
|
|
Message = request.IsActive ? "ویژگی با موفقیت فعال شد" : "ویژگی با موفقیت غیرفعال شد",
|
|
UserClubFeatureId = userClubFeature.Id,
|
|
IsActive = userClubFeature.IsActive
|
|
};
|
|
}
|
|
}
|