Beispiel #1
0
 void Apply(EntryShared @event)
 {
     foreach (var collaboratorId in @event.CollaboratorIds)
     {
         _sharedWith.Add(collaboratorId);
     }
 }
Beispiel #2
0
        private void OnEntryShared(IDbTransaction tx, ICommit commit, EntryShared @event)
        {
            RecordActivity(tx, new Models.Activity {
                UserId = @event.UserId,
                Type   = (int)ActivityType.EntryShared,
                When   = commit.CommitStamp,
                Link   = commit.AggregateId().ToString()
            });

            var author        = _userService.GetUser(@event.UserId, tx);
            var collaborators = @event.CollaboratorIds.Select(collaboratorId => _userService.GetUser(collaboratorId, tx));

            foreach (var collaborator in collaborators)
            {
                var customText   = string.IsNullOrWhiteSpace(@event.Message) ? "" : $"<p>{WebUtility.HtmlEncode(@event.Message)}</p>";
                var notification = new Models.EmailNotification {
                    Id          = Guid.NewGuid(),
                    UserId      = @event.UserId,
                    To          = collaborator.Email,
                    When        = commit.CommitStamp,
                    Subject     = $"{author.FirstName} {author.LastName} has shared an entry with you",
                    HtmlBody    = $"<p>{collaborator.FirstName} {collaborator.LastName},</p> <p>Just to let you know {author.FirstName} {author.LastName} has shared an entry in Folium with you.</p>{customText}",
                    ActionLink  = $"{_applicationConfiguration.Value.BaseUrl}/entries/{commit.AggregateId()}",
                    ActionTitle = "View Entry"
                };
                CreateEmailNotification(tx, notification);
            }
        }
Beispiel #3
0
        private void OnEntryShared(IDbTransaction tx, ICommit commit, EntryShared @event)
        {
            foreach (var collaboratorId in @event.CollaboratorIds)
            {
                var sqlParams = new {
                    EntryId = commit.AggregateId(),
                    UserId  = collaboratorId
                };
                const string sql = @"
				INSERT INTO [dbo].[PlacementProjector.EntrySharedWith]
					   ([EntryId]
					   ,[UserId])
				 SELECT
					   @EntryId
					   ,@UserId
				WHERE NOT EXISTS(SELECT * FROM [dbo].[PlacementProjector.EntrySharedWith] WHERE EntryId = @EntryId AND UserId = @UserId);
				
				UPDATE [PlacementProjector.Entry]
				SET	[Shared] = 1
				WHERE [Id] = @EntryId;"                ;
                tx.Connection.Execute(sql, (object)sqlParams, tx);
            }
        }