using AutoMapper;
using OASystem.Domain;
using OASystem.Domain.Dtos.Groups;
using OASystem.Domain.Entities.Customer;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.ViewModels.Groups;
using OASystem.Infrastructure.Tools;
using Org.BouncyCastle.Utilities.Encoders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OASystem.Infrastructure.Repositories.Groups
{
///
/// 接团客户名单
/// 仓库
///
public class TourClientListRepository :BaseRepository
{
private readonly Result _result;
private readonly IMapper _mapper;
public TourClientListRepository(SqlSugarClient sqlSugar, IMapper mapper)
: base(sqlSugar)
{
_result = new Result() { Code = -1, Msg = "操作失败!" };
_mapper = mapper;
}
///
/// 根据团组Id查询List
///
///
///
///
public async Task _ItemByDiId(int portId, int diId)
{
if (portId == 1 || portId == 2 || portId == 3 ) // 1 web 2 Android 3 ios
{
string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.* From Grp_TourClientList tcl
Left Join
(Select dc.Id As DcId,dc.LastName,dc.FirstName,ccom.CompanyFullName,dc.Job,cc.CertNo As IDCardNo,dc.Sex
From Crm_DeleClient dc
Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
Left Join Crm_CustomerCert cc On dc.Id = cc.DcId And cc.SdId = 773 And cc.IsDel = 0
Where dc.IsDel = 0) temp
On temp.DcId =tcl.ClientId
Where tcl.IsDel = 0 And tcl.DiId = {0}", diId);
var data = await _sqlSugar.SqlQueryable(sql).ToListAsync();
_result.Code = 0;
_result.Data = data;
}
else
{
_result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
}
return _result;
}
///
/// 基础数据 Init
///
///
///
public async Task _BasicDataInit(int portId)
{
if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
{
var setData = await _sqlSugar.Queryable().Where(it => it.IsDel == 0) .ToListAsync();
var shippingSpaceTypeData = setData.Where(it => it.STid == 44).ToList(); //舱位类型
List _ShippingSpaceTypeData = _mapper.Map>(shippingSpaceTypeData);
var passportTypeData = setData.Where(it => it.STid == 74).ToList(); //护照类型
List _PassportTypeData = _mapper.Map>(passportTypeData);
var _view = new {
ShippingSpaceTypeData = _ShippingSpaceTypeData,
PassportTypeData = _PassportTypeData
};
_result.Code = 0;
_result.Data = _view;
}
else
{
_result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
}
return _result;
}
///
/// 根据Id查询Details
///
///
///
///
public async Task _Details(int portId, int id)
{
if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
{
string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.*,tcl.ShippingSpaceTypeId,tcl.ShippingSpaceSpecialNeeds,
tcl.HotelSpecialNeeds,tcl.MealSpecialNeeds,tcl.Remark
From Grp_TourClientList tcl
Left Join
(Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay,cc2.PassportType,cc2.CertNo As PassportNo,cc2.Country,
cc2.Area,cc2.IssueDt,cc2.ExpiryDt
From Crm_DeleClient dc
Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
Left Join Crm_CustomerCert cc2 On dc.Id = cc2.DcId And cc2.SdId = 774 And cc2.IsDel = 0
Where dc.IsDel = 0) temp
On temp.DcId =tcl.ClientId
Where tcl.IsDel = 0 And tcl.Id = {0}", id);
var data = await _sqlSugar.SqlQueryable(sql).FirstAsync();
if (data != null)
{
data.BirthDay = data.BirthDay.DateFormat("yyyy-MM-dd");
data.IssueDt = data.IssueDt.DateFormat("yyyy-MM-dd");
data.ExpiryDt = data.ExpiryDt.DateFormat("yyyy-MM-dd");
_result.Code = 0;
_result.Data = data;
}
}
else
{
_result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
}
return _result;
}
///
/// Add Or Edit
///
///
///
///
public async Task _AddOrEdit(TourClientListAddOrEditDto dto)
{
if (dto.Id < 0) // 1 web 2 Android 3 ios
{
if (dto.Id == 0) // 添加
{
#region 参数处理
_sqlSugar.BeginTran();
int clientId = -1;
var clientInfo = await _sqlSugar.Queryable().Where(it => it.IsDel == 0 &&
it.LastName.Equals(dto.LastName) &&
it.FirstName.Equals(dto.FirstName) &&
it.Phone.Equals(dto.Phone)
).FirstAsync();
if (clientInfo != null) //该客户存在 修改信息
{
Crm_DeleClient _DeleClient = new Crm_DeleClient()
{
LastName = dto.LastName,
FirstName = dto.FirstName,
Pinyin = dto.Pinyin,
Sex = dto.Sex,
Phone = dto.Phone,
BirthDay = dto.BirthDay
};
clientId = clientInfo.Id;
//1.修改基本信息
var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
new
{
it.LastName,
it.FirstName,
it.Pinyin,
it.Sex,
it.Phone,
it.BirthDay
}
)
.Where(it => it.Id == clientId)
.ExecuteCommandAsync();
if (clientEdit < 0)
{
_sqlSugar.RollbackTran();
_result.Msg = "客户基础信息修改失败!";
}
//2.修改卡类型信息
//2.1 修改身份证信息
}
else //不存在添加 客户信息
{
//1.添加基本信息
//2.添加卡类型信息
//2.1 添加身份证信息
//2.2 添加护照信息
}
Grp_TourClientList _TourClientList = new Grp_TourClientList() {
DiId = dto.DiId,
ClientId = clientId,
ShippingSpaceTypeId = dto.ShippingSpaceTypeId,
ShippingSpaceSpecialNeeds = dto.ShippingSpaceSpecialNeeds,
HotelSpecialNeeds = dto.HotelSpecialNeeds,
MealSpecialNeeds = dto.MealSpecialNeeds,
CreateUserId = dto.UserId,
IsDel = 0
};
_sqlSugar.CommitTran();
#endregion
}
else if (dto.Id > 0) //修改
{
}
}
else
{
_result.Msg = "请传入有效的id参数!";
}
return _result;
}
}
}