diff --git a/local/modules/LivraisonParSecteurs/Config/routing.xml b/local/modules/LivraisonParSecteurs/Config/routing.xml
index 179a27e2..39f4a72c 100644
--- a/local/modules/LivraisonParSecteurs/Config/routing.xml
+++ b/local/modules/LivraisonParSecteurs/Config/routing.xml
@@ -11,6 +11,7 @@
LivraisonParSecteurs\Controller\BackOfficeController::toggleActive
\d+
+
LivraisonParSecteurs\Controller\BackOfficeController::viewArea
@@ -18,4 +19,13 @@
LivraisonParSecteurs\Controller\BackOfficeController::editArea
+
+ LivraisonParSecteurs\Controller\BackOfficeController::deleteSchedule
+
+
+
+ LivraisonParSecteurs\Controller\BackOfficeController::updateSchedule
+
+
+
diff --git a/local/modules/LivraisonParSecteurs/Controller/BackOfficeController.php b/local/modules/LivraisonParSecteurs/Controller/BackOfficeController.php
index 8ece9d53..66b4b12a 100644
--- a/local/modules/LivraisonParSecteurs/Controller/BackOfficeController.php
+++ b/local/modules/LivraisonParSecteurs/Controller/BackOfficeController.php
@@ -4,12 +4,15 @@ namespace LivraisonParSecteurs\Controller;
use LivraisonParSecteurs\LivraisonParSecteurs;
use LivraisonParSecteurs\Model\LpsAreaQuery;
+use LivraisonParSecteurs\Model\LpsAreaScheduleQuery;
use Propel\Runtime\Map\TableMap;
use Propel\Runtime\Propel;
+use Symfony\Component\HttpFoundation\RedirectResponse;
use Thelia\Controller\Admin\BaseAdminController;
use Thelia\Core\Security\AccessManager;
use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Form\Exception\FormValidationException;
+use Thelia\Tools\URL;
/**
* Class BackOfficeController
@@ -76,11 +79,68 @@ class BackOfficeController extends BaseAdminController
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
}
- /* Laurent : à faire --> changer le redirect si "Enregistrer et fermer" */
-
if ($this->getRequest()->get('save_mode') == 'stay')
return $this->render("deliveryarea-edit");
return $this->render("deliveryarea-list");
}
+
+ /*
+ * Delete a day in an area's delivery schedule
+ */
+ public function deleteSchedule()
+ {
+ // Check current user authorization
+ if (null !== $response = $this->checkAuth(AdminResources::MODULE, LivraisonParSecteurs::getModuleCode(), AccessManager::UPDATE))
+ return $response;
+
+ $areaSchedule_id = $this->getRequest()->get('area-schedule_id');
+ $query = LpsAreaScheduleQuery::create()->findById($areaSchedule_id);
+ if ($query === null)
+ $error_msg = "Delivery area schedule not found by Id";
+ else
+ {
+ $con = Propel::getConnection();
+ $con->beginTransaction();
+ $query->delete($con);
+ $con->commit();
+ }
+
+ if ($this->getRequest()->request->get("success_url") == null) {
+ return new RedirectResponse(URL::getInstance()->absoluteUrl("/admin/module/LivraisonParSecteurs"));
+ } else {
+ return new RedirectResponse(URL::getInstance()->absoluteUrl($this->getRequest()->request->get("success_url")));
+ }
+ }
+
+
+ /*
+ * Update a day in an area's delivery schedule
+ */
+ public function updateSchedule()
+ {
+ // Check current user authorization
+ if (null !== $response = $this->checkAuth(AdminResources::MODULE, LivraisonParSecteurs::getModuleCode(), AccessManager::UPDATE))
+ return $response;
+
+ $areaSchedule_id = $this->getRequest()->get('area-schedule_id');
+ $query = LpsAreaScheduleQuery::create()->findById($areaSchedule_id);
+ if ($query === null)
+ $error_msg = "Delivery area schedule not found by Id";
+ else
+ {
+ $con = Propel::getConnection();
+ $con->beginTransaction();
+// $query->delete($con);
+ $con->commit();
+ }
+
+ if ($this->getRequest()->request->get("success_url") == null) {
+ return new RedirectResponse(URL::getInstance()->absoluteUrl("/admin/module/LivraisonParSecteurs"));
+ } else {
+ return new RedirectResponse(URL::getInstance()->absoluteUrl($this->getRequest()->request->get("success_url")));
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/local/modules/LivraisonParSecteurs/Form/ScheduleCreateForm.php b/local/modules/LivraisonParSecteurs/Form/ScheduleCreateForm.php
new file mode 100644
index 00000000..f8448fb8
--- /dev/null
+++ b/local/modules/LivraisonParSecteurs/Form/ScheduleCreateForm.php
@@ -0,0 +1,68 @@
+formBuilder
+ ->add(
+ "area_id",
+ "integer",
+ [
+ "required" => true,
+ "constraints" => [new Constraints\NotBlank()]
+ ])
+ ->add(
+ "area-schedule_id",
+ "integer",
+ [
+ "required" => true,
+ "constraints" => [new Constraints\NotBlank()]
+ ])
+ ->add("day", "choice", [
+ "choices" => $this->getDay(),
+ "label" => $this->translator->trans("Day", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-day"],
+ "required" => false,
+ "multiple" => true,
+ "attr" => array()
+ ])
+ ->add("begin", "time", [
+ "label" => $this->translator->trans("Begin", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-begin"],
+ "input" => "string",
+ "widget" => "single_text",
+ "required" => false,
+ "attr" => array()
+ ])
+ ->add("end", "time", [
+ "label" => $this->translator->trans("End", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-end"],
+ "input" => "string",
+ "widget" => "single_text",
+ "required" => false,
+ "attr" => array()
+ ]);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getName()
+ {
+ return "lps-area-schedule-create";
+ }
+}
diff --git a/local/modules/LivraisonParSecteurs/Form/ScheduleForm.php b/local/modules/LivraisonParSecteurs/Form/ScheduleForm.php
deleted file mode 100644
index 7b5189e6..00000000
--- a/local/modules/LivraisonParSecteurs/Form/ScheduleForm.php
+++ /dev/null
@@ -1,40 +0,0 @@
-formBuilder
- ->add(
- 'price',
- 'number',
- [
- 'constraints' => [new Constraints\NotBlank()],
- 'required' => true,
- 'label' => $this->translator->trans('Delivery price', [], LivraisonParSecteurs::DOMAIN_NAME),
- 'label_attr' => ['for' => 'price'],
- 'attr' => array()
- ]);
- }
-
- /**
- * @inheritDoc
- */
- public function getName()
- {
- return "lps-area-schedule.update";
- }
-}
diff --git a/local/modules/LivraisonParSecteurs/Form/ScheduleUpdateForm.php b/local/modules/LivraisonParSecteurs/Form/ScheduleUpdateForm.php
new file mode 100644
index 00000000..3afcfd83
--- /dev/null
+++ b/local/modules/LivraisonParSecteurs/Form/ScheduleUpdateForm.php
@@ -0,0 +1,68 @@
+formBuilder
+ ->add(
+ "area_id",
+ "integer",
+ [
+ "required" => true,
+ "constraints" => [new Constraints\NotBlank()]
+ ])
+ ->add(
+ "area-schedule_id",
+ "integer",
+ [
+ "required" => true,
+ "constraints" => [new Constraints\NotBlank()]
+ ])
+ ->add("day", "choice", [
+ "choices" => LivraisonParSecteurs::getDayLabel(null),
+ "label" => $this->translator->trans("Delivery day", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-day"],
+ "required" => true,
+ "multiple" => false,
+ "attr" => array()
+ ])
+ ->add("begin", "time", [
+ "label" => $this->translator->trans("Delivery beginning time", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-begin"],
+ "input" => "string",
+ "widget" => "single_text",
+ "required" => true,
+ "attr" => array()
+ ])
+ ->add("end", "time", [
+ "label" => $this->translator->trans("Delivery ending time", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ "label_attr" => ["for" => "attr-area-schedule-end"],
+ "input" => "string",
+ "widget" => "single_text",
+ "required" => true,
+ "attr" => array()
+ ]);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function getName()
+ {
+ return "lps-area-schedule-update";
+ }
+}
diff --git a/local/modules/LivraisonParSecteurs/I18n/fr_FR.php b/local/modules/LivraisonParSecteurs/I18n/fr_FR.php
index 1fb4f419..5db234ba 100644
--- a/local/modules/LivraisonParSecteurs/I18n/fr_FR.php
+++ b/local/modules/LivraisonParSecteurs/I18n/fr_FR.php
@@ -2,15 +2,29 @@
return array(
'Active' => 'Actif',
'Actions' => 'Actions',
+ 'Add a new delivery day' => 'Ajouter un jour de livraison',
'Area name' => 'Nom du secteur',
- 'Cities' => 'Communes couvertes',
+ 'Cities' => 'Communes desservies',
+ 'Delete an entry of schedule' => 'Supprimer un jour de livraison',
+ 'Delivery beginning time' => 'Début de la tournée',
+ 'Delivery day' => 'Jour de livraison',
'Delivery days' => 'Jours de livraison',
+ 'Delivery ending time' => 'Fin de la tournée',
'Delivery price' => 'Frais de livraison',
+ 'Do you really want to delete this delivery day ?' => 'Voulez-vous réellement supprimer ce jour de livraison ?',
'Edit an area' => 'Modifier le secteur',
'General' => 'Général',
'Home delivery cost' => 'Frais de livraison à domicile',
+ 'Modify a schedule' => 'Modifier un jour de livraison',
'My areas' => 'Mes secteurs de livraison',
'Save' => 'Sauvegarder',
- 'Schedule' => 'Horaires',
- 'Title of config view' => 'Module LivraisonParSecteurs - Configuration'
+ 'Schedule' => 'Horaires de livraison',
+ 'Title of config view' => 'Module LivraisonParSecteurs - Configuration',
+ 'Monday' => 'Lundi',
+ 'Tuesday' => 'Mardi',
+ 'Wednesday' => 'Mercredi',
+ 'Thursday' => 'Jeudi',
+ 'Friday' => 'Vendredi',
+ 'Saturday' => 'Samedi',
+ 'Sunday' => 'Dimanche',
);
diff --git a/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php b/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php
index 5fe7093d..53382cfd 100644
--- a/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php
+++ b/local/modules/LivraisonParSecteurs/LivraisonParSecteurs.php
@@ -2,7 +2,7 @@
namespace LivraisonParSecteurs;
-use LivraisonParSecteurs\Model\LpsSecteurQuery;
+use LivraisonParSecteurs\Model\LpsAreaQuery;
use Propel\Runtime\Connection\ConnectionInterface;
use Thelia\Core\Translation\Translator;
use Thelia\Install\Database;
@@ -12,6 +12,7 @@ use Thelia\Model\OrderPostage;
use Thelia\Module\AbstractDeliveryModule;
use Thelia\Module\Exception\DeliveryException;
+
class LivraisonParSecteurs extends AbstractDeliveryModule
{
/** @var string */
@@ -75,7 +76,35 @@ class LivraisonParSecteurs extends AbstractDeliveryModule
);
}
- return LpsSecteurQuery::create()->findOneByActive(1)->getPrice();
+ return LpsAreaQuery::create()->findOneByActive(1)->getPrice();
}
+ static public function getDayLabel($int)
+ {
+ $translator = Translator::getInstance();
+
+ if ($int === null) {
+ return [
+ $translator->trans("Monday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Tuesday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Wednesday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Thursday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Friday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Saturday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Sunday", [], LivraisonParSecteurs::MESSAGE_DOMAIN)
+ ];
+ }
+ else
+ {
+ return [
+ $translator->trans("Monday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Tuesday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Wednesday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Thursday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Friday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Saturday", [], LivraisonParSecteurs::MESSAGE_DOMAIN),
+ $translator->trans("Sunday", [], LivraisonParSecteurs::MESSAGE_DOMAIN)
+ ][$int];
+ }
+ }
}
diff --git a/local/modules/LivraisonParSecteurs/Loop/AreaLoop.php b/local/modules/LivraisonParSecteurs/Loop/AreaLoop.php
index f50d6885..32cb562f 100644
--- a/local/modules/LivraisonParSecteurs/Loop/AreaLoop.php
+++ b/local/modules/LivraisonParSecteurs/Loop/AreaLoop.php
@@ -2,6 +2,8 @@
namespace LivraisonParSecteurs\Loop;
+use LivraisonParSecteurs\LivraisonParSecteurs;
+use LivraisonParSecteurs\Model\LpsAreaScheduleQuery;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
@@ -30,12 +32,20 @@ class AreaLoop extends BaseLoop implements PropelSearchLoopInterface
foreach ($loopResult->getResultDataCollection() as $lps_area) {
$loopResultRow = new LoopResultRow($lps_area);
+
+ $schedule = LpsAreaScheduleQuery::create()->findByIdArea($lps_area->getId());
+ $deliveryDays = "";
+ foreach ($schedule as $day) {
+ $deliveryDays .= LivraisonParSecteurs::getDayLabel($day->getDay()) . ', ';
+ }
+ $deliveryDays = substr($deliveryDays, 0, strlen($deliveryDays)-2);
+
$loopResultRow
->set("ID", $lps_area->getId())
->set("TITLE", $lps_area->getTitle())
->set("ACTIVE", $lps_area->getActive())
->set("PRICE", $lps_area->getPrice())
- ->set("DELIVERY_DAYS", "Lundi....")
+ ->set("DELIVERY_DAYS", $deliveryDays)
;
$loopResult->addRow($loopResultRow);
}
diff --git a/local/modules/LivraisonParSecteurs/Loop/AreaScheduleLoop.php b/local/modules/LivraisonParSecteurs/Loop/AreaScheduleLoop.php
index e720df88..2b1ef92c 100644
--- a/local/modules/LivraisonParSecteurs/Loop/AreaScheduleLoop.php
+++ b/local/modules/LivraisonParSecteurs/Loop/AreaScheduleLoop.php
@@ -2,6 +2,7 @@
namespace LivraisonParSecteurs\Loop;
+use LivraisonParSecteurs\LivraisonParSecteurs;
use LivraisonParSecteurs\Model\LpsAreaScheduleQuery;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
@@ -9,7 +10,7 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
-use LivraisonParSecteurs\Model\LpsAreaQuery;
+
/**
* Class AreaScheduleLoop
@@ -32,11 +33,11 @@ class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
$loopResultRow = new LoopResultRow($lps_area_schedule);
$loopResultRow
- ->set("ID", $lps_area->getId())
- ->set("TITLE", $lps_area->getTitle())
- ->set("ACTIVE", $lps_area->getActive())
- ->set("PRICE", $lps_area->getPrice())
- ->set("DELIVERY_DAYS", "Lundi....")
+ ->set("ID", $lps_area_schedule->getId())
+ ->set("DAY", $lps_area_schedule->getDay())
+ ->set("DAY_LABEL", LivraisonParSecteurs::getDayLabel($lps_area_schedule->getDay()))
+ ->set("BEGIN", $lps_area_schedule->getBeginTime())
+ ->set("END", $lps_area_schedule->getEndTime())
;
$loopResult->addRow($loopResultRow);
}
@@ -49,7 +50,7 @@ class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
protected function getArgDefinitions()
{
return new ArgumentCollection(
- Argument::createIntListTypeArgument('id_area')
+ Argument::createIntListTypeArgument('area_id')
);
}
@@ -59,9 +60,10 @@ class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
public function buildModelCriteria()
{
$query = LpsAreaScheduleQuery::create();
- $query->filterByIdArea($this->getIdArea());
+ if (null != $id = $this->getAreaId()) {
+ $query->filterByIdArea($id);
+ }
- return $query->orderByDay()->orderByBeginTime();
+ return $query->orderByDay();
}
-
}
diff --git a/local/modules/LivraisonParSecteurs/templates/backOffice/default/deliveryarea-edit.html b/local/modules/LivraisonParSecteurs/templates/backOffice/default/deliveryarea-edit.html
index 6bb18386..f88c524a 100644
--- a/local/modules/LivraisonParSecteurs/templates/backOffice/default/deliveryarea-edit.html
+++ b/local/modules/LivraisonParSecteurs/templates/backOffice/default/deliveryarea-edit.html
@@ -5,6 +5,11 @@
{block name="check-access"}update{/block}
{block name="check-module"}LivraisonParSecteurs{/block}
+{block name="after-bootstrap-css"}
+
+{/block}
+
{block name="main-content"}
{assign "area_id" $smarty.get.area_id}
@@ -14,7 +19,6 @@
{intl l='Edit an area' d='livraisonparsecteurs'} : {loop name="area" type="lps_area" id={$area_id}}{$TITLE}{/loop}
- {hookblock name="area.tabs" area=$area_id}