public List <VM_Wx_Subject> GetWxSubjects(VM_Wx_SubjectFilter f) { var exp = PredicateBuilder.Create <subject>(sub => !sub.is_delete); if (f.subjectId > 0) { exp = exp.And(sub => sub.subject_id == f.subjectId); } var queryOfSubject = (IQueryable <subject>)MSubjectService.GetSubjects(exp); queryOfSubject = queryOfSubject .OrderByDescending(m => m.subject_id) .Skip((f.CurrentIndex - 1) * f.PageSize) .Take(f.PageSize); return(queryOfSubject.AsEnumerable().Select(m => { var vmSubject = new VM_Wx_Subject(); vmSubject.title = m.title; vmSubject.description = m.description; vmSubject.subjectId = m.subject_id; vmSubject.Images = m.subject_images.Select(img => new VM_Wx_SubjectImage { imageurl = img.image_url?.Replace("http://resource.bestdoctor1.com", "https://resource1.bestdoctor1.com"), url = img.image_jump_url }).ToList(); return vmSubject; }).ToList()); }
public List <VM_Wx_ClassInfo> GetWxClassOfSubject(VM_Wx_SubjectFilter f) { var ret = new List <VM_Wx_ClassInfo>(); var ent = MSubjectService.GetSubject(f.subjectId); if (ent == null) { return(ret); } List <int> selectDiseaseIds = null; if (ent.subject_diseases != null && ent.subject_diseases.Count > 0) { selectDiseaseIds = ent.subject_diseases.Select(m => m.disease_id).ToList(); } var selectedDoctorIds = MDoctorService.GetDoctors(GetDoctorIdExpBuilder(ent)).Select(doc => doc.id) .ToList(); var expClass = PredicateBuilder.Create <microclass>(m => !m.is_deleted); var isAddConditionalFilter = false; if (selectDiseaseIds != null && selectDiseaseIds.Count > 0) { isAddConditionalFilter = true; expClass = expClass.And(s => selectDiseaseIds.Contains(s.DiseaseCategoryID)); } if (selectedDoctorIds.Count > 0) { isAddConditionalFilter = true; expClass = expClass.And(s => s.microclass_livedoctor .Select(d => d.doctor_id) .Intersect(selectedDoctorIds).Any()); } if (!isAddConditionalFilter) { expClass = PredicateBuilder.False <microclass>(); } ret.AddRange( MClassService.GetMicroclasses(expClass) .OrderByDescending(c => c.start_time) .Select(m => new VM_Wx_ClassInfo(m, id => MDoctorService.GetDoctor(id), hid => MHospitalService.GetHospitalProfileByID(hid), cid => MClassService.GetOnlineUserCountByType(cid, 0)) )); return(ret); }