Added appointment reminder email + gql fragments for emails.

This commit is contained in:
Patrick Fic
2020-03-04 14:39:19 -08:00
parent dc59d6bd7e
commit 4e214041ae
13 changed files with 121 additions and 32 deletions

View File

@@ -2,8 +2,10 @@ import React from "react";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { setEmailOptions } from "../../redux/email/email.actions";
import T from "../../emails/parts-order/parts-order.email";
import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/parts-order/parts-order.query";
import T, {
Subject
} from "../../emails/templates/appointment-confirmation/appointment-confirmation.template";
import { EMAIL_APPOINTMENT_CONFIRMATION } from "../../emails/templates/appointment-confirmation/appointment-confirmation.query";
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
@@ -20,17 +22,19 @@ export default connect(
onClick={() =>
setEmailOptions({
messageOptions: {
from: { name: "Kavia Autobdoy", address: "noreply@bodyshop.app" },
from: { name: "Kavia Autobody", address: "noreply@bodyshop.app" },
to: "patrickwf@gmail.com",
replyTo: "snaptsoft@gmail.com"
replyTo: "snaptsoft@gmail.com",
subject: Subject
},
template: T,
queryConfig: [
REPORT_QUERY_PARTS_ORDER_BY_PK,
{ variables: { id: "46f3aa34-c3bd-46c8-83fc-c93b7ce84f46" } }
EMAIL_APPOINTMENT_CONFIRMATION,
{ variables: { id: "91bb31dd-ea87-4cfc-bbe2-2ec754dcb861" } }
]
})
}>
}
>
Set email config.
</button>
);

View File

@@ -13,19 +13,19 @@ export default function EmailOverlayComponent({
<Input
defaultValue={messageOptions.to}
onChange={handleConfigChange}
name='to'
name="to"
/>
CC
<Input
defaultValue={messageOptions.cc}
onChange={handleConfigChange}
name='cc'
name="cc"
/>
Subject
<Input
defaultValue={messageOptions.subject}
onChange={handleConfigChange}
name='subject'
name="subject"
/>
<CKEditor
editor={ClassicEditor}

View File

@@ -7,7 +7,10 @@ import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { toggleEmailOverlayVisible } from "../../redux/email/email.actions";
import { selectEmailConfig, selectEmailVisible } from "../../redux/email/email.selectors.js";
import {
selectEmailConfig,
selectEmailVisible
} from "../../redux/email/email.selectors.js";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
import EmailOverlayComponent from "./email-overlay.component";
@@ -99,6 +102,14 @@ export default connect(
messageOptions={messageOptions}
handleHtmlChange={handleHtmlChange}
/>
<button
onClick={() => {
console.log(messageOptions.html);
navigator.clipboard.writeText(messageOptions.html);
}}
>
Get HTML
</button>
</LoadingSpinner>
</Modal>
);

View File

@@ -18,8 +18,8 @@ import {
setEmailOptions,
toggleEmailOverlayVisible
} from "../../redux/email/email.actions";
import PartsOrderEmailTemplate from "../../emails/parts-order/parts-order.email";
import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/parts-order/parts-order.query";
import PartsOrderEmailTemplate from "../../emails/templates/parts-order/parts-order.email";
import { REPORT_QUERY_PARTS_ORDER_BY_PK } from "../../emails/templates/parts-order/parts-order.query";
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
@@ -131,7 +131,7 @@ export default connect(
if (sendType === "e") {
//Show the email modal and set the data.
//TODO Remove some of the options below.
//TODO Remove hardcoding
setEmailOptions({
messageOptions: {
from: {
@@ -151,7 +151,7 @@ export default connect(
}
]
});
toggleEmailOverlayVisible();
//toggleEmailOverlayVisible();
}
})
.catch(error => {
@@ -173,8 +173,9 @@ export default connect(
<Modal
visible={modalVisible}
onCancel={() => setModalVisible(false)}
onOk={handleOk}>
{error ? <AlertComponent message={error.message} type='error' /> : null}
onOk={handleOk}
>
{error ? <AlertComponent message={error.message} type="error" /> : null}
<LoadingSpinner loading={loading}>
<PartsOrderModalComponent
vendorList={(data && data.vendors) || []}

View File

@@ -4,6 +4,8 @@ import { useTranslation } from "react-i18next";
import ScheduleDayViewContainer from "../schedule-day-view/schedule-day-view.container";
import ScheduleExistingAppointmentsList from "../schedule-existing-appointments-list/schedule-existing-appointments-list.component";
export default function ScheduleJobModalComponent({
existingAppointments,
appData,