Browse Source

Refactor services

feature/export_comptable
Fab 4 years ago
parent
commit
d37dc97602
12 changed files with 151 additions and 325 deletions
  1. +0
    -2
      ShopBundle/Controller/Backend/OrderController.php
  2. +4
    -3
      ShopBundle/Controller/CitiesController.php
  3. +0
    -58
      ShopBundle/Services/CityUtils.php
  4. +0
    -54
      ShopBundle/Services/DateUtils.php
  5. +1
    -1
      ShopBundle/Services/Order/OrderUtils.php
  6. +2
    -18
      ShopBundle/Services/Order/OrderUtilsReductionTrait.php
  7. +0
    -43
      ShopBundle/Services/PointSaleUtils.php
  8. +0
    -45
      ShopBundle/Services/Price.php
  9. +1
    -1
      ShopBundle/Services/ProductFamilyUtils.php
  10. +0
    -33
      ShopBundle/Services/TaxRateUtils.php
  11. +0
    -35
      ShopBundle/Services/UnitUtils.php
  12. +143
    -32
      ShopBundle/Services/Utils.php

+ 0
- 2
ShopBundle/Controller/Backend/OrderController.php View File

@@ -2,7 +2,6 @@

namespace Lc\ShopBundle\Controller\Backend;

use App\Entity\OrderShop;
use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents;
use Lc\ShopBundle\Context\OrderPaymentInterface;
use Lc\ShopBundle\Context\OrderProductInterface;
@@ -15,7 +14,6 @@ use Lc\ShopBundle\Form\Backend\Order\OrderProductsType;
use Lc\ShopBundle\Form\Backend\Order\OrderReductionCartType;
use Lc\ShopBundle\Form\Backend\Order\OrderReductionCreditType;
use Lc\ShopBundle\Form\Backend\Order\OrderStatusType;
use Lc\ShopBundle\Model\OrderPayment;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Response;

+ 4
- 3
ShopBundle/Controller/CitiesController.php View File

@@ -3,6 +3,7 @@
namespace Lc\ShopBundle\Controller ;

use Lc\ShopBundle\Services\CityUtils;
use Lc\ShopBundle\Services\Utils;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -11,7 +12,7 @@ class CitiesController extends AbstractController
{
protected $cities ;

public function __construct(CityUtils $cities)
public function __construct(Utils $cities)
{
$this->cities = $cities ;
}
@@ -32,8 +33,8 @@ class CitiesController extends AbstractController
}

$result = array_merge(
json_decode($this->cities->callApi('get', 'communes', array_merge($data, ['codeRegion' => 27]))),
json_decode($this->cities->callApi('get', 'communes', array_merge($data, ['codeRegion' => 44])))
json_decode($this->utils->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 27]))),
json_decode($this->utils->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 44])))
);

$return = [] ;

+ 0
- 58
ShopBundle/Services/CityUtils.php View File

@@ -1,58 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

class CityUtils
{

function callApi($method, $url, $data = false)
{
$url = 'https://geo.api.gouv.fr/'.$url ;
$curl = curl_init();

switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);

if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}

// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($curl);

curl_close($curl);

return $result;
}

public function getZipByCity($city)
{
$zip = null ;
$returnCitiesSearchZip = json_decode($this->callApi('get', 'communes', ['nom' => $city, 'fields' => 'nom,codesPostaux'])) ;

if($returnCitiesSearchZip) {
foreach($returnCitiesSearchZip as $citySearchZip) {
if(strtolower(trim($city)) == strtolower(trim($citySearchZip->nom))) {
$zip = $citySearchZip->codesPostaux[0] ;
}
}
}

return $zip ;
}
}

+ 0
- 54
ShopBundle/Services/DateUtils.php View File

@@ -1,54 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

