MyBookmark/Modules.Rating.Api/Commands/RateObjectCommand.cs
THE_KONDRAT 7b16d72329 ui and login
mongo => postgres
2024-11-03 16:08:39 +03:00

38 lines
1.4 KiB
C#

using MediatR;
using Modules.Rating.Api.Database.Entities;
using Modules.Rating.Api.Repositories;
namespace Modules.Rating.Api.Commands;
public class RateObjectCommand : IRequest<Unit>
{
public Guid ObjectId { get; set; }
public Guid SubjectId { get; set; }
public ushort RatePercentage { get; set; }
}
public class RateObjectCommandHandler(RateRepository repository) : IRequestHandler<RateObjectCommand, Unit>
{
public async Task<Unit> Handle(RateObjectCommand request, CancellationToken cancellationToken)
{
//var key = new RateKey
//{
// ObjectId = request.ObjectId,
// SubjectId = request.SubjectId,
//};
//if (!await repository.IsRateExists(key))
if (!await repository.IsRateExists(request.ObjectId, request.SubjectId))
{
//await repository.AddAsync(new Rate { Key = key, RatePercentage = request.RatePercentage, });
await repository.AddAsync(new Rate { ObjectId = request.ObjectId, SubjectId = request.SubjectId, RatePercentage = request.RatePercentage, });
}
else
{
//await repository.UpdateAsync(new Rate { Key = key, RatePercentage = request.RatePercentage, });
await repository.UpdateAsync(new Rate { ObjectId = request.ObjectId, SubjectId = request.SubjectId, RatePercentage = request.RatePercentage, });
}
return Unit.Value;
}
}