public void Invoke(int projectId, Policy policy, PolicyConfiguration policyConfiguration) { var project = projectRepository.GetById(projectId); if (project == null) { throw new ArgumentNullException($"Cannot find project with id: {projectId}."); } var projectPolicy = project.ProjectPolicies.FirstOrDefault(m => m.Policy == policy); if (projectPolicy != null) { project.ProjectPolicies.Remove(projectPolicy); project.ProjectPolicies.Add(new ProjectPolicies { Policy = policy, SerializedProjectPolicySetting = jsonConvertService.Serialize(policyConfiguration) }); } else { project.ProjectPolicies.Add(new ProjectPolicies { Policy = policy, SerializedProjectPolicySetting = jsonConvertService.Serialize(policyConfiguration) }); } projectRepository.Edit(project); eventBus.Publish(new PolicySaved(projectId, policy)); }
public void Invoke(int projectId, int userId, Policy policy, DateTime userExpDate) { var project = projectRepository.GetByIdWithPolicies(projectId); if (project == null) { throw new ArgumentNullException($"Cannot find user with id:{projectId}"); } var userPolicy = project.ProjectPolicies.FirstOrDefault(m => m.Policy == policy) .UserPolicies.FirstOrDefault(m => m.UserId == userId); if (userPolicy != null) { project.ProjectPolicies.FirstOrDefault(m => m.Policy == policy).UserPolicies.Remove(userPolicy); if (userExpDate == default(DateTime)) { projectRepository.Edit(project); return; } var result = (UserAccountExpirationDateConfiguration) jsonConvertService.DeserializeUser(policy, userPolicy.SerializedUserPolicySetting); result.ExpirationDate = userExpDate; userPolicy.SerializedUserPolicySetting = jsonConvertService.Serialize(result); project.ProjectPolicies.FirstOrDefault(m => m.Policy == policy).UserPolicies.Add(userPolicy); } else { if (userExpDate == default(DateTime)) { return; } userPolicy = new UserPolicies { UserId = userId, SerializedUserPolicySetting = jsonConvertService.Serialize(new UserAccountExpirationDateConfiguration { ExpirationDate = userExpDate }) }; project.ProjectPolicies.FirstOrDefault(m => m.Policy == policy).UserPolicies.Add(userPolicy); } projectRepository.Edit(project); }