Skip to content

Commit

Permalink
Updated landing and site pages actions
Browse files Browse the repository at this point in the history
  • Loading branch information
vitalii-bezuhlyi committed Jun 17, 2024
1 parent c18b8c5 commit 6d71c5f
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 83 deletions.
29 changes: 3 additions & 26 deletions Apps.Hubspot/Models/Dtos/Pages/PageDto.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Blackbird.Applications.Sdk.Common;
using Apps.Hubspot.Webhooks.Models;
using Blackbird.Applications.Sdk.Common;

namespace Apps.Hubspot.Models.Dtos.Pages;

public class PageDto : IEquatable<PageDto>
public class PageDto
{

[Display("Page ID")]
public string Id { get; set; }

Expand Down Expand Up @@ -88,27 +88,4 @@ public class PageDto : IEquatable<PageDto>

[Display("Translated from ID")]
public string? TranslatedFromId { get; set; }

public bool Equals(PageDto other)
{
if (other == null) return false;
if (ReferenceEquals(this, other)) return true;
return Id == other.Id;
}

public bool HasSignificantChanges(PageDto other)
{
if (other == null) return false;
return HtmlTitle != other.HtmlTitle || Name != other.Name || MetaDescription != other.MetaDescription;
}

public override bool Equals(object obj)
{
return Equals(obj as PageDto);
}

public override int GetHashCode()
{
return Id.GetHashCode();
}
}
8 changes: 8 additions & 0 deletions Apps.Hubspot/Models/Responses/Pages/PagesResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,12 @@ public class PagesResponse
{
[Display("Pages")]
public List<PageDto> Pages { get; set; } = new();

public PagesResponse()
{ }

public PagesResponse(List<PageDto> pages)
{
Pages = pages;
}
}
7 changes: 3 additions & 4 deletions Apps.Hubspot/Utils/DateTimeHelper.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
using System.Globalization;
using Apps.Hubspot.Models.Dtos.Blogs.Posts;
using Apps.Hubspot.Webhooks.Models;

namespace Apps.Hubspot.Utils;

