public FundingClaimSigningDto Convert(int currentPageNumber, SyndicationItem feedItem) { var feedItemDetails = _syndicationFeedParserService.RetrieveDataFromSyndicationItem(feedItem); if (string.IsNullOrEmpty(feedItemDetails.FundingClaimId)) { throw new ArgumentNullException("Funding claim id missing"); } var idParts = feedItemDetails.FundingClaimId.Split('_'); if (idParts.Length != 3) { throw new Exception($"invalid funding claim id : {feedItemDetails.FundingClaimId}"); } int.TryParse(idParts[2], out var version); int.TryParse(idParts[1], out var ukprn); var dto = new FundingClaimSigningDto(feedItemDetails.FundingClaimId) { IsSigned = feedItemDetails.HasBeenSigned, SyndicationFeedId = feedItem.Id.SyndicationId(), FeedDateTimeUtc = feedItem.LastUpdatedTime.UtcDateTime, Ukprn = ukprn, Version = version, CollectionName = idParts[0], PageNumber = currentPageNumber }; return(dto); }
public async Task SaveFeedItemAsync(CancellationToken cancellationToken, FundingClaimSigningDto feedItem) { try { if (feedItem == null) { _logger.LogInfo("No new items to save for funding claim feed items"); await UpdateLastPollDateTimeAsync(cancellationToken); return; } using (var context = _fundingclaimsDataContextFactory()) { var entry = await context.SigningNotificationFeed.SingleOrDefaultAsync(cancellationToken); if (entry == null) { entry = new SigningNotificationFeed(); context.SigningNotificationFeed.Add(entry); } entry.FeedDateTimeUtc = feedItem.FeedDateTimeUtc; entry.PageNumber = feedItem.PageNumber; entry.SyndicationFeedId = feedItem.SyndicationFeedId; entry.DateTimeUpdatedUtc = _dateTimeProvider.GetNowUtc(); await context.SaveChangesAsync(cancellationToken); } _logger.LogInfo($"Funding claims Signing updates - Added {feedItem}"); } catch (Exception e) { _logger.LogError("Error occured while saving latest feed item", e); throw; } }