using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.FlexJobServer.Application
{
///
/// 任务雇佣命令处理器
///
public class TaskUserCommandHandler(
IRepository repUserTaskCollect
) :
IRequestHandler
{
private readonly IRepository repUserTaskCollect = repUserTaskCollect;
///
/// 收藏任务
///
///
///
///
public async Task Handle(CollectTaskCommand request, CancellationToken cancellationToken)
{
var logier = JwtUtils.GetCurrentLogier();
var entity = await repUserTaskCollect.AsQueryable().AsNoTracking()
.Where(it => it.TaskInfoId == request.Id && it.UserId == logier.Id)
.FirstOrDefaultAsync(cancellationToken);
if (entity == null)
{
entity = new UserTaskCollect
{
TaskInfoId = request.Id,
UserId = logier.Id
};
await repUserTaskCollect.InsertAsync(entity);
}
return true;
}
}
}