using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using LinqKit;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using New_College.IServices;
using New_College.Model;
using New_College.Model.Models;
using New_College.Model.Request;
using New_College.Model.ViewModels;
using Newtonsoft.Json;
using SqlSugar;
namespace New_College.Api.Controllers.Front
{
///
/// 新高考选科
///
[Route("api/[controller]")]
[ApiController]
//[Authorize]
public class FrontSelectionController : ControllerBase
{
private readonly ISubjectSelectionServices _selectionServices;
private readonly ID_MajorClassServices _MajorClassServices;
private readonly ID_MajorCategoryServices _MajorCategoryServices;
private readonly ID_MajorServices _MajorServices;
public FrontSelectionController(ISubjectSelectionServices subjectSelection, ID_MajorClassServices majorClassServices, ID_MajorCategoryServices majorCategoryServices, ID_MajorServices majorServices)
{
this._selectionServices = subjectSelection;
_MajorClassServices = majorClassServices;
_MajorCategoryServices = majorCategoryServices;
_MajorServices = majorServices;
}
///
/// 获取专业类别
///
///
[HttpGet]
[Route("GetMajorClassList")]
public async Task>> GetMajorClassList()
{
var roottrees = new List();
var categoryids = (await _MajorCategoryServices.Query(c => c.Type == 1)).Select(c => c.Id);
var majorlist = await _MajorClassServices.Query(c => SqlFunc.ContainsArray(categoryids.ToList(), c.TradeId));
roottrees = majorlist.Select(c => new uniMajorInfoResult() { FirstName = c.Name, RootId = c.Id }).ToList();
var majoritems = await _MajorServices.Query(c => c.IsDelete == false && SqlFunc.ContainsArray(roottrees.Select(c => c.RootId).ToList(), c.CategoryClass_Id));
roottrees.ForEach(a =>
{
a.SecondInfo = majoritems.Where(c => c.CategoryClass_Id == a.RootId).Select(t => new uniMajorSecond() { MajorName = t.MajorName, SecondId = t.Id }).ToList();
});
return new MessageModel>()
{
response = roottrees,
success = true,
msg = "ok"
};
}
///
/// 根据院校和专业名称查询选科组合情况
///
///
///
[HttpGet]
public async Task>> GetSubjectSelects([FromQuery] SelectionServiceRequest request)
{
try
{
request.PageSize = 50;
Expression> exp = Expressionable.Create() //创建表达式
.AndIF(!string.IsNullOrEmpty(request.UniversityName), w => SqlFunc.ContainsArray(JsonConvert.DeserializeObject>(request.UniversityName), w.UniversityName))
.AndIF(!string.IsNullOrEmpty(request.MajorName), w => SqlFunc.ContainsArray(JsonConvert.DeserializeObject>(request.MajorName), w.MajorName))
.AndIF(!string.IsNullOrWhiteSpace(request.Location), w => w.Province == request.Location)
.AndIF(request.Years > 0, w => w.AcademicYear == request.Years.ToString())
.ToExpression();//注意 这一句 不能少
var subjectlist = await _selectionServices.QueryPage(exp, request.PageIndex, request.PageSize);
return new MessageModel>()
{
msg = "success",
response = subjectlist,
success = true
};
}
catch (Exception ex)
{
return new MessageModel>()
{
msg = ex.Message
};
}
}
}
}