Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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");
 }