public async Task <IActionResult> ProjectDetails(ProjectDetailsViewModel projectUpdates) { var originalProject = _projectRepository.GetProject(projectUpdates.Project.ProjectId); var userId = userManager.GetUserId(User); var currentUser = await userManager.FindByIdAsync(userId); var claims = await userManager.GetClaimsAsync(currentUser); Global.globalCurrentUserClaims = claims.ToList(); foreach (var property in originalProject.GetType().GetProperties()) { var oldValue = ""; var newValue = ""; if (property.GetValue(projectUpdates.Project) != null) { newValue = property.GetValue(projectUpdates.Project).ToString(); } if (property.GetValue(originalProject) != null) { oldValue = property.GetValue(originalProject).ToString(); } if (oldValue != newValue) { var changes = new ProjectHistory { AssociatedProjectId = originalProject.ProjectId, Property = property.Name, OldValue = oldValue, NewValue = newValue, DateModified = DateTime.Now }; _projectRepository.AddHistory(changes); } } var projectIssues = _issueRepository.GetAllProjectIssues(projectUpdates.Project.ProjectId); var updatedProject = _projectRepository.Update(projectUpdates.Project); var projectHistory = _projectRepository.GetAllProjectHistories(projectUpdates.Project.ProjectId); var viewModel = new ProjectDetailsViewModel { projectHistories = projectHistory, Project = updatedProject, ProjectIssues = projectIssues, ProjectId = Global.ProjectId }; return(View(viewModel)); }