NewGaoKaoApi/New_College.Repository/BASE/T_EnrollmentPlanedescReposi...

92 lines
4.6 KiB
C#

using LinqKit;
using New_College.IRepository;
using New_College.IRepository.UnitOfWork;
using New_College.Model;
using New_College.Model.Models;
using New_College.Model.ViewModels;
using New_College.Repository.Base;
using SqlSugar;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace New_College.Repository
{
/// <summary>
/// T_EnrollmentPlanedescRepository
/// </summary>
public class T_EnrollmentPlanedescRepository : BaseRepository<T_EnrollmentPlanedesc>, IT_EnrollmentPlanedescRepository
{
private readonly IV_CustomerInfoRepository v_CustomerInfo;
private readonly IT_EnrollmentPlaneRepository t_EnrollmentPlane;
public T_EnrollmentPlanedescRepository(IUnitOfWork unitOfWork, IV_CustomerInfoRepository _CustomerInfoRepository, IT_EnrollmentPlaneRepository t_EnrollmentPlaneRepository) : base(unitOfWork)
{
this.v_CustomerInfo = _CustomerInfoRepository;
this.t_EnrollmentPlane = t_EnrollmentPlaneRepository;
}
/// <summary>
/// 智能选大学
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public async Task<PageModel<UniversityResult>> GetRecommendUniversity(RecommendUniversityQuery query)
{
RefAsync<int> totalNumber = 0;
var maxscore = query.Score + 10;
var minscore = query.Score - 10;
var custome = (await this.v_CustomerInfo.QueryById(query.CustomerId));
int planId = (await t_EnrollmentPlane.Query(e => e.Years == custome.Year && e.Area_Id == custome.AreaId)).FirstOrDefault().Id;
var subjects = new string[] { };
string sbuOne = string.Empty;
string sbuTwo = string.Empty;
string sbuTree = string.Empty;
if (!string.IsNullOrWhiteSpace(query.SubjectClaim))
{
subjects = query.SubjectClaim.Split(",");
sbuOne = subjects[0];
sbuTwo = subjects[1];
sbuTree = subjects[2];
}
var recommendInfo = await this.Db.Queryable<T_EnrollmentPlanedesc, D_University>((plans, universitys) => new object[] { JoinType.Left, plans.UniversityId == universitys.Id })
.Where((plans, universitys) => plans.PlanId == planId)
.WhereIF(query.SubjectLevel >= 0, (plans, universitys) => universitys.Subject_Level == query.SubjectLevel)
.WhereIF(query.Type >= 0, (plans, universitys) => universitys.Type == query.Type)
.WhereIF(query.Nhef >= 0, (plans, universitys) => universitys.Nhef == query.Nhef)
.WhereIF(query.Sff >= 0, (plans, universitys) => universitys.Sff == query.Sff)
.WhereIF(query.Syl >= 0, (plans, universitys) => universitys.Syl == query.Syl)
.WhereIF(query.Nature > 0, (plans, universitys) => universitys.Nature == query.Nature)
.WhereIF(!string.IsNullOrWhiteSpace(query.AreaName)&&query.AreaName!= "选择省份", (plans, universitys) => universitys.Area_Name.Contains(query.AreaName))
.WhereIF(maxscore > 10, (plans, universitys) => plans.Scoreline <= maxscore)
.WhereIF(minscore > 0, (plans, universitys) => plans.Scoreline > minscore)
.WhereIF(!string.IsNullOrWhiteSpace(query.SubjectClaim), (plans, universitys) => (plans.Subjectclaim.Contains(sbuOne) || plans.Subjectclaim.Contains(sbuTwo) || plans.Subjectclaim.Contains(sbuTree)))
.OrderBy((plans, universitys) => plans.Scoreline, OrderByType.Desc)
.Select((plans, universitys) => new UniversityResult()
{
Id = plans.Id,
Name = universitys.Name,
Nature = universitys.Nature,
AscriptionName = universitys.AscriptionName,
AreaName = universitys.Area_Name,
Logo = universitys.Logo,
Syl = universitys.Syl == 1 ? true : false,
Nhef = universitys.Nhef == 1 ? true : false,
Sff = universitys.Sff == 1 ? true : false,
UniversityType = universitys.Type
})
.ToPageListAsync(query.PageIndex, query.PageSize, totalNumber);
return new PageModel<UniversityResult>()
{
data = recommendInfo,
page = query.PageIndex,
PageSize = query.PageSize,
dataCount = totalNumber,
pageCount = (int)Math.Ceiling(totalNumber / Convert.ToDecimal(query.PageSize))
};
}
}
}