public async Task <IActionResult> NotifyDeletedColidEntryToSubscribers([FromBody] ColidEntryDto colidEntryDto) { int amountOfCreatedMessages = await _messageService.CreateDeleteMessagesAndRemoveColidEntrySubscriptions(colidEntryDto); var jsonString = "{ \"messagesCreated\": " + amountOfCreatedMessages + " }"; return(Ok(jsonString)); }
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); }
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); }
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); }
public ColidEntryDtoBuilder() { _dto = new ColidEntryDto(); }