using LiteCharms.Features.Shop.Postgres; namespace LiteCharms.Features.Leads.Commands.Handlers; public class UpdateLeadCommandHandler(IDbContextFactory contextFactory) : IRequestHandler { public async ValueTask Handle(UpdateLeadCommand request, CancellationToken cancellationToken) { try { using var context = await contextFactory.CreateDbContextAsync(cancellationToken); var lead = await context.Leads.FirstOrDefaultAsync(l => l.Id == request.LeadId, cancellationToken); if (lead is null) return Result.Fail(new Error($"Lead with ID {request.LeadId} not found.")); lead.Status = request.Status; return await context.SaveChangesAsync(cancellationToken) > 0 ? Result.Ok() : Result.Fail(new Error($"Failed to update the lead {request.LeadId}.")); } catch (Exception ex) { return Result.Fail(new Error(ex.Message).CausedBy(ex)); } } }