Ejemplo n.º 1
0
 private void Button_SendTemplate_Click(object sender, EventArgs e)
 {
     if (companyData.emailUsername.Length == 0 || companyData.emailUsername.Length == 0)
     {
         metroMessageBoxHelper.showWarning(this, "You cannot send email because you have not entered " +
                                           "your email credentials, which are mandatory to send email. Go to Main Window -> Settings -> Add/" +
                                           "Change company information to fill email credentials", "Warning");
     }
     else
     {
         for (int i = 0; i < SendCheckBoxes.Count; i++)
         {
             if (SendCheckBoxes[i].Checked)
             {
                 checkedParticipants.Add(filteredParticipants[i]);
             }
         }
         if (checkedParticipants.Count > 0)
         {
             SendTemplate sendTemp = new SendTemplate(emailTemplates, checkedParticipants, events, this, companyData,
                                                      mainWindow);
             sendTemp.Show();
         }
         else
         {
             metroMessageBoxHelper.showWarning(this, "You have not choosen any particicipants, to send emails!", "Warning");
         }
     }
     //mainWindow.Enabled = true;
     //this.Dispose();
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 医生端接受消息模板
        /// </summary>
        /// <param name="wecharSendMessage"></param>
        /// <returns></returns>
        public SendTemplate DoctorWecharTemplate(WecharSendMessage wecharSendMessage, string EvaluateLevel, string WarningTime)
        {
            SendTemplate sendTemplate = new SendTemplate();

            sendTemplate.ToUser       = wecharSendMessage.ToUser;
            sendTemplate.TemplateId   = wecharSendMessage.TemplateId;
            sendTemplate.BackUrl      = Commons.WecharWeb + "?link=order-detail&consultNumber=" + wecharSendMessage.ConsultNumber;
            sendTemplate.FirstMessage = wecharSendMessage.FirstMessage;
            YaeherConsultation yaeherConsultation = JsonHelper.FromJson <YaeherConsultation>(wecharSendMessage.ConsultJson);

            switch (wecharSendMessage.OperationType)
            {
            case "AddConsultation":      // 咨询者发起咨询
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName;
                sendTemplate.Keyword2      = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.Keyword3      = "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的咨询";
                sendTemplate.MessageRemark = "请您及时回复";
                sendTemplate.MessageType   = "Notice";    //发送短信
                break;

            case "Inquiry":      // 咨询者追问
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName;
                sendTemplate.Keyword2      = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.Keyword3      = "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的追问";
                sendTemplate.MessageRemark = "请您及时回复";
                sendTemplate.MessageType   = "Question";   //发送短信
                break;

            case "Evaluation":      //咨询评分
                sendTemplate.BackUrl       = Commons.WecharWeb + "evaluate-detail?typeEvaluate=3&consultNumber=" + wecharSendMessage.ConsultNumber + "&rShow=no";
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName;
                sendTemplate.Keyword2      = "评价:" + EvaluateLevel;
                sendTemplate.MessageRemark = "点击消息可查看评价详情";
                break;

            case "WarningRemind":      //  咨询预警
                sendTemplate.FirstMessage  = "您有一个咨询超过" + WarningTime + "未处理";
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName + "用户提交了一个关于" + yaeherConsultation.IIInessType + "问题的咨询";
                sendTemplate.Keyword2      = yaeherConsultation.CreatedOn.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.MessageRemark = "请您及时回复";
                break;

            case "PatientReturn":      //咨询退单
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName;
                sendTemplate.Keyword2      = "用户主动退单";
                sendTemplate.Keyword3      = yaeherConsultation.RefundTime.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.MessageRemark = "温馨提示:及时回复可避免用户主动退单";
                break;

            case "QualityReturn":      //质控退单
                sendTemplate.Keyword1      = wecharSendMessage.ConsultantName;
                sendTemplate.Keyword2      = "质控审核退单";
                sendTemplate.Keyword3      = yaeherConsultation.RefundTime.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.MessageRemark = "温馨提示:严格遵守怡禾操作规范有助于减少质控退单";
                break;
            }
            return(sendTemplate);
        }
Ejemplo n.º 3
0
        private void Button_SendTemplate_Click(object sender, EventArgs e)
        {
            List <Participant> currentParticipant = new List <Participant>();

            currentParticipant.Add(this.participant);
            SendTemplate sendTemplate = new SendTemplate(mainWindow.mailTemplates, currentParticipant, mainWindow.events,
                                                         this, mainWindow.companyData, mainWindow);

            sendTemplate.Show();
            this.Enabled = false;
        }
Ejemplo n.º 4
0
        /// <summary>
        ///  咨询者接受消息模板
        /// </summary>
        /// <param name="sendTemplate"></param>
        /// <returns></returns>
        public SendTemplate ConsultantWecharTemplate(WecharSendMessage wecharSendMessage, string Inquiry)
        {
            SendTemplate sendTemplate = new SendTemplate();

            sendTemplate.ToUser       = wecharSendMessage.ToUser;
            sendTemplate.TemplateId   = wecharSendMessage.TemplateId;
            sendTemplate.BackUrl      = Commons.WecharWeb + "?link=record-detail&consultNumber=" + wecharSendMessage.ConsultNumber;
            sendTemplate.FirstMessage = wecharSendMessage.FirstMessage;
            YaeherConsultation yaeherConsultation = JsonHelper.FromJson <YaeherConsultation>(wecharSendMessage.ConsultJson);

            #region 2019-1-8 修改
            switch (wecharSendMessage.OperationType)
            {
            case "ReplayConsultant":      // 回复订单
                sendTemplate.Keyword1 = "您提交的关于" + yaeherConsultation.IIInessType + "的咨询";
                sendTemplate.Keyword2 = "请点击查看回复详情";
                sendTemplate.Keyword3 = wecharSendMessage.DoctorName;
                break;

            case "RemindInquiry":      //  追问提醒
                sendTemplate.FirstMessage  = "您的追问期限还剩" + Inquiry + ",请尽快追问";
                sendTemplate.Keyword1      = "您提交的关于" + yaeherConsultation.IIInessType + "的咨询";
                sendTemplate.Keyword2      = "追问过期时间为:" + yaeherConsultation.Completetime.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.Keyword3      = wecharSendMessage.DoctorName;
                sendTemplate.MessageRemark = "请点击详情对医生进行追问";
                break;

            case "RemindEvaluation":      //  评价提醒
                sendTemplate.Keyword1      = yaeherConsultation.PatientName;
                sendTemplate.Keyword2      = yaeherConsultation.DoctorName;
                sendTemplate.MessageRemark = "请点击详情对医生进行评价";
                break;

            case "Systemreturn":      //  系统退单
                sendTemplate.Keyword1      = wecharSendMessage.DoctorName;
                sendTemplate.Keyword2      = "医生未能及时回复";
                sendTemplate.Keyword3      = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.MessageRemark = "您可以继续选择其他医生咨询";
                break;

            case "DoctorReturn":      // 医生退单
                sendTemplate.Keyword1      = wecharSendMessage.DoctorName;
                sendTemplate.Keyword2      = "医生主动退单";
                sendTemplate.Keyword3      = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
                sendTemplate.MessageRemark = "退单原因请查看详情";
                break;
            }
            #endregion
            return(sendTemplate);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 将发送消息转为模板
        /// </summary>
        /// <param name="SendTemplateInfo"></param>
        /// <returns></returns>
        public string WecharContent(SendTemplate SendTemplateInfo)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("{");
            stringBuilder.Append("\"touser\": \"" + SendTemplateInfo.ToUser + "\",");
            stringBuilder.Append("\"template_id\": \"" + SendTemplateInfo.TemplateId + "\",");
            stringBuilder.Append("\"url\": \"" + SendTemplateInfo.BackUrl + "\",");
            if (SendTemplateInfo.Appid != null)
            {
                stringBuilder.Append("\"miniprogram\":{");
                stringBuilder.Append("\"appid\": \"" + SendTemplateInfo.Appid + "\",");
                stringBuilder.Append("\"pagepath\": \"" + SendTemplateInfo.Pagepath + "\"");
                stringBuilder.Append("},");
            }
            stringBuilder.Append("\"data\":{ ");
            stringBuilder.Append("\"first\":{");
            stringBuilder.Append("\"value\": \"" + SendTemplateInfo.FirstMessage + "\",");
            stringBuilder.Append("\"color\": \"#173177\"");
            stringBuilder.Append("},");

            stringBuilder.Append("\"keyword1\":{");
            stringBuilder.Append("\"value\": \"" + SendTemplateInfo.Keyword1 + "\",");
            stringBuilder.Append("\"color\": \"#173177\"");
            stringBuilder.Append("},");

            stringBuilder.Append("\"keyword2\":{ ");
            stringBuilder.Append("\"value\": \"" + SendTemplateInfo.Keyword2 + "\",");
            stringBuilder.Append("\"color\": \"#173177\"");
            stringBuilder.Append("},");

            if (SendTemplateInfo.Keyword3 != null)
            {
                stringBuilder.Append("\"keyword3\":{");
                stringBuilder.Append("\"value\": \"" + SendTemplateInfo.Keyword3 + "\",");
                stringBuilder.Append("\"color\": \"#173177\"");
                stringBuilder.Append("},");
            }
            stringBuilder.Append("\"remark\":{ ");
            stringBuilder.Append("\"value\": \"" + SendTemplateInfo.MessageRemark + "\",");
            stringBuilder.Append("\"color\": \"#173177\"");
            stringBuilder.Append("}");
            stringBuilder.Append("}");
            stringBuilder.Append("}");
            return(stringBuilder.ToString());
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    _logger.LogInformation(1, "User logged in.");
                    if (string.Compare(returnUrl, "/new/admin", true) == 0)
                    {
                        SendTemplate.SendLogintemplate(Httpgetpost.accesstoken, model.UserName);
                    }
                    return(RedirectToLocal(returnUrl));
                }
                //if (result.RequiresTwoFactor)
                //{
                //    return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                //}
                //if (result.IsLockedOut)
                //{
                //    _logger.LogWarning(2, "User account locked out.");
                //    return View("Lockout");
                //}
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        public async Task <WecharSendMessage> CreateWecharSendMessage(SendMessageInfo sendMessageInfo)
        {
            var YaeherConsultationInfo = await _YaeherConsultationrepository.FirstOrDefaultAsync(a => a.ConsultNumber == sendMessageInfo.ConsultNumber);

            // 咨询人
            var ConsultantUserInfo = await _YaeherUserrepository.FirstOrDefaultAsync(a => a.Id == YaeherConsultationInfo.ConsultantID);

            var DoctorInfo = await _YaeherDoctorrepository.FirstOrDefaultAsync(a => a.Id == YaeherConsultationInfo.DoctorID);

            // 医生
            var DoctorUserInfo = await _YaeherUserrepository.FirstOrDefaultAsync(a => a.Id == DoctorInfo.UserID);

            // 查询微信模板ID
            WecharSendMessage wecharSendMessage = new WecharSendMessage();
            // 查询当前模板ID
            var YaeherMessageInfo = await _YaeherMessageTemplaterepository.FirstOrDefaultAsync(a => a.TemplateCode == sendMessageInfo.TemplateCode);

            wecharSendMessage.TemplateId = YaeherMessageInfo.TemplateId;
            // 是否自动发送
            bool SendState = bool.Parse(_SystemParameterrepository.GetAll().Where(a => a.SystemCode == "WecharSendState").FirstOrDefault().Code);
            // 查询消息模板内容
            var SendMessageList = _SendMessagerepository.GetAll().Where(a => a.TemplateCode == sendMessageInfo.TemplateCode && a.OperationType == sendMessageInfo.OperationType);

            try
            {
                if (SendMessageList.Count() > 0)
                {
                    SendWechaMessage         sendWechaMessage      = new SendWechaMessage();
                    SendMsmHelper            sendMsmHelper         = new SendMsmHelper();
                    List <WecharSendMessage> WecharSendMessageList = new List <WecharSendMessage>();
                    using (var unitOfWork = _unitOfWorkManager.Begin())
                    {
                        var    IsDoctor    = false;
                        string MessageType = string.Empty;
                        foreach (var SendMessageInfo in SendMessageList)
                        {
                            WecharSendMessage wecharMessage = new WecharSendMessage();
                            wecharMessage.ConsultNumber  = sendMessageInfo.ConsultNumber;
                            wecharMessage.TemplateCode   = sendMessageInfo.TemplateCode;
                            wecharMessage.OperationType  = sendMessageInfo.OperationType;
                            wecharMessage.ConsultantName = YaeherConsultationInfo.PatientName;      // 修改为患者用户名
                            wecharMessage.DoctorName     = YaeherConsultationInfo.DoctorName;
                            wecharMessage.ConsultJson    = JsonHelper.ToJson(YaeherConsultationInfo);
                            wecharMessage.BackUrl        = SendMessageInfo.BackUrl;
                            wecharMessage.FirstMessage   = SendMessageInfo.FirstMessage;  // 查询标语
                            wecharMessage.Keyword1       = SendMessageInfo.Keyword1;      // 称呼人
                            wecharMessage.Keyword2       = SendMessageInfo.Keyword2;      // 时间
                            wecharMessage.Keyword3       = SendMessageInfo.Keyword3;      // 内容
                            wecharMessage.MessageRemark  = SendMessageInfo.MessageRemark; // 备注
                            wecharMessage.TemplateId     = YaeherMessageInfo.TemplateId;
                            // 将对应信息转为发送模板
                            SendTemplate WecharTemplate = new SendTemplate();
                            switch (SendMessageInfo.Recipient)
                            {
                            case "Patient":                                                                                               // 接受人为咨询者
                                wecharMessage.ToUser = ConsultantUserInfo.WecharOpenID;
                                WecharTemplate       = sendWechaMessage.ConsultantWecharTemplate(wecharMessage, sendMessageInfo.Inquiry); // 赋值咨询者信息
                                break;

                            case "Doctor":      //  接受人为医生
                                wecharMessage.ToUser = DoctorUserInfo.WecharOpenID;
                                IsDoctor             = true;
                                WecharTemplate       = sendWechaMessage.DoctorWecharTemplate(wecharMessage, sendMessageInfo.EvaluateLevel, sendMessageInfo.WarningTime); // 赋值医生信息
                                MessageType          = WecharTemplate.MessageType;
                                break;
                            }
                            // 将对应信息转为发送实际内容
                            wecharMessage.WecharData = sendWechaMessage.WecharContent(WecharTemplate);
                            #region
                            // 执行微信消息发送
                            TemplateModel templateModel = new TemplateModel();
                            if (SendState)  // 是否实时发送
                            {
                                var TokenInfo = _systemTokenService.SystemTokenList("Wechar").Result;
                                templateModel = sendWechaMessage.SendWecharMessage(wecharMessage.WecharData, TokenInfo.access_token).Result;
                            }
                            if (templateModel.errcode == "error" || !SendState)
                            {
                                #region 增加重试机制
                                HangFireJob WecharhangFireJob = new HangFireJob();
                                WecharhangFireJob.JobName      = "微信定时服务";
                                WecharhangFireJob.JobCode      = "WechaMessageSend";
                                WecharhangFireJob.BusinessID   = Commons.GetCurrentTimeStepNumber(); //int.Parse(new RandomCode().GenerateCheckCodeNum(5));
                                WecharhangFireJob.BusinessCode = sendMessageInfo.ConsultNumber;
                                Random rd      = new Random();
                                int    Seconds = rd.Next(1, 5);
                                WecharhangFireJob.JobRunTime   = DateTime.Now.AddSeconds(Seconds); // 随机时间
                                WecharhangFireJob.JobSates     = "Open";
                                WecharhangFireJob.CallbackUrl  = Commons.AdminIp + "api/SendWechar/";
                                WecharhangFireJob.JobParameter = wecharMessage.WecharData;  // 将需要发送的内容整理好

                                HangfireScheduleJob job   = new HangfireScheduleJob();
                                JobModel            model = new JobModel();
                                model.CallbackUrl     = WecharhangFireJob.CallbackUrl;        //回调URL
                                model.queues          = "adminqueue";
                                model.CallbackContent = JsonHelper.ToJson(WecharhangFireJob); //回调参数
                                model.Timespan        = WecharhangFireJob.JobRunTime;         //运行时间
                                var returnjobid = job.Schedule(model);
                                if (returnjobid.IndexOf("error") < 0)
                                {
                                    WecharhangFireJob.JobRunID = returnjobid;
                                }
                                WecharhangFireJob = await _HangFireJobrepository.InsertAsync(WecharhangFireJob);

                                templateModel.msgid  = WecharhangFireJob.BusinessID.ToString();
                                templateModel.errmsg = "Undo";
                                #endregion

                                if (templateModel.errcode == "error")
                                {
                                    #region 将错误日志存起来
                                    YaeherOperList yaeherOperList = new YaeherOperList();
                                    yaeherOperList.CreatedOn   = DateTime.Now;
                                    yaeherOperList.OperExplain = JsonHelper.ToJson(sendMessageInfo);
                                    yaeherOperList.OperContent = "error:" + templateModel.errmsg;
                                    yaeherOperList.OperType    = "发送消息异常测试备用:" + sendMessageInfo.OperationType;
                                    await _YaeherOperListrepository.InsertAsync(yaeherOperList);

                                    #endregion
                                }
                            }
                            wecharMessage.MsgID   = templateModel.msgid;
                            wecharMessage.Status  = templateModel.errmsg;
                            wecharMessage.MsgType = wecharMessage.MsgType;
                            WecharSendMessageList.Add(wecharMessage);
                            #endregion
                        }
                        #region 发送短信
                        if (IsDoctor)
                        {
                            YaeherSendMsm yaeherSendMsm = new YaeherSendMsm();
                            yaeherSendMsm.PhoneNumbers  = DoctorUserInfo.PhoneNumber == null? DoctorInfo.PhoneNumber : DoctorUserInfo.PhoneNumber; // 医生电话
                            yaeherSendMsm.MessageType   = MessageType;                                                                             // 短信类型
                            yaeherSendMsm.TemplateParam = "{\"remark\":\"" + sendMessageInfo.ConsultNumber + "\"}";                                // 提示短信内容
                            // 发送短信 并存储记录
                            if (yaeherSendMsm.PhoneNumbers != null && yaeherSendMsm.MessageType != null)
                            {
                                var SendMessage = sendMsmHelper.SendMsm(yaeherSendMsm);  // 发送短信
                                YaeherMessageRemind MessageRemind = new YaeherMessageRemind();
                                MessageRemind.UserID           = 0;
                                MessageRemind.UserName         = "******";
                                MessageRemind.PhoneNumber      = yaeherSendMsm.PhoneNumbers;
                                MessageRemind.MessageType      = yaeherSendMsm.MessageType;
                                MessageRemind.Message          = SendMessage.ToString(); //将发送短信消息存起来
                                MessageRemind.VerificationCode = "";
                                MessageRemind.Message          = yaeherSendMsm.TemplateParam;
                                MessageRemind.CreatedBy        = 0;
                                MessageRemind.CreatedOn        = DateTime.Now;
                                MessageRemind.EffectiveLength  = 0;
                                MessageRemind.EffectiveTime    = DateTime.Now;
                                await _MessageRemindrepository.InsertAsync(MessageRemind);
                            }
                        }
                        #endregion
                        #region 将发微信的消息记录
                        if (WecharSendMessageList.Count > 0)
                        {
                            foreach (var wecharMessage in WecharSendMessageList)
                            {
                                await _repository.InsertAsync(wecharMessage);
                            }
                        }
                        #endregion
                        #region 增加有效用户访问记录 暂时关掉获取有效访问量
                        //YaeherOperList yaeherOperList = new YaeherOperList();
                        //yaeherOperList.CreatedOn = DateTime.Now;
                        //yaeherOperList.OperExplain = "ConsultNumber:"+ sendMessageInfo.ConsultNumber;
                        //yaeherOperList.OperContent = JsonHelper.ToJson(ConsultantUserInfo);
                        //yaeherOperList.OperType = "发送消息成功";
                        //await _YaeherOperListrepository.InsertAsync(yaeherOperList);
                        #endregion
                        unitOfWork.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                #region 增加有效用户访问记录
                YaeherOperList yaeherOperList = new YaeherOperList();
                yaeherOperList.CreatedOn   = DateTime.Now;
                yaeherOperList.OperExplain = JsonHelper.ToJson(sendMessageInfo);
                yaeherOperList.OperContent = "error:" + ex.ToString();
                yaeherOperList.OperType    = "发送消息异常:" + sendMessageInfo.OperationType;
                await _YaeherOperListrepository.InsertAsync(yaeherOperList);

                #endregion
            }
            return(wecharSendMessage);
        }