/// <summary> /// Enum types are equal by primary key /// </summary> public bool Equals(ProjectUpdateState other) { if (other == null) { return(false); } return(other.ProjectUpdateStateID == ProjectUpdateStateID); }
private static void AssertGetLatestReturnsCorrectly(ProjectUpdateBatch projectUpdateBatch, ProjectUpdateHistory expectedProjectUpdateHistory, ProjectUpdateState projectUpdateStateExpected) { Assert.That(projectUpdateBatch.ProjectUpdateHistories.GetLatestProjectUpdateHistory(), Is.EqualTo(expectedProjectUpdateHistory), "Should have gotten the correct latest one"); AssertGetLatestForTransitionReturnsCorrectly(projectUpdateBatch, expectedProjectUpdateHistory, projectUpdateStateExpected, ProjectUpdateState.Created); AssertGetLatestForTransitionReturnsCorrectly(projectUpdateBatch, expectedProjectUpdateHistory, projectUpdateStateExpected, ProjectUpdateState.Submitted); AssertGetLatestForTransitionReturnsCorrectly(projectUpdateBatch, expectedProjectUpdateHistory, projectUpdateStateExpected, ProjectUpdateState.Approved); AssertGetLatestForTransitionReturnsCorrectly(projectUpdateBatch, expectedProjectUpdateHistory, projectUpdateStateExpected, ProjectUpdateState.Returned); }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public ProjectUpdateHistory(ProjectUpdateBatch projectUpdateBatch, ProjectUpdateState projectUpdateState, Person updatePerson, DateTime transitionDate) : this() { // Mark this as a new object by setting primary key with special value this.ProjectUpdateHistoryID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.ProjectUpdateBatchID = projectUpdateBatch.ProjectUpdateBatchID; this.ProjectUpdateBatch = projectUpdateBatch; projectUpdateBatch.ProjectUpdateHistories.Add(this); this.ProjectUpdateStateID = projectUpdateState.ProjectUpdateStateID; this.UpdatePersonID = updatePerson.PersonID; this.UpdatePerson = updatePerson; updatePerson.ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.Add(this); this.TransitionDate = transitionDate; }
private static void AssertGetLatestForTransitionReturnsCorrectly(ProjectUpdateBatch projectUpdateBatch, ProjectUpdateHistory expectedProjectUpdateHistory, ProjectUpdateState projectUpdateStateExpected, ProjectUpdateState projectUpdateStateToCheck) { if (projectUpdateStateExpected == projectUpdateStateToCheck) { Assert.That(projectUpdateBatch.ProjectUpdateHistories.GetLatestProjectUpdateHistory(projectUpdateStateToCheck), Is.EqualTo(expectedProjectUpdateHistory), "Should have gotten the latest one in this transition"); } else { var latestProjectUpdateHistory = projectUpdateBatch.ProjectUpdateHistories.GetLatestProjectUpdateHistory(); Assert.That(latestProjectUpdateHistory.ProjectUpdateState, Is.Not.EqualTo(projectUpdateStateToCheck), "Should not return a ProjectUpdateHistory in this transition"); } }
/// <summary> /// Note, the saving is done by the controller /// </summary> private static void CreateNewTransitionRecord(this ProjectUpdateBatch projectUpdateBatch, ProjectUpdateState projectUpdateState, FirmaSession currentFirmaSession, DateTime transitionDate) { var currentPerson = currentFirmaSession.Person; var projectUpdateHistory = new ProjectUpdateHistory(projectUpdateBatch, projectUpdateState, currentPerson, transitionDate); HttpRequestStorage.DatabaseEntities.AllProjectUpdateHistories.Add(projectUpdateHistory); projectUpdateBatch.ProjectUpdateStateID = projectUpdateState.ProjectUpdateStateID; projectUpdateBatch.TickleLastUpdateDate(transitionDate, currentFirmaSession); }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static ProjectUpdateBatch CreateNewBlank(Project project, Person lastUpdatePerson, ProjectUpdateState projectUpdateState) { return(new ProjectUpdateBatch(project, default(DateTime), lastUpdatePerson, projectUpdateState, default(bool))); }
/// <summary> /// Constructor for building a new object with MinimalConstructor required fields, using objects whenever possible /// </summary> public ProjectUpdateBatch(Project project, DateTime lastUpdateDate, Person lastUpdatePerson, ProjectUpdateState projectUpdateState, bool isPhotosUpdated) : this() { // Mark this as a new object by setting primary key with special value this.ProjectUpdateBatchID = ModelObjectHelpers.MakeNextUnsavedPrimaryKeyValue(); this.ProjectID = project.ProjectID; this.Project = project; project.ProjectUpdateBatches.Add(this); this.LastUpdateDate = lastUpdateDate; this.LastUpdatePersonID = lastUpdatePerson.PersonID; this.LastUpdatePerson = lastUpdatePerson; lastUpdatePerson.ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.Add(this); this.ProjectUpdateStateID = projectUpdateState.ProjectUpdateStateID; this.IsPhotosUpdated = isPhotosUpdated; }
public static ProjectUpdateHistory GetLatestProjectUpdateHistory(this IEnumerable <ProjectUpdateHistory> projectUpdateHistories, ProjectUpdateState projectUpdateState) { return(projectUpdateHistories.OrderByDescending(x => x.TransitionDate).FirstOrDefault(x => x.ProjectUpdateState == projectUpdateState)); }
/// <summary> /// Creates a "blank" object of this type and populates primitives with defaults /// </summary> public static ProjectUpdateHistory CreateNewBlank(ProjectUpdateBatch projectUpdateBatch, ProjectUpdateState projectUpdateState, Person updatePerson) { return(new ProjectUpdateHistory(projectUpdateBatch, projectUpdateState, updatePerson, default(DateTime))); }