using Aspose.Cells;
using EasyBL.WebApi.Message;
using Entity.Sugar;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SqlSugar;
using SqlSugar.Base;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using EasyBL;
using Entity.ViewModels;
namespace EasyBL.WEBAPP.OPM
{
public class Exhibition_UpdService : ServiceBase
{
#region 獲取參加該展覽的所有廠商
///
/// 獲取參加該展覽的所有廠商
///
/// todo: describe i_crm parameter on GetCustomers
///
public ResponseMessage GetCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sSN = _fetchString(i_crm, @"SN");
var sFlag = _fetchString(i_crm, @"Flag");
var SList = new List();
var saCustomers = new List>();
var saCustomersD = new List>();
//出口
var saExport = db.Queryable((t1, t2) => new object[] {
JoinType.Left,t1.Agent==t2.guid && t1.OrgID==t2.OrgID && t2.Effective == "Y"})
.Select((t1, t2) => new { t1.IsVoid, t1.OrgID, t1.ExhibitionNO, t1.Exhibitors, t1.Agent, AgentCName = t2.CustomerCName, AgentEName = t2.CustomerEName, t1.AgentContactorName, t1.AgentTelephone }).MergeTable()
.Where(it => it.ExhibitionNO == sSN && it.OrgID == i_crm.ORIGID && it.IsVoid == "N").ToList();
if (saExport.Count > 0)
{
foreach (var opm in saExport)
{
if (!string.IsNullOrEmpty(opm.Exhibitors))
{
var saExhibitors = (JArray)JsonConvert.DeserializeObject(opm.Exhibitors);
foreach (JObject jo in saExhibitors)
{
if (jo[@"SupplierID"] != null && jo[@"SupplierID"].ToString() != @"")
//if (jo[@"SupplierID"] != null && jo[@"SupplierID"].ToString() != @"" && !saCustomers.Any(x => (x[@"guid"].ToString() == jo[@"SupplierID"].ToString())))
{
var dic = new Dictionary
{
{ @"RowIndex", saCustomers.Count + 1 },
{ @"guid", jo[@"SupplierID"].ToString() },
{ @"AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
{ @"CustomerCName", jo[@"SupplierName"] == null ? @"" : jo[@"SupplierName"].ToString() },
{ @"CustomerEName", jo[@"SupplierEName"] == null ? @"" : jo[@"SupplierEName"].ToString() },
{ @"ContactorName", jo[@"ContactorName"] == null ? @"" : jo[@"ContactorName"].ToString() },
{ @"Telephone", jo[@"Telephone"] == null ? @"" : jo[@"Telephone"].ToString() }
};
saCustomers.Add(dic);
}
}
}
//if (!string.IsNullOrEmpty(opm.Agent) && !saCustomers.Any(x => (x["guid"].ToString() == opm.Agent)))
//{
// Dictionary dic = new Dictionary
// {
// { "RowIndex", saCustomers.Count + 1 },
// { "guid", opm.Agent },
// { "AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
// { "CustomerCName", "" },
// { "CustomerEName", "" },
// { "ContactorName", opm.AgentContactorName },
// { "Telephone", opm.AgentTelephone }
// };
// saCustomers.Add(dic);
//}
}
}
//進口
var saImport = db.Queryable((t1, t2, t3) => new object[] {
JoinType.Left,t1.Supplier==t2.guid && t1.OrgID==t2.OrgID && t2.Effective == "Y",
JoinType.Left,t1.Agent==t3.guid && t1.OrgID==t3.OrgID && t3.Effective == "Y" })
.Select((t1, t2, t3) => new { t1.IsVoid, t1.OrgID, t1.ExhibitionNO, t1.Supplier, t1.Agent, t2.CustomerCName, t2.CustomerEName, AgentCName = t3.CustomerCName, AgentEName = t3.CustomerEName, t1.ContactorName, t1.Telephone, t1.AgentContactorName, t1.AgentTelephone }).MergeTable()
.Where(it => it.ExhibitionNO == sSN && it.OrgID == i_crm.ORIGID && it.IsVoid == "N").ToList();
if (saImport.Count > 0)
{
foreach (var opm in saImport)
{
if (!string.IsNullOrEmpty(opm.Supplier))
//if (!string.IsNullOrEmpty(opm.Supplier) && !saCustomers.Any(x => (x[@"guid"].ToString() == opm.Supplier)))
{
var dic = new Dictionary
{
{ @"RowIndex", saCustomers.Count + 1 },
{ @"guid", opm.Supplier },
{ @"AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
{ @"CustomerCName", opm.CustomerCName },
{ @"CustomerEName", opm.CustomerEName },
{ @"ContactorName", opm.ContactorName },
{ @"Telephone", opm.Telephone }
};
saCustomers.Add(dic);
}
//if (!string.IsNullOrEmpty(opm.Agent) && !saCustomers.Any(x => (x["guid"].ToString() == opm.Agent)))
//{
// Dictionary dic = new Dictionary
// {
// { "RowIndex", saCustomers.Count + 1 },
// { "guid", opm.Agent },
// { "AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
// { "CustomerCName", "" },
// { "CustomerEName", "" },
// { "ContactorName", opm.AgentContactorName },
// { "Telephone", opm.AgentTelephone }
// };
// saCustomers.Add(dic);
//}
}
}
//其他
var saOther = db.Queryable((t1, t2, t3) => new object[] {
JoinType.Left,t1.Supplier==t2.guid && t1.OrgID==t2.OrgID && t2.Effective == "Y",
JoinType.Left,t1.Agent==t3.guid && t1.OrgID==t3.OrgID && t3.Effective == "Y"})
.Select((t1, t2, t3) => new { t1.IsVoid, t1.OrgID, t1.ExhibitionNO, t1.Supplier, t1.Agent, t2.CustomerCName, t2.CustomerEName, AgentCName = t3.CustomerCName, AgentEName = t3.CustomerEName, t1.ContactorName, t1.Telephone, t1.AgentContactorName, t1.AgentTelephone }).MergeTable()
.Where(it => it.ExhibitionNO == sSN && it.OrgID == i_crm.ORIGID && it.IsVoid == "N").ToList();
if (saOther.Count > 0)
{
foreach (var opm in saOther)
{
if (!string.IsNullOrEmpty(opm.Supplier))
//if (!string.IsNullOrEmpty(opm.Supplier) && !saCustomers.Any(x => (x[@"guid"].ToString() == opm.Supplier)))
{
var dic = new Dictionary
{
{ @"RowIndex", saCustomers.Count + 1 },
{ @"guid", opm.Supplier },
{ @"AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
{ @"CustomerCName", opm.CustomerCName },
{ @"CustomerEName", opm.CustomerEName },
{ @"ContactorName", opm.ContactorName },
{ @"Telephone", opm.Telephone }
};
saCustomers.Add(dic);
}
//if (!string.IsNullOrEmpty(opm.Agent) && !saCustomers.Any(x => (x["guid"].ToString() == opm.Agent)))
//{
// Dictionary dic = new Dictionary
// {
// { "RowIndex", saCustomers.Count + 1 },
// { "guid", opm.Agent },
// { "AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
// { "CustomerCName", "" },
// { "CustomerEName", "" },
// { "ContactorName", opm.AgentContactorName },
// { "Telephone", opm.AgentTelephone }
// };
// saCustomers.Add(dic);
//}
}
}
//其他(駒驛)
var saOtherTG = db.Queryable((t1, t2) => new object[] {
JoinType.Left,t1.Agent==t2.guid && t1.OrgID==t2.OrgID && t2.Effective == "Y"})
.Select((t1, t2) => new {t1.IsVoid, t1.OrgID, t1.ExhibitionNO, t1.Exhibitors, t1.Agent, AgentCName = t2.CustomerCName, AgentEName = t2.CustomerEName, t1.AgentContactorName, t1.AgentTelephone }).MergeTable()
.Where(it => it.ExhibitionNO == sSN && it.OrgID == i_crm.ORIGID && it.IsVoid == "N").ToList();
if (saOtherTG.Count > 0)
{
foreach (var opm in saOtherTG)
{
if (!string.IsNullOrEmpty(opm.Exhibitors))
{
var saExhibitors = (JArray)JsonConvert.DeserializeObject(opm.Exhibitors);
foreach (JObject jo in saExhibitors)
{
if (jo[@"SupplierID"] != null && jo[@"SupplierID"].ToString() != @"")
//if (jo[@"SupplierID"] != null && jo[@"SupplierID"].ToString() != @"" && !saCustomers.Any(x => (x[@"guid"].ToString() == jo[@"SupplierID"].ToString())))
{
var dic = new Dictionary
{
{ @"RowIndex", saCustomers.Count + 1 },
{ @"guid", jo[@"SupplierID"].ToString() },
{ @"AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
{ @"CustomerCName", jo[@"SupplierName"] == null ? @"" : jo[@"SupplierName"].ToString() },
{ @"CustomerEName", jo[@"SupplierEName"] == null ? @"" : jo[@"SupplierEName"].ToString() },
{ @"ContactorName", jo[@"ContactorName"] == null ? @"" : jo[@"ContactorName"].ToString() },
{ @"Telephone", jo[@"Telephone"] == null ? @"" : jo[@"Telephone"].ToString() }
};
saCustomers.Add(dic);
}
}
}
//if (!string.IsNullOrEmpty(opm.Agent) && !saCustomers.Any(x => (x["guid"].ToString() == opm.Agent)))
//{
// Dictionary dic = new Dictionary
// {
// { "RowIndex", saCustomers.Count + 1 },
// { "guid", opm.Agent },
// { "AgentCName", string.IsNullOrEmpty(opm.AgentCName) ? opm.AgentEName : opm.AgentCName },
// { "CustomerCName", "" },
// { "CustomerEName", "" },
// { "ContactorName", opm.AgentContactorName },
// { "Telephone", opm.AgentTelephone }
// };
// saCustomers.Add(dic);
//}
}
}
rm = new SuccessResponseMessage(null, i_crm);
var saGCs = saCustomers.GroupBy(x => x["guid"].ToString());
foreach (var item in saGCs)
{
var AllAgentCName = item.Where(c => c["AgentCName"] != null).Select(c => c["AgentCName"]).Distinct().ToList();
var Customer = item.First();
Dictionary dic = new Dictionary
{
{ "RowIndex", saCustomersD.Count + 1 },
{ "guid", Customer["guid"] },
{ "AgentCName", string.Join(" ◆",AllAgentCName) },
{ "CustomerCName", Customer["CustomerCName"] },
{ "CustomerEName", Customer["CustomerEName"] },
{ "ContactorName", Customer["ContactorName"] },
{ "Telephone", Customer["Telephone"] }
};
saCustomersD.Add(dic);
}
if (sFlag == @"export")
{
var dicHeader = new Dictionary {
{@"RowIndex",@"項次" },
{ @"AgentCName",@"國外代理" },
{ @"CustomerCName",@"公司中文名稱" },
{ @"CustomerEName",@"公司英文名稱" },
{ @"ContactorName",@"聯絡人" },
{ @"Telephone",@"聯絡電話/手機" }
};
var oExhibition = db.Queryable().Single(x => x.SN == sSN.ObjToInt());
var bOk = new ExcelService().CreateExcel(saCustomersD, out string sPath, dicHeader, oExhibition.Exhibitioname_TW, oExhibition.Exhibitioname_TW);
rm.DATA.Add(BLWording.REL, sPath);
}
else
{
rm.DATA.Add(BLWording.REL, saCustomersD);
}
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetCustomers(獲取參加該展覽的所有廠商)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取參加該展覽的所有廠商
#region 獲取展覽資料
///
/// 獲取展覽資料
///
/// todo: describe i_crm parameter on GetExhibitions
///
public ResponseMessage GetExhibitions(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sSN = _fetchString(i_crm, @"SN");
var saExhibition = db.Queryable()
.OrderBy(x => x.ExhibitionCode, OrderByType.Desc)
.Where(x => x.Effective == @"Y")
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => x.OrgID == "TE" || x.OrgID == "TG")
.WhereIF(!string.IsNullOrEmpty(sSN), x => x.SN == sSN.ObjToInt())
.Select(x => new
{
x.SN,
x.ExhibitionCode,
x.Exhibitioname_TW,
x.Exhibitioname_EN,
ExhibitioFullName = SqlFunc.IIF(SqlFunc.HasValue(x.ExhibitioShotName_TW), "(" + SqlFunc.IsNull(x.ExhibitioShotName_TW, "") + ")", "") + x.Exhibitioname_TW,
x.ExhibitioShotName_TW,
x.ExhibitionDateStart,
x.ExhibitionDateEnd,
x.ExhibitionAddress,
ResponsiblePerson = SqlFunc.MappingColumn(x.Exhibitioname_TW, "dbo.[OFN_SYS_MemberNameByMemberID](OrgID,CreateUser)"),
x.CreateDate
})
.ToList();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, saExhibition);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetExhibitions(獲取展覽資料)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
///
/// 獲取展覽資料
///
/// todo: describe i_crm parameter on GetExhibitions
///
public ResponseMessage CheckExhibitionName(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var Type = _fetchString(i_crm, @"Type").ToLower();
var sSN = _fetchString(i_crm, @"SN");
int.TryParse(sSN, out int SN);
var sExhibitioname_TW = _fetchString(i_crm, @"Exhibitioname_TW");
var sExhibitioname_TW_Alt = GetTWSameName(sExhibitioname_TW);
var sExhibitioShotName_TW = _fetchString(i_crm, @"ExhibitioShotName_TW");
var sExhibitioShotName_TW_Alt = GetTWSameName(sExhibitioShotName_TW);
var sExhibitioname_CN = _fetchString(i_crm, @"Exhibitioname_CN");
var sExhibitioname_EN = _fetchString(i_crm, @"Exhibitioname_EN");
//var saExhibitions = db.Queryable().Where(x => x.OrgID == i_crm.ORIGID && x.Effective == @"Y" && x.SN != SN).ToList();
var saExhibitions = db.Queryable()
.Where(x => x.Effective == @"Y" && x.SN != SN)
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => x.OrgID == "TE" || x.OrgID == "TG")
.ToList();
var RepeatShotName = saExhibitions.Any(x => x.ExhibitioShotName_TW.Trim() == sExhibitioShotName_TW || x.ExhibitioShotName_TW.Trim() == sExhibitioShotName_TW_Alt);
var RepeatNameTW = saExhibitions.Any(x => x.Exhibitioname_TW.Trim() == sExhibitioname_TW || x.Exhibitioname_TW.Trim() == sExhibitioname_TW_Alt);
var RepeatNameCN = saExhibitions.Any(x => x.Exhibitioname_CN.Trim() == sExhibitioname_CN);
var RepeatNameEN = saExhibitions.Any(x => x.Exhibitioname_EN.Trim() == sExhibitioname_EN);
if (RepeatShotName && RepeatNameTW)
{
sMsg = "活動/展覽簡稱、展覽名稱重複,請重新輸入。";
}
else if (RepeatShotName)
{
sMsg = "活動/展覽簡稱重複,請重新輸入。";
}
else if (RepeatNameTW)
{
sMsg = "展覽名稱重複,請重新輸入。";
}
else if (RepeatNameCN)
{
sMsg = "簡體名稱重複,請重新輸入。";
}
else if (RepeatNameEN)
{
sMsg = "英文展名重複,請重新輸入。";
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, "OK");
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetExhibitions(獲取展覽資料)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
private string GetTWSameName(string OriName)
{
if (string.IsNullOrWhiteSpace(OriName))
{
return "";
}
if (OriName.Contains("台灣"))
{
return OriName.Replace("台灣", "臺灣");
}
else
{
return OriName.Replace("臺灣", "台灣");
}
}
#endregion 獲取展覽資料
#region 獲取匯入廠商資料
///
/// 獲取匯入廠商資料
///
/// todo: describe i_crm parameter on GetImportCustomers
///
public ResponseMessage GetImportCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var pml = new PageModel
{
PageIndex = _fetchInt(i_crm, @"pageIndex"),
PageSize = _fetchInt(i_crm, @"pageSize")
};
var iPageCount = 0;
var sSortField = _fetchString(i_crm, @"sortField");
var sSortOrder = _fetchString(i_crm, @"sortOrder");
var iSN = _fetchInt(i_crm, @"SN");
var sExhibitionArea = _fetchString(i_crm, @"ExhibitionArea");
var sMuseumMumber = _fetchString(i_crm, @"MuseumMumber");
var sCustomerCName = _fetchString(i_crm, @"CustomerCName");
var sCustomerEName = _fetchString(i_crm, @"CustomerEName");
var sUniCode = _fetchString(i_crm, @"UniCode");
var sContactor = _fetchString(i_crm, @"Contactor");
var sTelephone = _fetchString(i_crm, @"Telephone");
var sEmail = _fetchString(i_crm, @"Email");
var sAddress = _fetchString(i_crm, @"Address");
var sMemo = _fetchString(i_crm, @"Memo");
pml.DataList = db.Queryable
((t1, t2, t3) => new object[]
{
JoinType.Inner, t1.OrgID == t2.OrgID && t1.ExhibitionNO == t2.SN,
JoinType.Left, t1.OrgID == t3.OrgID && t1.guid == t3.CustomerId
}
)
.Where((t1, t2, t3) => t1.ExhibitionNO == iSN && t1.OrgID == i_crm.ORIGID)
.WhereIF(!String.IsNullOrEmpty(sExhibitionArea), (t1, t2, t3) => t1.ExhibitionArea.Contains(sExhibitionArea))
.WhereIF(!String.IsNullOrEmpty(sMuseumMumber), (t1, t2, t3) => t1.MuseumMumber.Contains(sMuseumMumber))
.WhereIF(!String.IsNullOrEmpty(sCustomerCName), (t1, t2, t3) => t1.CustomerCName.Contains(sCustomerCName))
.WhereIF(!String.IsNullOrEmpty(sCustomerEName), (t1, t2, t3) => t1.CustomerEName.Contains(sCustomerEName))
.WhereIF(!String.IsNullOrEmpty(sUniCode), (t1, t2, t3) => t1.UniCode.Contains(sUniCode))
.WhereIF(!String.IsNullOrEmpty(sContactor), (t1, t2, t3) => t1.Contactor.Contains(sContactor))
.WhereIF(!String.IsNullOrEmpty(sTelephone), (t1, t2, t3) => t1.Telephone.Contains(sTelephone))
.WhereIF(!String.IsNullOrEmpty(sEmail), (t1, t2, t3) => t1.Email.Contains(sEmail))
.WhereIF(!String.IsNullOrEmpty(sAddress), (t1, t2, t3) => t1.Address.Contains(sAddress))
.WhereIF(!String.IsNullOrEmpty(sMemo), (t1, t2, t3) => t1.Memo.Contains(sMemo))
.Select((t1, t2, t3) => new View_CRM_ImportCustomers
{
guid = SqlFunc.GetSelfAndAutoFill(t1.guid),
Exhibitioname_TW = t2.Exhibitioname_TW,
Exhibitioname_EN = t2.Exhibitioname_EN,
IsAppoint = SqlFunc.IIF(SqlFunc.HasValue(t1.AppointNO), "Y", "N")
})
.MergeTable()
.OrderBy(sSortField, sSortOrder)
.ToPageList(pml.PageIndex, pml.PageSize, ref iPageCount);
pml.Total = iPageCount;
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, pml);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetImportCustomers(獲取匯入廠商資料)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取匯入廠商資料
#region 匯入廠商資料
///
/// 匯入廠商資料
///
/// todo: describe i_crm parameter on ImportCustomers
///
public ResponseMessage ImportCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sFileId = _fetchString(i_crm, @"FileId");
var sFileName = _fetchString(i_crm, @"FileName");
var iSN = _fetchInt(i_crm, @"SN");
var sRoot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"OutFiles\Temporary\");//Word模版路徑
var sfileName = sFileName.Split(new string[] { @"." }, StringSplitOptions.RemoveEmptyEntries);
var sSubFileName = sfileName.LastOrDefault(); //副檔名
sFileName = sRoot + sFileId + @"." + sSubFileName;
var book = new Workbook(sFileName);
var sheet = book.Worksheets[0];
var cells = sheet.Cells;
var tbFeeItems = cells.ExportDataTableAsString(1, 0, cells.MaxDataRow, cells.MaxDataColumn + 1, false);
if (tbFeeItems.Rows.Count > 0)
{
var saImportCustomers = new List();
foreach (DataRow row in tbFeeItems.Rows)
{
try
{
var sExhibitionArea = row[@"Column1"].ToString();// 展覽地區
var sMuseumMumber = row[@"Column2"].ToString();// 攤位編號
var sUniCode = row[@"Column3"].ToString();// 統一編號
var sCustomerCName = row[@"Column4"].ToString();// 公司中文名稱
var sCustomerEName = row[@"Column5"].ToString();// 公司英文名稱
var sContactor = row[@"Column7"].ToString();// 聯絡人1
var sTelephone = row[@"Column8"].ToString();// 電話
var sAddress = row[@"Column9"].ToString();//地址
var sEmail = row[@"Column10"].ToString();// 郵箱
var sMemo = row[@"Column11"].ToString();// 備註
sCustomerCName = sCustomerCName.Trim();// 公司中文名字去空格
var saImportCustomers_Exsit = db.Queryable()
.Where(x => x.OrgID == i_crm.ORIGID)
.Where(x => x.CustomerCName == sCustomerCName)
.ToList();
var saCustomers_Exsit = db.Queryable()
.Where(x => x.OrgID == i_crm.ORIGID && x.CustomerCName == sCustomerCName)
.ToList();
var saImportCustomers_Cur = saImportCustomers_Exsit.Where(x => x.ExhibitionNO == iSN).ToList();
if (saImportCustomers_Cur.Count == 0)
{
var oImportCustomers = new OTB_CRM_ImportCustomers
{
guid = Guid.NewGuid().ToString(),
OrgID = i_crm.ORIGID,
ExhibitionNO = iSN,
MuseumMumber = sMuseumMumber,
ExhibitionArea = sExhibitionArea,
CustomerCName = sCustomerCName,
CustomerEName = sCustomerEName,
UniCode = sUniCode,
Contactor = sContactor,
Telephone = sTelephone,
Address = sAddress,
Email = sEmail,
Memo = sMemo,
IsFormal = saCustomers_Exsit.Count > 0 ? true : saImportCustomers_Exsit.Count > 0 ? saImportCustomers_Exsit.First().IsFormal : false,
TransactionType = "",
CreateUser = i_crm.USERID,
CreateDate = DateTime.Now,
ModifyUser = i_crm.USERID,
ModifyDate = DateTime.Now
};
if (oImportCustomers.IsFormal == true)
{
oImportCustomers.FormalGuid = saCustomers_Exsit.Count > 0 ? saCustomers_Exsit.First().guid : saImportCustomers_Exsit.First().guid;
}
saImportCustomers.Add(oImportCustomers);
}
}
catch { }
}
if (saImportCustomers.Count > 0)
{
db.Insertable(saImportCustomers).ExecuteCommand();
}
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, true);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"ImportCustomers(匯入廠商資料)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 匯入廠商資料
#region 匯入廠商資料匯出
///
/// 匯入廠商資料匯出
///
/// todo: describe i_crm parameter on ImportCustomers
///
public ResponseMessage ExportCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var iSN = _fetchInt(i_crm, @"SN");
var saImportCustomers = db.Queryable
((t1, t2, t3) => new object[]
{
JoinType.Inner, t1.OrgID == t2.OrgID && t1.ExhibitionNO == t2.SN,
JoinType.Left, t1.OrgID == t3.OrgID && t1.guid == t3.CustomerId
}
)
.Where((t1, t2, t3) => t1.ExhibitionNO == iSN && t1.OrgID == i_crm.ORIGID)
.Select((t1, t2, t3) => new View_CRM_ImportCustomers
{
guid = SqlFunc.GetSelfAndAutoFill(t1.guid),
Exhibitioname_TW = t2.Exhibitioname_TW,
Exhibitioname_EN = t2.Exhibitioname_EN,
IsAppoint = SqlFunc.IIF(SqlFunc.HasValue(t1.AppointNO), "已預約", "未預約")
})
.ToPageList(1, 100000);
foreach (var item in saImportCustomers)
{
item.CustomerShotEName = (bool)item.IsFormal ? "已轉正" : "未轉正";
}
// var dtImportCustomers = saImportCustomers.ListToDataTable();
const string sFileName = "匯入廠商匯出資料";
var oHeader = new Dictionary
{
{ "RowIndex", "項次" },
{ "ExhibitionArea", "展區" },
{ "MuseumMumber", "攤位" },
{ "CustomerCName", "客戶中文名稱" },
{ "CustomerEName", "客戶英文名稱" },
{ "UniCode", "統編號碼" },
{ "Contactor", "聯絡人" },
{ "Telephone", "電話" },
{ "Email", "郵箱" },
{ "Address", "地址" },
{ "Memo", "備註" },
{ "CustomerShotEName", "轉正狀態" },//暫時用英文簡稱代替
{ "IsAppoint", "預約狀態" }
};
var dicAlain = ExcelService.GetExportAlain(oHeader, "RowIndex,MuseumMumber,UniCode,Contactor,Telephone,Email,CustomerShotEName,IsAppoint");
var listMerge = new List>();
var bOk = new ExcelService().CreateExcelByList(saImportCustomers, out string sPath, oHeader, dicAlain, sFileName);
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, sPath);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"ExportCustomers(匯入廠商資料匯出)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 匯入廠商資料匯出
#region 修改匯入廠商轉正標記
///
/// 修改匯入廠商轉正標記
///
/// todo: describe i_crm parameter on UpdateCustomerTag
///
public ResponseMessage UpdateCustomerTag(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sPrevId = _fetchString(i_crm, @"PrevId");
var sAfterId = _fetchString(i_crm, @"AfterId");
var oCustomers = db.Queryable()
.Single(x => x.guid == sAfterId && x.OrgID == i_crm.ORIGID);
var oImportCustomers = db.Queryable()
.Single(x => x.guid == sPrevId && x.OrgID == i_crm.ORIGID);
oImportCustomers.IsFormal = true;
oImportCustomers.FormalGuid = oCustomers.guid;
//oImportCustomers.CustomerCName = oCustomers.CustomerCName;
var iRel = db.Updateable(oImportCustomers)
.UpdateColumns(x => new { x.IsFormal, x.FormalGuid, x.CustomerCName })
.Where(x => x.OrgID == i_crm.ORIGID && x.CustomerCName == oImportCustomers.CustomerCName)
.ExecuteCommand();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"UpdateCustomerTag(修改匯入廠商轉正標記)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 修改匯入廠商轉正標記
#region 新增匯入廠商
///
/// 新增匯入廠商
///
/// todo: describe i_crm parameter on InsertImportCustomers
///
public ResponseMessage InsertImportCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sCustomerCName = _fetchString(i_crm, @"CustomerCName");
var iExhibitionNO = _fetchInt(i_crm, @"ExhibitionNO");
if (db.Queryable()
.Any(x => x.OrgID == i_crm.ORIGID && x.ExhibitionNO == iExhibitionNO && x.CustomerCName == sCustomerCName))
{
sMsg = "該展覽已存在同名廠商資料";
break;
}
sCustomerCName = sCustomerCName.Trim();
var saImportCustomers_Exsit = db.Queryable()
.Where(x => x.OrgID == i_crm.ORIGID && x.CustomerCName == sCustomerCName)
.ToList();
var saCustomers_Exsit = db.Queryable()
.Where(x => x.OrgID == i_crm.ORIGID && x.CustomerCName == sCustomerCName)
.ToList();
var oImportCustomers_Add = _fetchEntity(i_crm);
oImportCustomers_Add.OrgID = i_crm.ORIGID;
oImportCustomers_Add.guid = Guid.NewGuid().ToString();
oImportCustomers_Add.ExhibitionNO = iExhibitionNO;
oImportCustomers_Add.IsFormal = saCustomers_Exsit.Count > 0 ? true : saImportCustomers_Exsit.Count > 0 ? saImportCustomers_Exsit.First().IsFormal : false;
if (oImportCustomers_Add.IsFormal == true)
{
oImportCustomers_Add.FormalGuid = saCustomers_Exsit.Count > 0 ? saCustomers_Exsit.First().guid : saImportCustomers_Exsit.First().guid;
}
var iRel = db.Insertable(oImportCustomers_Add).ExecuteCommand();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"InsertImportCustomers(新增匯入廠商)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
if (i_crm.LANG == @"zh")
{
sMsg = ChineseStringUtility.ToSimplified(sMsg);
}
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 新增匯入廠商
#region 修改匯入廠商
///
/// 修改匯入廠商
///
/// todo: describe i_crm parameter on UpdImportCustomers
///
public ResponseMessage UpdImportCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var oEntity = _fetchEntity(i_crm);
var iRel = db.Updateable(oEntity)
.UpdateColumns(x => new
{
x.UniCode,
x.CustomerCName,
x.CustomerEName,
x.ExhibitionArea,
x.Contactor,
x.Telephone,
x.Email,
x.Address,
x.Memo,
x.MuseumMumber
}).ExecuteCommand();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"UpdImportCustomers(修改匯入廠商)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
if (i_crm.LANG == @"zh")
{
sMsg = ChineseStringUtility.ToSimplified(sMsg);
}
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 修改匯入廠商
#region 從名單移除
///
/// 從名單移除
///
/// todo: describe i_crm parameter
///
public ResponseMessage RemoveFromList(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
int iRel = 1;
string strSN = _fetchString(i_crm, @"SN");
string strGuids = _fetchString(i_crm, @"Guid");
string[] arrGuid = strGuids.Split(',');
foreach (string strGuid in arrGuid)
{
if (strGuid != "")
{
if (iRel != 1)
{
break;
}
//刪除聯絡人關聯
iRel = db.Deleteable().Where(x => x.ExhibitionNO == strSN && x.CustomerId == strGuid).ExecuteCommand();
//刪除客戶關聯
iRel = db.Deleteable().Where(x => x.ExhibitionNO == strSN && x.CustomerId == strGuid).ExecuteCommand();
}
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"RemoveFromList(從名單移除)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
if (i_crm.LANG == @"zh")
{
sMsg = ChineseStringUtility.ToSimplified(sMsg);
}
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 從名單移除
#region 新增名單-資料庫匯入
///
/// 新增名單-資料庫匯入
///
/// todo: describe i_crm parameter
///
public ResponseMessage AddListDB(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var iRel = 1;
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"AddListDB(新增名單-資料庫匯入)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
if (i_crm.LANG == @"zh")
{
sMsg = ChineseStringUtility.ToSimplified(sMsg);
}
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 新增名單-資料庫匯入
#region 名單表格下載
///
/// 名單表格下載
///
/// todo: describe i_crm parameter
///
public ResponseMessage DownloadTemplate(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var oTempl = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.TemplID == "ExhibitionCustomerList");
if (oTempl == null)
{
sMsg = @"請檢查模版設定";
break;
}
var oFile = db.Queryable().Single(it => it.OrgID == i_crm.ORIGID && it.ParentID == oTempl.FileID);
if (oFile == null)
{
sMsg = @"系統找不到對應的報表模版";
break;
} else
{
oFile.FileName = Path.GetFileNameWithoutExtension(oFile.FileName);
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, oFile);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"DownloadTemplate(名單表格下載)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 名單表格下載
#region 展覽管理(客戶查詢帶入)
///
/// 客戶管理(單筆查詢)
///
///
///
public ResponseMessage CustomerQuery(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sId = _fetchString(i_crm, @"guid");
var sUniCode = _fetchString(i_crm, @"unicode");
var oEntity = db.Queryable()
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID && x.Effective == "Y")
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID && x.Effective == "Y")
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => (x.OrgID == "TE" || x.OrgID == "TG") && x.Effective == "Y")
.WhereIF(!string.IsNullOrEmpty(sId), x => x.guid == sId)
.WhereIF((!string.IsNullOrEmpty(sUniCode) && string.IsNullOrEmpty(sId)), x => x.UniCode == sUniCode)
.Select(x => new
{
x.guid,
x.CustomerCName,
x.CustomerEName,
x.UniCode,
x.Address,
x.WebsiteAdress
})
.First();
//.Single(x => x.OrgID == i_crm.ORIGID && (x.guid == sId || x.UniCode == sUniCode));
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, oEntity);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), "", "CustomerQuery(展覽管理(客戶查詢帶入))", "", "", "");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 展覽管理(客戶查詢帶入)
#region 新增展覽名單 單筆新增
///
/// 新增展覽名單 單筆新增
///
/// todo: describe i_crm parameter on InsertExhibitionList
///
public ResponseMessage InsertExhibitionListSingle(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
int iRel = 1;
int intCount = 0;
string strExhibitionNO = "";
string strCustomerId = "";
string sOrgID = i_crm.ORIGID;
strExhibitionNO = _fetchString(i_crm, @"ExhibitionNO");
strCustomerId = _fetchString(i_crm, @"CustomerId");
//沒有guid,新客戶
if (strCustomerId == "")
{
OTB_CRM_Customers oCustomer = _fetchEntity(i_crm);
_setEntityBase(oCustomer, i_crm);
//檢查重複客戶
intCount = db.Queryable()
.Where(x => x.Effective == "Y" && ((x.CustomerCName != "" && x.CustomerCName == oCustomer.CustomerCName) || (x.CustomerEName != "" && x.CustomerEName == oCustomer.CustomerEName) || (x.UniCode != "" && x.UniCode == oCustomer.UniCode)))
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => x.OrgID == "TE" || x.OrgID == "TG")
.Count();
if (intCount > 0)
{
sMsg = "客戶統編或中文名稱或英文名稱重複,無法新增";
iRel = 0;
} else
{
//新增客戶資料
strCustomerId = Guid.NewGuid().ToString();
oCustomer.guid = strCustomerId;
oCustomer.TransactionType = "";
oCustomer.CustomerNO = " ";
oCustomer.IsAudit = "N";
oCustomer.Effective = "Y";
//客戶資料表頭
OTB_CRM_CustomersMST oMstEntity = _fetchEntity(i_crm);
_setEntityBase(oMstEntity, i_crm);
oMstEntity.guid = Guid.NewGuid().ToString();
oMstEntity.CustomerNO = " ";
oMstEntity.customer_guid = strCustomerId;
oMstEntity.Effective = "Y";
iRel = db.Insertable(oCustomer).ExecuteCommand();
if (iRel == 1)
{
iRel = db.Insertable(oMstEntity).ExecuteCommand();
}
}
} else
{
//檢查該展覽是否已存在同名廠商資料
intCount = 0;
intCount = db.Queryable().Where(x => x.ExhibitionNO == strExhibitionNO && x.CustomerId == strCustomerId).Count();
if (intCount > 0)
{
sMsg = "該展覽已存在同名廠商資料,無法新增";
iRel = 0;
}
}
if(iRel == 1)
{
//處理展覽客戶關聯資料表
OTB_OPM_ExhibitionCustomers oExCustomerEntity = _fetchEntity(i_crm);
_setEntityBase(oExCustomerEntity, i_crm);
oExCustomerEntity.CustomerId = strCustomerId;
iRel = db.Insertable(oExCustomerEntity).ExecuteCommand();
if (iRel == 1)
{
List listAdd = new List();
List listAddContactors = new List();
//新增聯絡人資料
JArray jaAddContactors = (JArray)JsonConvert.DeserializeObject(_fetchString(i_crm, @"AddContactors"));
if (jaAddContactors.Count > 0)
{
foreach (JObject joContactors in jaAddContactors)
{
//intMax++;
OTB_CRM_Contactors Contactors = new OTB_CRM_Contactors();
_setEntityBase(Contactors, i_crm);
Contactors.guid = Guid.NewGuid().ToString();
Contactors.CustomerId = strCustomerId;
Contactors.ContactorName = joContactors["ContactorName"].ToString();
Contactors.NickName = joContactors["NickName"].ToString();
Contactors.Call = joContactors["Call"].ToString();
Contactors.Birthday = joContactors["Birthday"].ToString();
Contactors.MaritalStatus = joContactors["MaritalStatus"].ToString();
Contactors.PersonalMobilePhone = joContactors["PersonalMobilePhone"].ToString();
Contactors.PersonalEmail = joContactors["PersonalEmail"].ToString();
Contactors.LINE = joContactors["LINE"].ToString();
Contactors.WECHAT = joContactors["WECHAT"].ToString();
Contactors.Personality = joContactors["Personality"].ToString();
Contactors.Preferences = joContactors["Preferences"].ToString();
Contactors.PersonalAddress = joContactors["PersonalAddress"].ToString();
Contactors.Memo = joContactors["Memo"].ToString();
Contactors.ImmediateSupervisor = joContactors["ImmediateSupervisor"].ToString();
Contactors.JobTitle = joContactors["JobTitle"].ToString();
Contactors.Department = joContactors["Department"].ToString();
Contactors.Email1 = joContactors["Email1"].ToString();
Contactors.Email2 = joContactors["Email2"].ToString();
Contactors.Telephone1 = joContactors["Telephone1"].ToString();
Contactors.Telephone2 = joContactors["Telephone2"].ToString();
Contactors.Ext1 = joContactors["Ext1"].ToString();
Contactors.Ext2 = joContactors["Ext2"].ToString();
Contactors.ChoseReason = joContactors["ChoseReason"].ToString();
//Contactors.OrderByValue = intMax.ToString();
int iReljaAddContactors = db.Insertable(Contactors).ExecuteCommand();
listAddContactors.Add(Contactors.guid);
listAdd.Add(Contactors);
}
}
//新增展覽客戶聯絡人關聯資料表
JArray jaContactors = (JArray)JsonConvert.DeserializeObject(_fetchString(i_crm, @"Contactors"));
if (jaContactors.Count > 0)
{
foreach (JObject joContactors in jaContactors)
{
OTB_OPM_ExhibitionContactors ExhibitionContactors = new OTB_OPM_ExhibitionContactors();
_setEntityBase(ExhibitionContactors, i_crm);
ExhibitionContactors.ExhibitionNO = strExhibitionNO;
ExhibitionContactors.CustomerId = strCustomerId;
ExhibitionContactors.SourceType = "1";
ExhibitionContactors.IsFormal = "Y";
if (joContactors["guid"] == null)
{
ExhibitionContactors.ContactorId = listAdd.Where(t => t.ContactorName == joContactors["ContactorName"].ToString()).ToList()[0].guid;
}
else
{
ExhibitionContactors.ContactorId = joContactors["guid"].ToString();
}
int iRelExhibitionContactors = db.Insertable(ExhibitionContactors).ExecuteCommand();
}
}
}
}
//iRel = 1;
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"InsertExhibitionListSingle(新增展覽名單 單筆新增)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
if (i_crm.LANG == @"zh")
{
sMsg = ChineseStringUtility.ToSimplified(sMsg);
}
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 新增展覽名單 單筆新增
#region 獲取展覽名單
///
/// 獲取展覽名單
///
/// todo: describe i_crm parameter on GetCustomers
///
public ResponseMessage GetExhibitionList(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
string sSN = _fetchString(i_crm, @"SN");
string sSortField = _fetchString(i_crm, @"sortField");
string sSortOrder = _fetchString(i_crm, @"sortOrder");
var bExcel = _fetchBool(i_crm, @"Excel");
if (string.IsNullOrEmpty(sSortField))
{
sSortField = "CASE TransportRequire WHEN '未接' THEN 1 WHEN '尚未決定' THEN 2 WHEN '有需求' THEN 3 WHEN '線上預約' THEN 4 WHEN '無需求' THEN 5 WHEN '無需求(手提)' THEN 6 WHEN '無需求(其他代理運輸)' THEN 7 WHEN '無需求(當地出貨)' THEN 8 WHEN '無需求(其他)' THEN 9 ELSE 10 END";
} else
{
if (sSortField == "TransportRequire")
{
sSortField = "CASE TransportRequire WHEN '未接' THEN 1 WHEN '尚未決定' THEN 2 WHEN '有需求' THEN 3 WHEN '線上預約' THEN 4 WHEN '無需求' THEN 5 WHEN '無需求(手提)' THEN 6 WHEN '無需求(其他代理運輸)' THEN 7 WHEN '無需求(當地出貨)' THEN 8 WHEN '無需求(其他)' THEN 9 ELSE 10 END";
}
}
if (string.IsNullOrEmpty(sSortOrder))
{
sSortOrder = "ASC";
}
var listCustomer = db.Queryable((t1, t2, t3) => new object[] {
JoinType.Inner,t1.CustomerId==t2.guid,
JoinType.Left,t1.ListSource==t3.guid,
})
.Select((t1, t2, t3) => new {
t1.SN, t2.guid, t1.ExhibitionNO, t1.CustomerId, t2.CustomerCName, t2.CustomerEName, t1.VolumeForecasting, t1.NumberOfBooths, ContactorName = "", Telephone1 = "",
t1.ListSource, ListSourceName = t3.CustomerShotCName, IsFormal = t2.IsAudit, t2.Telephone, t2.FAX, t2.Address, t1.ModifyDate, t1.Memo, t2.IsImporter,
TransportRequire = SqlFunc.MappingColumn(t1.ExhibitionNO, "dbo.[OFN_SYS_ArgumentValueByArgumentID]('TE', t1.TransportRequire,'TransportRequire')"),
TransportationMode = SqlFunc.MappingColumn(t1.ExhibitionNO, "dbo.[OFN_SYS_ArgumentValueByArgumentID]('TE', t1.TransportationMode,'Transport')"),
}).MergeTable().Where(t1 => t1.ExhibitionNO == sSN).OrderBy(sSortField, sSortOrder).ToList();
var listContactorFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Select((t1, t2) => new { t1.ExhibitionNO, t1.CustomerId, t2.ContactorName, t2.Telephone1, t2.Ext1, t1.IsMain, t2.OrderByValue }).MergeTable()
.Where(t1 => t1.ExhibitionNO == sSN).OrderBy("OrderByValue").ToList();
var listContactorInFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Select((t1, t2) => new { t1.ExhibitionNO, t1.CustomerId, t2.ContactorName, t2.Telephone1, t2.Ext1, t1.IsMain, t2.OrderByValue }).MergeTable()
.Where(t1 => t1.ExhibitionNO == sSN).OrderBy("OrderByValue").ToList();
List listExportExhibition = new List();
List listOtherExhibitionTG = new List();
List listImportExhibition = new List();
List listOtherExhibition = new List();
listExportExhibition = db.Queryable().Where(x => x.ExhibitionNO == sSN && x.IsVoid == "N").ToList();
listOtherExhibitionTG = db.Queryable().Where(x => x.ExhibitionNO == sSN && x.IsVoid == "N").ToList();
listImportExhibition = db.Queryable().Where(x => x.ExhibitionNO == sSN && x.IsVoid == "N").ToList();
listOtherExhibition = db.Queryable().Where(x => x.ExhibitionNO == sSN && x.IsVoid == "N").ToList();
int i = 1;
List listEntity = new List();
foreach (var oCustomer in listCustomer)
{
View_OPM_ExhibitionCustomers oEntity = new View_OPM_ExhibitionCustomers();
oEntity.RowIndex = i;
oEntity.guid = oCustomer.guid;
oEntity.CustomerCName = oCustomer.CustomerCName;
oEntity.CustomerEName = oCustomer.CustomerEName;
oEntity.ListSource = oCustomer.ListSource;
oEntity.ListSourceName = oCustomer.ListSourceName;
oEntity.IsFormal = oCustomer.IsFormal;
oEntity.Telephone = ""; // oCustomer.Telephone;
oEntity.Ext = "";
oEntity.FAX = oCustomer.FAX;
oEntity.Address = oCustomer.Address;
oEntity.VolumeForecasting = oCustomer.VolumeForecasting;
oEntity.NumberOfBooths = oCustomer.NumberOfBooths;
oEntity.TransportRequire = oCustomer.TransportRequire;
oEntity.TransportationMode = oCustomer.TransportationMode;
oEntity.Memo = oCustomer.Memo;
oEntity.IsImporter = oCustomer.IsImporter;
oEntity.ModifyDate = oCustomer.ModifyDate;
var listCustomerContactor = listContactorFormal.Where(t => t.CustomerId == oCustomer.CustomerId).ToList();
if (listCustomerContactor.Count > 0)
{
var listMain = listCustomerContactor.Where(t => t.IsMain == "Y").ToList();
if (listMain.Count == 0)
{
listMain = listCustomerContactor;
}
oEntity.ContactorName = listMain[0].ContactorName;
oEntity.Telephone = listMain[0].Telephone1;
oEntity.Ext = listMain[0].Ext1;
} else
{
listCustomerContactor = listContactorInFormal.Where(t => t.CustomerId == oCustomer.CustomerId).ToList();
if (listCustomerContactor.Count > 0)
{
var listMain = listCustomerContactor.Where(t => t.IsMain == "Y").ToList();
if (listMain.Count == 0)
{
listMain = listCustomerContactor;
}
oEntity.ContactorName = listMain[0].ContactorName;
oEntity.Telephone = listMain[0].Telephone1;
oEntity.Ext = listMain[0].Ext1;
}
}
oEntity.IsDeal = "N";
var listMatchCustomer = db.Queryable((t1, t2) => new object[] { JoinType.Inner, t1.CustomerNO == t2.CustomerNO })
.Where((t1, t2) => t2.customer_guid == oCustomer.guid && t2.Memo == "CustomerCombine")
.Select((t1, t2) => new { t1.guid, t2.customer_guid, t2.Memo }).MergeTable()
.ToList();
if (listMatchCustomer.Count == 0)
{
if(listImportExhibition.Where(x => x.Supplier == oCustomer.guid).Count() > 0)
{
oEntity.IsDeal = "Y";
}
if (oEntity.IsDeal == "N")
{
if (listOtherExhibition.Where(x => x.Supplier == oCustomer.guid).Count() > 0)
{
oEntity.IsDeal = "Y";
}
if (oEntity.IsDeal == "N")
{
foreach (OTB_OPM_ExportExhibition oExportExhibition in listExportExhibition)
{
var jaExhibitors = (JArray)JsonConvert.DeserializeObject(oExportExhibition.Exhibitors);
foreach (JObject joExhibitors in jaExhibitors)
{
if (joExhibitors["SupplierID"].ToString() == oCustomer.guid && joExhibitors["VoidContent"] == null)
{
oEntity.IsDeal = "Y";
break;
}
}
if (oEntity.IsDeal == "Y")
{
break;
}
}
if (oEntity.IsDeal == "N")
{
foreach (OTB_OPM_OtherExhibitionTG oOtherExhibitionTG in listOtherExhibitionTG)
{
var jaExhibitors = (JArray)JsonConvert.DeserializeObject(oOtherExhibitionTG.Exhibitors);
foreach (JObject joExhibitors in jaExhibitors)
{
if (joExhibitors["SupplierID"].ToString() == oCustomer.guid && joExhibitors["VoidContent"] == null)
{
oEntity.IsDeal = "Y";
break;
}
}
if (oEntity.IsDeal == "Y")
{
break;
}
}
}
}
}
} else
{
string strMatchId = listMatchCustomer[0].guid;
if (listImportExhibition.Where(x => x.Supplier == oCustomer.guid || x.Supplier == strMatchId).Count() > 0)
{
oEntity.IsDeal = "Y";
}
if (oEntity.IsDeal == "N")
{
if (listOtherExhibition.Where(x => x.Supplier == oCustomer.guid || x.Supplier == strMatchId).Count() > 0)
{
oEntity.IsDeal = "Y";
}
if (oEntity.IsDeal == "N")
{
foreach (OTB_OPM_ExportExhibition oExportExhibition in listExportExhibition)
{
var jaExhibitors = (JArray)JsonConvert.DeserializeObject(oExportExhibition.Exhibitors);
foreach (JObject joExhibitors in jaExhibitors)
{
if ((joExhibitors["SupplierID"].ToString() == oCustomer.guid && joExhibitors["VoidContent"] == null) ||
(joExhibitors["SupplierID"].ToString() == strMatchId && joExhibitors["VoidContent"] == null)
)
{
oEntity.IsDeal = "Y";
break;
}
}
if (oEntity.IsDeal == "Y")
{
break;
}
}
if (oEntity.IsDeal == "N")
{
foreach (OTB_OPM_OtherExhibitionTG oOtherExhibitionTG in listOtherExhibitionTG)
{
var jaExhibitors = (JArray)JsonConvert.DeserializeObject(oOtherExhibitionTG.Exhibitors);
foreach (JObject joExhibitors in jaExhibitors)
{
if ((joExhibitors["SupplierID"].ToString() == oCustomer.guid && joExhibitors["VoidContent"] == null) ||
(joExhibitors["SupplierID"].ToString() == strMatchId && joExhibitors["VoidContent"] == null)
)
{
oEntity.IsDeal = "Y";
break;
}
}
if (oEntity.IsDeal == "Y")
{
break;
}
}
}
}
}
}
listEntity.Add(oEntity);
i++;
}
rm = new SuccessResponseMessage(null, i_crm);
//rm.DATA.Add(BLWording.REL, listEntity);
if (bExcel)
{
List listCalloutAll = db.Queryable().Where(x => x.ExhibitionNO == sSN).ToList();
var sFileName = "";
var oHeader = new Dictionary();
var listMerge = new List>();
var dicAlain = new Dictionary();
var dt_new = new DataTable();
string strCallout = "";
sFileName = "展覽名單";
oHeader = new Dictionary
{
{ "TransportRequire", "運輸需求" },
{ "TransportationMode", "運輸方式" },
{ "VolumeForecasting", "貨量" },
{ "NumberOfBooths", "欄位數" },
{ "CustomerCName", "客戶中文名稱" },
{ "CustomerEName", "客戶英文名稱" },
{ "ContactorName", "聯絡人" },
{ "ListSourceName", "名單來源" },
{ "ModifyDate", "最新修改時間" },
{ "IsDeal", "是否成交" },
{ "IsFormal", "是否為正式客戶" },
{ "IsImporter", "是否為進口商" },
{ "Memo", "備註" },
{ "Callout", "最新Callout記錄" }
};
dt_new.Columns.Add("TransportRequire");
dt_new.Columns.Add("TransportationMode");
dt_new.Columns.Add("VolumeForecasting");
dt_new.Columns.Add("NumberOfBooths");
dt_new.Columns.Add("CustomerCName");
dt_new.Columns.Add("CustomerEName");
dt_new.Columns.Add("ContactorName");
//dt_new.Columns.Add("Telephone");
//dt_new.Columns.Add("Ext");
dt_new.Columns.Add("ListSourceName");
dt_new.Columns.Add("ModifyDate");
dt_new.Columns.Add("IsDeal");
dt_new.Columns.Add("IsFormal");
dt_new.Columns.Add("IsImporter");
dt_new.Columns.Add("Memo");
dt_new.Columns.Add("Callout");
foreach (var item in listEntity)
{
strCallout = "";
List listCallout = listCalloutAll.Where(x => x.CustomerId == item.guid).OrderByDescending(x => x.CreateDate).ToList();
if (listCallout.Count > 0)
{
strCallout = listCallout[0].Memo;
}
var row_new = dt_new.NewRow();
row_new["TransportRequire"] = item.TransportRequire;
row_new["TransportationMode"] = item.TransportationMode;
row_new["VolumeForecasting"] = item.VolumeForecasting;
row_new["NumberOfBooths"] = item.NumberOfBooths;
row_new["CustomerCName"] = item.CustomerCName;
row_new["CustomerEName"] = item.CustomerEName;
row_new["ContactorName"] = item.ContactorName;
//row_new["Telephone"] = item.Telephone;
//row_new["Ext"] = item.Ext;
if (item.ListSource == "SelfCome")
{
row_new["ListSourceName"] = "自來";
} else if (item.ListSource == "ImportFromDB")
{
row_new["ListSourceName"] = "資料庫匯入";
} else
{
row_new["ListSourceName"] = item.ListSourceName;
}
row_new["ModifyDate"] = item.ModifyDate;
if (item.IsDeal == "N")
{
row_new["IsDeal"] = "未成交";
}
else
{
row_new["IsDeal"] = "已成交";
}
if (item.IsFormal == "N")
{
row_new["IsFormal"] = "非正式客戶";
}
else {
row_new["IsFormal"] = "正式客戶";
}
if (item.IsImporter == "N")
{
row_new["IsImporter"] = "否";
}
else
{
row_new["IsImporter"] = "是";
}
row_new["Memo"] = item.Memo;
row_new["Callout"] = strCallout;
dt_new.Rows.Add(row_new);
}
dicAlain = ExcelService.GetExportAlain(oHeader, "TransportRequire,TransportationMode,VolumeForecasting,NumberOfBooths,ModifyDate,IsDeal,IsFormal,IsImporter");
var bOk = new ExcelService().CreateExcelByTb(dt_new, out string sPath, oHeader, dicAlain, listMerge, sFileName);
rm.DATA.Add(BLWording.REL, sPath);
}
else
{
rm.DATA.Add(BLWording.REL, listEntity);
}
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetExhibitionList(獲取展覽名單)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取展覽名單
#region 新增更新名單 資料庫匯入
///
/// 新增更新名單 資料庫匯入
///
/// todo: describe i_crm parameter on GetCustomers
///
public ResponseMessage AddUpdateList(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
int iRel = 1;
string sSN = _fetchString(i_crm, @"SN");
string sType = _fetchString(i_crm, @"Type");
string sChooseSN = _fetchString(i_crm, @"ChooseSN");
string sUSERID = i_crm.USERID;
DateTime dtNow = DateTime.Now;
int intCount = 0;
var listCustomers = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.CustomerId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sSN)
.Select((t1, t2) => new View_OPM_ExhibitionCustomers {
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
CustomerCName = t2.CustomerCName,
UniCode = t2.UniCode,
BoothNumber = t1.BoothNumber,
NumberOfBooths = t1.NumberOfBooths,
ListSource = t1.ListSource,
IsAudit = t2.IsAudit
}).MergeTable().ToList();
var listChooseCustomers = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.CustomerId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sChooseSN)
.Select((t1, t2) => new View_OPM_ExhibitionCustomers
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
CustomerCName = t2.CustomerCName,
BoothNumber = t1.BoothNumber,
NumberOfBooths = t1.NumberOfBooths,
ListSource = t1.ListSource,
IsAudit = t2.IsAudit
}).MergeTable().ToList();
var listContactorsFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sSN)
.Select((t1, t2) => new View_OPM_ExhibitionContactors {
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
ContactorId = t1.ContactorId,
ContactorName = t2.ContactorName,
SourceType = t1.SourceType
}).MergeTable().ToList();
var listContactorsInFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sSN)
.Select((t1, t2) => new View_OPM_ExhibitionContactors
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
ContactorId = t1.ContactorId,
ContactorName = t2.ContactorName,
SourceType = t1.SourceType
}).MergeTable().ToList();
var listChooseContactorsFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sChooseSN)
.Select((t1, t2) => new View_OPM_ExhibitionContactors
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
ContactorId = t1.ContactorId,
ContactorName = t2.ContactorName,
SourceType = t1.SourceType
}).MergeTable().ToList();
var listChooseContactorsInFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sChooseSN)
.Select((t1, t2) => new View_OPM_ExhibitionContactors
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
ContactorId = t1.ContactorId,
ContactorName = t2.ContactorName,
SourceType = t1.SourceType
}).MergeTable().ToList();
List listSameCustomer = new List();
switch (sType)
{
case "insert":
foreach (View_OPM_ExhibitionCustomers oChooseCustomer in listChooseCustomers)
{
//確認名單中是否有重複客戶,沒有時進行新增
listSameCustomer = listCustomers.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
if (listSameCustomer.Count == 0)
{
OTB_OPM_ExhibitionCustomers oInsertCustomer = new OTB_OPM_ExhibitionCustomers();
oInsertCustomer.ExhibitionNO = sSN;
oInsertCustomer.CustomerId = oChooseCustomer.CustomerId;
oInsertCustomer.SourceType = "3";
oInsertCustomer.ListSource = "ImportFromDB"; //oChooseCustomer.ListSource;
oInsertCustomer.BoothNumber = oChooseCustomer.BoothNumber;
oInsertCustomer.NumberOfBooths = oChooseCustomer.NumberOfBooths;
oInsertCustomer.CreateUser = sUSERID;
oInsertCustomer.ModifyUser = sUSERID;
oInsertCustomer.CreateDate = dtNow;
oInsertCustomer.ModifyDate = dtNow;
//新增客戶關聯
iRel = db.Insertable(oInsertCustomer).ExecuteCommand();
//新增正式聯絡人關聯
List listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
{
OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
oInsertContactor.ExhibitionNO = sSN;
oInsertContactor.CustomerId = oChooseCustomer.CustomerId;
oInsertContactor.ContactorId = oFiltChooseContactors.ContactorId;
oInsertContactor.SourceType = "3";
oInsertContactor.CreateUser = sUSERID;
oInsertContactor.ModifyUser = sUSERID;
oInsertContactor.CreateDate = dtNow;
oInsertContactor.ModifyDate = dtNow;
oInsertContactor.IsFormal = "Y";
iRel = db.Insertable(oInsertContactor).ExecuteCommand();
}
//新增非正式聯絡人關聯
listFiltChooseContactors = new List();
listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
{
OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
oInsertContactor.ExhibitionNO = sSN;
oInsertContactor.CustomerId = oChooseCustomer.CustomerId;
oInsertContactor.ContactorId = oFiltChooseContactors.ContactorId;
oInsertContactor.SourceType = "3";
oInsertContactor.CreateUser = sUSERID;
oInsertContactor.ModifyUser = sUSERID;
oInsertContactor.CreateDate = dtNow;
oInsertContactor.ModifyDate = dtNow;
oInsertContactor.IsFormal = "N";
iRel = db.Insertable(oInsertContactor).ExecuteCommand();
}
}
else //名單中有重複客戶
{
//判斷有無重複聯絡人並新增
foreach (View_OPM_ExhibitionCustomers oSameCustoemr in listSameCustomer)
{
//抓取兩邊名單中的正式聯絡人進行比對
List listFiltContactors = listContactorsFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
List listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
{
intCount = 0;
intCount = listFiltContactors.Where(t => t.ContactorId == oFiltChooseContactors.ContactorId).Count();
if (intCount == 0)
{
OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
oInsertContactor.ExhibitionNO = sSN;
oInsertContactor.CustomerId = oSameCustoemr.CustomerId;
oInsertContactor.ContactorId = oFiltChooseContactors.ContactorId;
oInsertContactor.SourceType = "3";
oInsertContactor.CreateUser = sUSERID;
oInsertContactor.ModifyUser = sUSERID;
oInsertContactor.CreateDate = dtNow;
oInsertContactor.ModifyDate = dtNow;
oInsertContactor.IsFormal = "Y";
iRel = db.Insertable(oInsertContactor).ExecuteCommand();
}
}
//非正式聯絡人
listFiltContactors = listContactorsInFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
{
intCount = 0;
intCount = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).Count();
if (intCount == 0)
{
string strContactorId = "";
List listContactorTemp = db.Queryable().Where(x => x.CustomerId == oFiltChooseContactors.CustomerId && x.ContactorName == oFiltChooseContactors.ContactorName).ToList();
if (listContactorTemp.Count == 0)
{
strContactorId = Guid.NewGuid().ToString();
SugarParameter[] parameterValue = new SugarParameter[]
{
new SugarParameter("@Type", "2"),
new SugarParameter("@Guid", strContactorId),
new SugarParameter("@CustomerId", oSameCustoemr.CustomerId),
new SugarParameter("@ContactorId", oFiltChooseContactors.ContactorId),
new SugarParameter("@CreateUser", sUSERID),
new SugarParameter("@CreateDate", dtNow)
};
iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportInsert", parameterValue);
} else
{
strContactorId = listContactorTemp[0].guid;
}
OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
oInsertContactor.ExhibitionNO = sSN;
oInsertContactor.CustomerId = oSameCustoemr.CustomerId;
oInsertContactor.ContactorId = strContactorId;
oInsertContactor.SourceType = "3";
oInsertContactor.CreateUser = sUSERID;
oInsertContactor.ModifyUser = sUSERID;
oInsertContactor.CreateDate = dtNow;
oInsertContactor.ModifyDate = dtNow;
oInsertContactor.IsFormal = "N";
iRel = db.Insertable(oInsertContactor).ExecuteCommand();
}
}
}
}
}
break;
case "update":
foreach (View_OPM_ExhibitionCustomers oChooseCustomer in listChooseCustomers)
{
//確認是否有重複客戶,如果有,更新聯絡人資料
//listSameCustomer = listCustomers.Where(t => (t.CustomerCName != "" && t.CustomerCName == oChooseCustomer.CustomerCName) || (t.CustomerEName != "" && t.CustomerEName == oChooseCustomer.CustomerEName) || (t.UniCode != "" && t.UniCode == oChooseCustomer.UniCode)).ToList();
//listSameCustomer = listCustomers.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
//foreach (View_OPM_ExhibitionCustomers oSameCustoemr in listSameCustomer)
//{
// if (oSameCustoemr.IsAudit != "Y")
// {
// SugarParameter[] parameterValue1 = new SugarParameter[]
// {
// new SugarParameter("@Guid1", oSameCustoemr.CustomerId),
// new SugarParameter("@Guid2", oChooseCustomer.CustomerId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Customers_DBImportUpdate", parameterValue1);
// }
//List listFiltContactors = listContactorsFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
//List listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
//foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
//{
// List listSameContactor = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).ToList();
// foreach (View_OPM_ExhibitionContactors oSameContactor in listSameContactor)
// {
// SugarParameter[] parameterValue2 = new SugarParameter[]
// {
// new SugarParameter("@Type", "1"),
// new SugarParameter("@Guid1", oSameContactor.ContactorId),
// new SugarParameter("@Guid2", oFiltChooseContactors.ContactorId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportUpdate", parameterValue2);
// }
//}
//listFiltContactors = listContactorsInFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
//listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
//foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
//{
// List listSameContactor = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).ToList();
// foreach (View_OPM_ExhibitionContactors oSameContactor in listSameContactor)
// {
// SugarParameter[] parameterValue2 = new SugarParameter[]
// {
// new SugarParameter("@Type", "2"),
// new SugarParameter("@Guid1", oSameContactor.ContactorId),
// new SugarParameter("@Guid2", oFiltChooseContactors.ContactorId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportUpdate", parameterValue2);
// }
//}
//}
}
break;
case "insertupdate":
//foreach (View_OPM_ExhibitionCustomers oChooseCustomer in listChooseCustomers)
//{
// //確認名單中是否有重複客戶,沒有時進行新增
// listSameCustomer = listCustomers.Where(t => (t.CustomerCName != "" && t.CustomerCName == oChooseCustomer.CustomerCName) || (t.CustomerEName != "" && t.CustomerEName == oChooseCustomer.CustomerEName) || (t.UniCode != "" && t.UniCode == oChooseCustomer.UniCode)).ToList();
// if (listSameCustomer.Count == 0)
// {
// OTB_OPM_ExhibitionCustomers oInsertCustomer = new OTB_OPM_ExhibitionCustomers();
// oInsertCustomer.ExhibitionNO = sSN;
// oInsertCustomer.CustomerId = oChooseCustomer.CustomerId;
// oInsertCustomer.SourceType = "3";
// oInsertCustomer.ListSource = "ImportFromDB"; //oChooseCustomer.ListSource;
// oInsertCustomer.BoothNumber = oChooseCustomer.BoothNumber;
// oInsertCustomer.NumberOfBooths = oChooseCustomer.NumberOfBooths;
// oInsertCustomer.CreateUser = sUSERID;
// oInsertCustomer.ModifyUser = sUSERID;
// oInsertCustomer.CreateDate = dtNow;
// oInsertCustomer.ModifyDate = dtNow;
// //新增客戶關聯
// iRel = db.Insertable(oInsertCustomer).ExecuteCommand();
// //新增正式聯絡人關聯
// List listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
// oInsertContactor.ExhibitionNO = sSN;
// oInsertContactor.CustomerId = oChooseCustomer.CustomerId;
// oInsertContactor.ContactorId = oFiltChooseContactors.ContactorId;
// oInsertContactor.SourceType = "3";
// oInsertContactor.CreateUser = sUSERID;
// oInsertContactor.ModifyUser = sUSERID;
// oInsertContactor.CreateDate = dtNow;
// oInsertContactor.ModifyDate = dtNow;
// oInsertContactor.IsFormal = "Y";
// iRel = db.Insertable(oInsertContactor).ExecuteCommand();
// }
// //新增非正式聯絡人關聯
// listFiltChooseContactors = new List();
// listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
// oInsertContactor.ExhibitionNO = sSN;
// oInsertContactor.CustomerId = oChooseCustomer.CustomerId;
// oInsertContactor.ContactorId = oFiltChooseContactors.ContactorId;
// oInsertContactor.SourceType = "3";
// oInsertContactor.CreateUser = sUSERID;
// oInsertContactor.ModifyUser = sUSERID;
// oInsertContactor.CreateDate = dtNow;
// oInsertContactor.ModifyDate = dtNow;
// oInsertContactor.IsFormal = "N";
// iRel = db.Insertable(oInsertContactor).ExecuteCommand();
// }
// }
// else //名單中有重複客戶
// {
// foreach (View_OPM_ExhibitionCustomers oSameCustoemr in listSameCustomer)
// {
// //更新客戶
// if (oSameCustoemr.IsAudit != "Y")
// {
// SugarParameter[] parameterValue1 = new SugarParameter[]
// {
// new SugarParameter("@Guid1", oSameCustoemr.CustomerId),
// new SugarParameter("@Guid2", oChooseCustomer.CustomerId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Customers_DBImportUpdate", parameterValue1);
// }
// //更新正式聯絡人
// List listFiltContactors = listContactorsFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
// List listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// List listSameContactor = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).ToList();
// foreach (View_OPM_ExhibitionContactors oSameContactor in listSameContactor)
// {
// SugarParameter[] parameterValue2 = new SugarParameter[]
// {
// new SugarParameter("@Type", "1"),
// new SugarParameter("@Guid1", oSameContactor.ContactorId),
// new SugarParameter("@Guid2", oFiltChooseContactors.ContactorId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportUpdate", parameterValue2);
// }
// }
// //更新非正式聯絡人
// listFiltContactors = listContactorsInFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
// listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// List listSameContactor = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).ToList();
// foreach (View_OPM_ExhibitionContactors oSameContactor in listSameContactor)
// {
// SugarParameter[] parameterValue2 = new SugarParameter[]
// {
// new SugarParameter("@Type", "2"),
// new SugarParameter("@Guid1", oSameContactor.ContactorId),
// new SugarParameter("@Guid2", oFiltChooseContactors.ContactorId),
// new SugarParameter("@ModifyUser", sUSERID),
// new SugarParameter("@ModifyDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportUpdate", parameterValue2);
// }
// }
// //抓取兩邊名單中的正式聯絡人進行比對後處理聯絡人關聯
// listFiltContactors = listContactorsFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
// listFiltChooseContactors = listChooseContactorsFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// intCount = 0;
// intCount = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).Count();
// if (intCount == 0)
// {
// string strContactorId = oFiltChooseContactors.ContactorId;
// intCount = db.Queryable().Where(x => x.CustomerId == oFiltChooseContactors.CustomerId && x.ContactorName == oFiltChooseContactors.ContactorName).Count();
// if (intCount == 0)
// {
// strContactorId = Guid.NewGuid().ToString();
// SugarParameter[] parameterValue = new SugarParameter[]
// {
// new SugarParameter("@Type", "1"),
// new SugarParameter("@Guid", strContactorId),
// new SugarParameter("@CustomerId", oSameCustoemr.CustomerId),
// new SugarParameter("@ContactorId", oFiltChooseContactors.ContactorId),
// new SugarParameter("@CreateUser", sUSERID),
// new SugarParameter("@CreateDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportInsert", parameterValue);
// }
// OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
// oInsertContactor.ExhibitionNO = sSN;
// oInsertContactor.CustomerId = oSameCustoemr.CustomerId;
// oInsertContactor.ContactorId = strContactorId;
// oInsertContactor.SourceType = "3";
// oInsertContactor.CreateUser = sUSERID;
// oInsertContactor.ModifyUser = sUSERID;
// oInsertContactor.CreateDate = dtNow;
// oInsertContactor.ModifyDate = dtNow;
// oInsertContactor.IsFormal = "Y";
// iRel = db.Insertable(oInsertContactor).ExecuteCommand();
// }
// }
// //非正式聯絡人
// listFiltContactors = listContactorsInFormal.Where(t => t.CustomerId == oSameCustoemr.CustomerId).ToList();
// listFiltChooseContactors = listChooseContactorsInFormal.Where(t => t.CustomerId == oChooseCustomer.CustomerId).ToList();
// foreach (View_OPM_ExhibitionContactors oFiltChooseContactors in listFiltChooseContactors)
// {
// intCount = 0;
// intCount = listFiltContactors.Where(t => t.ContactorName == oFiltChooseContactors.ContactorName).Count();
// if (intCount == 0)
// {
// string strContactorId = oFiltChooseContactors.ContactorId;
// intCount = db.Queryable().Where(x => x.CustomerId == oFiltChooseContactors.CustomerId && x.ContactorName == oFiltChooseContactors.ContactorName).Count();
// if (intCount == 0)
// {
// strContactorId = Guid.NewGuid().ToString();
// SugarParameter[] parameterValue = new SugarParameter[]
// {
// new SugarParameter("@Type", "2"),
// new SugarParameter("@Guid", strContactorId),
// new SugarParameter("@CustomerId", oSameCustoemr.CustomerId),
// new SugarParameter("@ContactorId", oFiltChooseContactors.ContactorId),
// new SugarParameter("@CreateUser", sUSERID),
// new SugarParameter("@CreateDate", dtNow)
// };
// iRel = db.Ado.UseStoredProcedure().ExecuteCommand("OSP_OTB_CRM_Contactors_DBImportInsert", parameterValue);
// }
// OTB_OPM_ExhibitionContactors oInsertContactor = new OTB_OPM_ExhibitionContactors();
// oInsertContactor.ExhibitionNO = sSN;
// oInsertContactor.CustomerId = oSameCustoemr.CustomerId;
// oInsertContactor.ContactorId = strContactorId;
// oInsertContactor.SourceType = "3";
// oInsertContactor.CreateUser = sUSERID;
// oInsertContactor.ModifyUser = sUSERID;
// oInsertContactor.CreateDate = dtNow;
// oInsertContactor.ModifyDate = dtNow;
// oInsertContactor.IsFormal = "N";
// iRel = db.Insertable(oInsertContactor).ExecuteCommand();
// }
// }
// }
// }
//}
break;
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"AddUpdateList(新增更新名單 資料庫匯入)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 新增更新名單 資料庫匯入
#region 匯入展覽名單
///
/// 匯入展覽名單
///
/// todo: describe i_crm parameter on ImportCustomers
///
public ResponseMessage ImportExhibitionList(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
int iRel = 0;
var sFileId = _fetchString(i_crm, @"FileId");
var sFileName = _fetchString(i_crm, @"FileName");
var iSN = _fetchString(i_crm, @"SN");
var sRoot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"OutFiles\Temporary\");//Word模版路徑
var sfileName = sFileName.Split(new string[] { @"." }, StringSplitOptions.RemoveEmptyEntries);
var sSubFileName = sfileName.LastOrDefault(); //副檔名
sFileName = sRoot + sFileId + @"." + sSubFileName;
var book = new Workbook(sFileName);
var sheet = book.Worksheets[0];
var cells = sheet.Cells;
var tbFeeItems = cells.ExportDataTableAsString(1, 0, cells.MaxDataRow, cells.MaxDataColumn + 1, false);
int i = 1;
if (tbFeeItems.Rows.Count > 0)
{
List listExhibitionList = new List();
foreach (DataRow row in tbFeeItems.Rows)
{
try
{
if (listExhibitionList.Count > 0)
{
int intCount = listExhibitionList.Where(t =>
(t.CustomerCName != "" && t.CustomerCName == row[@"Column1"].ToString()) ||
(t.CustomerEName != "" && t.CustomerEName == row[@"Column2"].ToString()) ||
(t.UniCode != "" && t.UniCode == row[@"Column3"].ToString())
).Count();
if (intCount > 0)
{
if (sMsg == null)
{
sMsg = "";
}
sMsg += "第" + i.ToString() + "列:" + "公司中文名稱「" + row[@"Column1"].ToString() + "」公司英文名稱「" + row[@"Column2"].ToString() + "」統一編號「" + row[@"Column3"].ToString() + "」,為重複資料,無法匯入;
";
}
}
OTB_CRM_ImportExhibitionList oExhibitionList = new OTB_CRM_ImportExhibitionList();
oExhibitionList.ExhibitionNO = iSN;
oExhibitionList.CustomerCName = row[@"Column1"].ToString();// 公司中文名稱
oExhibitionList.CustomerEName = row[@"Column2"].ToString();// 公司英文名稱
oExhibitionList.UniCode = row[@"Column3"].ToString();// 統一編號
oExhibitionList.BoothNumber = row[@"Column4"].ToString();// 攤位號
oExhibitionList.NumberOfBooths = row[@"Column5"].ToString();// 攤位數
oExhibitionList.Telephone = row[@"Column6"].ToString();// 電話
oExhibitionList.FAX = row[@"Column7"].ToString();// 傳真
oExhibitionList.Address = row[@"Column8"].ToString();// 地址
oExhibitionList.WebsiteAdress = row[@"Column9"].ToString();// 網址
oExhibitionList.Contactor1 = row[@"Column10"].ToString();// 聯絡人1
oExhibitionList.JobTitleC1 = row[@"Column11"].ToString();// 職稱1
oExhibitionList.Telephone1C1 = row[@"Column12"].ToString();// 電話1
oExhibitionList.Ext1C1 = row[@"Column13"].ToString();// 分機1
oExhibitionList.Telephone2C1 = row[@"Column14"].ToString();// 電話2
oExhibitionList.Ext2C1 = row[@"Column15"].ToString();// 分機2
oExhibitionList.Email1C1 = row[@"Column16"].ToString();// 郵箱1
oExhibitionList.Email2C1 = row[@"Column17"].ToString();// 郵箱2
oExhibitionList.Contactor2 = row[@"Column18"].ToString();// 聯絡人2
oExhibitionList.JobTitleC2 = row[@"Column19"].ToString();// 職稱1
oExhibitionList.Telephone1C2 = row[@"Column20"].ToString();// 電話1
oExhibitionList.Ext1C2 = row[@"Column21"].ToString();// 分機1
oExhibitionList.Telephone2C2 = row[@"Column22"].ToString();// 電話2
oExhibitionList.Ext2C2 = row[@"Column23"].ToString();// 分機1
oExhibitionList.Email1C2 = row[@"Column24"].ToString();// 郵箱1
oExhibitionList.Email2C2 = row[@"Column25"].ToString();// 郵箱2
oExhibitionList.Contactor3 = row[@"Column26"].ToString();// 聯絡人3
oExhibitionList.JobTitleC3 = row[@"Column27"].ToString();// 職稱1
oExhibitionList.Telephone1C3 = row[@"Column28"].ToString();// 電話1
oExhibitionList.Ext1C3 = row[@"Column29"].ToString();// 分機1
oExhibitionList.Telephone2C3 = row[@"Column30"].ToString();// 電話2
oExhibitionList.Ext2C3 = row[@"Column31"].ToString();// 分機2
oExhibitionList.Email1C3 = row[@"Column32"].ToString();// 郵箱1
oExhibitionList.Email2C3 = row[@"Column33"].ToString();// 郵箱2
oExhibitionList.Seq = i.ToString();
listExhibitionList.Add(oExhibitionList);
//int iRel = db.Deleteable().Where(x => x.guid == sId).ExecuteCommand();
}
catch (Exception ex)
{
if (sMsg == null)
{
sMsg = "";
}
sMsg += "第" + i.ToString() + "列:" + "公司中文名稱「" + row[@"Column1"].ToString() + "」公司英文名稱「" + row[@"Column2"].ToString() + "」統一編號「" + row[@"Column3"].ToString() + "」 " + ex.Message + ";
";
}
i++;
}
if (listExhibitionList.Count > 0 && sMsg == null)
{
iRel = db.Deleteable().Where(x => x.ExhibitionNO == iSN).ExecuteCommand();
iRel = db.Insertable(listExhibitionList).ExecuteCommand();
}
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"ImportExhibitionList(匯入展覽名單)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 匯入展覽名單
#region 獲取匯入的展覽名單
///
/// 獲取匯入的展覽名單
///
/// todo: describe i_crm parameter on GetCustomers
///
public ResponseMessage GetExhibitionListFile(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
string sSN = _fetchString(i_crm, @"SN");
int intPageCount = 0;
var oImportExhibitionList = db.Queryable().Where(x => x.ExhibitionNO == sSN).ToPageList(1, 999999999, ref intPageCount);
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, oImportExhibitionList);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"GetExhibitionListFile(獲取匯入的展覽名單)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取匯入的展覽名單
#region 新增更新名單 檔案匯入
///
/// 新增更新名單 檔案匯入
///
/// todo: describe i_crm parameter on GetCustomers
///
public ResponseMessage AddUpdateListFile(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
string strCustomerCName = "";
string strCustomerEName = "";
string strUnicode = "";
try
{
do
{
int iRel = 1;
string sOrgID = i_crm.ORIGID;
string sSN = _fetchString(i_crm, @"SN");
string sType = _fetchString(i_crm, @"Type");
string sListSource = _fetchString(i_crm, @"ListSource");
string sUSERID = i_crm.USERID;
DateTime dtNow = DateTime.Now;
var listCustomers = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.CustomerId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sSN)
.Select((t1, t2) => new View_OPM_ExhibitionCustomers
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
CustomerCName = t2.CustomerCName,
CustomerEName = t2.CustomerEName,
CustomerShotCName = t2.CustomerShotCName,
UniCode = t2.UniCode,
BoothNumber = t1.BoothNumber,
NumberOfBooths = t1.NumberOfBooths,
ListSource = t1.ListSource,
IsAudit = t2.IsAudit,
}).MergeTable().ToList();
var listContactorsInFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Where(t1 => t1.ExhibitionNO == sSN)
.Select((t1, t2) => new View_OPM_ExhibitionContactors
{
SN = t1.SN,
ExhibitionNO = t1.ExhibitionNO,
CustomerId = t1.CustomerId,
ContactorId = t1.ContactorId,
ContactorName = t2.ContactorName,
SourceType = t1.SourceType
}).MergeTable().ToList();
var oImportExhibitionList = db.Queryable().Where(x => x.ExhibitionNO == sSN).ToList();
List listSameCustomer = new List();
switch (sType)
{
case "insert":
foreach (OTB_CRM_ImportExhibitionList oImportCustomer in oImportExhibitionList)
{
strCustomerCName = oImportCustomer.CustomerCName;
strCustomerEName = oImportCustomer.CustomerEName;
strUnicode = oImportCustomer.UniCode;
string strCustomerId = "";
//確認名單中是否有同名或同統編之客戶,沒有時進行新增
listSameCustomer = listCustomers.Where(t => (t.CustomerCName != "" && (t.CustomerCName == oImportCustomer.CustomerCName || t.CustomerShotCName == oImportCustomer.CustomerCName)) || (t.CustomerEName != "" && t.CustomerEName == oImportCustomer.CustomerEName) || (t.UniCode != "" && t.UniCode == oImportCustomer.UniCode)).ToList();
if (listSameCustomer.Count == 0) //名單中沒有重複客戶時
{
var listCheckCustomer = db.Queryable()
.Where(x => x.Effective == "Y" && ((x.CustomerCName != "" && (x.CustomerCName == oImportCustomer.CustomerCName || x.CustomerShotCName == oImportCustomer.CustomerCName)) || (x.CustomerEName != "" && x.CustomerEName == oImportCustomer.CustomerEName) || (x.UniCode != "" && x.UniCode == oImportCustomer.UniCode)))
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => x.OrgID == "TE" || x.OrgID == "TG")
.ToList();
if (listCheckCustomer.Count == 0) //名單中沒有且為新客戶時
{
//新增客戶
strCustomerId = Guid.NewGuid().ToString();
OTB_CRM_Customers oInsertCustomer = new OTB_CRM_Customers();
oInsertCustomer.OrgID = "TE";
oInsertCustomer.guid = strCustomerId;
oInsertCustomer.TransactionType = "";
oInsertCustomer.CustomerNO = " ";
oInsertCustomer.CustomerCName = oImportCustomer.CustomerCName;
oInsertCustomer.CustomerEName = oImportCustomer.CustomerEName;
oInsertCustomer.UniCode = oImportCustomer.UniCode;
oInsertCustomer.Telephone = oImportCustomer.Telephone;
oInsertCustomer.FAX = oImportCustomer.FAX;
oInsertCustomer.Address = oImportCustomer.Address;
oInsertCustomer.WebsiteAdress = oImportCustomer.WebsiteAdress;
oInsertCustomer.IsAudit = "N";
oInsertCustomer.Effective = "Y";
oInsertCustomer.CreateUser = sUSERID;
oInsertCustomer.ModifyUser = sUSERID;
oInsertCustomer.CreateDate = dtNow;
oInsertCustomer.ModifyDate = dtNow;
OTB_CRM_CustomersMST oInsertCustomerMST = new OTB_CRM_CustomersMST();
oInsertCustomerMST.OrgID = "TE";
oInsertCustomerMST.guid = Guid.NewGuid().ToString();
oInsertCustomerMST.customer_guid = strCustomerId;
oInsertCustomerMST.CustomerNO = "";
oInsertCustomerMST.Effective = "Y";
oInsertCustomerMST.CreateUser = sUSERID;
oInsertCustomerMST.ModifyUser = sUSERID;
oInsertCustomerMST.CreateDate = dtNow;
oInsertCustomerMST.ModifyDate = dtNow;
iRel = db.Insertable(oInsertCustomer).ExecuteCommand();
iRel = db.Insertable(oInsertCustomerMST).ExecuteCommand();
OTB_OPM_ExhibitionCustomers oInsertExhibitionCustomers = new OTB_OPM_ExhibitionCustomers();
oInsertExhibitionCustomers.ExhibitionNO = sSN;
oInsertExhibitionCustomers.CustomerId = strCustomerId;
oInsertExhibitionCustomers.SourceType = "2";
oInsertExhibitionCustomers.ListSource = sListSource;
oInsertExhibitionCustomers.BoothNumber = oImportCustomer.BoothNumber;
oInsertExhibitionCustomers.NumberOfBooths = oImportCustomer.NumberOfBooths;
oInsertExhibitionCustomers.CreateUser = sUSERID;
oInsertExhibitionCustomers.ModifyUser = sUSERID;
oInsertExhibitionCustomers.CreateDate = dtNow;
oInsertExhibitionCustomers.ModifyDate = dtNow;
//新增客戶關聯
iRel = db.Insertable(oInsertExhibitionCustomers).ExecuteCommand();
if (oImportCustomer.Contactor1 != "")
{
//新增暫存聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
if (oImportCustomer.Contactor2 != "")
{
//新增暫存聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
if (oImportCustomer.Contactor3 != "")
{
//新增暫存聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "3";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
}
else //名單中沒有但是既有客戶時
{
strCustomerId = listCheckCustomer[0].guid;
OTB_OPM_ExhibitionCustomers oInsertExhibitionCustomers = new OTB_OPM_ExhibitionCustomers();
oInsertExhibitionCustomers.ExhibitionNO = sSN;
oInsertExhibitionCustomers.CustomerId = strCustomerId;
oInsertExhibitionCustomers.SourceType = "2";
oInsertExhibitionCustomers.ListSource = sListSource;
oInsertExhibitionCustomers.BoothNumber = oImportCustomer.BoothNumber;
oInsertExhibitionCustomers.NumberOfBooths = oImportCustomer.NumberOfBooths;
oInsertExhibitionCustomers.CreateUser = sUSERID;
oInsertExhibitionCustomers.ModifyUser = sUSERID;
oInsertExhibitionCustomers.CreateDate = dtNow;
oInsertExhibitionCustomers.ModifyDate = dtNow;
//新增客戶關聯
iRel = db.Insertable(oInsertExhibitionCustomers).ExecuteCommand();
if (oImportCustomer.Contactor1 != "")
{
//新增暫存聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
if (oImportCustomer.Contactor2 != "")
{
//新增暫存聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
if (oImportCustomer.Contactor3 != "")
{
//新增暫存聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "2";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
}
}
else //名單中已有同名或同統編之客戶
{
strCustomerId = listSameCustomer[0].CustomerId;
if (oImportCustomer.Contactor1 != "")
{
//檢查關聯的暫存聯絡人中是否有重複
var listCheckContactor1 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor1).ToList();
if (listCheckContactor1.Count == 0)
{
//無重複,新增暫存聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
}
if (oImportCustomer.Contactor2 != "")
{
//檢查關聯的暫存聯絡人中是否有重複
var listCheckContactor2 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor2).ToList();
if (listCheckContactor2.Count == 0)
{
//無重複,新增聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
}
if (oImportCustomer.Contactor3 != "")
{
//檢查關聯的暫存聯絡人中是否有重複
var listCheckContactor3 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor3).ToList();
if (listCheckContactor3.Count == 0)
{
//無重複,新增聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "2";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
}
}
}
break;
case "update":
foreach (OTB_CRM_ImportExhibitionList oImportCustomer in oImportExhibitionList)
{
//確認是否有重複客戶,如果有,更新客戶資料
listSameCustomer = listCustomers.Where(t => (t.CustomerCName != "" && (t.CustomerCName == oImportCustomer.CustomerCName || t.CustomerShotCName == oImportCustomer.CustomerCName)) || (t.CustomerEName != "" && t.CustomerEName == oImportCustomer.CustomerEName) || (t.UniCode != "" && t.UniCode == oImportCustomer.UniCode)).ToList();
foreach (View_OPM_ExhibitionCustomers oSameCustoemr in listSameCustomer)
{
if (oSameCustoemr.IsAudit != "Y" && oSameCustoemr.IsAudit != "A" && oSameCustoemr.IsAudit != "P" && oSameCustoemr.IsAudit != "Z")
{
OTB_CRM_Customers oUpdateCustomer = new OTB_CRM_Customers
{
CustomerCName = oImportCustomer.CustomerCName,
UniCode = oImportCustomer.UniCode,
Telephone = oImportCustomer.Telephone,
FAX = oImportCustomer.FAX,
Address = oImportCustomer.Address,
WebsiteAdress = oImportCustomer.WebsiteAdress,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateCustomer).UpdateColumns(it => new { it.CustomerCName, it.UniCode, it.Telephone, it.FAX, it.Address, it.WebsiteAdress, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == oSameCustoemr.CustomerId).ExecuteCommand();
}
OTB_OPM_ExhibitionCustomers oUpdateExhibitionCustomer = new OTB_OPM_ExhibitionCustomers
{
ListSource = sListSource,
BoothNumber = oImportCustomer.BoothNumber,
NumberOfBooths = oImportCustomer.NumberOfBooths,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateExhibitionCustomer).UpdateColumns(it => new { it.ListSource, it.BoothNumber, it.NumberOfBooths, it.ModifyUser, it.ModifyDate })
.Where(x => x.ExhibitionNO == sSN && x.CustomerId == oSameCustoemr.CustomerId).ExecuteCommand();
//更新聯絡人1資料
if (oImportCustomer.Contactor1 != "")
{
//檢查重複聯絡人1
var listCheckContactor1 = listContactorsInFormal.Where(x => x.CustomerId == oSameCustoemr.CustomerId && x.ContactorName == oImportCustomer.Contactor1).ToList();
if (listCheckContactor1.Count != 0)
{
//更新聯絡人1
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC1,
Telephone1 = oImportCustomer.Telephone1C1,
Telephone2 = oImportCustomer.Telephone2C1,
Ext1 = oImportCustomer.Ext1C1,
Ext2 = oImportCustomer.Ext2C1,
Email1 = oImportCustomer.Email1C1,
Email2 = oImportCustomer.Email2C1,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor1[0].ContactorId).ExecuteCommand();
}
}
//更新聯絡人2資料
if (oImportCustomer.Contactor2 != "")
{
//檢查重複聯絡人2
var listCheckContactor2 = listContactorsInFormal.Where(x => x.CustomerId == oSameCustoemr.CustomerId && x.ContactorName == oImportCustomer.Contactor2).ToList();
if (listCheckContactor2.Count != 0)
{
//更新聯絡人2
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC2,
Telephone1 = oImportCustomer.Telephone1C2,
Telephone2 = oImportCustomer.Telephone2C2,
Ext1 = oImportCustomer.Ext1C2,
Ext2 = oImportCustomer.Ext2C2,
Email1 = oImportCustomer.Email1C2,
Email2 = oImportCustomer.Email2C2,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor2[0].ContactorId).ExecuteCommand();
}
}
//更新聯絡人3資料
if (oImportCustomer.Contactor3 != "")
{
//檢查重複聯絡人3
var listCheckContactor3 = listContactorsInFormal.Where(x => x.CustomerId == oSameCustoemr.CustomerId && x.ContactorName == oImportCustomer.Contactor3).ToList();
if (listCheckContactor3.Count != 0)
{
//更新聯絡人3
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC3,
Telephone1 = oImportCustomer.Telephone1C3,
Telephone2 = oImportCustomer.Telephone2C3,
Ext1 = oImportCustomer.Ext1C3,
Ext2 = oImportCustomer.Ext2C3,
Email1 = oImportCustomer.Email1C3,
Email2 = oImportCustomer.Email2C3,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor3[0].ContactorId).ExecuteCommand();
}
}
}
}
break;
case "insertupdate":
foreach (OTB_CRM_ImportExhibitionList oImportCustomer in oImportExhibitionList)
{
string strCustomerId = "";
//確認名單中是否有同名或同統編之客戶,沒有時進行新增
listSameCustomer = listCustomers.Where(t => (t.CustomerCName != "" && (t.CustomerCName == oImportCustomer.CustomerCName || t.CustomerShotCName == oImportCustomer.CustomerCName)) || (t.CustomerEName != "" && t.CustomerEName == oImportCustomer.CustomerEName) || (t.UniCode != "" && t.UniCode == oImportCustomer.UniCode)).ToList();
if (listSameCustomer.Count == 0) //名單中沒有重複客戶時
{
var listCheckCustomer = db.Queryable()
.Where(x => x.Effective == "Y" && ((x.CustomerCName != "" && (x.CustomerCName == oImportCustomer.CustomerCName || x.CustomerShotCName == oImportCustomer.CustomerCName)) || (x.CustomerEName != "" && x.CustomerEName == oImportCustomer.CustomerEName) || (x.UniCode != "" && x.UniCode == oImportCustomer.UniCode)))
//.WhereIF((i_crm.ORIGID == "SG" || i_crm.ORIGID == "SE"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID != "TE" && i_crm.ORIGID != "TG"), x => x.OrgID == i_crm.ORIGID)
.WhereIF((i_crm.ORIGID == "TE" || i_crm.ORIGID == "TG"), x => x.OrgID == "TE" || x.OrgID == "TG")
.ToList();
if (listCheckCustomer.Count == 0) //名單中沒有且為新客戶時
{
//新增客戶
strCustomerId = Guid.NewGuid().ToString();
OTB_CRM_Customers oInsertCustomer = new OTB_CRM_Customers();
oInsertCustomer.OrgID = "TE";
oInsertCustomer.guid = strCustomerId;
oInsertCustomer.TransactionType = "";
oInsertCustomer.CustomerNO = " ";
oInsertCustomer.CustomerCName = oImportCustomer.CustomerCName;
oInsertCustomer.CustomerEName = oImportCustomer.CustomerEName;
oInsertCustomer.UniCode = oImportCustomer.UniCode;
oInsertCustomer.Telephone = "";
oInsertCustomer.FAX = "";
oInsertCustomer.Address = oImportCustomer.Address;
oInsertCustomer.WebsiteAdress = oImportCustomer.WebsiteAdress;
oInsertCustomer.IsAudit = "N";
oInsertCustomer.Effective = "Y";
oInsertCustomer.CreateUser = sUSERID;
oInsertCustomer.ModifyUser = sUSERID;
oInsertCustomer.CreateDate = dtNow;
oInsertCustomer.ModifyDate = dtNow;
OTB_CRM_CustomersMST oInsertCustomerMST = new OTB_CRM_CustomersMST();
oInsertCustomerMST.OrgID = "TE";
oInsertCustomerMST.guid = Guid.NewGuid().ToString();
oInsertCustomerMST.customer_guid = strCustomerId;
oInsertCustomerMST.CustomerNO = "";
oInsertCustomerMST.Effective = "Y";
oInsertCustomerMST.CreateUser = sUSERID;
oInsertCustomerMST.ModifyUser = sUSERID;
oInsertCustomerMST.CreateDate = dtNow;
oInsertCustomerMST.ModifyDate = dtNow;
iRel = db.Insertable(oInsertCustomer).ExecuteCommand();
iRel = db.Insertable(oInsertCustomerMST).ExecuteCommand();
OTB_OPM_ExhibitionCustomers oInsertExhibitionCustomers = new OTB_OPM_ExhibitionCustomers();
oInsertExhibitionCustomers.ExhibitionNO = sSN;
oInsertExhibitionCustomers.CustomerId = strCustomerId;
oInsertExhibitionCustomers.SourceType = "2";
oInsertExhibitionCustomers.ListSource = sListSource;
oInsertExhibitionCustomers.BoothNumber = oImportCustomer.BoothNumber;
oInsertExhibitionCustomers.NumberOfBooths = oImportCustomer.NumberOfBooths;
oInsertExhibitionCustomers.CreateUser = sUSERID;
oInsertExhibitionCustomers.ModifyUser = sUSERID;
oInsertExhibitionCustomers.CreateDate = dtNow;
oInsertExhibitionCustomers.ModifyDate = dtNow;
//新增客戶關聯
iRel = db.Insertable(oInsertExhibitionCustomers).ExecuteCommand();
if (oImportCustomer.Contactor1 != "")
{
//新增暫存聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
if (oImportCustomer.Contactor2 != "")
{
//新增暫存聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
if (oImportCustomer.Contactor3 != "")
{
//新增暫存聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "3";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
}
else //名單中沒有但是既有客戶時
{
strCustomerId = listCheckCustomer[0].guid;
OTB_OPM_ExhibitionCustomers oInsertExhibitionCustomers = new OTB_OPM_ExhibitionCustomers();
oInsertExhibitionCustomers.ExhibitionNO = sSN;
oInsertExhibitionCustomers.CustomerId = strCustomerId;
oInsertExhibitionCustomers.SourceType = "2";
oInsertExhibitionCustomers.ListSource = sListSource;
oInsertExhibitionCustomers.BoothNumber = oImportCustomer.BoothNumber;
oInsertExhibitionCustomers.NumberOfBooths = oImportCustomer.NumberOfBooths;
oInsertExhibitionCustomers.CreateUser = sUSERID;
oInsertExhibitionCustomers.ModifyUser = sUSERID;
oInsertExhibitionCustomers.CreateDate = dtNow;
oInsertExhibitionCustomers.ModifyDate = dtNow;
//新增客戶關聯
iRel = db.Insertable(oInsertExhibitionCustomers).ExecuteCommand();
if (oImportCustomer.Contactor1 != "")
{
//新增暫存聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
if (oImportCustomer.Contactor2 != "")
{
//新增暫存聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
if (oImportCustomer.Contactor3 != "")
{
//新增暫存聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "2";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
}
}
else //名單中已有同名或同統編之客戶
{
strCustomerId = listSameCustomer[0].CustomerId;
//更新客戶
if (listSameCustomer[0].IsAudit != "Y" && listSameCustomer[0].IsAudit != "A" && listSameCustomer[0].IsAudit != "P" && listSameCustomer[0].IsAudit != "Z")
{
OTB_CRM_Customers oUpdateCustomer = new OTB_CRM_Customers
{
CustomerCName = oImportCustomer.CustomerCName,
UniCode = oImportCustomer.UniCode,
Telephone = oImportCustomer.Telephone,
FAX = oImportCustomer.FAX,
Address = oImportCustomer.Address,
WebsiteAdress = oImportCustomer.WebsiteAdress,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateCustomer).UpdateColumns(it => new { it.CustomerCName, it.UniCode, it.Telephone, it.FAX, it.Address, it.WebsiteAdress, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listSameCustomer[0].CustomerId).ExecuteCommand();
}
//更新客戶關聯
OTB_OPM_ExhibitionCustomers oUpdateExhibitionCustomer = new OTB_OPM_ExhibitionCustomers
{
ListSource = sListSource,
BoothNumber = oImportCustomer.BoothNumber,
NumberOfBooths = oImportCustomer.NumberOfBooths,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateExhibitionCustomer).UpdateColumns(it => new { it.ListSource, it.BoothNumber, it.NumberOfBooths, it.ModifyUser, it.ModifyDate })
.Where(x => x.ExhibitionNO == sSN && x.CustomerId == listSameCustomer[0].CustomerId).ExecuteCommand();
if (oImportCustomer.Contactor1 != "")
{
//檢查重複聯絡人1
var listCheckContactor1 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor1).ToList();
if (listCheckContactor1.Count == 0)
{
//無重複,新增聯絡人1
OTB_CRM_ContactorsTemp oInsertContactors1 = new OTB_CRM_ContactorsTemp();
oInsertContactors1.guid = Guid.NewGuid().ToString();
oInsertContactors1.CustomerId = strCustomerId;
oInsertContactors1.ContactorName = oImportCustomer.Contactor1;
oInsertContactors1.JobTitle = oImportCustomer.JobTitleC1;
oInsertContactors1.Telephone1 = oImportCustomer.Telephone1C1;
oInsertContactors1.Telephone2 = oImportCustomer.Telephone2C1;
oInsertContactors1.Ext1 = oImportCustomer.Ext1C1;
oInsertContactors1.Ext2 = oImportCustomer.Ext2C1;
oInsertContactors1.Email1 = oImportCustomer.Email1C1;
oInsertContactors1.Email2 = oImportCustomer.Email2C1;
oInsertContactors1.CreateUser = sUSERID;
oInsertContactors1.ModifyUser = sUSERID;
oInsertContactors1.CreateDate = dtNow;
oInsertContactors1.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors1).ExecuteCommand();
//新增聯絡人1關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors1 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors1.ExhibitionNO = sSN;
oInsertExhibitionContactors1.CustomerId = strCustomerId;
oInsertExhibitionContactors1.ContactorId = oInsertContactors1.guid;
oInsertExhibitionContactors1.SourceType = "2";
oInsertExhibitionContactors1.CreateUser = sUSERID;
oInsertExhibitionContactors1.ModifyUser = sUSERID;
oInsertExhibitionContactors1.CreateDate = dtNow;
oInsertExhibitionContactors1.ModifyDate = dtNow;
oInsertExhibitionContactors1.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors1).ExecuteCommand();
}
else
{
//更新聯絡人1
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC1,
Telephone1 = oImportCustomer.Telephone1C1,
Telephone2 = oImportCustomer.Telephone2C1,
Ext1 = oImportCustomer.Ext1C1,
Ext2 = oImportCustomer.Ext2C1,
Email1 = oImportCustomer.Email1C1,
Email2 = oImportCustomer.Email2C1,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor1[0].ContactorId).ExecuteCommand();
}
}
if (oImportCustomer.Contactor2 != "")
{
//檢查重複聯絡人2
var listCheckContactor2 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor2).ToList();
if (listCheckContactor2.Count == 0)
{
//無重複,新增聯絡人2
OTB_CRM_ContactorsTemp oInsertContactors2 = new OTB_CRM_ContactorsTemp();
oInsertContactors2.guid = Guid.NewGuid().ToString();
oInsertContactors2.CustomerId = strCustomerId;
oInsertContactors2.ContactorName = oImportCustomer.Contactor2;
oInsertContactors2.JobTitle = oImportCustomer.JobTitleC2;
oInsertContactors2.Telephone1 = oImportCustomer.Telephone1C2;
oInsertContactors2.Telephone2 = oImportCustomer.Telephone2C2;
oInsertContactors2.Ext1 = oImportCustomer.Ext1C2;
oInsertContactors2.Ext2 = oImportCustomer.Ext2C2;
oInsertContactors2.Email1 = oImportCustomer.Email1C2;
oInsertContactors2.Email2 = oImportCustomer.Email2C2;
oInsertContactors2.CreateUser = sUSERID;
oInsertContactors2.ModifyUser = sUSERID;
oInsertContactors2.CreateDate = dtNow;
oInsertContactors2.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors2).ExecuteCommand();
//新增聯絡人2關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors2 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors2.ExhibitionNO = sSN;
oInsertExhibitionContactors2.CustomerId = strCustomerId;
oInsertExhibitionContactors2.ContactorId = oInsertContactors2.guid;
oInsertExhibitionContactors2.SourceType = "2";
oInsertExhibitionContactors2.CreateUser = sUSERID;
oInsertExhibitionContactors2.ModifyUser = sUSERID;
oInsertExhibitionContactors2.CreateDate = dtNow;
oInsertExhibitionContactors2.ModifyDate = dtNow;
oInsertExhibitionContactors2.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors2).ExecuteCommand();
}
else
{
//更新聯絡人2
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC2,
Telephone1 = oImportCustomer.Telephone1C2,
Telephone2 = oImportCustomer.Telephone2C2,
Ext1 = oImportCustomer.Ext1C2,
Ext2 = oImportCustomer.Ext2C2,
Email1 = oImportCustomer.Email1C2,
Email2 = oImportCustomer.Email2C2,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor2[0].ContactorId).ExecuteCommand();
}
}
if (oImportCustomer.Contactor3 != "")
{
//檢查重複聯絡人3
var listCheckContactor3 = listContactorsInFormal.Where(x => x.CustomerId == strCustomerId && x.ContactorName == oImportCustomer.Contactor3).ToList();
if (listCheckContactor3.Count == 0)
{
//無重複,新增聯絡人3
OTB_CRM_ContactorsTemp oInsertContactors3 = new OTB_CRM_ContactorsTemp();
oInsertContactors3.guid = Guid.NewGuid().ToString();
oInsertContactors3.CustomerId = strCustomerId;
oInsertContactors3.ContactorName = oImportCustomer.Contactor3;
oInsertContactors3.JobTitle = oImportCustomer.JobTitleC3;
oInsertContactors3.Telephone1 = oImportCustomer.Telephone1C3;
oInsertContactors3.Telephone2 = oImportCustomer.Telephone2C3;
oInsertContactors3.Ext1 = oImportCustomer.Ext1C3;
oInsertContactors3.Ext2 = oImportCustomer.Ext2C3;
oInsertContactors3.Email1 = oImportCustomer.Email1C3;
oInsertContactors3.Email2 = oImportCustomer.Email2C3;
oInsertContactors3.CreateUser = sUSERID;
oInsertContactors3.ModifyUser = sUSERID;
oInsertContactors3.CreateDate = dtNow;
oInsertContactors3.ModifyDate = dtNow;
iRel = db.Insertable(oInsertContactors3).ExecuteCommand();
//新增聯絡人3關聯
OTB_OPM_ExhibitionContactors oInsertExhibitionContactors3 = new OTB_OPM_ExhibitionContactors();
oInsertExhibitionContactors3.ExhibitionNO = sSN;
oInsertExhibitionContactors3.CustomerId = strCustomerId;
oInsertExhibitionContactors3.ContactorId = oInsertContactors3.guid;
oInsertExhibitionContactors3.SourceType = "2";
oInsertExhibitionContactors3.CreateUser = sUSERID;
oInsertExhibitionContactors3.ModifyUser = sUSERID;
oInsertExhibitionContactors3.CreateDate = dtNow;
oInsertExhibitionContactors3.ModifyDate = dtNow;
oInsertExhibitionContactors3.IsFormal = "N";
iRel = db.Insertable(oInsertExhibitionContactors3).ExecuteCommand();
}
else
{
//更新聯絡人3
OTB_CRM_ContactorsTemp oUpdateContactor = new OTB_CRM_ContactorsTemp
{
JobTitle = oImportCustomer.JobTitleC3,
Telephone1 = oImportCustomer.Telephone1C3,
Telephone2 = oImportCustomer.Telephone2C3,
Ext1 = oImportCustomer.Ext1C3,
Ext2 = oImportCustomer.Ext2C3,
Email1 = oImportCustomer.Email1C3,
Email2 = oImportCustomer.Email2C3,
ModifyUser = sUSERID,
ModifyDate = dtNow
};
iRel = db.Updateable(oUpdateContactor).UpdateColumns(it => new { it.JobTitle, it.Telephone1, it.Telephone2, it.Ext1, it.Ext2, it.Email1, it.ModifyUser, it.ModifyDate })
.Where(x => x.guid == listCheckContactor3[0].ContactorId).ExecuteCommand();
}
}
}
}
break;
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
}
catch (Exception ex)
{
sMsg = strCustomerCName + ";" + strCustomerEName + ";" + strUnicode + ";" + Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"AddUpdateListFile(新增更新名單 檔案匯入)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 新增更新名單 檔案匯入
#region 獲取由名單過來的參展廠商資料
///
/// 獲取由名單過來的參展廠商資料
///
///
///
public ResponseMessage GetNewCustomers(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
var db = SugarBase.GetIntance();
try
{
do
{
string sSN = _fetchString(i_crm, @"SN");
string sId = _fetchString(i_crm, @"Guid");
string[] arrCustomers = sId.TrimEnd(',').Split(',');
List listCustomer = db.Queryable().Where(x => SqlFunc.ContainsArray(arrCustomers, x.guid)).ToList();
var listContactorFormal = db.Queryable((t1, t2) => new object[] {
JoinType.Inner,t1.ContactorId==t2.guid})
.Select((t1, t2) => new { t1.ExhibitionNO, t1.CustomerId, t1.ContactorId, t2.ContactorName, t2.Telephone1, t2.Email1, t1.IsMain, t2.OrderByValue }).MergeTable()
.Where(t1 => t1.ExhibitionNO == sSN && SqlFunc.ContainsArray(arrCustomers, t1.CustomerId)).OrderBy("OrderByValue").ToList();
int i = 1;
List listEntity = new List();
foreach (var oCustomer in listCustomer)
{
View_OPM_ExhibitionCustomers oEntity = new View_OPM_ExhibitionCustomers();
oEntity.RowIndex = i;
oEntity.guid = oCustomer.guid;
oEntity.UniCode = oCustomer.UniCode;
oEntity.CustomerNO = oCustomer.CustomerNO;
oEntity.CustomerCName = oCustomer.CustomerCName;
oEntity.CustomerEName = oCustomer.CustomerEName;
oEntity.Telephone = oCustomer.Telephone;
oEntity.FAX = oCustomer.FAX;
oEntity.Email = oCustomer.Email;
oEntity.Address = oCustomer.Address;
oEntity.ModifyDate = oCustomer.ModifyDate;
var listCustomerContactor = listContactorFormal.Where(t => t.CustomerId == oCustomer.guid).ToList();
if (listCustomerContactor.Count > 0)
{
var listMain = listCustomerContactor.Where(t => t.IsMain == "Y").ToList();
if (listMain.Count == 0)
{
listMain = listCustomerContactor;
}
oEntity.ContactorId = listMain[0].ContactorId;
oEntity.ContactorName = listMain[0].ContactorName;
oEntity.Telephone = listMain[0].Telephone1;
oEntity.Email = listMain[0].Email1;
}
listEntity.Add(oEntity);
i++;
}
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, listEntity);
} while (false);
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + "Params:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, "EasyBL.WEBAPP.OPM.ImportExhibition_QryService", "", "GetNewCustomers(獲取由名單過來的參展廠商資料)", "", "", "");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
}
return rm;
}
#endregion 獲取由名單過來的參展廠商資料
#region 刪除展覽
///
/// 刪除展覽
///
/// todo: describe i_crm parameter on UpdImportCustomers
///
public ResponseMessage Delete(RequestMessage i_crm)
{
ResponseMessage rm = null;
string sMsg = null;
try
{
rm = SugarBase.ExecTran(db =>
{
do
{
int iRel = 0;
var sSN = _fetchString(i_crm, @"SN");
List listExhibitionCustomers = db.Queryable().Where(x => x.ExhibitionNO == sSN).ToList();
//刪除Callout紀錄
iRel = db.Deleteable().Where(x => x.ExhibitionNO == sSN).ExecuteCommand();
//刪除展覽聯絡人關聯
iRel = db.Deleteable().Where(x => x.ExhibitionNO == sSN).ExecuteCommand();
//逐筆刪除展覽聯絡人關聯
foreach (OTB_OPM_ExhibitionCustomers oExhibitionCustomer in listExhibitionCustomers)
{
iRel = db.Deleteable().Where(x => x.ExhibitionNO == sSN && x.CustomerId == oExhibitionCustomer.CustomerId).ExecuteCommand();
}
iRel = db.Deleteable().Where(x => x.SN.ToString() == sSN).ExecuteCommand();
rm = new SuccessResponseMessage(null, i_crm);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
return rm;
});
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
LogAndSendEmail(sMsg + @"Param:" + JsonToString(i_crm), ex, i_crm.ORIGID, i_crm.USERID, nameof(Exhibition_UpdService), @"展覽管理", @"Delete(刪除展覽)", @"", @"", @"");
}
finally
{
if (null != sMsg)
{
rm = new ErrorResponseMessage(sMsg, i_crm);
}
Logger.Debug(@"Exhibition_UpdService.Delete Debug(Param:" + JsonToString(i_crm) + @";Response:" + JsonToString(rm) + @")------------------");
}
return rm;
}
#endregion 刪除展覽
}
}