using Mapster;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Services;
using Volo.Abp.Users;
using Yi.Framework.Bbs.Application.Contracts.Dtos.Assignment;
using Yi.Framework.Bbs.Domain.Managers;
using Yi.Framework.Bbs.Domain.Shared.Enums;
namespace Yi.Framework.Bbs.Application.Services;
///
/// 任务系统
///
[Authorize]
public class AssignmentService : ApplicationService
{
private readonly AssignmentManager _assignmentManager;
public AssignmentService(AssignmentManager assignmentManager)
{
_assignmentManager = assignmentManager;
}
///
/// 接收任务
///
///
[HttpPost("assignment/accept/{id}")]
public async Task AcceptAsync([FromRoute]Guid id)
{
await _assignmentManager.AcceptAsync(CurrentUser.GetId(), id);
}
///
/// 领取任务奖励
///
///
[HttpPost("assignment/complete/{id}")]
public async Task ReceiveRewardsAsync([FromRoute]Guid id)
{
await _assignmentManager.ReceiveRewardsAsync(id);
}
///
/// 查看可接受的任务
///
///
[HttpGet("assignment/receive")]
public async Task> GetCanReceiveListAsync()
{
var entities = await _assignmentManager.GetCanReceiveListAsync(CurrentUser.GetId());
var output = entities.Adapt>();
return output;
}
///
/// 查询接受的任务
///
[HttpGet("assignment")]
public async Task> GetListAsync([FromQuery]AssignmentGetListInput input)
{
var entities= await _assignmentManager._assignmentRepository._DbQueryable
.Where(x => x.UserId == CurrentUser.GetId())
.WhereIF(input.AssignmentQueryState == AssignmentQueryStateEnum.Progress,
x => x.AssignmentState == AssignmentStateEnum.Progress)
.WhereIF(input.AssignmentQueryState == AssignmentQueryStateEnum.End,
x => x.AssignmentState == AssignmentStateEnum.Completed ||
x.AssignmentState == AssignmentStateEnum.Expired)
.ToListAsync();
var output= entities.Adapt>();
return output;
}
}