class DateUtils
{
public function date($format, $timestamp)
{
setlocale(LC_TIME, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
return strftime($format, $timestamp) ;
}

public function getNextDay($day)
{
return new \DateTime('next '.$day) ;
}

public function getNextDayByNumber($number)
{
return $this->getNextDay($this->getDayByNumber($number, 'en')) ;
}

public function getDayByNumber($number, $lang = 'fr')
{
if($lang == 'fr') {
$daysArray = [
1 => 'Lundi',
2 => 'Mardi',
3 => 'Mercredi',
4 => 'Jeudi',
5 => 'Vendredi',
6 => 'Samedi',
7 => 'Dimanche'
] ;
}
else {
$daysArray = [
1 => 'Monday',
2 => 'Tuesday',
3 => 'Wednesday',
4 => 'Thursday',
5 => 'Friday',
6 => 'Saturday',
7 => 'Sunday',
] ;
}

if(isset($daysArray[$number])) {
return $daysArray[$number] ;
}

return '' ;
}
}

ShopBundle/Services/OrderUtils.php → ShopBundle/Services/Order/OrderUtils.php View File

@@ -1,6 +1,6 @@
<?php

namespace Lc\ShopBundle\Services;
namespace Lc\ShopBundle\Services\Order;

use App\Entity\OrderProductReductionCatalog;
use App\Entity\OrderShop;

ShopBundle/Services/OrderUtilsReductionTrait.php → ShopBundle/Services/Order/OrderUtilsReductionTrait.php View File

@@ -1,28 +1,12 @@
<?php

namespace Lc\ShopBundle\Services;

use App\Entity\OrderProductReductionCatalog;
use App\Entity\OrderShop;
use Doctrine\ORM\EntityManagerInterface;
use Lc\ShopBundle\Context\DocumentInterface;
use Lc\ShopBundle\Context\MerchantUtilsInterface;
use Lc\ShopBundle\Context\OrderPaymentInterface;
namespace Lc\ShopBundle\Services\Order;

use Lc\ShopBundle\Context\OrderReductionCartInterface;
use Lc\ShopBundle\Context\OrderProductInterface;
use Lc\ShopBundle\Context\OrderReductionCreditInterface;
use Lc\ShopBundle\Context\OrderShopInterface;
use Lc\ShopBundle\Context\OrderStatusHistoryInterface;
use Lc\ShopBundle\Context\OrderStatusInterface;
use Lc\ShopBundle\Context\ProductFamilyUtilsInterface;
use Lc\ShopBundle\Context\ReductionCartInterface;
use Lc\ShopBundle\Context\ReductionCreditInterface;
use Lc\ShopBundle\Context\UserInterface;
use Lc\ShopBundle\Model\Document;
use Lc\ShopBundle\Form\Backend\Order\OrderReductionCreditType;
use Lc\ShopBundle\Model\ReductionCart;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Security;

trait OrderUtilsReductionTrait
{

+ 0
- 43
ShopBundle/Services/PointSaleUtils.php View File

@@ -1,43 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

use Doctrine\ORM\EntityManagerInterface;
use Lc\ShopBundle\Context\PointSaleInterface;
use Lc\ShopBundle\Context\UserInterface;
use Lc\ShopBundle\Context\UserPointSaleInterface;

class PointSaleUtils
{
protected $em ;

public function __construct(EntityManagerInterface $em)
{
$this->em = $em ;
}

public function isUserLinkedToPointSale(UserInterface $user, PointSaleInterface $pointSale)
{
foreach($user->getUserPointSales() as $userPointSale) {
if($userPointSale->getPointSale()->getId() == $pointSale->getId()) {
return true ;
}
}
return false ;
}

public function linkUserToPointSale(UserInterface $user, PointSaleInterface $pointSale)
{
if(!$this->isUserLinkedToPointSale($user, $pointSale)) {
$userPointSaleClass = $this->em->getClassMetadata(UserPointSaleInterface::class)->getName();
$userPointSale = new $userPointSaleClass ;

$userPointSale->setUser($user) ;
$userPointSale->setPointSale($pointSale) ;

$this->em->persist($userPointSale);
$this->em->flush() ;
}
}

}

+ 0
- 45
ShopBundle/Services/Price.php View File

@@ -1,45 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

class Price
{
protected $price ;
protected $taxRate ;

public function __construct($price, $taxRate)
{
$this->price = $price ;
$this->taxRate = $taxRate ;
}

public function withTax()
{
return self::getPriceWithTax(
$this->price,
$this->taxRate
) ;
}

public function withoutTax()
{
return $this->price ;
}

/* Static */

public static function priceTwoDecimals($number)
{
return number_format(( ($number * 100)) / 100, 2) ;
}

public static function getPriceWithoutTax($priceWithTax, $taxRate)
{
return floatval($priceWithTax) / ($taxRate + 1);
}

public static function getPriceWithTax($priceWithoutTax, $taxRate)
{
return self::priceTwoDecimals(floatval($priceWithoutTax) * ($taxRate + 1)) ;
}
}

+ 1
- 1
ShopBundle/Services/ProductFamilyUtils.php View File

@@ -2,7 +2,7 @@

namespace Lc\ShopBundle\Services ;

use Lc\ShopBundle\Price\Services\ProductPriceUtils;
use Lc\ShopBundle\Services\Price\ProductPriceUtils;

class ProductFamilyUtils
{

+ 0
- 33
ShopBundle/Services/TaxRateUtils.php View File

@@ -1,33 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

use Doctrine\ORM\EntityManagerInterface;
use Lc\ShopBundle\Context\MerchantUtilsInterface;
use Lc\ShopBundle\Context\TaxRateInterface;

class TaxRateUtils
{
protected $em ;
protected $merchantUtils ;

public function __construct(EntityManagerInterface $em, MerchantUtilsInterface $merchantUtils)
{
$this->em = $em ;
$this->merchantUtils = $merchantUtils ;
}

public function getTaxRatesList()
{
$taxRatesList =array();
$taxRates = $this->em->getRepository(TaxRateInterface::class)->findAll();
foreach ($taxRates as $taxRate){
$taxRatesList[$taxRate->getId()]['title'] = $taxRate->getTitle();
$taxRatesList[$taxRate->getId()]['value'] = $taxRate->getValue();
}

$taxRatesList['default']['title'] = $this->merchantUtils->getMerchantCurrentTaxRate()->getTitle();
$taxRatesList['default']['value'] = $this->merchantUtils->getMerchantCurrentTaxRate()->getValue();
return $taxRatesList;
}
}

+ 0
- 35
ShopBundle/Services/UnitUtils.php View File

@@ -1,35 +0,0 @@
<?php

namespace Lc\ShopBundle\Services ;

use Doctrine\ORM\EntityManagerInterface;
use Lc\ShopBundle\Context\UnitInterface;

class UnitUtils
{
protected $em ;
protected $merchantUtils ;

public function __construct(EntityManagerInterface $em)
{
$this->em = $em ;
}

public function getUnitsList()
{
$unitsList =array();
$units = $this->em->getRepository(UnitInterface::class)->findAll();
foreach ($units as $unit){
$unitsList[$unit->getId()]['unit'] = $unit->getUnit();
$unitsList[$unit->getId()]['wordingUnit'] = $unit->getWordingUnit();
$unitsList[$unit->getId()]['wording'] = $unit->getWording();
$unitsList[$unit->getId()]['wordingShort'] = $unit->getWordingShort();
$unitsList[$unit->getId()]['coefficient'] = $unit->getCoefficient();
$unitsList[$unit->getId()]['unitReference'] = $unit->getUnitReference()->getId();
}

return $unitsList;
}
}



+ 143
- 32
ShopBundle/Services/Utils.php View File

@@ -6,8 +6,11 @@ use Cocur\Slugify\Slugify;
use Doctrine\ORM\EntityManagerInterface;
use Lc\ShopBundle\Context\MerchantUtilsInterface;
use Lc\ShopBundle\Context\PageInterface;
use Lc\ShopBundle\Context\PointSaleInterface;
use Lc\ShopBundle\Context\TaxRateInterface;
use Lc\ShopBundle\Context\UnitInterface;
use Lc\ShopBundle\Context\UserInterface;
use Lc\ShopBundle\Context\UserPointSaleInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\ParameterBag;

@@ -15,6 +18,7 @@ class Utils
{
protected $em ;
protected $parameterBag ;
protected $merchantUtils ;

public function __construct(EntityManagerInterface $em, ParameterBagInterface $parameterBag)
{
@@ -22,38 +26,6 @@ class Utils
$this->parameterBag = $parameterBag ;
}

// @todo : À supprimer et passer dans DateUtils (gérer du coup le cas du modèle DeliverySlot qui dépend de cette fonction)
public static function getDayByNumber($number, $lang = 'fr')
{
if($lang == 'fr') {
$daysArray = [
1 => 'Lundi',
2 => 'Mardi',
3 => 'Mercredi',
4 => 'Jeudi',
5 => 'Vendredi',
6 => 'Samedi',
7 => 'Dimanche'
] ;
}
else {
$daysArray = [
1 => 'Monday',
2 => 'Tuesday',
3 => 'Wednesday',
4 => 'Thursday',
5 => 'Friday',
6 => 'Saturday',
7 => 'Sunday',
] ;
}

if(isset($daysArray[$number])) {
return $daysArray[$number] ;
}

return '' ;
}

public function getElementByDevAlias($devAlias, $class = PageInterface::class)
{
@@ -96,4 +68,143 @@ class Utils
return $slugify->slugify($string) ;
}

public function getUnitsList()
{
$unitsList =array();
$units = $this->em->getRepository(UnitInterface::class)->findAll();
foreach ($units as $unit){
$unitsList[$unit->getId()]['unit'] = $unit->getUnit();
$unitsList[$unit->getId()]['wordingUnit'] = $unit->getWordingUnit();
$unitsList[$unit->getId()]['wording'] = $unit->getWording();
$unitsList[$unit->getId()]['wordingShort'] = $unit->getWordingShort();
$unitsList[$unit->getId()]['coefficient'] = $unit->getCoefficient();
$unitsList[$unit->getId()]['unitReference'] = $unit->getUnitReference()->getId();
}

return $unitsList;
}


public function isUserLinkedToPointSale(UserInterface $user, PointSaleInterface $pointSale)
{
foreach($user->getUserPointSales() as $userPointSale) {
if($userPointSale->getPointSale()->getId() == $pointSale->getId()) {
return true ;
}
}
return false ;
}

public function linkUserToPointSale(UserInterface $user, PointSaleInterface $pointSale)
{
if(!$this->isUserLinkedToPointSale($user, $pointSale)) {
$userPointSaleClass = $this->em->getClassMetadata(UserPointSaleInterface::class)->getName();
$userPointSale = new $userPointSaleClass ;

$userPointSale->setUser($user) ;
$userPointSale->setPointSale($pointSale) ;

$this->em->persist($userPointSale);
$this->em->flush() ;
}
}

function callCitiesApi($method, $url, $data = false)
{
$url = 'https://geo.api.gouv.fr/'.$url ;
$curl = curl_init();

switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);

if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}

// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($curl);

curl_close($curl);

return $result;
}

public function getZipByCity($city)
{
$zip = null ;
$returnCitiesSearchZip = json_decode($this->callCitiesApi('get', 'communes', ['nom' => $city, 'fields' => 'nom,codesPostaux'])) ;

if($returnCitiesSearchZip) {
foreach($returnCitiesSearchZip as $citySearchZip) {
if(strtolower(trim($city)) == strtolower(trim($citySearchZip->nom))) {
$zip = $citySearchZip->codesPostaux[0] ;
}
}
}

return $zip ;
}
public function date($format, $timestamp)
{
setlocale(LC_TIME, 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8');
return strftime($format, $timestamp) ;
}

public function getNextDay($day)
{
return new \DateTime('next '.$day) ;
}

public function getNextDayByNumber($number)
{
return $this->getNextDay($this->getDayByNumber($number, 'en')) ;
}

public function getDayByNumber($number, $lang = 'fr')
{
if($lang == 'fr') {
$daysArray = [
1 => 'Lundi',
2 => 'Mardi',
3 => 'Mercredi',
4 => 'Jeudi',
5 => 'Vendredi',
6 => 'Samedi',
7 => 'Dimanche'
] ;
}
else {
$daysArray = [
1 => 'Monday',
2 => 'Tuesday',
3 => 'Wednesday',
4 => 'Thursday',
5 => 'Friday',
6 => 'Saturday',
7 => 'Sunday',
] ;
}

if(isset($daysArray[$number])) {
return $daysArray[$number] ;
}

return '' ;
}

}

Loading…
Cancel
Save