using CMSMicroservice.Domain.Entities.Configuration; namespace CMSMicroservice.Application.AppVersionCQ.Commands.UpdateAppVersion; /// /// Handler برای آپدیت یا ایجاد نسخه جدید اپلیکیشن /// public class UpdateAppVersionCommandHandler : IRequestHandler { private readonly IApplicationDbContext _context; private readonly ILogger _logger; public UpdateAppVersionCommandHandler( IApplicationDbContext context, ILogger logger) { _context = context; _logger = logger; } public async Task Handle(UpdateAppVersionCommand request, CancellationToken cancellationToken) { // پیدا کردن نسخه موجود برای این اپ var existingVersion = await _context.AppVersions .Where(v => v.AppName == request.AppName && !v.IsDeleted) .FirstOrDefaultAsync(cancellationToken); if (existingVersion != null) { // آپدیت نسخه موجود existingVersion.CurrentVersion = request.CurrentVersion; existingVersion.MinRequiredVersion = request.MinRequiredVersion ?? request.CurrentVersion; existingVersion.RequiresFullCacheClear = request.RequiresFullCacheClear; existingVersion.UpdateMessage = request.UpdateMessage; existingVersion.ReleaseNotes = request.ReleaseNotes; _logger.LogInformation( "App version updated: {AppName} v{Version}, CacheClear={CacheClear}, Reason={Reason}", request.AppName, request.CurrentVersion, request.RequiresFullCacheClear, request.UpdateReason); } else { // ایجاد نسخه جدید var newVersion = new AppVersion { AppName = request.AppName, CurrentVersion = request.CurrentVersion, MinRequiredVersion = request.MinRequiredVersion ?? request.CurrentVersion, RequiresFullCacheClear = request.RequiresFullCacheClear, UpdateMessage = request.UpdateMessage, ReleaseNotes = request.ReleaseNotes, IsActive = true }; _context.AppVersions.Add(newVersion); _logger.LogInformation( "New app version created: {AppName} v{Version}, CacheClear={CacheClear}, Reason={Reason}", request.AppName, request.CurrentVersion, request.RequiresFullCacheClear, request.UpdateReason); } await _context.SaveChangesAsync(cancellationToken); return Unit.Value; } }