Esempio n. 1
0
        public async Task <IActionResult> NotifyDeletedColidEntryToSubscribers([FromBody] ColidEntryDto colidEntryDto)
        {
            int amountOfCreatedMessages = await _messageService.CreateDeleteMessagesAndRemoveColidEntrySubscriptions(colidEntryDto);

            var jsonString = "{ \"messagesCreated\": " + amountOfCreatedMessages + " }";

            return(Ok(jsonString));
        }
Esempio n. 2
0
        public async Task <int> CreateUpdateMessagesForColidEntrySubscriptions(ColidEntryDto colidEntryDto)
        {
            if (!_colidEntrySubscriptionService.TryGetAllUsers(colidEntryDto.ColidPidUri, out var colidEntrySubscribedUsers))
            {
                // no one subscribed to the given colid pidUri
                return(0);
            }

            var amountUsersNotified = await CreateMessagesForColidEntrySubscriptions(colidEntryDto, MessageType.ColidEntrySubscriptionUpdate, colidEntrySubscribedUsers);

            return(amountUsersNotified);
        }
Esempio n. 3
0
        private async Task <int> CreateMessagesForColidEntrySubscriptions(ColidEntryDto colidEntryDto, MessageType messageType, IList <User> colidEntrySubscribedUsers)
        {
            var colidPidUri     = colidEntryDto.ColidPidUri.AbsoluteUri;
            var colidLabel      = colidEntryDto.Label;
            var messageTemplate = _messageTemplateService.GetOne(messageType);

            foreach (var user in colidEntrySubscribedUsers)
            {
                var messageConfigForUser = await _userService.GetMessageConfigAsync(user.Id);

                var subject = messageTemplate.Subject.Replace("%COLID_PID_URI%", colidPidUri).Replace("%COLID_LABEL%", colidLabel);
                var body    = messageTemplate.Body.Replace("%COLID_PID_URI%", colidPidUri).Replace("%COLID_LABEL%", colidLabel);
                var message = CreateMessageDto(messageConfigForUser, subject, body);

                await _userService.AddMessageAsync(user.Id, message);
            }

            return(colidEntrySubscribedUsers.Count);
        }
Esempio n. 4
0
        public async Task <int> CreateDeleteMessagesAndRemoveColidEntrySubscriptions(ColidEntryDto colidEntryDto)
        {
            if (!_colidEntrySubscriptionService.TryGetAllUsers(colidEntryDto.ColidPidUri, out var colidEntrySubscribedUsers))
            {
                // no one subscribed to the given colid pidUri
                return(0);
            }

            var amountUsersNotified = await CreateMessagesForColidEntrySubscriptions(colidEntryDto, MessageType.ColidEntrySubscriptionDelete, colidEntrySubscribedUsers);

            // remove subscription from all users
            var subscriptionDto = new ColidEntrySubscriptionDto()
            {
                ColidPidUri = colidEntryDto.ColidPidUri
            };

            _colidEntrySubscriptionService.Delete(subscriptionDto);

            return(amountUsersNotified);
        }
Esempio n. 5
0
 public ColidEntryDtoBuilder()
 {
     _dto = new ColidEntryDto();
 }