Changed OrderFiles; name is now dropdown of predefined types; Certain

types send emails
This commit is contained in:
Frank Schubert
2022-06-21 18:58:02 +02:00
parent 43185a914f
commit 26b0a67d09
17 changed files with 263 additions and 194 deletions

View File

@@ -163,6 +163,65 @@ class Order extends mfBaseModel {
}
}
public function sendFileuploadEmail(OrderFile $file) {
$filetype = $file->name;
$this->log->debug("in sendFileuploadEmail(); filetype: $filetype");
if(!defined("TT_ORDER_FILE_TYPES") || ! is_array(TT_ORDER_FILE_TYPES )) {
return false;
}
if(!array_key_exists($filetype, TT_ORDER_FILE_TYPES)) {
return false;
}
$tpl = new Layout();
$tpl->setTemplate("Emailtemplates/order/fileupload/".$filetype);
if(!$tpl->templatePathExists()) {
$this->log->debug(__METHOD__.": tpl does not exist, not sending email.");
return true;
}
$tpl->set("order", $this);
$tpl->set("file", $file);
$body = $tpl->render();
$values = $tpl->getReturnedValue();
$subject = $values['subject'];
$from = $values['from_email'];
$from_name = $values['from_email_name'];
$to = $values['to'];
if(!$subject || !$from || !$from_name || !$to) {
$this->log->warn("Order Fileupload Email not sent. (subject: '$subject', from: '$from', from_email: '$from_email', to: '$to')");
} else {
$filepath = MFUPLOAD_FILE_SAVE_PATH;
if($file->file->subfolder) {
$filepath .= "/".$file->file->subfolder;
}
$filepath .= "/".$file->file->store_filename;
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimetype = $finfo->file($filepath);
if(!$mimetype) {
$this->log->warning("File (orderfile->id: ".$file->id.") not a valid mimetype: $mimetype");
}
$email = new Emailnotification();
$email->setSubject($subject);
$email->setBody($body);
$email->setFrom($from, $from_name);
$email->setTo($to);
$email->setHeader("X-Xinon-Oid", $this->id);
$email->setHeader("X-Xinon-OFid", $file->id);
$email->addAttachment($filepath, null, $file->file->filename, $mimetype);
$email->send();
$this->log->info(__CLASS__."::save(): Sending Order Fileupload Email to '$to'");
return true;
}
return false;
}
public function getProperty($name) {
if($this->$name == null) {
@@ -194,6 +253,7 @@ class Order extends mfBaseModel {
if($name == "products") {
$this->products = OrderProductModel::search(["order_id" => $this->id]);
//var_dump($this->products);exit;
return $this->products;
}

View File

@@ -24,8 +24,43 @@ class OrderController extends mfBaseController {
$this->layout()->set("highlight", $this->request->id);
$this->layout()->set("mynetworks", NetworkModel::getAll());
if(!is_array($order->terminations) || !count($order->terminations)) {
$special_orders = [];
$voice_orders = [];
$has_bras = false;
$has_voice = false;
if(!is_array($order->products) || !count($order->products)) {
$this->layout()->set("lonelyOrders", [$order]);
$this->layout()->set("showLonelies", true);
} else {
foreach($order->products as $lop) {
//var_dump($lop);exit;
if(array_key_exists("bras_type", $lop->product->attributes) && $lop->product->attributes['bras_type']) {
$has_bras = true;
}
if(array_key_exists("voip_chan", $lop->product->attributes) && $lop->product->attributes['voip_chan']) {
$has_voice = true;
}
}
if(!$has_bras && !$has_voice) {
$this->layout()->set("special_orders", [$order]);
$this->layout()->set("showSpecial", true);
} elseif($has_voice && !$has_bras) {
$this->layout()->set("voice_orders", [$order]);
$this->layout()->set("showVoice", true);
} else {
$this->layout()->set("lonelyOrders", [$order]);
$this->layout()->set("showLonelies", true);
}
}
}
if($this->request->addJournal) {
$this->layout()->set("addJournal", true);
} else {
$this->layout()->set("showDetail", true);
}
return true;
@@ -761,7 +796,7 @@ class OrderController extends mfBaseController {
if(!$orderproduct_id) {
$product = OrderProductModel::create($product_data);
} else {
$product = new OrderProduct();
$product = new OrderProduct($orderproduct_id);
$product->update($product_data);
}
@@ -793,7 +828,6 @@ class OrderController extends mfBaseController {
// generate and send Service PIN
// only if owner_id wasn't changed
$this->log->debug("test");
if(!$owner->spin && (!property_exists($order->_old_data, "owner_id") || $order->owner_id == $order->_old_data->owner_id)) {
$this->log->debug(__CLASS__."::save(): creating new SPIN for ".$owner->getCompanyOrName()." (".$owner->id.")");
$spin = $owner->generateServicePin();
@@ -899,7 +933,11 @@ class OrderController extends mfBaseController {
$file->delete();
unlink($upload->getSavepath()."/".$upload->getFilename());
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
} else {
// send email based on file type
$order->sendFileuploadEmail($orderfile);
}
}
}