using AutoMapper;
using Newtonsoft.Json;
using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.POIFS.Properties;
using NPOI.SS.Formula.Functions;
using OASystem.Domain;
using OASystem.Domain.AesEncryption;
using OASystem.Domain.Dtos;
using OASystem.Domain.Dtos.Financial;
using OASystem.Domain.Dtos.Groups;
using OASystem.Domain.Dtos.UserDto;
using OASystem.Domain.Entities.Customer;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.ViewModels.CRM;
using OASystem.Domain.ViewModels.Financial;
using OASystem.Domain.ViewModels.Groups;
using OASystem.Infrastructure.Repositories.System;
using Org.BouncyCastle.Asn1.Cms;
using Org.BouncyCastle.Utilities.Collections;
using Serilog;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace OASystem.Infrastructure.Repositories.Groups
{
///
/// 接团信息
///
public class DelegationInfoRepository : BaseRepository
{
private readonly SetDataRepository _setDataRepository;
private readonly UsersRepository _usersRepository;
private readonly TaskAssignmentRepository _taskAssignmentRep;
private readonly IMapper _mapper;
//private readonly TeamRateRepository _teamRateRep;
//public readonly Logs _logs;
public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository,
TaskAssignmentRepository taskAssignmentRep, IMapper mapper)
: base(sqlSugar)
{
_setDataRepository = setDataRepository;
_usersRepository = usersRepository;
_taskAssignmentRep = taskAssignmentRep;
_mapper = mapper;
//_teamRateRep = teamRateRep;
}
#region 团组信息 团组详情共享Api
///
/// 查询团组简略详情列表
/// Page 根据Ctable And User 返回可操作的团
///
///
///
public async Task ListByCTableAndUserId(GroupListByCTableAndUserIdDto dto)
{
var view = new JsonView() { Code = StatusCodes.Status400BadRequest,Msg="操作失败!" };
if (dto.CTable < 1)
{
view.Msg = MsgTips.UserId;
return view;
}
if (dto.CTable < 1)
{
view.Msg = "请输入正确的CTable Id !76 酒店预订
77 行程
79 车/导游地接
80 签证
81 邀请/公务活动
82 团组客户保险
85 机票预订
98 其他款项
751 酒店早餐";
return view;
}
if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)
{
//2025-02-17 更改团组列表排序功能 按照团出访时间排序(降序)
string sql = string.Format(@"Select row_number() over(order by di.VisitStartDate Desc) as Row_Number,
di.Id,di.TeamName,di.TourCode,di.ClientName,di.VisitCountry,di.VisitStartDate,
di.VisitEndDate,di.VisitDays,di.VisitPNumber,di.CreateTime
From Grp_GroupsTaskAssignment gta
Inner Join Grp_DelegationInfo di On gta.DIId = di.Id
Where gta.IsDel = 0 And di.IsDel = 0 And gta.IsEnable = 1
And gta.CTId = {0} And gta.UId = {1}", dto.CTable, dto.UserId);
if (!string.IsNullOrEmpty(dto.TeamName))
{
sql = string.Format($"{sql} And di.TeamName Like '%{dto.TeamName}%'");
}
//去重
sql = $"{sql} GROUP BY di.Id,di.TeamName,di.TourCode,di.ClientName,di.VisitCountry,di.VisitStartDate,di.VisitEndDate,di.VisitDays,di.VisitPNumber,di.CreateTime";
RefAsync total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
var data = await _sqlSugar.SqlQueryable(sql).ToPageListAsync(dto.PageIndex, dto.PageSize, total); //ToPageAsync
foreach (var item in data)
{
item.VisitStartDate = item.VisitStartDate == "" ? "" : Convert.ToDateTime(item.VisitStartDate).ToString("yyyy-MM-dd");
item.VisitEndDate = item.VisitEndDate == "" ? "" : Convert.ToDateTime(item.VisitEndDate).ToString("yyyy-MM-dd");
item.VisitCountry = !string.IsNullOrEmpty(item.VisitCountry) && item.VisitCountry.Contains("|") ? item.VisitCountry.Replace("|", "、") : item.VisitCountry;
}
view.Code = StatusCodes.Status200OK;
view.Msg = "操作成功!";
view.Data = data;
view.Count = total;
return view;
}
else
{
view.Msg = "请输入正确的PortType 1 Web 2 Android 3 IOS ";
return view;
}
}
///
/// 团组信息 团组预览详情共享Api
///
///
///
public async Task PostShareGroupInfo(ShareGroupInfoDto dto)
{
var view = new JsonView() { Code = StatusCodes.Status400BadRequest, Msg = "操作失败!" };
string sql = string.Format(@"Select Id,TeamName,TourCode,ClientName,VisitCountry,VisitStartDate,VisitEndDate,VisitDays,VisitPNumber
From Grp_DelegationInfo Where Id = {0} And IsDel = 0", dto.Id);
if (dto.PortType == 1) //Web
{
var _DelegationInfo = await _sqlSugar.SqlQueryable(sql).FirstAsync();
if (_DelegationInfo != null)
{
_DelegationInfo.VisitCountry = FormartTeamName(_DelegationInfo.VisitCountry);
}
else
{
view.Msg = "暂无该团组信息";
return view;
}
view.Data = _DelegationInfo;
}
else if (dto.PortType == 2 || dto.PortType == 3) //IOS Or Android
{
var _DelegationInfo = await _sqlSugar.SqlQueryable(sql).FirstAsync();
if (_DelegationInfo != null)
{
_DelegationInfo.VisitCountry = FormartTeamName(_DelegationInfo.VisitCountry);
view.Data = _DelegationInfo;
}
else
{
view.Msg = "暂无该团组信息";
return view;
}
view.Data = _DelegationInfo;
}
else
{
view.Msg = "请输入正确的端口号。1 Web 2 Android 3 IOS";
return view;
}
view.Code = StatusCodes.Status200OK;
view.Msg = "成功!";
return view;
}
///
/// 团组信息List 团组预览详情共享Api
///
///
///
public async Task PostShareGroupInfos(int portType)
{
Result result = new Result() { Code = -2, Msg = "未知错误", Data = new List