public void TaskCreateRecordAction(dynamic data) { var record = (EntityRecord)data.record; var createResult = (QueryResponse)data.result; var controller = (Controller)data.controller; var createdRecord = createResult.Object.Data[0]; var patchObject = new EntityRecord(); var priorityString = ""; if((string)record["priority"] == "high") { priorityString = "<span class='go-red'> [high] </span>"; } Utils.CreateActivity(recMan, "created", "created a <i class='fa fa-fw fa-tasks go-purple'></i> task #" + createdRecord["number"] + priorityString + " <a href='/#/areas/projects/wv_task/view-general/sb/general/" + createdRecord["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)createdRecord["subject"]) + "</a>", null, (Guid)createdRecord["project_id"], (Guid)createdRecord["id"], null); using (SecurityContext.OpenSystemScope()) { #region << Add creator in watch list >> { var targetRelation = relMan.Read("user_n_n_task_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } #endregion #region << Add owner in watch list >> { if ((Guid)record["created_by"] != (Guid)record["owner_id"]) { var targetRelation = relMan.Read("user_n_n_task_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["owner_id"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } #endregion #region << Generate the code field value >> { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["project_id"]); var query = new EntityQuery("wv_project", "*", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success && result.Object.Data.Any()) { patchObject = new EntityRecord(); patchObject["id"] = (Guid)createdRecord["id"]; patchObject["code"] = result.Object.Data[0]["code"] + "-T" + createdRecord["number"]; var patchResult = recMan.UpdateRecord("wv_task", patchObject); if (!patchResult.Success) { throw new Exception(patchResult.Message); } } } #endregion } var creatorUsername = ""; #region << Get username of the creator>> { EntityQuery query = new EntityQuery("user", "username", EntityQuery.QueryEQ("id", (Guid)createdRecord["created_by"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } creatorUsername = (string)result.Object.Data[0]["username"]; } #endregion #region << Sent email notification>> { //At this moment only if the project manager is different than the item creator should get an email if ((Guid)createdRecord["created_by"] != (Guid)createdRecord["owner_id"]) { var emailService = new EmailService(); var emailSubjectParameters = new Dictionary<string, string>(); emailSubjectParameters["code"] = (string)patchObject["code"]; emailSubjectParameters["subject"] = (string)createdRecord["subject"]; var subject = Regex.Replace(EmailTemplates.NewBugOrTaskNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary<string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "task"; emailContentParameters["creator"] = creatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_task/view-general/sb/general/" + createdRecord["id"]; emailContentParameters["taskOrBugDescription"] = (string)createdRecord["description"]; var content = Regex.Replace(EmailTemplates.NewBugOrTaskNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); var resepients = new List<string>(); #region << Get pm email>> { EntityQuery query = new EntityQuery("user", "email", EntityQuery.QueryEQ("id", (Guid)createdRecord["owner_id"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } emailService.SendEmail((string)result.Object.Data[0]["email"], subject, content); } #endregion } } #endregion }
public void CommentCreateRecordAction(dynamic data) { var record = (EntityRecord)data.record; var createResult = (QueryResponse)data.result; var controller = (Controller)data.controller; var createdRecord = createResult.Object.Data[0]; var task = new EntityRecord(); var bug = new EntityRecord(); var recepients = new List <string>(); #region << Init >> if (createdRecord["task_id"] != null) { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["task_id"]); var query = new EntityQuery("wv_task", "id,code,subject,description,project_id,$$user_n_n_task_watchers.id,$$user_n_n_task_watchers.email,$$project_1_n_task.code", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success) { task = result.Object.Data[0]; Utils.CreateActivity(recMan, "commented", "created a <i class='fa fa-fw fa-comment-o go-blue'></i> comment for task [" + task["code"] + "] <a href='/#/areas/projects/wv_task/view-general/sb/general/" + task["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)task["subject"]) + "</a>", null, (Guid)task["project_id"], (Guid)task["id"], null); } else { throw new Exception(result.Message); } } else if (createdRecord["bug_id"] != null) { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["bug_id"]); var query = new EntityQuery("wv_bug", "id,code,subject,description,project_id,$$user_n_n_bug_watchers.id,$$user_n_n_bug_watchers.email,$$project_1_n_bug.code", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success) { bug = result.Object.Data[0]; Utils.CreateActivity(recMan, "commented", "created a <i class='fa fa-fw fa-comment-o go-blue'></i> comment for bug [" + bug["code"] + "] <a href='/#/areas/projects/wv_bug/view-general/sb/general/" + bug["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)bug["subject"]) + "</a>", null, (Guid)bug["project_id"], null, (Guid)bug["id"]); } else { throw new Exception(result.Message); } } #endregion using (SecurityContext.OpenSystemScope()) { #region << Add the comment creator to the watch list if he is not there, Generate recipients list >> { if (createdRecord["task_id"] != null) { var isCommentatorInWatchList = false; #region << Check if is in watch list already >> foreach (var watcher in (List <EntityRecord>)task["$user_n_n_task_watchers"]) { if ((Guid)watcher["id"] == (Guid)createdRecord["created_by"]) { isCommentatorInWatchList = true; } else { recepients.Add((string)watcher["email"]); } } #endregion if (!isCommentatorInWatchList) { var targetRelation = relMan.Read("user_n_n_task_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } else if (createdRecord["bug_id"] != null) { var isCommentatorInWatchList = false; #region << Check if is in watch list already >> foreach (var watcher in (List <EntityRecord>)bug["$user_n_n_bug_watchers"]) { if ((Guid)watcher["id"] == (Guid)createdRecord["created_by"]) { isCommentatorInWatchList = true; } else { recepients.Add((string)watcher["email"]); } } #endregion if (!isCommentatorInWatchList) { var targetRelation = relMan.Read("user_n_n_bug_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } } #endregion } var commentatorUsername = ""; #region << Get username of the commentator>> { EntityQuery query = new EntityQuery("user", "username", EntityQuery.QueryEQ("id", (Guid)createdRecord["created_by"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } commentatorUsername = (string)result.Object.Data[0]["username"]; } #endregion #region << Generate notifications to watch list>> var emailService = new EmailService(); if (recepients.Count > 0) { try { if (createdRecord["task_id"] != null) { var emailSubjectParameters = new Dictionary <string, string>(); emailSubjectParameters["code"] = (string)task["code"]; emailSubjectParameters["subject"] = (string)task["subject"]; var subject = Regex.Replace(EmailTemplates.NewCommentNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary <string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "task"; emailContentParameters["creator"] = commentatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_task/view-general/sb/general/" + createdRecord["task_id"]; emailContentParameters["commentContent"] = (string)createdRecord["content"]; emailContentParameters["taskOrBugDescription"] = (string)task["description"]; var content = Regex.Replace(EmailTemplates.NewCommentNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); emailService.SendEmail(recepients.ToArray(), subject, content); } else if (createdRecord["bug_id"] != null) { var emailSubjectParameters = new Dictionary <string, string>(); emailSubjectParameters["code"] = (string)bug["code"]; emailSubjectParameters["subject"] = (string)bug["subject"]; var subject = Regex.Replace(EmailTemplates.NewCommentNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary <string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "bug"; emailContentParameters["creator"] = commentatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_bug/view-general/sb/general/" + createdRecord["bug_id"]; emailContentParameters["commentContent"] = (string)createdRecord["content"]; emailContentParameters["taskOrBugDescription"] = (string)bug["description"]; var content = Regex.Replace(EmailTemplates.NewCommentNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); emailService.SendEmail(recepients.ToArray(), subject, content); } } catch (Exception ex) { throw ex; } } #endregion }
public void CommentCreateRecordAction(dynamic data) { var record = (EntityRecord)data.record; var createResult = (QueryResponse)data.result; var controller = (Controller)data.controller; var createdRecord = createResult.Object.Data[0]; var task = new EntityRecord(); var bug = new EntityRecord(); var recepients = new List<string>(); #region << Init >> if (createdRecord["task_id"] != null) { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["task_id"]); var query = new EntityQuery("wv_task", "id,code,subject,description,project_id,$$user_n_n_task_watchers.id,$$user_n_n_task_watchers.email,$$project_1_n_task.code", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success) { task = result.Object.Data[0]; Utils.CreateActivity(recMan, "commented", "created a <i class='fa fa-fw fa-comment-o go-blue'></i> comment for task [" + task["code"] + "] <a href='/#/areas/projects/wv_task/view-general/sb/general/" + task["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)task["subject"]) + "</a>", null, (Guid)task["project_id"], (Guid)task["id"], null); } else { throw new Exception(result.Message); } } else if (createdRecord["bug_id"] != null) { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["bug_id"]); var query = new EntityQuery("wv_bug", "id,code,subject,description,project_id,$$user_n_n_bug_watchers.id,$$user_n_n_bug_watchers.email,$$project_1_n_bug.code", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success) { bug = result.Object.Data[0]; Utils.CreateActivity(recMan, "commented", "created a <i class='fa fa-fw fa-comment-o go-blue'></i> comment for bug [" + bug["code"] + "] <a href='/#/areas/projects/wv_bug/view-general/sb/general/" + bug["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)bug["subject"]) + "</a>", null, (Guid)bug["project_id"], null, (Guid)bug["id"]); } else { throw new Exception(result.Message); } } #endregion using (SecurityContext.OpenSystemScope()) { #region << Add the comment creator to the watch list if he is not there, Generate recipients list >> { if (createdRecord.Properties.ContainsKey("task_id") && createdRecord["task_id"] != null) { var isCommentatorInWatchList = false; #region << Check if is in watch list already >> foreach (var watcher in (List<EntityRecord>)task["$user_n_n_task_watchers"]) { if ((Guid)watcher["id"] == (Guid)createdRecord["created_by"]) { isCommentatorInWatchList = true; } else { recepients.Add((string)watcher["email"]); } } #endregion if (!isCommentatorInWatchList) { var targetRelation = relMan.Read("user_n_n_task_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], new Guid(record["task_id"].ToString())); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } else if (createdRecord.Properties.ContainsKey("bug_id") && createdRecord["bug_id"] != null) { var isCommentatorInWatchList = false; #region << Check if is in watch list already >> foreach (var watcher in (List<EntityRecord>)bug["$user_n_n_bug_watchers"]) { if ((Guid)watcher["id"] == (Guid)createdRecord["created_by"]) { isCommentatorInWatchList = true; } else { recepients.Add((string)watcher["email"]); } } #endregion if (!isCommentatorInWatchList) { var targetRelation = relMan.Read("user_n_n_bug_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], new Guid(record["bug_id"].ToString())); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } } #endregion } var commentatorUsername = ""; #region << Get username of the commentator>> { EntityQuery query = new EntityQuery("user", "username", EntityQuery.QueryEQ("id", (Guid)createdRecord["created_by"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } commentatorUsername = (string)result.Object.Data[0]["username"]; } #endregion #region << Generate notifications to watch list>> var emailService = new EmailService(); if (recepients.Count > 0) { try { if (createdRecord["task_id"] != null) { var emailSubjectParameters = new Dictionary<string, string>(); emailSubjectParameters["code"] = (string)task["code"]; emailSubjectParameters["subject"] = (string)task["subject"]; var subject = Regex.Replace(EmailTemplates.NewCommentNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary<string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "task"; emailContentParameters["creator"] = commentatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_task/view-general/sb/general/" + createdRecord["task_id"]; emailContentParameters["commentContent"] = (string)createdRecord["content"]; emailContentParameters["taskOrBugDescription"] = (string)task["description"]; var content = Regex.Replace(EmailTemplates.NewCommentNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); emailService.SendEmail(recepients.ToArray(), subject, content); } else if (createdRecord["bug_id"] != null) { var emailSubjectParameters = new Dictionary<string, string>(); emailSubjectParameters["code"] = (string)bug["code"]; emailSubjectParameters["subject"] = (string)bug["subject"]; var subject = Regex.Replace(EmailTemplates.NewCommentNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary<string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "bug"; emailContentParameters["creator"] = commentatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_bug/view-general/sb/general/" + createdRecord["bug_id"]; emailContentParameters["commentContent"] = (string)createdRecord["content"]; emailContentParameters["taskOrBugDescription"] = (string)bug["description"]; var content = Regex.Replace(EmailTemplates.NewCommentNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); emailService.SendEmail(recepients.ToArray(), subject, content); } } catch (Exception ex) { throw ex; } } #endregion }
public void BugCreateRecordAction(dynamic data) { var record = (EntityRecord)data.record; var createResult = (QueryResponse)data.result; var controller = (Controller)data.controller; var createdRecord = createResult.Object.Data[0]; var patchObject = new EntityRecord(); var priorityString = ""; if ((string)record["priority"] == "high") { priorityString = "<span class='go-red'> [high] </span>"; } Utils.CreateActivity(recMan, "created", "created a <i class='fa fa-fw fa-bug go-red'></i> bug #" + createdRecord["number"] + priorityString + " <a href='/#/areas/projects/wv_bug/view-general/sb/general/" + createdRecord["id"] + "'>" + System.Net.WebUtility.HtmlEncode((string)createdRecord["subject"]) + "</a>", null, (Guid)createdRecord["project_id"], null, (Guid)createdRecord["id"]); using (SecurityContext.OpenSystemScope()) { #region << Add the task owner and creator in the watch list>> #region << Add creator in watch list >> { var targetRelation = relMan.Read("user_n_n_bug_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["created_by"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } #endregion #region << Add creator in watch list >> { if ((Guid)record["created_by"] != (Guid)record["owner_id"]) { var targetRelation = relMan.Read("user_n_n_bug_watchers").Object; var createRelationNtoNResponse = recMan.CreateRelationManyToManyRecord(targetRelation.Id, (Guid)record["owner_id"], (Guid)record["id"]); if (!createRelationNtoNResponse.Success) { throw new Exception("Could not create watch relation" + createRelationNtoNResponse.Message); } } } #endregion #endregion #region << Generate the code field value >> { var filterObj = EntityQuery.QueryEQ("id", (Guid)createdRecord["project_id"]); var query = new EntityQuery("wv_project", "*", filterObj, null, null, null); var result = recMan.Find(query); if (result.Success && result.Object.Data.Any()) { patchObject = new EntityRecord(); patchObject["id"] = (Guid)createdRecord["id"]; patchObject["code"] = result.Object.Data[0]["code"] + "-B" + createdRecord["number"]; var patchResult = recMan.UpdateRecord("wv_bug", patchObject); if (!patchResult.Success) { throw new Exception(patchResult.Message); } } } #endregion } var creatorUsername = ""; #region << Get username of the creator>> { EntityQuery query = new EntityQuery("user", "username", EntityQuery.QueryEQ("id", (Guid)createdRecord["created_by"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } creatorUsername = (string)result.Object.Data[0]["username"]; } #endregion #region << Sent email notification>> { if ((Guid)createdRecord["created_by"] != (Guid)createdRecord["owner_id"]) { //At this moment only if the project manager is different than the item creator should get an email var emailService = new EmailService(); var emailSubjectParameters = new Dictionary <string, string>(); emailSubjectParameters["code"] = (string)patchObject["code"]; emailSubjectParameters["subject"] = (string)createdRecord["subject"]; var subject = Regex.Replace(EmailTemplates.NewCommentNotificationSubject, @"\{(.+?)\}", m => emailSubjectParameters[m.Groups[1].Value]); var emailContentParameters = new Dictionary <string, string>(); emailContentParameters["baseUrl"] = controller.HttpContext.Request.Scheme + "://" + controller.HttpContext.Request.Host.Value; emailContentParameters["subject"] = subject; emailContentParameters["type"] = "bug"; emailContentParameters["creator"] = creatorUsername; emailContentParameters["taskOrBugUrl"] = emailContentParameters["baseUrl"] + "/#/areas/projects/wv_bug/view-general/sb/general/" + createdRecord["id"]; emailContentParameters["taskOrBugDescription"] = (string)createdRecord["description"]; var content = Regex.Replace(EmailTemplates.NewBugOrTaskNotificationContent, @"\{(.+?)\}", m => emailContentParameters[m.Groups[1].Value]); var resepients = new List <string>(); #region << Get pm email>> { EntityQuery query = new EntityQuery("user", "email", EntityQuery.QueryEQ("id", (Guid)createdRecord["owner_id"]), null, null, null); QueryResponse result = recMan.Find(query); if (!result.Success) { throw new Exception("Cannot get the username of the commentator"); } emailService.SendEmail((string)result.Object.Data[0]["email"], subject, content); } #endregion } } #endregion }