Skip to content

Commit

Permalink
Merge pull request #561 from erxes/settime-mass-email
Browse files Browse the repository at this point in the history
Close #484
  • Loading branch information
batamar committed Aug 27, 2018
2 parents 3c7b6df + 107f860 commit 7abbbe4
Show file tree
Hide file tree
Showing 14 changed files with 327 additions and 37 deletions.
17 changes: 16 additions & 1 deletion src/locales/en.json
Expand Up @@ -668,5 +668,20 @@
"Invalid import type": "Invalid import type",
"Last updated": "Last updated",
"Filter by lead status": "Filter by lead status",
"No lead status chosen": "No lead status chosen"
"No lead status chosen": "No lead status chosen",
"Schedule:": "Schedule:",
"Every Day": "Every Day",
"Every Month": "Every Month",
"Every Year": "Every Year",
"Every Monday": "Every Monday",
"Every Tuesday": "Every Tuesday",
"Every Wednesday": "Every Wednesday",
"Every Thursday": "Every Thursday",
"Every Friday": "Every Friday",
"Every Saturday": "Every Saturday",
"Every Sunday": "Every Sunday",
"Choose schedule type": "Choose schedule type",
"Choose schedule time": "Choose schedule time",
"Choose schedule day": "Choose schedule day",
"Choose schedule month": "Choose schedule month"
}
17 changes: 16 additions & 1 deletion src/locales/mn.json
Expand Up @@ -672,5 +672,20 @@
"Invalid import type": "Буруу төрөл сонгосон байна",
"Last updated": "Сүүлд өөрчилсөн",
"Filter by lead status": "Лийдийн төлөвөөр шүүх",
"No lead status chosen": "Лийдийн төлөв сонгоогүй байна"
"No lead status chosen": "Лийдийн төлөв сонгоогүй байна",
"Schedule:": "Цагын хуваарь",
"Every Day": "Өдөр бүр",
"Every Month": "Сар бүр",
"Every Year": "Жил бүр",
"Every Monday": "Даваа гараг бүр",
"Every Tuesday": "Мягмар гараг бүр",
"Every Wednesday": "Лхагва гараг бүр",
"Every Thursday": "Пүрэв гараг бүр",
"Every Friday": "Баасан гараг бүр",
"Every Saturday": "Хагас сайн бүр",
"Every Sunday": "Бүтэн сайн бүр",
"Choose schedule type": "Цагын хуваарь төрөл сонгоно уу",
"Choose schedule time": "Цагын хуваарь цаг сонгоно уу",
"Choose schedule day": "Цагын хуваарь өдөр сонгоно уу",
"Choose schedule month": "Цагын хуваарь сар сонгоно уу"
}
31 changes: 17 additions & 14 deletions src/modules/engage/components/AutoAndManualForm.js
Expand Up @@ -25,8 +25,6 @@ class AutoAndManualForm extends FormBase {
super(props);

const message = props.message || {};
const messenger = message.messenger || {};
const email = message.email || {};

let content = message.messenger ? message.messenger.content : '';
content = message.email ? message.email.content : content;
Expand All @@ -39,16 +37,9 @@ class AutoAndManualForm extends FormBase {
segment: message.segmentId || '',
message: content,
fromUser: message.fromUserId,
messenger: {
brandId: messenger.brandId || '',
kind: messenger.kind || '',
sentAs: messenger.sentAs || ''
},
email: {
templateId: email.templateId || '',
subject: email.subject || '',
attachments: email.attachments || []
}
messenger: message.messenger,
email: message.email,
scheduleDate: message.scheduleDate
};
}

Expand All @@ -62,6 +53,10 @@ class AutoAndManualForm extends FormBase {
method: this.state.method
};

if (this.props.kind !== 'manual') {
doc.scheduleDate = this.state.scheduleDate;
}

