public void Create(IssueMaster issue) { #region 创建IssueMaster issue.Status = com.Sconit.CodeMaster.IssueStatus.Create; issue.Code = numberControlMgr.GetIssueNo(issue); this.genericMgr.Create(issue); if (issue.ReleaseIssue) { this.Release(issue); } #endregion }
public ActionResult New() { IssueMaster issue = (IssueMaster)this.TempData["Issue"]; if (issue == null) { issue = new IssueMaster(); issue.MobilePhone = this.CurrentUser.MobilePhone; issue.Email = this.CurrentUser.Email; issue.UserName = this.CurrentUser.FullName; } else { this.TempData["Issue"] = null; } return View(issue); }
public ActionResult Edit(IssueMaster issue) { if (!string.IsNullOrWhiteSpace(issue.IssueTypeCode)) { ViewBag.IssueTypeCode = issue.IssueTypeCode; IssueType issueType = new IssueType();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueType.Code = issue.IssueTypeCode; issue.IssueType = issueType; ModelState.Remove("IssueType"); } /* if (!string.IsNullOrWhiteSpace(issue.IssueAddressCode)) { ViewBag.IssueAddressCode = issue.IssueAddressCode; IssueAddress issueAddress = new IssueAddress();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueAddress.Code = issue.IssueAddressCode; issue.IssueAddress = issueAddress; ModelState.Remove("IssueAddress"); } */ if (!string.IsNullOrWhiteSpace(issue.IssueNoCode)) { ViewBag.IssueNoCode = issue.IssueNoCode; IssueNo issueNo = new IssueNo();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueNo.Code = issue.IssueNoCode; issue.IssueNo = issueNo; //ModelState.Remove("IssueNo"); } if (ModelState.IsValid) { base.genericMgr.Update(issue); SaveSuccessMessage(Resources.ISS.IssueMaster.Issue_Updated); } return RedirectToAction("Edit/" + issue.Code); }
private void InitPage(IssueMaster issue) { ViewBag.Code = issue.Code; ViewBag.isEditable = issue.Status == com.Sconit.CodeMaster.IssueStatus.Create && issue.CreateUserId == this.CurrentUser.Id; ViewBag.isEditable2 = (issue.Status == com.Sconit.CodeMaster.IssueStatus.Submit || issue.Status == com.Sconit.CodeMaster.IssueStatus.InProcess) && HaveAdminPermission(); ViewBag.editorTemplate = issue.Status == com.Sconit.CodeMaster.IssueStatus.Create && issue.CreateUserId == this.CurrentUser.Id ? "" : "ReadonlyTextBox"; //ViewBag.editorTemplate2 = !(issue.Status == com.Sconit.CodeMaster.IssueStatus.Create && issue.CreateUserId == this.CurrentUser.Id) && issue.Status != com.Sconit.CodeMaster.IssueStatus.Close && issue.Status == com.Sconit.CodeMaster.IssueStatus.Cancel ? "" : "ReadonlyTextBox"; ViewBag.showRelease = issue.Status == com.Sconit.CodeMaster.IssueStatus.Create && (issue.CreateUserId == this.CurrentUser.Id || HaveAdminPermission()); ViewBag.showDelete = issue.Status == com.Sconit.CodeMaster.IssueStatus.Create && (issue.CreateUserId == this.CurrentUser.Id || HaveAdminPermission()); ViewBag.showStart = issue.Status == com.Sconit.CodeMaster.IssueStatus.Submit && (HaveAdminPermission() || issueUtilMgr.HavePermission(issue.Code, com.Sconit.CodeMaster.IssueStatus.Submit)); ViewBag.showComplete = issue.Status == com.Sconit.CodeMaster.IssueStatus.InProcess && (HaveAdminPermission() || issueUtilMgr.HavePermission(issue.Code, com.Sconit.CodeMaster.IssueStatus.InProcess)); ViewBag.showClose = issue.Status == com.Sconit.CodeMaster.IssueStatus.Complete && (issue.CreateUserId == this.CurrentUser.Id || HaveAdminPermission()); ViewBag.showCancel = issue.Status == com.Sconit.CodeMaster.IssueStatus.Submit && (issue.CreateUserId == this.CurrentUser.Id || HaveAdminPermission()); }
public ActionResult Edit(IssueMaster issue) { try { IssueMaster newIssue = base.genericMgr.FindById<IssueMaster>(issue.Code); newIssue.Content = issue.Content; base.genericMgr.Update(newIssue); SaveSuccessMessage(Resources.ISS.IssueMaster.Issue_Updated); } catch (BusinessException ex) { SaveErrorMessage(ex.Message); } return RedirectToAction("Edit/" + issue.Code); }
public ActionResult New(IssueMaster issue, string Assemblies, string ProductCode) { TempData["issue"] = issue; IssueType issueType = base.genericMgr.FindById<IssueType>("ISS_QA"); issue.IssueType = issueType; ModelState.Remove("IssueType"); if (!string.IsNullOrWhiteSpace(issue.IssueNoCode)) { ViewBag.IssueNoCode = issue.IssueNoCode; IssueNo issueNo = new IssueNo(); issueNo.Code = issue.IssueNoCode; issue.IssueNo = issueNo; } if (!ModelState.IsValid) { ViewBag.Assemblies = Assemblies; ViewBag.ProductCode = ProductCode; return View(issue); } else { issueMgr.Create(issue); SaveSuccessMessage(Resources.ISS.IssueMaster.QD_Issue_Added); if(issue.ContinuousCreate){ return RedirectToAction("New"); } return RedirectToAction("Edit/" + issue.Code); } }
public ActionResult New() { IssueMaster issue = new IssueMaster(); if (TempData["issue"] != null) { issue.BackYards = ((IssueMaster)TempData["issue"]).BackYards; issue.ReleaseIssue = ((IssueMaster)TempData["issue"]).ReleaseIssue; issue.ContinuousCreate = ((IssueMaster)TempData["issue"]).ContinuousCreate; TempData["issue"] = null; } else { issue.ReleaseIssue = true; issue.ContinuousCreate = true; } return View(issue); }
public void Release(IssueMaster issue) { //try //{ IssueLevel issueLevel = this.GetDefaultIssueLevel(); if (issueLevel == null) { throw new BusinessException(Resources.ISS.IssueMaster.Errors_DefaultLevelNotFound, issue.IssueType.Description); } if (issue.Status == com.Sconit.CodeMaster.IssueStatus.Create) { User user = SecurityContextHolder.Get(); issue.Status = com.Sconit.CodeMaster.IssueStatus.Submit; issue.ReleaseDate = DateTime.Now; issue.ReleaseUser = user.Id; issue.ReleaseUserName = user.FullName; this.genericMgr.Update(issue); #region 创建IssueDetail #region 用户 string hql = "select ittud from IssueTypeToUserDetail ittud "; hql += " join ittud.IssueTypeTo ittm "; hql += " join ittm.IssueLevel il "; hql += " join ittm.IssueType it "; hql += " join ittud.User u "; hql += " where ((ittud.IsEmail = true and u.Email is not null and u.Email != '') "; hql += " or (ittud.IsSMS = true and u.MobilePhone is not null and u.MobilePhone != '')) "; hql += " and il.IsActive = true and ittm.IsActive = true "; hql += " and ittud.IssueTypeTo=ittm.Code and it.Code =? "; hql += " order by il.Sequence asc "; IList<IssueTypeToUserDetail> issueTypeToUserDetailList = this.genericMgr.FindAll<IssueTypeToUserDetail>(hql, issue.IssueTypeCode); IList<IssueDetail> submitSendUser = new List<IssueDetail>(); foreach (IssueTypeToUserDetail issueTypeToUserDetail in issueTypeToUserDetailList) { IssueDetail issueDeatail = new IssueDetail(); issueDeatail.User = issueTypeToUserDetail.User; //issueDeatail.UserName = issueTypeToUserDetail.User.FullName; issueDeatail.MobilePhone = issueTypeToUserDetail.User.MobilePhone; issueDeatail.Email = issueTypeToUserDetail.User.Email; issueDeatail.IsActive = true; issueDeatail.EmailCount = 0; issueDeatail.SMSCount = 0; issueDeatail.EmailStatus = com.Sconit.CodeMaster.SendStatus.NotSend; issueDeatail.SMSStatus = com.Sconit.CodeMaster.SendStatus.NotSend; issueDeatail.IssueLevel = issueTypeToUserDetail.IssueTypeTo.IssueLevel.Code; issueDeatail.IsInProcess = issueTypeToUserDetail.IssueTypeTo.IssueLevel.IsInProcess; issueDeatail.IsSubmit = issueTypeToUserDetail.IssueTypeTo.IssueLevel.IsSubmit; issueDeatail.IsDefault = issueTypeToUserDetail.IssueTypeTo.IssueLevel.IsDefault; issueDeatail.IssueCode = issue.Code; issueDeatail.IsSMS = issueTypeToUserDetail.IsSMS; issueDeatail.IsEmail = issueTypeToUserDetail.IsEmail; issueDeatail.Sequence = issueTypeToUserDetail.IssueTypeTo.IssueLevel.Sequence; issueDeatail.IssueTypeToUserDetailId = issueTypeToUserDetail.Id; this.genericMgr.Create(issueDeatail); if (issueDeatail.IsDefault) { submitSendUser.Add(issueDeatail); } } #endregion #region 角色 暂不支持 #endregion #endregion this.SendMailAndSMS(issue, issueLevel, submitSendUser); } else { throw new BusinessException(Resources.ISS.IssueMaster.Errors_StatusErrorWhenRelease, issue.Code, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.IssueStatus, ((int)issue.Status).ToString())); } //} //catch (Exception e) //{ // log.Error(e.Message, e); //} }
private void SendMailAndSMS(IssueMaster issue, double hours, DateTime date, IList<IssueLevel> issueLevels, User user) { int count = issueLevels.Count; foreach (IssueLevel issueLevel in issueLevels) { if (date.AddHours(count * hours) < DateTime.Now) { //是否发送过 if (!this.IsSended(issue, issueLevel)) { IList<IssueDetail> issueDetailList = this.genericMgr.FindAll<IssueDetail>("select det from IssueDetail where IssueCode = ? and IssueLevel = ? ", new object[] { issue.Code, issueLevel.Code }); SendMailAndSMS(issue, issueLevel, issueDetailList); } break; } count--; } }
public string GetBody(IssueMaster issue, string level, bool isEmail) { string separator = string.Empty; if (isEmail) { separator = "<br>"; } else { separator = "\r\n"; } StringBuilder content = new StringBuilder(); try { if (isEmail) { content.Append(Resources.ISS.IssueMaster.Code + ": " + issue.Code); content.Append(separator); } content.Append(Resources.ISS.IssueMaster.BackYards + ": " + issue.BackYards); content.Append(separator); content.Append(Resources.ISS.IssueMaster.IssueSubject + ": " + issue.IssueSubject); if (issue.Status == com.Sconit.CodeMaster.IssueStatus.Submit) { TimeSpan now = new TimeSpan(DateTime.Now.Ticks); TimeSpan ReleaseDate = new TimeSpan(issue.ReleaseDate.Value.Ticks); TimeSpan diff = now.Subtract(ReleaseDate).Duration(); if (diff.Hours > 0) { content.Append("(" + Resources.ISS.IssueMaster.ConfirmOvertime + " " + diff.Hours + "小时)"); } } else if (issue.Status == com.Sconit.CodeMaster.IssueStatus.InProcess) { TimeSpan now = new TimeSpan(DateTime.Now.Ticks); TimeSpan inprocessDate = new TimeSpan(issue.StartDate.Value.Ticks); TimeSpan diff = now.Subtract(inprocessDate).Duration(); if (diff.Hours > 0) { content.Append("(" + Resources.ISS.IssueMaster.CompleteOvertime + " " + diff.Hours + "小时)"); } } if (issue.Priority == com.Sconit.CodeMaster.IssuePriority.Urgent) { content.Append("[" + systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.IssuePriority, ((int)com.Sconit.CodeMaster.IssuePriority.Urgent).ToString()) + "]"); } content.Append(separator); content.Append(Resources.ISS.IssueMaster.DateTime + ": " + DateTime.Now + separator); if (isEmail || issue.IssueAddress != null) { content.Append(Resources.ISS.IssueMaster.IssueAddress + ": "); content.Append(issue.IssueAddress != null ? issue.IssueAddress : string.Empty); content.Append(separator); } content.Append(Resources.ISS.IssueMaster.IssueType + ": " + issue.IssueType.Code + separator); if (issue.IssueNo != null) { content.Append(Resources.ISS.IssueMaster.IssueNo + ": " + issue.IssueNo.Code + separator); } /* if (level != null && level.Length > 0) content.Append("等级: " + codeMasterMgrE.GetCachedCodeMaster(BusinessConstants.CODE_MASTER_ISSUE_TYPE_TO_LEVEL, level).Description + separator); content.Append("状态: " + codeMasterMgrE.GetCachedCodeMaster(BusinessConstants.CODE_MASTER_ISSUE_STATUS, issue.Status).Description + separator); */ if (isEmail) { content.Append(separator + separator); content.Append(issue.Content); content.Append(separator + separator); if (issue.UserName != null && issue.UserName.Trim() != string.Empty) content.Append(issue.UserName + separator); if (issue.MobilePhone != null && issue.MobilePhone.Trim() != string.Empty && ControlHelper.IsValidMobilePhone(issue.MobilePhone)) content.Append("Tel: " + issue.MobilePhone + separator); if (issue.Email != null && issue.Email.Trim() != string.Empty && ControlHelper.IsValidEmail(issue.Email)) content.Append("Email: " + issue.Email + separator); } else { if (issue.Content != null && issue.Content.Trim() != string.Empty) { content.Append(issue.Content); content.Append(separator); } if ((issue.UserName != null && issue.UserName.Trim() != string.Empty) || (issue.MobilePhone != null && issue.MobilePhone.Trim() != string.Empty && ControlHelper.IsValidMobilePhone(issue.MobilePhone))) { content.Append("["); } if (issue.UserName != null && issue.UserName.Trim() != string.Empty) { content.Append(issue.UserName); } if (issue.MobilePhone != null && issue.MobilePhone.Trim() != string.Empty && ControlHelper.IsValidMobilePhone(issue.MobilePhone)) { content.Append(", " + issue.MobilePhone); } if ((issue.UserName != null && issue.UserName.Trim() != string.Empty) || (issue.MobilePhone != null && issue.MobilePhone.Trim() != string.Empty && ControlHelper.IsValidMobilePhone(issue.MobilePhone))) { content.Append("]"); } content.Append(separator); content.Append(Resources.ISS.IssueMaster.Confirmation + " " + issue.Code + "+" + Resources.ISS.IssueMaster.Space + "+Y"); } } catch (Exception e) { log.Error(e.Message, e); } return content.ToString(); }
public string GetSMSBody(IssueMaster issue, string level) { return this.GetBody(issue, level, false); }
public string GetEmailBody(IssueMaster issue, string level) { return this.GetBody(issue, level, true); }
private void SendEmail(IssueMaster issue, string level, ref IList<IssueDetail> issueDetailList) { try { string userMail = string.Empty; if (issue.Email != null && ControlHelper.IsValidEmail(issue.Email)) { if (issue.UserName != null && issue.UserName.Length > 0) { userMail = issue.UserName + "," + issue.Email; } else { userMail = issue.Email; } } else { userMail = systemMgr.GetEntityPreferenceValue(EntityPreference.CodeEnum.SMTPEmailAddr); } string toEmail = GetEmail(issue.Code, ref issueDetailList); string body = GetEmailBody(issue, level); string subject = string.Empty; if (issue.Priority == com.Sconit.CodeMaster.IssuePriority.Urgent) { subject = systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.IssuePriority, ((int)com.Sconit.CodeMaster.IssuePriority.Urgent).ToString()) + " " + issue.IssueSubject; } else { subject = issue.IssueSubject; } MailPriority mailPriority; if (issue.Priority == com.Sconit.CodeMaster.IssuePriority.Urgent) { mailPriority = MailPriority.High; } else { mailPriority = MailPriority.Normal; } #region email发送 this.emailMgr.AsyncSendEmail(subject, body, toEmail, mailPriority); #endregion } catch (Exception e) { log.Error(e.Message, e); } }
private void SendSMS(IssueMaster issue, string level, ref IList<IssueDetail> issueDetailList) { string body = GetSMSBody(issue, level); string toMobilePhone = GetMobilePhone(issue.Code, ref issueDetailList); if (toMobilePhone != string.Empty && body != string.Empty) { //SMSService smsService = new SMSService(); //smsService.AsyncSend(toMobilePhone, body); //smsMgr.AsyncSend(toMobilePhone, body); } else { issueLogMgr.LogError(issue.Code, null, "Issue.Code:" + issue.Code + ",toMobilePhone:" + toMobilePhone + ", body:" + body); throw new BusinessException(Resources.ISS.IssueMaster.ParamsIsNull, new string[] { issue.Code, toMobilePhone, body }); } }
private void SendMailAndSMS(IssueMaster issue, IssueLevel level, IList<IssueDetail> issueDetailList) { try { if (issueDetailList == null || issueDetailList.Count == 0) { throw new BusinessException(Resources.ISS.IssueMaster.EmailListIsNull); } SendEmail(issue, level.Code, ref issueDetailList); SendSMS(issue, level.Code, ref issueDetailList); foreach (IssueDetail issueDetail in issueDetailList) { if (issueDetail.SMSStatus != com.Sconit.CodeMaster.SendStatus.Fail) { issueDetail.SMSStatus = com.Sconit.CodeMaster.SendStatus.Success; issueLogMgr.LogInfo(issue.Code, issueDetail, issue.Content); } issueDetail.SMSCount = issueDetail.SMSCount + 1; if (issueDetail.EmailStatus != com.Sconit.CodeMaster.SendStatus.Fail) { issueDetail.EmailStatus = com.Sconit.CodeMaster.SendStatus.Success; issueLogMgr.LogInfo(issue.Code, issueDetail, issue.Content); } issueDetail.EmailCount = issueDetail.EmailCount + 1; this.genericMgr.Update(issueDetail); } } catch (Exception e) { issueLogMgr.LogError(issue.Code, e.Message); } }
public bool IsSended(IssueMaster issue, IssueLevel issueLevel) { string hql = "select count(*) from IssueDetail where IsActive = true and IssueCode =? and Level = ? and (EmailStatus !=0 or SMSStatus !=0 )"; IList<long> count = this.genericMgr.FindAll<long>(hql, new object[] { issue.Code, issueLevel.Code }); if (count != null && count.Count > 0 && count[0] > 0) { return true; } return false; }
public ActionResult New(IssueMaster issue) { if (!string.IsNullOrWhiteSpace(issue.IssueTypeCode)) { ViewBag.IssueTypeCode = issue.IssueTypeCode; IssueType issueType = new IssueType();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueType.Code = issue.IssueTypeCode; issue.IssueType = issueType; ModelState.Remove("IssueType"); } /* if (!string.IsNullOrWhiteSpace(issue.IssueAddressCode)) { ViewBag.IssueAddressCode = issue.IssueAddressCode; IssueAddress issueAddress = new IssueAddress();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueAddress.Code = issue.IssueAddressCode; issue.IssueAddress = issueAddress; ModelState.Remove("IssueAddress"); } */ if (!string.IsNullOrWhiteSpace(issue.IssueNoCode)) { ViewBag.IssueNoCode = issue.IssueNoCode; IssueNo issueNo = new IssueNo();//base.genericMgr.FindById<IssueType>(issueTypeTo.IssueTypeCode); issueNo.Code = issue.IssueNoCode; issue.IssueNo = issueNo; //ModelState.Remove("IssueNo"); } if (!ModelState.IsValid) { return View(issue); } else { IssueMaster newIssue = new IssueMaster(); newIssue.IssueNo = issue.IssueNo; newIssue.IssueAddress = issue.IssueAddress; newIssue.IssueSubject = issue.IssueSubject; newIssue.IssueType = issue.IssueType; newIssue.MobilePhone = issue.MobilePhone; newIssue.Email = issue.Email; newIssue.Type = issue.Type; newIssue.Priority = issue.Priority; newIssue.UserName = issue.UserName; newIssue.BackYards = issue.BackYards; newIssue.ReleaseIssue = issue.ReleaseIssue; issueMgr.Create(newIssue); SaveSuccessMessage(Resources.ISS.IssueMaster.Issue_Added); if (issue.ContinuousCreate) { //清空不必要的值 IssueMaster newIssue2 = new IssueMaster(); newIssue2.BackYards = issue.BackYards; newIssue2.IssueNo = issue.IssueNo; //newIssue2.IssueNoCode = issue.IssueNo != null ? issue.IssueNo.Code : string.Empty; //newIssue2.IssueTypeCode = issue.IssueType.Code; newIssue2.IssueType = issue.IssueType; newIssue2.IssueAddress = issue.IssueAddress; newIssue2.Priority = issue.Priority; newIssue2.Type = issue.Type; newIssue2.UserName = issue.UserName; newIssue2.MobilePhone = issue.MobilePhone; newIssue2.Email = issue.Email; newIssue2.ContinuousCreate = issue.ContinuousCreate; newIssue2.IsRedirect = true; newIssue2.ReleaseIssue = issue.ReleaseIssue; this.TempData["Issue"] = newIssue2; return this.RedirectToAction("New/"); } else { return RedirectToAction("Edit/" + newIssue.Code); } } }
private void SendEmail(IssueMaster issue, string level, ref IList<IssueDetail> issueDetailList) { try { //string userMail = string.Empty; //if (issue.Email != null && ControlHelper.IsValidEmail(issue.Email)) //{ // if (issue.UserName != null && issue.UserName.Length > 0) // { // userMail = issue.UserName + "," + issue.Email; // } // else // { // userMail = issue.Email; // } //} //else //{ // userMail = systemMgr.GetEntityPreferenceValue(EntityPreference.CodeEnum.SMTPEmailAddr); //} //string toEmail = GetEmail(issue.Code, ref issueDetailList); //string body = GetEmailBody(issue, level); //string subject = string.Empty; //if (issue.Priority == com.Sconit.CodeMaster.IssuePriority.Urgent) //{ // subject = systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.IssuePriority, ((int)com.Sconit.CodeMaster.IssuePriority.Urgent).ToString()) + " " + issue.IssueSubject; //} //else //{ // subject = issue.IssueSubject; //} //MailPriority mailPriority; //if (issue.Priority == com.Sconit.CodeMaster.IssuePriority.Urgent) //{ // mailPriority = MailPriority.High; //} //else //{ // mailPriority = MailPriority.Normal; //} //#region email发送 //EmailService emailService = new EmailService(); //emailService.AsyncSend(subject, body, toEmail, mailPriority); ////smsMgr.SendEmail(subject, body, toEmail, userMail, mailPriority); //#endregion } catch (Exception e) { log.Error(e.Message, e); } }