From 712dbb50467662d906140241c9a32fb3243fb3ca Mon Sep 17 00:00:00 2001 From: David Headrick Date: Thu, 17 Apr 2025 08:15:19 -0500 Subject: [PATCH] Add TotalRows to TargetSample and update related components - Updated `TargetSample` class to include `TotalRows` property. - Set `TotalRows` in `TargetRepository` based on database query. - Added state management for `targetSample` and loading in `MailingEdit.tsx`. - Modified rendering logic in `MailingEdit.tsx` to display total rows. - Updated `TargetSampleModal` to accept `targetSample` as a prop. - Created new `targetSample.ts` file defining the `TargetSample` interface. --- .../DTOs/TargetSample.cs | 1 + .../Repositories/TargetRepository.cs | 1 + .../src/components/modals/MailingEdit.tsx | 64 +++++++++++++++---- .../components/modals/TargetSampleModal.tsx | 55 ++++++++-------- .../src/types/targetSample.ts | 8 +++ 5 files changed, 89 insertions(+), 40 deletions(-) create mode 100644 Surge365.MassEmailReact.Web/src/types/targetSample.ts diff --git a/Surge365.MassEmailReact.Application/DTOs/TargetSample.cs b/Surge365.MassEmailReact.Application/DTOs/TargetSample.cs index c9e7d4a..ece0802 100644 --- a/Surge365.MassEmailReact.Application/DTOs/TargetSample.cs +++ b/Surge365.MassEmailReact.Application/DTOs/TargetSample.cs @@ -10,6 +10,7 @@ namespace Surge365.MassEmailReact.Application.DTOs { public Dictionary Columns { get; set; } = new Dictionary(); public List> Rows { get; set; } = new List>(); + public int TotalRows { get; set; } = 0; } public class TargetSampleColumn { diff --git a/Surge365.MassEmailReact.Infrastructure/Repositories/TargetRepository.cs b/Surge365.MassEmailReact.Infrastructure/Repositories/TargetRepository.cs index bf23cda..c7f00d5 100644 --- a/Surge365.MassEmailReact.Infrastructure/Repositories/TargetRepository.cs +++ b/Surge365.MassEmailReact.Infrastructure/Repositories/TargetRepository.cs @@ -218,6 +218,7 @@ namespace Surge365.MassEmailReact.Infrastructure.Repositories // Build TargetSample var targetSample = new TargetSample(); + targetSample.TotalRows = rowCount; bool emailFound = false; bool uniqueIDFound = false; bool bounceFound = false; diff --git a/Surge365.MassEmailReact.Web/src/components/modals/MailingEdit.tsx b/Surge365.MassEmailReact.Web/src/components/modals/MailingEdit.tsx index 18d6d2f..87985a0 100644 --- a/Surge365.MassEmailReact.Web/src/components/modals/MailingEdit.tsx +++ b/Surge365.MassEmailReact.Web/src/components/modals/MailingEdit.tsx @@ -13,12 +13,15 @@ import { Box, MenuItem, Select, - InputLabel + InputLabel, + Typography, + CircularProgress } from "@mui/material"; import VisibilityIcon from '@mui/icons-material/Visibility'; import Template from "@/types/template"; import Mailing from "@/types/mailing"; +import TargetSample from "@/types/targetSample"; import Target from "@/types/target"; //import MailingTemplate from "@/types/mailingTemplate"; //import MailingTarget from "@/types/mailingTarget"; @@ -234,6 +237,8 @@ const MailingEdit = ({ open, mailing, onClose, onSave }: MailingEditProps) => { const [currentTemplate, setCurrentTemplate] = useState