if (this.state.method === 'email') {
doc.email = {
templateId: this.state.email.templateId,
Expand All @@ -88,10 +83,17 @@ class AutoAndManualForm extends FormBase {
messenger,
email,
fromUser,
message
message,
scheduleDate
} = this.state;

const defaultMessageStepValue = { messenger, email, fromUser, message };
const defaultMessageStepValue = {
messenger,
email,
fromUser,
message,
scheduleDate
};
const { __ } = this.context;

return (
Expand Down Expand Up @@ -150,6 +152,7 @@ class AutoAndManualForm extends FormBase {
method={this.state.method}
templates={this.props.templates}
defaultValue={defaultMessageStepValue}
kind={this.props.kind}
/>
</Step>
</Steps>
Expand Down
23 changes: 21 additions & 2 deletions src/modules/engage/components/EmailForm.js
Expand Up @@ -11,6 +11,7 @@ import {
import { EMAIL_CONTENT_CLASS } from 'modules/engage/constants';
import { FlexItem, FlexPad } from 'modules/common/components/step/styles';
import Editor from './Editor';
import Scheduler from './Scheduler';

const PreviewContainer = styled.div`
margin: 20px;
Expand All @@ -34,14 +35,16 @@ const propTypes = {
message: PropTypes.string,
users: PropTypes.array,
templates: PropTypes.array,
defaultValue: PropTypes.object
defaultValue: PropTypes.object,
kind: PropTypes.string
};

class EmailForm extends Component {
constructor(props) {
super(props);

const message = this.props.defaultValue || {};
const scheduleDate = message.scheduleDate || {};

this.state = {
fromUser: message.fromUser || '',
Expand All @@ -51,7 +54,8 @@ class EmailForm extends Component {
subject: message.email.subject || '',
templateId: message.email.templateId || '',
attachments: message.email.attachments || []
}
},
scheduleDate
};
}

Expand Down Expand Up @@ -130,6 +134,19 @@ class EmailForm extends Component {
);
}

renderScheduler() {
if (this.props.kind === 'manual') {
return null;
}

return (
<Scheduler
scheduleDate={this.state.scheduleDate}
onChange={this.props.changeEmail}
/>
);
}

render() {
const { attachments } = this.state.email;

Expand Down Expand Up @@ -192,6 +209,8 @@ class EmailForm extends Component {
}
/>
</FormGroup>

{this.renderScheduler()}
</FlexPad>

<FlexItem v="center" h="center" overflow="auto">
Expand Down
20 changes: 20 additions & 0 deletions src/modules/engage/components/FormBase.js
Expand Up @@ -38,6 +38,26 @@ class FormBase extends Component {
return Alert.error(__('Choose from sent as'));
}

if (doc.scheduleDate) {
const { time, type, day, month } = doc.scheduleDate;

if (!type && time) {
return Alert.error(__('Choose schedule type'));
}

if (type && (!time || time.length === 0)) {
return Alert.error(__('Choose schedule time'));
}

if ((type === 'year' || type === 'month') && !day) {
return Alert.error(__('Choose schedule day'));
}

if (type === 'year' && !month) {
return Alert.error(__('Choose schedule month'));
}
}

if (type === 'live') {
return this.props.save({ isLive: true, isDraft: false, ...doc });
}
Expand Down
28 changes: 26 additions & 2 deletions src/modules/engage/components/MessengerForm.js
Expand Up @@ -9,28 +9,36 @@ import { MESSENGER_KINDS, SENT_AS_CHOICES } from 'modules/engage/constants';
import { FlexItem, FlexPad } from 'modules/common/components/step/styles';
import Editor from './Editor';
import { MessengerPreview } from '../containers';
import Scheduler from './Scheduler';

const contextTypes = {
__: PropTypes.func
};

const propTypes = {
brands: PropTypes.array,
changeMessenger: PropTypes.func,
users: PropTypes.array,
hasKind: PropTypes.bool,
defaultValue: PropTypes.object
defaultValue: PropTypes.object,
kind: PropTypes.string
};

class MessengerForm extends Component {
constructor(props) {
super(props);

const message = props.defaultValue || {};
const scheduleDate = message.scheduleDate || {};

this.state = {
fromUser: message.fromUser || '',
messenger: {
brandId: message.messenger.brandId || '',
kind: message.messenger.kind || '',
sentAs: message.messenger.sentAs || ''
}
},
scheduleDate
};
}

Expand Down Expand Up @@ -74,6 +82,19 @@ class MessengerForm extends Component {
);
}

renderScheduler() {
if (this.props.kind === 'manual') {
return null;
}

return (
<Scheduler
scheduleDate={this.state.scheduleDate}
onChange={this.props.changeMessenger}
/>
);
}

render() {
return (
<FlexItem>
Expand Down Expand Up @@ -135,6 +156,8 @@ class MessengerForm extends Component {
))}
</FormControl>
</FormGroup>

{this.renderScheduler()}
</FlexPad>

<FlexPad overflow="auto">
Expand All @@ -149,6 +172,7 @@ class MessengerForm extends Component {
}
}

MessengerForm.contextTypes = contextTypes;
MessengerForm.propTypes = propTypes;

export default MessengerForm;

0 comments on commit 7abbbe4

Please sign in to comment.