- Adds a method to create a notification history newsletter

This commit is contained in:
Vlad
2016-07-14 20:28:42 -04:00
parent 2c98270084
commit 7605fc71ac

View File

@@ -56,7 +56,13 @@ class Newsletter extends Model {
return $this; return $this;
} }
function duplicate($data = array()) { function duplicate(
$data = array(),
$reset_status = true,
$reset_timestamps = true,
$duplicate_options = true,
$duplicate_segments = true
) {
// get current newsletter's data as an array // get current newsletter's data as an array
$newsletter_data = $this->asArray(); $newsletter_data = $this->asArray();
@@ -69,19 +75,25 @@ class Newsletter extends Model {
$duplicate = self::create(); $duplicate = self::create();
$duplicate->hydrate($data); $duplicate->hydrate($data);
if($reset_timestamps) {
// reset timestamps // reset timestamps
$duplicate->set_expr('created_at', 'NOW()'); $duplicate->set_expr('created_at', 'NOW()');
$duplicate->set_expr('updated_at', 'NOW()'); $duplicate->set_expr('updated_at', 'NOW()');
$duplicate->set_expr('deleted_at', 'NULL'); $duplicate->set_expr('deleted_at', 'NULL');
}
if($reset_status){
// reset status // reset status
$duplicate->set('status', self::STATUS_DRAFT); $duplicate->set('status', self::STATUS_DRAFT);
}
$duplicate->save(); $duplicate->save();
if($duplicate->getErrors() === false) { if($duplicate->getErrors() === false) {
if($duplicate_segments) {
// create relationships between duplicate and segments // create relationships between duplicate and segments
$segments = $this->segments()->findArray(); $segments = $this->segments()
->findArray();
if(!empty($segments)) { if(!empty($segments)) {
foreach($segments as $segment) { foreach($segments as $segment) {
@@ -91,7 +103,9 @@ class Newsletter extends Model {
$relation->save(); $relation->save();
} }
} }
}
if($duplicate_options) {
// duplicate options // duplicate options
$options = NewsletterOption::where('newsletter_id', $this->id) $options = NewsletterOption::where('newsletter_id', $this->id)
->findArray(); ->findArray();
@@ -106,10 +120,25 @@ class Newsletter extends Model {
} }
} }
} }
}
return $duplicate; return $duplicate;
} }
function createNotificationHistory() {
return $this->duplicate(
array(
'parent_id' => $this->id,
'type' => self::TYPE_NOTIFICATION_HISTORY,
'status' => self::STATUS_SENDING
),
$reset_status = false,
$reset_timestamps = true,
$duplicate_options = false,
$duplicate_segments = true
);
}
function asArray() { function asArray() {
$model = parent::asArray(); $model = parent::asArray();