public static class DateTimeHelper
{
public static bool IsPageUpdated(List<PageEntity> memoryPages, BlogPostDto blogPost)
public static bool IsPageUpdated(List<PageEntity> memoryPages, PageEntity page)
{
var memoryPage = memoryPages.FirstOrDefault(mp => mp.Id == blogPost.Id);
var memoryPage = memoryPages.FirstOrDefault(mp => mp.Id == page.Id);
if (memoryPage != null)
{
string format = "yyyy-MM-ddTHH:mm:ss.fffZ";
bool updatedParsed = DateTime.TryParseExact(blogPost.Updated, format, null,
bool updatedParsed = DateTime.TryParseExact(page.Updated, format, null,
DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
out var updatedDateTime);
bool memoryUpdatedParsed = DateTime.TryParse(memoryPage.Updated, out var memoryUpdatedDateTime);
Expand Down
16 changes: 15 additions & 1 deletion Apps.Hubspot/Webhooks/Models/PageMemory.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using Apps.Hubspot.Models.Dtos.Blogs.Posts;
using System.Globalization;
using Apps.Hubspot.Models.Dtos.Blogs.Posts;
using Apps.Hubspot.Models.Dtos.Pages;

namespace Apps.Hubspot.Webhooks.Models;

Expand All @@ -13,6 +15,11 @@ public PageMemory(List<BlogPostDto> blogPosts)
{
Pages = blogPosts.Select(p => new PageEntity(p.Id, p.Created, p.Updated)).ToList();
}

public PageMemory(List<PageDto> blogPosts)
{
Pages = blogPosts.Select(p => new PageEntity(p.Id, p.Created.ToString(CultureInfo.InvariantCulture), p.Updated.ToString(CultureInfo.InvariantCulture))).ToList();
}
}

public class PageEntity : IEntity
Expand All @@ -32,4 +39,11 @@ public PageEntity(string id, string created, string updated)
Created = created;
Updated = updated;
}

public PageEntity(string id, DateTime created, DateTime updated)
{
Id = id;
Created = created.ToString(CultureInfo.InvariantCulture);
Updated = updated.ToString(CultureInfo.InvariantCulture);
}
}
61 changes: 9 additions & 52 deletions Apps.Hubspot/Webhooks/PollingList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,9 @@ public async Task<PollingEventResponse<PageMemory, BlogPostsResponse>>
OnBlogPostsCreatedOrUpdated(PollingEventRequest<PageMemory> request,
[PollingEventParameter] LanguageRequest languageRequest)
{
try
{
await Logger.LogAsync(new
{
message = "On blog posts created or updated"
});

var blogPosts = await GetAllBlogPosts(new SearchPagesRequest());
var pages = blogPosts.Items.ToList();

return HandleBlogPostPollingEventAsync(request, languageRequest, pages);
}
catch (Exception e)
{
await Logger.LogExceptionAsync(e);
throw;
}
var blogPosts = await GetAllBlogPosts(new SearchPagesRequest());
var pages = blogPosts.Items.ToList();
return HandleBlogPostPollingEventAsync(request, languageRequest, pages);
}

[PollingEvent("On site pages created or updated", Description = "Triggered when a site page is created or updated")]
Expand All @@ -51,7 +37,6 @@ public async Task<PollingEventResponse<PageMemory, PagesResponse>>
{
var sitePages = await GetAllSitePages(new SearchPagesRequest());
var pages = sitePages.Items.ToList();

return HandlePagePollingEventAsync(request, languageRequest, pages);
}

Expand All @@ -63,7 +48,6 @@ public async Task<PollingEventResponse<PageMemory, PagesResponse>>
{
var landingPages = await GetAllLandingPages(new SearchPagesRequest());
var pages = landingPages.Items.ToList();

return HandlePagePollingEventAsync(request, languageRequest, pages);
}

Expand Down Expand Up @@ -95,7 +79,7 @@ private PollingEventResponse<PageMemory, BlogPostsResponse> HandleBlogPostPollin
var memoryEntities = request.Memory.Pages;
var newPages = blogPosts.Where(p => memoryEntities.All(mp => mp.Id != p.Id)).ToList();
var updatedPages = blogPosts
.Where(p => DateTimeHelper.IsPageUpdated(memoryEntities, p))
.Where(p => DateTimeHelper.IsPageUpdated(memoryEntities, new PageEntity(p.Id, p.Created, p.Updated)))
.ToList();

var allChanges = newPages.Concat(updatedPages).ToList();
Expand Down Expand Up @@ -128,15 +112,7 @@ private PollingEventResponse<PageMemory, PagesResponse> HandlePagePollingEventAs
return new PollingEventResponse<PageMemory, PagesResponse>
{
FlyBird = false,
Memory = new PageMemory
{
Pages = pages.Select(p => new PageEntity
{
Id = p.Id,
Created = p.Created.ToString(CultureInfo.InvariantCulture),
Updated = p.Updated.ToString(CultureInfo.InvariantCulture)
}).ToList()
},
Memory = new PageMemory(pages),
Result = null
};
}
Expand All @@ -154,7 +130,7 @@ private PollingEventResponse<PageMemory, PagesResponse> HandlePagePollingEventAs
var memoryEntities = request.Memory.Pages;
var newPages = pages.Where(p => memoryEntities.All(mp => mp.Id != p.Id)).ToList();
var updatedPages = pages
.Where(p => memoryEntities.Any(mp => mp.Id == p.Id && DateTime.Parse(mp.Updated) < p.Updated))
.Where(p => DateTimeHelper.IsPageUpdated(memoryEntities, new PageEntity(p.Id, p.Created, p.Updated)))
.ToList();

var allChanges = newPages.Concat(updatedPages).ToList();
Expand All @@ -163,15 +139,7 @@ private PollingEventResponse<PageMemory, PagesResponse> HandlePagePollingEventAs
return new PollingEventResponse<PageMemory, PagesResponse>
{
FlyBird = false,
Memory = new PageMemory
{
Pages = pages.Select(p => new PageEntity
{
Id = p.Id,
Created = p.Created.ToString(CultureInfo.InvariantCulture),
Updated = p.Updated.ToString(CultureInfo.InvariantCulture)
}).ToList()
},
Memory = new PageMemory(pages),
Result = null
};
}
Expand All @@ -180,19 +148,8 @@ private PollingEventResponse<PageMemory, PagesResponse> HandlePagePollingEventAs
return new PollingEventResponse<PageMemory, PagesResponse>
{
FlyBird = true,
Memory = new PageMemory
{
Pages = pages.Select(p => new PageEntity
{
Id = p.Id,
Created = p.Created.ToString(CultureInfo.InvariantCulture),
Updated = p.Updated.ToString(CultureInfo.InvariantCulture)
}).ToList()
},
Result = new PagesResponse
{
Pages = allChanges
}
Memory = new PageMemory(pages),
Result = new PagesResponse(allChanges)
};
}

Expand Down

0 comments on commit 6d71c5f

Please sign in to comment.