using Exam.Application;
using Exam.Infrastructure.Data.Entity;
using Exam.Insfrastructure.Service.Service;
using Exam.Questions;
using Exam.Share;
using Hotline.Repository.SqlSugar;
using Hotline.Repository.SqlSugar.Exam.Interfaces.Questions;
using Hotline.Share.Dtos.Questions;
using Hotline.Share.Requests.Question;
using Mapster;
using System.ComponentModel;
using XF.Domain.Dependency;
namespace Hotline.Application.Exam.Service.Questions
{
///
/// 关联课件服务
///
[Description("关联课件服务")]
public class QuestionSourcewareService : ApiService,IQuestionSourcewareService, IScopeDependency
{
private readonly IQuestionSourcewareRepository _repository;
public QuestionSourcewareService(IQuestionSourcewareRepository repository) : base(repository)
{
_repository = repository;
}
public async Task GetAsync(EntityQueryRequest entityQueryRequest)
{
var entity = await _repository.GetAsync(entityQueryRequest.Id);
return entity.Adapt();
}
public async Task<(int, List)> GetListAsync(QuestionSourcewarePagedRequest queryRequest)
{
var query = _repository.Queryable();
var result = await query.Select(m => new QuestionSourcewareViewResponse {
QuestionId = m.QuestionId,
SourcewareId = m.SourcewareId,
Id = m.Id,
}).ToListAsync();
var total = await query.CountAsync();
return (total,result);
}
public async Task> GetPagedListAsync(QuestionSourcewarePagedRequest queryRequest)
{
var expression = queryRequest.GetExpression();
var questionSourcewareTable = _repository.Queryable().Where(expression);
var queryable = questionSourcewareTable.Select((m) => new QuestionSourcewareViewResponse
{
QuestionId = m.QuestionId,
SourcewareId = m.SourcewareId,
Id = m.Id,
});
var list = await queryable.ToPageListAsync(queryRequest.PageIndex, queryRequest.PageSize);
var total = await queryable.CountAsync();
var result = new PageViewResponse
{
Items = list,
Pagination = new Pagination(queryRequest.PageIndex, queryRequest.PageSize, total)
};
return result;
}
}
}