public static void CanRemove(AppContributors contributors, RemoveContributor command) { Guard.NotNull(command, nameof(command)); Validate.It(() => "Cannot remove contributor.", error => { if (string.IsNullOrWhiteSpace(command.ContributorId)) { error(new ValidationError("Contributor id not assigned.", nameof(command.ContributorId))); } var ownerIds = contributors.Where(x => x.Value == AppContributorPermission.Owner).Select(x => x.Key).ToList(); if (ownerIds.Count == 1 && ownerIds.Contains(command.ContributorId)) { error(new ValidationError("Cannot remove the only owner.", nameof(command.ContributorId))); } }); if (!contributors.ContainsKey(command.ContributorId)) { throw new DomainObjectNotFoundException(command.ContributorId, "Contributors", typeof(AppDomainObject)); } }
public static void CanRemove(AppContributors contributors, RemoveContributor command) { Guard.NotNull(command, nameof(command)); Validate.It(() => "Cannot remove contributor.", e => { if (string.IsNullOrWhiteSpace(command.ContributorId)) { e(Not.Defined("Contributor id"), nameof(command.ContributorId)); } var ownerIds = contributors.Where(x => x.Value == Role.Owner).Select(x => x.Key).ToList(); if (ownerIds.Count == 1 && ownerIds.Contains(command.ContributorId)) { e("Cannot remove the only owner."); } }); if (!contributors.ContainsKey(command.ContributorId)) { throw new DomainObjectNotFoundException(command.ContributorId, "Contributors", typeof(IAppEntity)); } }
public static void CanRemove(AppContributors contributors, RemoveContributor command) { Guard.NotNull(command, nameof(command)); Validate.It(e => { if (string.IsNullOrWhiteSpace(command.ContributorId)) { e(Not.Defined(nameof(command.ContributorId)), nameof(command.ContributorId)); } var ownerIds = contributors.Where(x => x.Value == Role.Owner).Select(x => x.Key).ToList(); if (ownerIds.Count == 1 && ownerIds.Contains(command.ContributorId)) { e(T.Get("apps.contributors.onlyOneOwner")); } }); if (!contributors.ContainsKey(command.ContributorId)) { throw new DomainObjectNotFoundException(command.ContributorId); } }