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); }
public AuthorizePolicy(UserPolicies allowedPolicy) { Policy = allowedPolicy.ToString(); }