public void ChangePackageStatus( Package package, PackageStatusType status, string comments, User user, bool sendEmail) { if (package.Status == status && package.ReviewComments == comments) { return; } var now = DateTime.UtcNow; if (package.Status == PackageStatusType.Submitted) { package.SubmittedStatus = PackageSubmittedStatusType.Waiting; } if (package.Status != status && status != PackageStatusType.Unknown) { package.Status = status; package.ApprovedDate = null; package.LastUpdated = now; switch (package.Status) { case PackageStatusType.Submitted: case PackageStatusType.Rejected: package.Listed = false; break; case PackageStatusType.Approved: package.ApprovedDate = now; package.Listed = true; break; case PackageStatusType.Exempted: package.Listed = true; break; } UpdateIsLatest(package.PackageRegistration); } package.ReviewedDate = now; package.ReviewedById = user.Key; string emailComments = string.Empty; if (package.ReviewComments != comments && comments != null) { package.ReviewComments = comments; emailComments = comments; } packageRepo.CommitChanges(); if (sendEmail) { messageSvc.SendPackageModerationEmail(package, emailComments); } NotifyIndexingService(); }
public void ChangePackageStatus( Package package, PackageStatusType status, string comments, User user, bool sendEmail) { if (package.Status == status && package.ReviewComments == comments) return; var now = DateTime.UtcNow; if (package.Status == PackageStatusType.Submitted) package.SubmittedStatus = PackageSubmittedStatusType.Waiting; if (package.Status != status && status != PackageStatusType.Unknown) { package.Status = status; package.ApprovedDate = null; package.LastUpdated = now; switch (package.Status) { case PackageStatusType.Submitted : case PackageStatusType.Rejected : package.Listed = false; break; case PackageStatusType.Approved : package.ApprovedDate = now; package.Listed = true; break; case PackageStatusType.Exempted : package.Listed = true; break; } UpdateIsLatest(package.PackageRegistration); } package.ReviewedDate = now; package.ReviewedById = user.Key; string emailComments = string.Empty; if (package.ReviewComments != comments && comments != null) { package.ReviewComments = comments; emailComments = comments; } packageRepo.CommitChanges(); if (sendEmail) messageSvc.SendPackageModerationEmail(package, emailComments); NotifyIndexingService(); }
public void ChangePackageStatus(Package package, PackageStatusType status, string comments, string newReviewComments, User user, User reviewer, bool sendMaintainerEmail, PackageSubmittedStatusType submittedStatus, bool assignReviewer) { // no changes if (package.Status == status && package.ReviewComments == comments && string.IsNullOrWhiteSpace(newReviewComments) && package.SubmittedStatus == submittedStatus) return; var now = DateTime.UtcNow; var statusChanged = false; var submittedStatusChanged = false; var newReviewCommentsOriginallyEmpty = string.IsNullOrWhiteSpace(newReviewComments); if (package.Status == PackageStatusType.Rejected && status == PackageStatusType.Submitted) { // unrejecting, provide another 15 days if (package.PackageCleanupResultDate.HasValue) package.PackageCleanupResultDate = DateTime.UtcNow; //todo: Set back to ready status? //if (package.SubmittedStatus == PackageSubmittedStatusType.Waiting && submittedStatus == package.SubmittedStatus) } if (package.Status == PackageStatusType.Submitted && package.SubmittedStatus != submittedStatus) { submittedStatusChanged = true; package.SubmittedStatus = submittedStatus; } if (package.Status != status && status != PackageStatusType.Unknown) { statusChanged = true; if (!string.IsNullOrWhiteSpace(newReviewComments)) newReviewComments += string.Format("{0}",Environment.NewLine); newReviewComments += string.Format("Status Change - Changed status of package from '{0}' to '{1}'.", package.Status.GetDescriptionOrValue().to_lower(), status.GetDescriptionOrValue().to_lower()); package.Status = status; package.ApprovedDate = null; package.LastUpdated = now; switch (package.Status) { case PackageStatusType.Submitted : case PackageStatusType.Rejected : package.Listed = false; if (package.PackageTestResultStatus == PackageAutomatedReviewResultStatusType.Pending) package.PackageTestResultStatus = PackageAutomatedReviewResultStatusType.Exempted; if (package.PackageValidationResultStatus == PackageAutomatedReviewResultStatusType.Pending) package.PackageValidationResultStatus = PackageAutomatedReviewResultStatusType.Exempted; break; case PackageStatusType.Approved : package.ApprovedDate = now; package.Listed = true; package.PackageCleanupResultDate = null; break; case PackageStatusType.Exempted : package.Listed = true; break; } UpdateIsLatest(package.PackageRegistration); } // reviewer could be null / if user is requesting the package rejected, update // assign the reviewer if the user is a reviewer and the status is staying // submitted, or the status is changing if (assignReviewer && ((user == reviewer && status == PackageStatusType.Submitted) || (statusChanged && status != PackageStatusType.Submitted))) { package.ReviewedDate = now; package.ReviewedById = user.Key; } if (package.ReviewComments != comments && !string.IsNullOrWhiteSpace(comments)) { package.ReviewComments = comments; } if (!string.IsNullOrWhiteSpace(newReviewComments)) { package.LastUpdated = now; var commenter = user == reviewer ? "reviewer" : "maintainer"; if (!string.IsNullOrWhiteSpace(package.ReviewComments)) package.ReviewComments += string.Format("{0}{0}", Environment.NewLine); package.ReviewComments += string.Format("#### {0} ({1}) on {2} +00:00:{3}{4}", user.Username, commenter, now.ToString("dd MMM yyyy HH:mm:ss"), Environment.NewLine, newReviewComments); } packageRepo.CommitChanges(); SendMaintainerEmail(package, newReviewComments, user, sendMaintainerEmail, statusChanged, submittedStatusChanged, newReviewCommentsOriginallyEmpty); SendReviewerEmail(package, newReviewComments, user, reviewer); InvalidateCache(package.PackageRegistration); NotifyIndexingService(package); }
public void ChangePackageStatus(Package package, PackageStatusType status, string comments, string newComments, User user, User reviewer, bool sendMaintainerEmail, PackageSubmittedStatusType submittedStatus) { if (package.Status == status && package.ReviewComments == comments && string.IsNullOrWhiteSpace(newComments)) return; var now = DateTime.UtcNow; if (package.Status == PackageStatusType.Submitted) package.SubmittedStatus = submittedStatus; if (package.Status != status && status != PackageStatusType.Unknown) { if (!string.IsNullOrWhiteSpace(newComments)) newComments += string.Format("{0}",Environment.NewLine); newComments += string.Format("Status Change - Changed status of package from '{0}' to '{1}'.", package.Status.GetDescriptionOrValue().to_lower(), status.GetDescriptionOrValue().to_lower()); package.Status = status; package.ApprovedDate = null; package.LastUpdated = now; switch (package.Status) { case PackageStatusType.Submitted : case PackageStatusType.Rejected : package.Listed = false; break; case PackageStatusType.Approved : package.ApprovedDate = now; package.Listed = true; break; case PackageStatusType.Exempted : package.Listed = true; break; } UpdateIsLatest(package.PackageRegistration); } // reviewer could be null / if user is requesting the package rejected, update if (user == reviewer || (status == PackageStatusType.Rejected && package.Status != PackageStatusType.Rejected)) { package.ReviewedDate = now; package.ReviewedById = user.Key; } if (package.ReviewComments != comments && !string.IsNullOrWhiteSpace(comments)) { package.ReviewComments = comments; } string emailComments = string.Empty; if (!string.IsNullOrWhiteSpace(newComments)) { emailComments = newComments; package.LastUpdated = now; var commenter = user == reviewer ? "reviewer" : "maintainer"; if (!string.IsNullOrWhiteSpace(package.ReviewComments)) package.ReviewComments += string.Format("{0}{0}", Environment.NewLine); package.ReviewComments += string.Format("#### {0} ({1}) on {2} +00:00:{3}{4}", user.Username, commenter, now.ToString("dd MMM yyyy HH:mm:ss"), Environment.NewLine, newComments); } packageRepo.CommitChanges(); if (sendMaintainerEmail) messageSvc.SendPackageModerationEmail(package, emailComments); if (user != reviewer && reviewer != null) { messageSvc.SendPackageModerationReviewerEmail(package, emailComments, user); } InvalidateCache(package.PackageRegistration); }