using Hotline.Orders; using Hotline.Share.Dtos; using Hotline.Share.Dtos.Ai; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XF.Domain.Dependency; using XF.Domain.Repository; namespace Hotline.Application.Orders { public class AiOrderVisitApplication : IAiOrderVisitApplication, IScopeDependency { private readonly IRepository _aiOrderVisitRepository; private readonly IRepository _aiOrderVisitDetailRepository; public AiOrderVisitApplication(IRepository aiOrderVisitRepository, IRepository aiOrderVisitDetailRepository) { _aiOrderVisitRepository = aiOrderVisitRepository; _aiOrderVisitDetailRepository = aiOrderVisitDetailRepository; } public ISugarQueryable QuerysAiOrderVisit(AiVisitListDto dto) { return _aiOrderVisitRepository.Queryable() .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Name.Contains(dto.Keyword)) .WhereIF(dto.AiOrderVisitTaskState != null, x => x.TaskState == dto.AiOrderVisitTaskState) .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime) .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime) .OrderByDescending(x => x.CreationTime); } public ISugarQueryable QueryAiOrderVisitDetail(AiVisitDetailListDto dto) { return _aiOrderVisitDetailRepository.Queryable() .Includes(x => x.OrderVisit, x => x.OrderVisitDetails) .Includes(x => x.Order) .Where(x => x.AiOrderVisitId == dto.Id) .WhereIF(dto.AiOrderVisitState.HasValue, x => x.AiOrderVisitState == dto.AiOrderVisitState) .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.Order.No.Contains(dto.Keyword) || x.Order.Title.Contains(dto.Keyword)) .OrderByDescending(x => x.CreationTime); } } }