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