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));
            }
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        /// <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);
            }
        }
Exemple #4
0
        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;
 }
Exemple #6
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));
        }
Exemple #7
0
 public ActionResult Edit(CodeReview codereview)
 {
     if (ModelState.IsValid)
     {
         db.Entry(codereview).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(codereview));
 }
Exemple #8
0
        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);
        }
Exemple #9
0
        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();
        }
Exemple #11
0
        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);
            }
        }
Exemple #12
0
 /// <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";
     }
 }
Exemple #13
0
        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));
        }
Exemple #14
0
        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);
        }
Exemple #15
0
        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);
        }
Exemple #16
0
        /// <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);
            }
        }
Exemple #17
0
        /// <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
            });
        }
Exemple #18
0
        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();
        }
Exemple #20
0
 public JsonResult SubmitCodeReviewFeedback(CodeReview codeReview)
 {
     return(Json(new FeedbackBl().SubmitCodeReviewFeedback(codeReview), JsonRequestBehavior.AllowGet));
 }
Exemple #21
0
 public JsonResult CalculateCodeReviewRating(CodeReview codeReview)
 {
     return(Json(new FeedbackBl().CalculateCodeReviewRating(codeReview), JsonRequestBehavior.AllowGet));
 }
Exemple #22
0
        /// <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());
        }
Exemple #24
0
 public JsonResult SubmitCodeReviewMetaData(CodeReview codeReview)
 {
     codeReview.AddedBy = CurrentUser;
     return(Json(new FeedbackBl().SubmitCodeReviewMetaData(codeReview), JsonRequestBehavior.AllowGet));
 }
Exemple #25
0
        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;
 }