diff --git a/src/views/Campaigns/AddCampaign.js b/src/views/Campaigns/AddCampaign.js index a0f224b..49ef901 100644 --- a/src/views/Campaigns/AddCampaign.js +++ b/src/views/Campaigns/AddCampaign.js @@ -37,6 +37,7 @@ const AddCampaign = () => { language: "", campaignType: "", video: null, + spreadSheet: null, recipients: [{ name: "", phoneNumber: "" }], }); diff --git a/src/views/Campaigns/ContactDetails.js b/src/views/Campaigns/ContactDetails.js index bd899bc..98c3563 100644 --- a/src/views/Campaigns/ContactDetails.js +++ b/src/views/Campaigns/ContactDetails.js @@ -2,17 +2,56 @@ import React from "react"; import Button from "@material-ui/core/Button"; import { useState } from "react"; import toast from "react-hot-toast"; +import { CFormInput, CFormLabel, CCol, CRow } from "@coreui/react"; + const ContactDetails = ({ props }) => { const { data, setData, handleView } = props; + const [dataEntryMethod, setDataEntryMethod] = useState("manual"); + const [csvData, setCsvData] = useState([]); // const [recipients, setRecipients] = useState([{ name: "", phoneNumber: "" }]); - + // console.log("data", data); const addRecord = () => { setData((prevData) => ({ ...prevData, - recipients: [...prevData.recipients, { name: "", phoneNumber: "" }], + recipients: [ + ...prevData.recipients, + { name: "", phoneNumber: "", email: "" }, + ], })); }; + const handleSpreadSheet = (e) => { + const file = e.target.files[0]; + if (file) { + const reader = new FileReader(); + + reader.onload = (event) => { + const csvData = event.target.result; + const rows = csvData.split("\n"); + const extractedData = []; + + for (let i = 0; i < rows.length; i++) { + const row = rows[i].split(","); + if (row.length >= 2) { + const name = row[0].trim(); + const email = row[1].trim(); + if (name && email) { + extractedData.push({ name, email }); + } + } + } + setCsvData(extractedData); + // console.log(csvData); + setData((prevData) => ({ + ...prevData, + recipients: extractedData, + spreadSheet: file.name, + })); + }; + reader.readAsText(file); + } + }; + const deleteRecipient = (index) => { const updatedRecipients = [...data.recipients]; updatedRecipients.splice(index, 1); @@ -46,131 +85,193 @@ const ContactDetails = ({ props }) => { })); }; + const recipientEmailChange = (e, index) => { + const updatedRecipients = [...data.recipients]; + updatedRecipients[index] = { + ...updatedRecipients[index], + email: e.target.value, + }; + setData((prevData) => ({ + ...prevData, + recipients: updatedRecipients, + })); + }; + + const handleSubmit = () => { + if ( + data?.recipients.every( + (recipient) => + recipient.name !== "" && + (data?.campaignType !== "email" + ? recipient.phoneNumber !== "" + : recipient.email !== "") + ) + ) { + handleView(3); + } else { + toast.error("Fill all contact details"); + } + }; + return (