public bool CreateNewIssueRevision(int revision, int issueId, string repository, string revisionAuthor, string revisionDate, string revisionMessage, string changeset = "", string branch = "") { if (issueId <= 0) { throw new ArgumentOutOfRangeException("issueId"); } var projectId = IssueManager.GetById(issueId).ProjectId; //authentication checks against user access to project if (ProjectManager.GetById(projectId).AccessType == ProjectAccessType.Private && !ProjectManager.IsUserProjectMember(UserName, projectId)) { throw new UnauthorizedAccessException(string.Format(LoggingManager.GetErrorMessageResource("ProjectAccessDenied"), UserName)); } var issueRevision = new IssueRevision { Revision = revision, IssueId = issueId, Author = revisionAuthor, Message = revisionMessage, Repository = repository, RevisionDate = revisionDate, Changeset = changeset, Branch = branch }; return(IssueRevisionManager.SaveOrUpdate(issueRevision)); }
/// <summary> /// Saves this instance. /// </summary> /// <returns></returns> public static bool SaveOrUpdate(IssueRevision entity) { if (entity == null) { throw new ArgumentNullException("entity"); } if (entity.IssueId <= Globals.NEW_ID) { throw (new ArgumentException("The issue id for the revision is not valid")); } var tempId = DataProviderManager.Provider.CreateNewIssueRevision(entity); if (tempId > Globals.NEW_ID) { entity.Id = tempId; return(true); } return(false); }
private void CheckTrackedEntities(string userName) { foreach (var entry in ChangeTracker.Entries <ITrackedEntity>().Where(a => a.State == EntityState.Added || a.State == EntityState.Modified)) { if (userName == null) { throw new Exception("Need to provide user identifier when making changes to tracked entities!"); } entry.Entity.ModificationTime = DateTime.UtcNow; entry.Entity.ModifiedByUser = userName; } foreach (var entry in ChangeTracker.Entries <Issue>().Where(a => a.State == EntityState.Added || a.State == EntityState.Modified).ToList()) { if (entry.State == EntityState.Modified) { Issue lastRevision = (Issue)entry.GetDatabaseValues().ToObject(); //Issue lastRevision = EntityHelper.GetOriginal<Issue>(this, entry.Entity); IssueRevision newRevision = _mapper.Map <Issue, IssueRevision>(lastRevision); int newRevisionNo = 1; var item = this.IssueRevision.Where(pr => pr.IssueId == newRevision.IssueId).OrderByDescending(pr => pr.RevisionNo).FirstOrDefault(); if (item != null) { newRevisionNo = item.RevisionNo + 1; } newRevision.RevisionNo = newRevisionNo; this.IssueRevision.Add(newRevision); } } }
public void CanCreateIssueRevision() { GenericRepository <Issue> issueRepo = _unitOfWork.IssueRepository; GenericRepository <Build> buildRepo = _unitOfWork.BuildRepository; int initialIssueNo = _context.Issues.Count(); int initialIssueRevNo = _context.IssueRevision.Count(); string _projectName = "Velocity"; string _screenName = "Install"; string _locale = "pl-PL"; string _build = "1.0"; string initialValue = "Test issue"; Build build = buildRepo.Get(b => b.BuildName.Equals(_build)).FirstOrDefault(); Issue newIssue = new Issue { Height = 10, Width = 10, X = 5, Y = 6, Value = initialValue, IssueSeverity = IssueSeverity.Error, IssueType = IssueType.Linguistic, ProjectName = _projectName, ScreenName = _screenName, LocaleCode = _locale, Build = build, IssueStatus = IssueStatus.Active }; issueRepo.Insert(newIssue); _unitOfWork.Save(TestInitializer.UserName); Guid issueId = newIssue.IssueId; Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count()); Assert.AreEqual(initialIssueRevNo, _context.IssueRevision.Count()); Issue selectedIssue = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault(); Assert.AreEqual(initialValue, selectedIssue.Value); string modifiedValue = "New value"; newIssue.Value = modifiedValue; _unitOfWork.Save(TestInitializer.UserName); Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count()); Assert.AreEqual(initialIssueRevNo + 1, _context.IssueRevision.Count()); _unitOfWork.Save(TestInitializer.UserName); Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count()); Assert.AreEqual(initialIssueRevNo + 1, _context.IssueRevision.Count()); Issue selectedUpdatedIssue = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault(); IssueRevision selectedIssueRevision = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId); Assert.AreEqual(initialValue, selectedIssueRevision.Value); Assert.AreEqual(modifiedValue, selectedUpdatedIssue.Value); string anotherModifiedValue = initialValue; newIssue.Value = anotherModifiedValue; _unitOfWork.Save(TestInitializer.UserName); Assert.AreEqual(initialIssueNo + 1, _context.Issues.Count()); Assert.AreEqual(initialIssueRevNo + 2, _context.IssueRevision.Count()); Issue selectedUpdatedAgainIssue = issueRepo.Get(i => i.IssueId == issueId).FirstOrDefault(); IssueRevision selectedIssueRevision1 = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId && i.RevisionNo == 1); IssueRevision selectedIssueRevision2 = _context.IssueRevision.FirstOrDefault(i => i.IssueId == issueId && i.RevisionNo == 2); Assert.AreEqual(initialValue, selectedIssueRevision1.Value); Assert.AreEqual(modifiedValue, selectedIssueRevision2.Value); Assert.AreEqual(anotherModifiedValue, selectedUpdatedAgainIssue.Value); }
//IssueRevisions public abstract int CreateNewIssueRevision(IssueRevision newIssueRevision);