/// <summary> /// 廠商改派案件 /// </summary> /// <param name="log">畫面上選擇的案件</param> /// <param name="account">廠商選擇的技師帳號</param> /// <returns></returns> public Boolean VendorChangeLog(Tcallog log, string account, string username) { _logger.Info($"案件改派-公司別:{log.CompCd},案件編號:{log.Sn}"); #region 驗證與取得資訊 //取得案件 Tcallog callog = base.GetCallog(log.CompCd, log.Sn); //取得原來的受理技師帳號,並記錄 if (callog.TacceptedLog == null) { throw new NullReferenceException($"此案件未被認養,因此無法改派"); } //如果已經銷案不允許再指通知了 if (callog.CloseSts > (byte)CloseSts.process) { throw new IndexOutOfRangeException($"此案件已銷案"); } string oldAccount = callog.TacceptedLog.Account; //取得公司 Tcmpdat comp = base.GetComp(log.CompCd); //取得技師 TvenderTechnician technician = base.GetTechnician(log.CompCd, account); _logger.Info($"案件改派-公司別:{callog.CompCd}"); _logger.Info($"案件改派-廠商別:{callog.VenderCd}"); _logger.Info($"案件改派-要被改派的技師代號:{technician.Account}"); _logger.Info($"案件改派-既有的技師代號:{oldAccount}"); #endregion #region 組合物件 DateTime now = DateTime.Now; TacceptedLog tacceptedLog = new TacceptedLog() { Account = technician.Account, Sn = callog.Sn, RcvDatetime = DateTime.Now, RcvRemark = "no defind", Name = technician.Name, }; callog.TacceptedLog = tacceptedLog; #endregion #region 廠商改派 _logger.Info($"案件改派-準備更新資料"); if (!_callogFactory.TechnicianAccept(callog)) { throw new Exception("[ERROR]=>廠商改派案件,改派失敗"); } #endregion #region 推播訊息 _logger.Info($"案件改派-準備通知給帳號:{account}"); string storeName = getStoreName(callog.CompCd, callog.StoreCd); string CallLevel = callog.CallLevel == "1" ? "普通" : "緊急"; _notifyFactory.Exucte(new JPushRequest( callog.CompCd, callog.VenderCd, account) { Sn = callog.Sn, Content = $"您有一筆新案件待銷案,案件編號:{callog.Sn} 店名:{storeName} 叫修等級:{CallLevel}", Title = "廠商改派", Extras = new Dictionary <string, string>() { { "FeatureName", "VenderConfirm" } } }); _logger.Info($"案件改派-準備通知給帳號:{oldAccount}"); _notifyFactory.Exucte(new JPushRequest( callog.CompCd, callog.VenderCd, oldAccount) { Sn = callog.Sn, Content = $"您的案件已經指派給:{ technician.Name},案件編號:{callog.Sn} 店名:{storeName} 叫修等級:{CallLevel}", Title = "廠商改派", Extras = new Dictionary <string, string>() { { "FeatureName", "" } } }); var Con = new Conditions <DataBase.TCallogCourse>(); TCallogCourse course = new TCallogCourse() { CompCd = log.CompCd, Sn = log.Sn, Assignor = username, Admissibility = technician.Name, Datetime = now }; //新增案件歷程 _CallogCourseRepo.Insert(Con, course); #endregion return(true); }
/// <summary> /// 技師認養案件/廠商指派案件 /// </summary> /// <param name="log">畫面上選擇的案件</param> /// <param name="account">登入的技師/廠商選取的技師</param> /// <returns></returns> public Boolean TechnicianAccept(Tcallog log, string account, Boolean isVndAssign, string username) { _logger.Info($"案件認養/指派-公司別:{log.CompCd},案件編號:{log.Sn}"); #region 驗證與取得資訊 //取得案件 Tcallog callog = base.GetCallog(log.CompCd, log.Sn); if (callog.TacceptedLog != null) { throw new IndexOutOfRangeException($"案件已由{callog.TacceptedLog.Name}認養"); } //如果已經銷案不允許再指通知了 if (callog.CloseSts > (byte)CloseSts.process) { throw new IndexOutOfRangeException($"此案件已銷案"); } //取得技師 TvenderTechnician technician = base.GetTechnician(log.CompCd, account); _logger.Info($"案件認養/指派-公司別:{callog.CompCd}"); _logger.Info($"案件認養/指派-廠商別:{callog.VenderCd}"); _logger.Info($"案件認養/指派-技師代號:{technician.Account}"); #endregion #region 組合物件 DateTime now = DateTime.Now; TacceptedLog tacceptedLog = new TacceptedLog() { Account = technician.Account, Sn = callog.Sn, RcvDatetime = now, RcvRemark = "no defind", Name = technician.Name, }; callog.TacceptedLog = tacceptedLog; callog.TimePoint = (int)TimePoint.Accepted; #endregion using (TransactionScope scope = new TransactionScope()) { _logger.Info($"案件認養/指派-準備更新資料"); #region 技師認養 if (!_callogFactory.TechnicianAccept(callog)) { throw new Exception("[ERROR]=>技師認養案件時,認養失敗"); } #endregion _logger.Info($"案件認養/指派-移除案件與技師關聯"); #region 移除案件與技師關聯 //bool bo = _technicianProvider.RemoveAwaitAcceptLog(log.CompCd, log.Sn); //if (bo == false) //{ // string Mail = ServerProfile.GetInstance().Mail; // string[] MailList = Mail.Split(';'); // _MailFactory.Excute(new MailRequest( // MailList, // "移除案件與技師關聯失敗", // $"認養或指派時,刪除技師與案件關聯失敗,案件編號:{log.Sn}" // )); // throw new Exception("[ERROR]=>技師認養案件時,認養失敗"); //} int DataCount; using (TransactionScope tss = new TransactionScope(TransactionScopeOption.RequiresNew)) { DataCount = _technicianProvider.GetCallLogClaimsCount(log.CompCd, log.Sn); _logger.Info($"移除案件與技師關聯[前],CallLogClaims關聯資料筆數 :{DataCount}, 查詢條件-公司別:{log.CompCd}、案件編號:{log.Sn}"); _logger.Info($"案件認養/指派-準備移除案件與技師關聯,公司別:{log.CompCd}、案件編號:{log.Sn}"); _technicianProvider.RemoveAwaitAcceptLog(log.CompCd, log.Sn); tss.Complete(); } using (TransactionScope tss = new TransactionScope(TransactionScopeOption.Suppress)) { DataCount = _technicianProvider.GetCallLogClaimsCount(log.CompCd, log.Sn); _logger.Info($"移除案件與技師關聯[後],CallLogClaims關聯資料筆數 :{DataCount}, 查詢條件-公司別:{log.CompCd}、案件編號:{log.Sn}"); } if (DataCount != 0) { string Mail = ServerProfile.GetInstance().Mail; string[] MailList = Mail.Split(';'); _MailFactory.Excute(new MailRequest( MailList, "移除案件與技師關聯失敗", $"認養或指派時,刪除技師與案件關聯失敗,案件編號:{log.Sn}" )); throw new Exception($"[ERROR]=>案件編號:{log.Sn},技師認養案件時,認養失敗"); } #endregion scope.Complete(); } #region 推播訊息 string Assignor = ""; if (isVndAssign) //由廠商指派的才需要推播 { _logger.Info($"案件認養/指派-準備通知給帳號:{account}"); string storeName = getStoreName(callog.CompCd, callog.StoreCd); string CallLevel = callog.CallLevel == "1" ? "普通" : "緊急"; _notifyFactory.Exucte(new JPushRequest( callog.CompCd, callog.VenderCd, account) { Sn = callog.Sn, Content = $"您有一筆新案件待銷案,案件編號:{callog.Sn} 店名:{storeName} 叫修等級:{CallLevel}", Title = "認養案件", Extras = new Dictionary <string, string>() { { "FeatureName", "VenderConfirm" } } }); Assignor = username; } else { Assignor = technician.Name; } var Con = new Conditions <DataBase.TCallogCourse>(); TCallogCourse course = new TCallogCourse() { CompCd = log.CompCd, Sn = log.Sn, Assignor = Assignor, Admissibility = technician.Name, Datetime = now }; //新增案件歷程 _CallogCourseRepo.Insert(Con, course); #endregion return(true); }
/// <summary> /// 多案件、單一技師指派 /// </summary> /// <param name="user"></param> /// <param name="Sn"></param> /// <param name="Account"></param> /// <returns>從Web進行指派</returns> public Boolean NotificationForAppoint(UserBase user, List <string> Sn, List <string> Account) { _logger.Info("更新技師待受理案件(網頁指派案件)"); DateTime now = DateTime.Now; using (TransactionScope scope = new TransactionScope()) { _logger.Info($"案件認養/指派-準備更新資料"); Sn.ForEach(sn => { int DataCount; #region 移除案件與技師關聯 using (TransactionScope tss = new TransactionScope(TransactionScopeOption.RequiresNew)) { DataCount = _technicianProvider.GetCallLogClaimsCount(user.CompCd, sn); _logger.Info($"移除案件與技師關聯[前],CallLogClaims關聯資料筆數 :{DataCount}, 查詢條件-公司別:{user.CompCd}、案件編號:{sn}"); _logger.Info($"案件認養/指派-準備移除案件與技師關聯,公司別:{user.CompCd}、案件編號:{sn}"); _technicianProvider.RemoveAwaitAcceptLog(user.CompCd, sn); tss.Complete(); } #endregion using (TransactionScope tss = new TransactionScope(TransactionScopeOption.Suppress)) { DataCount = _technicianProvider.GetCallLogClaimsCount(user.CompCd, sn); _logger.Info($"移除案件與技師關聯[後],CallLogClaims關聯資料筆數 :{DataCount}, 查詢條件-公司別:{user.CompCd}、案件編號:{sn}"); } if (DataCount != 0) { string Mail = ServerProfile.GetInstance().Mail; string[] MailList = Mail.Split(';'); _MailFactory.Excute(new MailRequest( MailList, "移除案件與技師關聯失敗", $"認養或指派時,刪除技師與案件關聯失敗,案件編號:{sn}" )); throw new Exception($"[ERROR]=>案件編號:{sn},技師認養案件時,認養失敗"); } else { #region 更新資料 //取得案件 Tcallog callog = base.GetCallog(user.CompCd, sn); TacceptedLog tacceptedLog = new TacceptedLog() { Account = Account[0].ToString(), Sn = sn, RcvDatetime = now, RcvRemark = "no defind", Name = Account[2].ToString(), }; callog.TacceptedLog = tacceptedLog; callog.TimePoint = (int)TimePoint.Accepted; if (!_callogFactory.TechnicianAccept(callog)) { throw new Exception("[ERROR]=>技師認養案件時,認養失敗"); } #endregion } #region 新增案件歷程 Conditions <DataBase.TCallogCourse> Con = new Conditions <DataBase.TCallogCourse>(); TCallogCourse course = new TCallogCourse() { CompCd = user.CompCd, Sn = sn, Assignor = user.UserName, Admissibility = Account[2].ToString(), Datetime = now }; //新增案件歷程 _CallogCourseRepo.Insert(Con, course); #endregion }); scope.Complete(); } #region 推播 var bo = _notifyFactory.Exucte( new JPushRequest(user.CompCd, user.VenderCd) { Content = "您有新案件待銷案", Title = "認養案件", Extras = new Dictionary <string, string>() { { "FeatureName", "VenderConfirm" } } } , Sn , Account); #endregion return(true); }
/// <summary> /// 多案件、單一技師改派 /// </summary> /// <param name="user"></param> /// <param name="Sn"></param> /// <param name="Account"></param> /// <returns>從Web進行改派</returns> public Boolean ChangeNotificationForWeb(UserBase user, List <string> Sn, TvenderTechnician Techniciandata, Dictionary <string, string> OldAccount) { _logger.Info("更新技師已受理案件(網頁改派案件)"); using (TransactionScope scope = new TransactionScope()) { //更新案件已受理技師 Sn.ForEach(sn => { #region 更新資料 //取得案件 Tcallog callog = base.GetCallog(user.CompCd, sn); TacceptedLog tacceptedLog = new TacceptedLog() { Account = Techniciandata.Account, Sn = callog.Sn, RcvDatetime = DateTime.Now, RcvRemark = "no defind", Name = Techniciandata.Name, }; callog.TacceptedLog = tacceptedLog; if (!_callogFactory.TechnicianAccept(callog)) { throw new Exception($"[ERROR]=>廠商改派案件失敗,案件編號:{sn}"); } #endregion #region 新增案件歷程 Conditions <DataBase.TCallogCourse> Con = new Conditions <DataBase.TCallogCourse>(); TCallogCourse course = new TCallogCourse() { CompCd = user.CompCd, Sn = sn, Assignor = user.UserName, Admissibility = Techniciandata.Name, Datetime = DateTime.Now }; //新增案件歷程 _CallogCourseRepo.Insert(Con, course); #endregion }); scope.Complete(); } #region 推播給新技師 Dictionary <string, string> Account = new Dictionary <string, string>(); Account.Add(Techniciandata.Account, Techniciandata.RegistrationID); _notifyFactory.Exucte( new JPushRequest(user.CompCd, user.VenderCd) { Content = "您有新案件待銷案", Title = "廠商改派", Extras = new Dictionary <string, string>() { { "FeatureName", "VenderConfirm" } } } , Sn , Account); #endregion #region 推播給舊技師 _notifyFactory.Exucte( new JPushRequest(user.CompCd, user.VenderCd) { Content = "您的案件已經被指派給其他技師", Title = "廠商改派", Extras = new Dictionary <string, string>() { { "FeatureName", "" } } } , Sn , OldAccount); #endregion return(true); }
public CallogCourse(TCallogCourse data) { this.Assignor = data.Assignor; this.Admissibility = data.Admissibility; this.Datetime = data.Datetime.ToString("yyyy/MM/dd HH:mm:ss"); }