public static MapMembership CreateOwnerMembership(Map map) { var membership = new MapMembership(map.CreatedBy, map, map.CreatedBy); membership.SetDecision(map.CreatedBy, MapMembershipStatus.Accepted); return(membership); }
public void CancelInvite(MapMembership existingMembership) { if (!Memberships.Contains(existingMembership)) { throw new ArgumentNullException(nameof(existingMembership), "Invite not found"); } if (existingMembership.Status != MapMembershipStatus.DecisionNotMade) { throw new DomainException("Can not cancel invite with specified decision"); } existingMembership.MarkAsRemoved(); Memberships.Remove(existingMembership); }
public MapMembership Invite(User actionExecutor, User invitedUser) { if (actionExecutor.Id != CreatedById) { throw new DomainException("Only creator can invite members"); } if (Memberships.Any(x => x.InvitedId == invitedUser.Id)) { throw new DomainException("Can not invite twice."); } var membership = new MapMembership(actionExecutor, this, invitedUser); Memberships.Add(membership); return(membership); }
public Map(User creator, string title) { Id = Guid.NewGuid().ToString("D"); CreatedAt = DateTimeOffset.UtcNow; LastModifiedAt = CreatedAt; CreatedBy = creator; CreatedById = creator.Id; Title = title; ObjectsList = new List <MapObject>(); Memberships = new List <MapMembership> { MapMembership.CreateOwnerMembership(this) }; IsRemoved = false; }