public void AddUserToProjectsShare(Project project, ApplicationUser user, int userRole, ApplicationUser fromUser = null) { if (project == null) { throw new ArgumentNullException(nameof(project)); } if (user == null) { throw new ArgumentNullException(nameof(user)); } if (userRole < UserRoleProjectsShareConstants.Invited && userRole > UserRoleProjectsShareConstants.Owner) { throw new ArgumentNullException(nameof(userRole)); } using (var unitOfWork = _unitOfWorkFactory.GetUnitOfWork()) { var projectsShare = unitOfWork.ProjectsShares.GetAll().FirstOrDefault(c => c.ProjectId.Equals(project.ProjectID) && c.UserId.Equals(user.Id)); if (projectsShare != null) { if (projectsShare.UserRole > UserRoleProjectsShareConstants.Invited) { throw new ArgumentException("User exists in projects share."); } projectsShare.UserRole = userRole; unitOfWork.ProjectsShares.Update(projectsShare); } else { var newprojectsShare = new ProjectsShare { ProjectId = project.ProjectID, UserId = user.Id, UserRole = userRole }; if (fromUser != null) { newprojectsShare.FromUserId = fromUser.Id; } unitOfWork.ProjectsShares.Create(newprojectsShare); } unitOfWork.Save(); } }
public void AddEmailToProjectsShare(Project project, string email) { if (project == null) { throw new ArgumentNullException(nameof(project)); } if (string.IsNullOrWhiteSpace(email)) { throw new ArgumentException("Empty email."); } using (var unitOfWork = _unitOfWorkFactory.GetUnitOfWork()) { var projectsShare = unitOfWork.ProjectsShares.GetAll().FirstOrDefault(c => c.ProjectID.Equals(project.ProjectID) && c.SharedEmail.Equals(email)); if (projectsShare != null) { if (projectsShare.Delflag == DelflagConstants.UnactiveSet) { projectsShare.Delflag = DelflagConstants.ActiveSet; unitOfWork.ProjectsShares.Update(projectsShare); } else if (projectsShare.Delflag == DelflagConstants.ActiveSet) { throw new ArgumentException("Email exists in projects shares."); } } else { var newprojectsShare = new ProjectsShare { ProjectID = project.ProjectID, SharedEmail = email }; unitOfWork.ProjectsShares.Create(newprojectsShare); } unitOfWork.Save(); } }