using New_College.IServices; using New_College.Model.Models; using New_College.Services.BASE; using New_College.IRepository.Base; using System.Collections.Generic; using New_College.Model.ViewModels; using System.Threading.Tasks; using System.Linq; using New_College.IRepository; using New_College.Common.WebApiClients.HttpApis; using YIJIYI.Core.Common.Helper; using System; namespace New_College.Services { public class Test_CategoryInfoServices : BaseServices, ITest_CategoryInfoServices { private readonly IBaseRepository _dal; private readonly ITest_PsychMeasurementInfoRepository test_PsychMeasurementInfoRepository; private readonly ITest_CycleTimeInfoRepository test_CycleTimeInfoRepository; private readonly IV_OrderInfoRepository v_OrderInfoRepository; public Test_CategoryInfoServices(IBaseRepository dal , ITest_PsychMeasurementInfoRepository ITest_PsychMeasurementInfoRepository , ITest_CycleTimeInfoRepository ITest_CycleTimeInfoRepository , IV_OrderInfoRepository IV_OrderInfoRepository) { this._dal = dal; test_PsychMeasurementInfoRepository = ITest_PsychMeasurementInfoRepository; test_CycleTimeInfoRepository = ITest_CycleTimeInfoRepository; v_OrderInfoRepository = IV_OrderInfoRepository; base.BaseDal = dal; } /// /// 获取分类 根绝type /// /// public async Task> GetCateSelectByType(CategoryInfoQuery query) { var info = await _dal.Query(x => x.IsDelete == false && x.OrderSort == query.Type); if (info.Count <= 0) return new List() { }; //var orderinfo = await v_OrderInfoRepository.Query(x => x.IsDelete == false); var ids = info.Select(x => x.Id).ToList(); var testinfo = await test_PsychMeasurementInfoRepository.Query(x => x.IsDelete == false && ids.Contains(x.CategoryId)); //var cycleinfo = await test_CycleTimeInfoRepository.Query(x => x.IsDelete == false); List list = new List() { }; foreach (var item in info) { list.Add(new CategoryInfoResult() { Id = item.Id, Name = item.Name, Desc = item.Desc, Detail = item.Detail, JoinCount = testinfo.Count(x => x.CategoryId == item.Id) }); } return list; } /// /// 获取测评状态 /// /// /// public async Task GetTestStatus(CategoryStatusQuery query) { var info = await v_OrderInfoRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false); if (info.Count <= 0) return new CategoryStatusResult() { }; var viptype = info.OrderByDescending(x => x.CreateTime).FirstOrDefault().CardTypeId; var cycleinfo = await test_CycleTimeInfoRepository.Query(x => x.VipCardTypeId == viptype && x.IsDelete == false && x.CategoryId == query.CategoryId); if (cycleinfo.Count <= 0) return new CategoryStatusResult() { }; var psych = await test_PsychMeasurementInfoRepository.Query(x => x.CategoryId == query.CategoryId && x.StudentId == query.CustomerId); if (psych.Count <= 0) return new CategoryStatusResult() { CycleTimeId = cycleinfo.FirstOrDefault().Id, TestNum = 0 }; var CycleTimeId = 0; var TestNum = 0; DateTime? TopTime = TimeUtil.GetCstDateTime(); foreach (var item in cycleinfo) { if (CycleTimeId > 0) continue; var nowinfo = psych.Where(x => x.CycleTimeId == item.Id).FirstOrDefault(); if (nowinfo != null) { TopTime = nowinfo.CreateTime; TestNum++; } else { CycleTimeId = item.Id; } } return new CategoryStatusResult() { CycleTimeId = CycleTimeId, TestNum = TestNum, TopTime = TopTime }; } } }