diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php
index 0cd0687e7..5c33765d3 100755
--- a/core/lib/Thelia/Controller/Admin/CouponController.php
+++ b/core/lib/Thelia/Controller/Admin/CouponController.php
@@ -25,8 +25,10 @@ namespace Thelia\Controller\Admin;
use Symfony\Component\HttpFoundation\Request;
use Thelia\Core\Event\Coupon\CouponCreateEvent;
+use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent;
use Thelia\Core\Event\Coupon\CouponEvent;
use Thelia\Core\Event\TheliaEvents;
+use Thelia\Core\HttpFoundation\Session\Session;
use Thelia\Core\Security\Exception\AuthenticationException;
use Thelia\Core\Security\Exception\AuthorizationException;
use Thelia\Coupon\CouponRuleCollection;
@@ -35,6 +37,8 @@ use Thelia\Form\Exception\FormValidationException;
use Thelia\Log\Tlog;
use Thelia\Model\Coupon;
use Thelia\Model\CouponQuery;
+use Thelia\Model\Lang;
+use Thelia\Tools\I18n;
/**
* Created by JetBrains PhpStorm.
@@ -56,7 +60,7 @@ class CouponController extends BaseAdminController
*/
public function browseAction()
{
- $this->checkAuth("ADMIN", "admin.coupon.view");
+ $this->checkAuth('ADMIN', 'admin.coupon.view');
return $this->render('coupon-list');
}
@@ -71,7 +75,7 @@ class CouponController extends BaseAdminController
public function createAction()
{
// Check current user authorization
- $response = $this->checkAuth("admin.coupon.create");
+ $response = $this->checkAuth('admin.coupon.create');
if ($response !== null) {
return $response;
}
@@ -84,11 +88,14 @@ class CouponController extends BaseAdminController
if ($this->getRequest()->isMethod('POST')) {
try {
// Check the form against constraints violations
- $form = $this->validateForm($creationForm, "POST");
+ $form = $this->validateForm($creationForm, 'POST');
+ $i18n = new I18n();
+ /** @var Lang $lang */
+ $lang = $this->getSession()->get('lang');
// Get the form field values
$data = $form->getData();
- $couponEvent = new CouponEvent(
+ $couponEvent = new CouponCreateOrUpdateEvent(
$data['code'],
$data['title'],
$data['amount'],
@@ -96,12 +103,13 @@ class CouponController extends BaseAdminController
$data['shortDescription'],
$data['description'],
$data['isEnabled'],
- new \DateTime($data['expirationDate']),
+ $i18n->getDateTimeFromForm($lang, $data['expirationDate']),
$data['isAvailableOnSpecialOffers'],
$data['isCumulative'],
$data['isRemovingPostage'],
$data['maxUsage'],
- array()
+ array(),
+ $data['locale']
);
$this->dispatch(
@@ -112,39 +120,34 @@ class CouponController extends BaseAdminController
sprintf(
'Coupon %s (ID %s) created',
$couponEvent->getTitle(),
- $couponEvent->getId()
+ $couponEvent->getCoupon()->getId()
)
);
// @todo redirect if successful
} catch (FormValidationException $e) {
// Invalid data entered
$message = 'Please check your input:';
+ $this->logError('creation', $message, $e);
+
} catch (\Exception $e) {
// Any other error
- $message = 'Sorry, an error occured:';
+ $message = 'Sorry, an error occurred:';
+ $this->logError('creation', $message, $e);
}
if ($message !== false) {
- // Log error message
- Tlog::getInstance()->error(
- sprintf(
- "Error during variable modification process : %s. Exception was %s",
- $message, $e->getMessage()
- )
- );
-
- // Mark the form as errored
+ // Mark the form as with error
$creationForm->setErrorMessage($message);
- // Pas the form and the error to the parser
+ // Send the form and the error to the parser
$this->getParserContext()
->addForm($creationForm)
- ->setGeneralError($message)
- ;
+ ->setGeneralError($message);
}
}
$formAction = 'admin/coupon/create';
+
return $this->render(
'coupon-create',
array(
@@ -162,7 +165,7 @@ class CouponController extends BaseAdminController
*/
public function editAction($couponId)
{
- $this->checkAuth("ADMIN", "admin.coupon.edit");
+ $this->checkAuth('ADMIN', 'admin.coupon.edit');
$formAction = 'admin/coupon/edit/' . $couponId;
@@ -178,7 +181,7 @@ class CouponController extends BaseAdminController
*/
public function readAction($couponId)
{
- $this->checkAuth("ADMIN", "admin.coupon.read");
+ $this->checkAuth('ADMIN', 'admin.coupon.read');
// Database request repeated in the loop but cached
$search = CouponQuery::create();
@@ -201,28 +204,51 @@ class CouponController extends BaseAdminController
protected function buildCouponFromForm(array $data)
{
$couponBeingCreated = new Coupon();
- $couponBeingCreated->setCode($data["code"]);
- $couponBeingCreated->setType($data["type"]);
- $couponBeingCreated->setTitle($data["title"]);
- $couponBeingCreated->setShortDescription($data["shortDescription"]);
- $couponBeingCreated->setDescription($data["description"]);
- $couponBeingCreated->setAmount($data["amount"]);
- $couponBeingCreated->setIsEnabled($data["isEnabled"]);
- $couponBeingCreated->setExpirationDate($data["expirationDate"]);
+ $couponBeingCreated->setCode($data['code']);
+ $couponBeingCreated->setType($data['type']);
+ $couponBeingCreated->setTitle($data['title']);
+ $couponBeingCreated->setShortDescription($data['shortDescription']);
+ $couponBeingCreated->setDescription($data['description']);
+ $couponBeingCreated->setAmount($data['amount']);
+ $couponBeingCreated->setIsEnabled($data['isEnabled']);
+ $couponBeingCreated->setExpirationDate($data['expirationDate']);
$couponBeingCreated->setSerializedRules(
new CouponRuleCollection(
array()
)
);
- $couponBeingCreated->setIsCumulative($data["isCumulative"]);
+ $couponBeingCreated->setIsCumulative($data['isCumulative']);
$couponBeingCreated->setIsRemovingPostage(
- $data["isRemovingPostage"]
+ $data['isRemovingPostage']
);
- $couponBeingCreated->setMaxUsage($data["maxUsage"]);
+ $couponBeingCreated->setMaxUsage($data['maxUsage']);
$couponBeingCreated->setIsAvailableOnSpecialOffers(
- $data["isAvailableOnSpecialOffers"]
+ $data['isAvailableOnSpecialOffers']
);
return $couponBeingCreated;
}
+
+ /**
+ * Log error message
+ *
+ * @param string $action Creation|Update|Delete
+ * @param string $message Message to log
+ * @param \Exception $e Exception to log
+ *
+ * @return $this
+ */
+ protected function logError($action, $message, $e)
+ {
+ Tlog::getInstance()->error(
+ sprintf(
+ 'Error during Coupon ' . $action . ' process : %s. Exception was %s',
+ $message,
+ $e->getMessage()
+ )
+ );
+
+ return $this;
+ }
+
}
diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php
index c8dde8758..ed9070c6b 100755
--- a/core/lib/Thelia/Core/Event/TheliaEvents.php
+++ b/core/lib/Thelia/Core/Event/TheliaEvents.php
@@ -207,17 +207,17 @@ final class TheliaEvents
/**
* Sent when editing a Coupon
*/
- const COUPON_EDIT = "action.edit_coupon";
+ const COUPON_UPDATE = "action.update_coupon";
/**
* Sent just before a successful update of a new Coupon in the database.
*/
- const BEFORE_EDIT_COUPON = "action.before_edit_coupon";
+ const BEFORE_UPDATE_COUPON = "action.before_update_coupon";
/**
* Sent just after a successful update of a new Coupon in the database.
*/
- const AFTER_EDIT_COUPON = "action.after_edit_coupon";
+ const AFTER_UPDATE_COUPON = "action.after_update_coupon";
/**
* Sent when disabling a Coupon
diff --git a/core/lib/Thelia/Tools/I18n.php b/core/lib/Thelia/Tools/I18n.php
index 82a17506d..4467bebcd 100644
--- a/core/lib/Thelia/Tools/I18n.php
+++ b/core/lib/Thelia/Tools/I18n.php
@@ -1,16 +1,57 @@
- */
+/**********************************************************************************/
+/* */
+/* Thelia */
+/* */
+/* Copyright (c) OpenStudio */
+/* email : info@thelia.net */
+/* web : http://www.thelia.net */
+/* */
+/* This program is free software; you can redistribute it and/or modify */
+/* it under the terms of the GNU General Public License as published by */
+/* the Free Software Foundation; either version 3 of the License */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program. If not, see . */
+/* */
+/**********************************************************************************/
namespace Thelia\Tools;
+use Thelia\Model\Lang;
+/**
+ * Created by JetBrains PhpStorm.
+ * Date: 8/19/13
+ * Time: 3:24 PM
+ *
+ * Helper for translations
+ *
+ * @package I18n
+ * @author Guillaume MOREL
+ *
+ */
class I18n
{
+ /**
+ * Create a \DateTime from a date picker form input
+ * The date format is the same as the one from the current User Session
+ * Ex : $lang = $session->getLang()
+ *
+ * @param Lang $lang Object containing date format
+ * @param string $date String to convert
+ *
+ * @return \DateTime
+ */
+ public function getDateTimeFromForm(Lang $lang, $date)
+ {
+ $currentDateFormat = $lang->getDateFormat();
+ return \DateTime::createFromFormat($currentDateFormat, $date);
+ }
}
\ No newline at end of file