private void LoadDataFromReviewPalFile() { XmlDocument reviewHtml = new XmlDocument(); if (File.Exists(_fileLocation)) { reviewHtml.Load(_fileLocation); XmlNode dataNode = CodeReview.GetDataNode(reviewHtml); if (dataNode == null) { MessageBox.Show("Please select a valid ReviewPal file."); } else { string xml = dataNode.InnerXml; _reviewRepo.CodeReview = Utils.LoadFromXml <CodeReview>(xml); _reviewRepo.AdjustReviewId(); RefreshReviewList(); } } else { MessageBox.Show(string.Format("Previously saved ReviewPal file not found at \n {0}.", _fileLocation)); } }
/// <summary> /// Updates the code review. /// </summary> /// <param name="codeReview">The code review.</param> public void UpdateCodeReview(CodeReview codeReview) { try { codeReview.ProjectName = txtProject.Text; codeReview.ProjectCode = txtProjectCode.Text; codeReview.WorkProductName = txtWorkProductName.Text; codeReview.WorkProductVersion = txtWorkProductVersion.Text; codeReview.WorkProductSize = txtWorkProductSize.Text; codeReview.WorkProductReleaseDateForReview = dtWorkProductReleaseDateForReview.Text; codeReview.ReviewedBy = txtReviewedBy.Text; codeReview.ReviewedDate = dateTimePicker2.Text; codeReview.ReviewStatus = cmbStatus.Text; codeReview.ReviewActionTakenBy = txtReviewActionTakenBy.Text; codeReview.ReviewActionTakenDate = dtReviewActionTakenDate.Text; codeReview.ReviewPreparationEffort = txtReviewPreparationEffort.Text; codeReview.ReviewEffort = txtReviewEffort.Text; codeReview.ReworkEffrot = txtReworkEffort.Text; } catch (Exception ex) { Utils.HandleException(ex); } }
/// <summary> /// Sets the summary. /// </summary> /// <param name="codeReview">The code review.</param> public void SetSummary(CodeReview codeReview) { try { _codeReview = codeReview; txtProject.Text = codeReview.ProjectName; txtProjectCode.Text = codeReview.ProjectCode; txtWorkProductName.Text = codeReview.WorkProductName; txtWorkProductVersion.Text = codeReview.WorkProductVersion; txtWorkProductSize.Text = codeReview.WorkProductSize; dtWorkProductReleaseDateForReview.Text = codeReview.WorkProductReleaseDateForReview; txtReviewedBy.Text = codeReview.ReviewedBy; dateTimePicker2.Text = codeReview.ReviewedDate; cmbStatus.SelectedIndex = cmbStatus.FindStringExact(codeReview.ReviewStatus); txtReviewActionTakenBy.Text = codeReview.ReviewActionTakenBy; dtReviewActionTakenDate.Text = codeReview.ReviewActionTakenDate; txtReviewPreparationEffort.Text = codeReview.ReviewPreparationEffort; txtReviewEffort.Text = codeReview.ReviewEffort; txtReworkEffort.Text = codeReview.ReworkEffrot; CalculateReviewEfficiency(codeReview); } catch (Exception ex) { Utils.HandleException(ex); } }
public ActionResult DeleteConfirmed(int id) { CodeReview codereview = db.CodeReviews.Find(id); db.CodeReviews.Remove(codereview); db.SaveChanges(); return(RedirectToAction("Index")); }
public CodeReviewTool() { InitializeComponent(); m_CodeReview = new CodeReview(OnChange); commentList.DataSource = m_CodeReview.CommentInds; commentType.DataSource = typeof(CommentType).GetEnumNames(); commentType.SelectedIndex = 0; }
// // GET: /CodeReview/Edit/5 public ActionResult Edit(int id = 0) { CodeReview codereview = db.CodeReviews.Find(id); if (codereview == null) { return(HttpNotFound()); } return(View(codereview)); }
public ActionResult Edit(CodeReview codereview) { if (ModelState.IsValid) { db.Entry(codereview).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(codereview)); }
public CodeReview SubmitCodeReviewPoint(CodeReviewPoint codeReviewPoint) { DAL.EntityFramework.CodeReviewPoint codeReviewPointCore; codeReviewPoint.CodeReviewTagId = codeReviewPoint.CodeReviewTagId == 0 ? null : codeReviewPoint.CodeReviewTagId; // existing if (codeReviewPoint.PointId > 0) { codeReviewPointCore = UnitOfWork.CodeReviewRepository .GetCodeReviewWithAllData(codeReviewPoint.CodeReviewMetadataId) .CodeReviewTags .Where(t => !t.IsDeleted) .SelectMany(t => t.CodeReviewPoints) .First(p => p.CodeReviewPointId == codeReviewPoint.PointId && !p.IsDeleted); codeReviewPointCore.CodeReviewTagId = (int)codeReviewPoint.CodeReviewTagId; codeReviewPointCore.PointTitle = codeReviewPoint.Title; codeReviewPointCore.Description = codeReviewPoint.Description; codeReviewPointCore.CodeReviewPointType = codeReviewPoint.Rating; codeReviewPointCore.IsDeleted = codeReviewPoint.IsDeleted; codeReviewPointCore.ModifiedOn = DateTime.Now; } else { codeReviewPointCore = new DAL.EntityFramework.CodeReviewPoint { PointTitle = codeReviewPoint.Title, Description = codeReviewPoint.Description, CodeReviewPointType = codeReviewPoint.Rating, IsDeleted = codeReviewPoint.IsDeleted, CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now }; UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(codeReviewPoint.CodeReviewMetadataId) .CodeReviewTags .First(i => i.CodeReviewTagId == codeReviewPoint.CodeReviewTagId && !i.IsDeleted) .CodeReviewPoints.Add(codeReviewPointCore); } UnitOfWork.Commit(); //return FetchCodeReviewPreview(codeReviewPoint.CodeReviewMetadataId,false); CodeReview updatedCodeReview = CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository .GetCodeReviewWithAllData(codeReviewPoint.CodeReviewMetadataId)); updatedCodeReview.CodeReviewPreviewHtml = UtilityFunctions.GenerateCodeReviewPreview(updatedCodeReview, false); updatedCodeReview.SystemRating = CalculateCodeReviewRating(updatedCodeReview); return(updatedCodeReview); }
public ActionResult Create(CodeReview codereview) { if (ModelState.IsValid) { codereview.DateAdded = DateTime.Now; db.CodeReviews.Add(codereview); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(codereview)); }
static void Main(string[] args) { object o = 123; string[] s = { "hello ", "and ", "welcome ", "to ", "this ", "demo! " }; string[] a = null; var CodeReview = new CodeReview(); // CodeReview.Parse(o); CodeReview.Concat(s); Console.ReadKey(); }
public int?CalculateCodeReviewRating(CodeReview codeReview) { var total = 0f; var score = 0f; var ratingConfig = UnitOfWork.CodeReviewRepository.GetCrRatingCalcConfig(codeReview.AddedFor.UserId).FirstOrDefault(); // var traineeId if (ratingConfig == null) { return(null); } try { var reviewPoints = codeReview.Tags .SelectMany(t => t.ReviewPoints ?? new List <CodeReviewPoint>()) .ToList(); if (!reviewPoints.Any()) { return(null); } foreach (var reviewPoint in reviewPoints) { total++; score += ratingConfig.CrRatingCalcWeightConfigs .Where(w => w.ReviewPointTypeId == reviewPoint.Rating) .Select(w => w.Weight) .FirstOrDefault(); } var finalScore = score / total; var maxScore = ratingConfig.CrRatingCalcRangeConfigs.Max(r => r.RangeMax); return(ratingConfig.CrRatingCalcRangeConfigs .OrderBy(r => r.RangeMin) .Last(r => finalScore >= r.RangeMin && (finalScore < r.RangeMax || (finalScore == maxScore))) .FeedbackTypeId); } catch (Exception ex) { LogUtility.ErrorRoutine(ex); return(null); } }
/// <summary> /// Calculates the review efficiency. /// </summary> /// <param name="codeReview">The code review.</param> private void CalculateReviewEfficiency(CodeReview codeReview) { try { double reviewEfficiency = ((double.Parse(txtReviewEffort.Text) + double.Parse(txtReviewPreparationEffort.Text)) * 100 / codeReview.Reviews.Count); reviewEfficiency = Math.Round(reviewEfficiency, 2); txtReviewEfficiency.Text = Convert.ToString(reviewEfficiency); } catch (Exception ex) { txtReviewEfficiency.Text = "Data Invalid"; } }
public ActionResult Fix(CodeReview codereview) { if (ModelState.IsValid) { var fixedReview = db.CodeReviews.First(_ => _.CodeReviewId == codereview.CodeReviewId); fixedReview.DateComplete = DateTime.Now; fixedReview.ActionDone = codereview.ActionDone; db.Entry(fixedReview).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(codereview)); }
public CodeReview DiscardTagFromCodeReviewFeedback(int codeReviewId, int codeReviewTagId) { CodeReviewMetaData crMetaData = UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(codeReviewId); crMetaData.CodeReviewTags .First(x => x.CodeReviewTagId == codeReviewTagId) .IsDeleted = true; UnitOfWork.Commit(); CodeReview updatedCodeReviewPoint = CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository .GetCodeReviewWithAllData(codeReviewId)); updatedCodeReviewPoint.CodeReviewPreviewHtml = UtilityFunctions.GenerateCodeReviewPreview(updatedCodeReviewPoint, false); updatedCodeReviewPoint.SystemRating = CalculateCodeReviewRating(updatedCodeReviewPoint); return(updatedCodeReviewPoint); }
public ActivityStateMachine(Activity activity) { _activity = activity; _machine = new StateMachine <ActivityState, Trigger>(() => _activity._state, s => _activity._state = s); _machine.OnTransitioned( (StateMachine <ActivityState, Trigger> .Transition transition) => Print($" New Status: {_activity._state}")); Created.SetupState(this); Todo.SetupState(this); WorkInProgress.SetupState(this); CodeReview.SetupState(this); Revision.SetupState(this); DeployStaging.SetupState(this); BusinessValidation.SetupState(this); DeployProduction.SetupState(this); }
/// <summary> /// Handles the Click event of the tbtnOpen control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void tbtnOpen_Click(object sender, EventArgs e) { try { if (VisualStudioInstance.Solution.IsOpen) { OpenFileDialog fDialog = new OpenFileDialog(); fDialog.Title = "Open Review"; fDialog.Filter = "html file (*.html)|*.html"; //fDialog.InitialDirectory = @"C:\"; if (fDialog.ShowDialog() == DialogResult.OK) { _fileLocation = fDialog.FileName; XmlDocument reviewHtml = new XmlDocument(); reviewHtml.Load(_fileLocation); XmlNode dataNode = CodeReview.GetDataNode(reviewHtml); if (dataNode == null) { MessageBox.Show("Please select a valid ReviewPal file."); } else { string xml = dataNode.InnerXml; _reviewRepo.CodeReview = Utils.LoadFromXml <CodeReview>(xml); _reviewRepo.AdjustReviewId(); RefreshReviewList(); } } } else { MessageBox.Show(SolutionNotOpen); } } catch (Exception ex) { Utils.HandleException(ex); } }
/// <summary> /// Get view model for user profile page /// </summary> /// <param name="userId">user id</param> /// <param name="loggedInUser"></param> /// <returns>instance of User vm</returns> public UserProfileVm GetUserProfileVm(int userId, User loggedInUser) { User requestedUser = userId == loggedInUser.UserId ? loggedInUser : UserDataAccesor.GetUserById(userId); CodeReview codeReview = loggedInUser.IsTrainer || loggedInUser.IsManager ? CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository.GetSavedCodeReviewForTrainee(userId, loggedInUser.UserId)) : null; var commonTags = UnitOfWork.CodeReviewRepository .GetCommonlyUsedTags(userId, 5) .Select(skill => new CodeReviewTag { CodeReviewTagId = 0, Skill = new Skill { Name = skill.Name, SkillId = skill.SkillId } }).ToList(); if (codeReview != null) { codeReview.CodeReviewPreviewHtml = UtilityFunctions.GenerateCodeReviewPreview(codeReview, true); codeReview.SystemRating = new FeedbackBl().CalculateCodeReviewRating(codeReview); } return(new UserProfileVm { User = userId == loggedInUser.UserId ? null : requestedUser, Skills = requestedUser.IsTrainee ? SkillDataAccesor.GetSkillsByUserId(userId) : null, TraineeSynopsis = requestedUser.IsTrainee ? FeedbackDataAccesor.GetTraineeFeedbackSynopsis(requestedUser.UserId) : null, Sessions = requestedUser.IsTrainee ? SessionConverter.ConvertListFromCore(UnitOfWork.SessionRepository.GetAllSessionForAttendee(userId)) : null, Projects = null, Feedbacks = requestedUser.IsTrainee ? FeedbackDataAccesor.GetUserFeedback(userId, 5) : FeedbackDataAccesor.GetFeedbackAddedByUser(userId), TrainorSynopsis = requestedUser.IsTrainer || requestedUser.IsManager ? FeedbackDataAccesor.GetTrainorFeedbackSynopsis(requestedUser.UserId) : null, AllAssignedCourses = requestedUser.IsTrainee ? LearningPathDataAccessor.GetAllCoursesForTrainee(requestedUser.UserId).OrderByDescending(x => x.PercentageCompleted).ToList() : new List <CourseTrackerDetails>(), SavedCodeReview = codeReview, CommonTags = commonTags // SavedCodeReviewData = logedInUser.IsTrainer && (codeReview != null && codeReview.Id > 0) ? UtilityFunctions.GenerateCodeReviewPreview(codeReview, true) : string.Empty }); }
public bool SubmitCodeReviewFeedback(CodeReview codeReview) { CodeReviewMetaData codeReviewMetaData = UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(codeReview.Id); CodeReview codeReviewDetailsFromCore = CodeReviewConverter.ConvertFromCore(codeReviewMetaData); Feedback feedback = new Feedback { AddedBy = new User { UserId = codeReview.AddedBy.UserId }, AddedFor = new User { UserId = codeReview.AddedFor.UserId }, FeedbackType = new Common.Entity.FeedbackType { FeedbackTypeId = (int)FeedbackType.CodeReview }, FeedbackText = UtilityFunctions.GenerateCodeReviewPreview(codeReviewDetailsFromCore, true), Skill = new Skill(), Project = new Project(), Title = codeReviewDetailsFromCore.Title, Rating = codeReview.Rating }; int feedbackId = FeedbackDataAccesor.AddFeedback(feedback); if (!(feedbackId > 0)) { return(false); } codeReviewMetaData.FeedbackId = feedback.FeedbackId = feedbackId; codeReviewMetaData.SystemRating = CalculateCodeReviewRating(codeReviewDetailsFromCore); UnitOfWork.Commit(); return(new NotificationBl().AddFeedbackNotification(feedback)); // return AddFeedback(feedback); }
public static void OnTimedEvent(object obj, ElapsedEventArgs args) { //Set run interval as 10 minutes serviceTimer.Interval = 600000; Logger.WriteInfo("OnTime event, start query active reviews"); try { _initMonitorUserList(); bool isNew = false; ReviewServiceClient client = new ReviewServiceClient(); GorillaWebAPI webapi = new GorillaWebAPI("CFMonitor", "User@123"); foreach (string username in _userlist) { if (!_MonitoredReviewDict.Keys.Contains(username)) { _MonitoredReviewDict.Add(username, new Dictionary <string, int>()); isNew = true; } //get all active reviews CodeReviewSummary[] reviews = client.GetActiveReviewsForAuthor(username); if (reviews != null) { //scan each review foreach (var codeReviewSummary in reviews) { _cfTrendStatus.AddReviewCount(codeReviewSummary.Author.Name); CodeReview r = client.GetReview(codeReviewSummary.Key); if (!_MonitoredReviewDict[username].Keys.Contains(r.Key)) { _MonitoredReviewDict[username].Add(r.Key, 0); //A new submit, add to today's total Review count _cfTrendStatus.AddReviewCount(r.Author.Name); isNew = true; } if (_MonitoredReviewDict[username][r.Key] < r.codePackages.Length) { isNew = true; } if (isNew) { for (int i = _MonitoredReviewDict[username][r.Key]; i < r.codePackages.Length; i++) { CodePackage pkg = r.codePackages[i]; #region Generate review string StringBuilder reviewers = new StringBuilder("<table><tr style=\"border: 1px solid; border-top: none; border-left: none;border-right: none;\"><td width=\"40%\"><b>Reviewer</b></td><td width=\"30%\"><b>Type</b></td><td width=\"30%\"><b>Status</b></td></tr>"); StringBuilder reviewerstr = new StringBuilder(); foreach (var reviewer in r.reviewers) { reviewers.Append(string.Format("<tr><td><b>{3}</b>({0})</td><td>{1}</td><td>{2}</td></tr>", reviewer.Name, reviewer.Required ? "<b>Required</b>" : "Optional", reviewer.Status == ReviewerStatus.SignedOff ? "<font color=\"green\">SignedOff</font>" : reviewer.Status.ToString(), reviewer.DisplayName)); reviewerstr.Append(string.Format(" @{0},", reviewer.Name.Substring(reviewer.Name.IndexOf('\\') + 1))); } reviewers.Append("</table>"); #endregion #region Generate changed file StringBuilder changedfiles = new StringBuilder("<table><tr style=\"border: 1px solid; border-top: none; border-left: none;border-right: none;\"><td width=\"50px\"><b>Change</b></td><td width=\"30%\"><b>Type</b></td><td><b>FilePath</b></td></tr>"); foreach (var file in pkg.FileChanges) { changedfiles.Append(string.Format("<tr><td><b>{0}</b></td><td>{1}</td></tr>", file.ChangeType, file.DepotFilePath)); } changedfiles.Append("</table>"); string description = pkg.Description; string newDescription = description; string pat = @"(\d{4,})"; #endregion #region replace tfs number with topic // Instantiate the regular expression object. Regex reg = new Regex(pat, RegexOptions.IgnoreCase); // Match the regular expression pattern against a text string. Match m = reg.Match(description); List <string> replacedValueList = new List <string>(); while (m.Success) { //Console.WriteLine("Match" + (++matchCount)); if (!replacedValueList.Contains(m.Value)) { newDescription = newDescription.Replace(m.Value, string.Format(" #WOSS TFS {0}# ", m.Value)); replacedValueList.Add(m.Value); } m = m.NextMatch(); } #endregion string title = string.Format("Code Review: ({0}){1}", pkg.Author.Substring(pkg.Author.IndexOf('\\') + 1), r.Name); #region Iteration Title string iteration = ""; if (i == 0) { iteration = "New review submitted"; } else if (string.IsNullOrEmpty(r.CompletionMessage)) { iteration = "Author started new iteration"; } else { iteration = "Review completed"; } #endregion string link = "http://codeflow/Client/CodeFlow2010.application?server=http://codeflow/Services/DiscoveryService.svc&review=" + codeReviewSummary.Key; string richMessage = string.Format("<h3>{0}</h3><br/><h4><b>{1}</b></h4><br/><b>Open in: [<a href=\"{2}\">CodeFlow</a>]</b><br/><b>Author: {3}</b><br/>{4}<br/><b>Description:</b><br/>{5}<br/><h4><b>Affected Files</b></h4>{6}", title, iteration, link, pkg.Author, reviewers.ToString(), pkg.Description.Trim(), changedfiles.ToString()); string message = string.Format("#WOSS Codeflow# {0}\nIteration {2} {4}\nAuthor: {1}\nReviewer: {3}\n#WOSS Change {5}#\nReview: {6}", newDescription.Trim(), pkg.Author.Substring(pkg.Author.IndexOf('\\') + 1), pkg.Revision, reviewerstr.ToString().TrimEnd(new char[] { ',' }), pkg.IterationComment, pkg.SourceInfo.SourceName, link); Logger.WriteInfo(message); webapi.PostMessage(message, null, "none", r.Key, new string[] { "WOSS Codeflow" }, new string[] { pkg.Author.Substring(pkg.Author.IndexOf('\\') + 1) }, new string[] { }, richMessage); } _MonitoredReviewDict[username][r.Key] = r.codePackages.Length; } else { Logger.WriteInfo("no new reviews for user " + username); } } } } } catch (Exception e) { Logger.WriteInfo("Exception happened, try get the codeflow info in next run"); Logger.WriteInfo(e.Message); } //Check wether it's time to send trend data if (DateTime.Now.TimeOfDay > new TimeSpan(23, 30, 0)) { if (!_isTrendStatusSend) { GorillaWebAPI webapi = new GorillaWebAPI("CFMonitor", "User@123"); if (DateTime.Now.DayOfWeek == DayOfWeek.Friday) { var winner = _cfTrendStatus.ReviewCountPeople.OrderByDescending(p => p.Value).First(); string winnerThisWeek = string.Format("This Week's CodeFlow winner is @{0}, who submitted {1} CodeReviews!!!", winner.Key, winner.Value); webapi.PostMessage(winnerThisWeek, null, "none", "none", new string[] { "WOSS CodeFlow" }); } StringBuilder dailyTrendValue = new StringBuilder(); foreach (var value in _cfTrendStatus.ReviewCountHistory.OrderBy(t => t.Key).Select(t => t.Value)) { dailyTrendValue.AppendFormat("{0},", value); } string dTrendValue = dailyTrendValue.ToString().TrimEnd(','); StringBuilder dailyTrendDate = new StringBuilder(); foreach (var value in _cfTrendStatus.ReviewCountHistory.OrderBy(t => t.Key).Select(t => t.Key)) { dailyTrendDate.AppendFormat("'{0}',", value.ToShortDateString()); } string dTrendDate = dailyTrendDate.ToString().TrimEnd(','); string dailyTrend = string.Format("{{title:'WOSS Daily New CodeReview Number',legend:['New CodeRview Number'],xAxis:[{0}],yAxis:[{{name:'New CodeRview Number',type:'line',data:[{1}]}}]}}", dTrendDate, dTrendValue); webapi.PostMessage(dailyTrend, null, "chart-axis-singleaxis", "none", new string[] { "WOSS CodeFlow" }); _isTrendStatusSend = true; } } if (DateTime.Now.TimeOfDay < new TimeSpan(23, 00, 0)) { _isTrendStatusSend = false; } _recordMonitorStatus(); }
public JsonResult SubmitCodeReviewFeedback(CodeReview codeReview) { return(Json(new FeedbackBl().SubmitCodeReviewFeedback(codeReview), JsonRequestBehavior.AllowGet)); }
public JsonResult CalculateCodeReviewRating(CodeReview codeReview) { return(Json(new FeedbackBl().CalculateCodeReviewRating(codeReview), JsonRequestBehavior.AllowGet)); }
/// <summary> /// Handles the Click event of the tbtnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> private void tbtnSave_Click(object sender, EventArgs e) { try { if (VisualStudioInstance.Solution.IsOpen) { if (0 == _reviewRepo.GetCount()) { return; } SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "html file (*.html)|*.html"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { _fileLocation = saveFileDialog1.FileName; XmlSerializer s = new XmlSerializer(typeof(CodeReview)); string tmpFile = Path.GetTempFileName(); TextWriter w = new StreamWriter(tmpFile); _reviewRepo.AdjustReviewId(); s.Serialize(w, _reviewRepo.CodeReview); w.Close(); //load the Xml doc XPathDocument xPathDoc = new XPathDocument(tmpFile); File.Delete(tmpFile); XslCompiledTransform xslTrans = new XslCompiledTransform(); //load the Xsl xslTrans.Load(Utils.AssemblyPath + "\\" + Utils.AssemblyTitle + ".xsl"); //create the output stream XmlTextWriter xmlWriter = new XmlTextWriter(_fileLocation, null); //do the actual transform of Xml xslTrans.Transform(xPathDoc, null, xmlWriter); xmlWriter.Close(); string xml = Utils.GetSerializedXml(_reviewRepo.CodeReview); // save the xml data as well within the html XmlDocument reviewHtml = new XmlDocument(); reviewHtml.Load(_fileLocation); XmlNode dataNode = CodeReview.GetDataNode(reviewHtml); dataNode.InnerXml = xml; reviewHtml.Save(_fileLocation); VisualStudioInstance.StatusBar.Text = "Review List saved at " + _fileLocation + " successfully"; } } else { MessageBox.Show(SolutionNotOpen); } } catch (Exception ex) { Utils.HandleException(ex); } }
public static string GenerateCodeReviewPreview(CodeReview codeReview, bool isFeedback) { StringBuilder strBuilder = new StringBuilder(@""); strBuilder.Append("<div class='weekly-feedback'><code>"); // header Starts strBuilder.Append("<div class='code-review-header'>"); strBuilder.Append("<span class='code-review-header-title'>" + codeReview.Title + "</span>"); strBuilder.Append("<span class='code-review-header-description'>" + codeReview.Description + "</span>"); strBuilder.Append("</div>"); // header Ends foreach (var tags in codeReview.Tags.OrderBy(x => x.Skill.SkillId)) { strBuilder.Append("<div class='code-review-tags clearfix'>"); // tag header starts strBuilder.Append("<div class='code-review-tags-header'>"); strBuilder.Append("<span class='code-review-tags-header-title'><i class='fa fa-tags code-review-preview-tag-icon'></i>" + tags.Skill.Name.ToUpper() + "</span>"); if (!(isFeedback || tags.Skill.SkillId == 0)) { strBuilder.Append("<span class='code-review-button-wrapper'>"); strBuilder.Append("<span class='code-review-button-ellipses fa fa-ellipsis-h'>"); strBuilder.Append("<i onclick='my.profileVm.removeCodeReviewTagAndRefresh(" + tags.CodeReviewTagId + "," + tags.Skill.SkillId + ")' class='glyphicon glyphicon-trash'></i>"); strBuilder.Append("</span>"); strBuilder.Append("</span>"); } strBuilder.Append("</div>"); // tag header ends here -- body starts here strBuilder.Append("<div class='code-review-tags-body'>"); foreach (var reviewPoints in tags.ReviewPoints.OrderBy(x => x.Rating)) { strBuilder.Append("<div class='code-review-review-points clearfix'>"); #region review point header strBuilder.Append("<div class='code-review-review-points-header clearfix'>"); #region rating region switch (reviewPoints.Rating) { case 1: strBuilder.Append("<span class='code-review-review-points-rating point-type-exceptional'>"); strBuilder.Append("<i class='fa fa-plus double-child'></i><i class='fa fa-plus double-child'></i>"); strBuilder.Append("</span>"); break; case 2: strBuilder.Append("<span class='code-review-review-points-rating point-type-good'>"); strBuilder.Append("<i class='fa fa-plus single-child'></i>"); strBuilder.Append("</span>"); break; case 3: strBuilder.Append("<span class='code-review-review-points-rating point-type-corrected'>"); strBuilder.Append("<i class='fa fa-check single-child'></i>"); strBuilder.Append("</span>"); break; case 4: strBuilder.Append("<span class='code-review-review-points-rating point-type-poor'>"); strBuilder.Append("<i class='fa fa-minus single-child'></i>"); strBuilder.Append("</span>"); break; case 5: strBuilder.Append("<span class='code-review-review-points-rating point-type-critical'>"); strBuilder.Append("<i class='fa fa-minus double-child'></i><i class='fa fa-minus double-child'></i>"); strBuilder.Append("</span>"); break; case 6: strBuilder.Append("<span class='code-review-review-points-rating point-type-suggestion'>"); strBuilder.Append("<i class='fa fa-exclamation single-child'></i>"); strBuilder.Append("</span>"); break; } #endregion strBuilder.Append("<span class='code-review-review-points-title'>" + reviewPoints.Title + "</span>"); if (!isFeedback) { strBuilder.Append("<span class='code-review-button-wrapper'>"); strBuilder.Append("<span class='code-review-button-ellipses fa fa-ellipsis-h'>"); strBuilder.Append("<i onclick='my.profileVm.editCodeReviewPoint(" + tags.CodeReviewTagId + "," + tags.Skill.SkillId + "," + reviewPoints.PointId + ")' class='glyphicon glyphicon-pencil'></i>"); strBuilder.Append("<i onclick='my.profileVm.removeCodeReviewPoint(" + tags.CodeReviewTagId + "," + tags.Skill.SkillId + "," + reviewPoints.PointId + ")' class='glyphicon glyphicon-trash'></i>"); strBuilder.Append("</span>"); strBuilder.Append("</span>"); } strBuilder.Append("</div>"); #endregion #region review point body if (!string.IsNullOrEmpty(reviewPoints.Description)) { strBuilder.Append("<div class='code-review-review-points-body'>"); strBuilder.Append("<span class='code-review-review-points-description'>" + reviewPoints.Description + "</span>"); strBuilder.Append("</div>"); } #endregion strBuilder.Append("</div>"); } strBuilder.Append("</div>"); // body ends here strBuilder.Append("</div>"); } strBuilder.Append("</code></div>"); return(strBuilder.ToString()); }
public JsonResult SubmitCodeReviewMetaData(CodeReview codeReview) { codeReview.AddedBy = CurrentUser; return(Json(new FeedbackBl().SubmitCodeReviewMetaData(codeReview), JsonRequestBehavior.AllowGet)); }
public CodeReview SubmitCodeReviewMetaData(CodeReview codeReview) { CodeReviewMetaData crMetaData; // existing if (codeReview.Id > 0) { crMetaData = UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(codeReview.Id); if (crMetaData == null) { throw new Exception("No Record Found"); } crMetaData.Description = codeReview.Description; crMetaData.IsDiscarded = codeReview.IsDeleted; crMetaData.ProjectName = codeReview.Title; List <CodeReviewTag> existingTags = CodeReviewTagConverter.ConvertListFromCore(crMetaData.CodeReviewTags.Where(x => !x.IsDeleted).ToList()); foreach (var tag in codeReview.Tags) { if (existingTags.Any(x => x.Skill.SkillId == tag.Skill.SkillId)) { continue; } crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = tag.Skill.SkillId }); } } else { crMetaData = new CodeReviewMetaData { AddedBy = codeReview.AddedBy.UserId, AddedFor = codeReview.AddedFor.UserId, CreatedOn = DateTime.Now, Description = codeReview.Description, IsDiscarded = false, ProjectName = codeReview.Title, SystemRating = CalculateCodeReviewRating(codeReview) }; foreach (var tag in codeReview.Tags) { crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = tag.Skill.SkillId }); } crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = null }); UnitOfWork.CodeReviewRepository.Add(crMetaData); } UnitOfWork.Commit(); //get new data var newCodeReview = CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(crMetaData.CodeReviewMetaDataId)); newCodeReview.CodeReviewPreviewHtml = FetchCodeReviewPreview(crMetaData.CodeReviewMetaDataId, false); newCodeReview.SystemRating = CalculateCodeReviewRating(codeReview); return(newCodeReview); }
public SelectFileForm(IList <string> files, CodeReview codeReview) { InitializeComponent(); filesList.DataSource = files; m_CodeReview = codeReview; }