You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 line
2.4KB

  1. <?php
  2. namespace common\services;
  3. use common\helpers\Password;
  4. use common\models\Producer;
  5. use common\models\UserProducer;
  6. class ProducerService
  7. {
  8. public function createInstance()
  9. {
  10. $producer = new Producer;
  11. $producer->order_deadline = 20;
  12. $producer->order_delay = 1;
  13. return $producer;
  14. }
  15. public function init($producer)
  16. {
  17. $this->initSlug($producer);
  18. $this->initCode($producer);
  19. }
  20. public function initSlug($producer)
  21. {
  22. $producerRepository = Yii::$app->logic->getProducerContainer()->getRepository();
  23. $cptSlug = 0 ;
  24. do {
  25. $slug = \common\helpers\Url::slugify($producer->name) ;
  26. if($cptSlug) {
  27. $slug .= $cptSlug ;
  28. }
  29. $producer->slug = $slug ;
  30. $cptSlug ++ ;
  31. } while($producerRepository->getOneBySlug($producer->slug)) ;
  32. }
  33. public function initCode($producer)
  34. {
  35. $producer->code = Password::generate();
  36. }
  37. public function sendEmailNewProducer($producer)
  38. {
  39. Yii::$app->mailer->compose(
  40. [
  41. 'html' => 'new-producer-html',
  42. 'text' => 'new-producer-text'
  43. ], [
  44. 'producer' => $producer
  45. ])
  46. ->setTo(Yii::$app->params['adminEmail'])
  47. ->setFrom([Yii::$app->params['adminEmail'] => 'distrib'])
  48. ->setSubject('[Opendistrib] Nouveau producteur')
  49. ->send();
  50. }
  51. /**
  52. * Lie un utilisateur à un producteur.
  53. *
  54. * @param integer $id_user
  55. * @param integer $id_producer
  56. * @return UserProducer
  57. */
  58. public static function addUser($idUser, $idProducer, $bookmark = 1)
  59. {
  60. $userProducer = UserProducer::searchOne([
  61. 'user_producer.id_user' => $idUser,
  62. 'user_producer.id_producer' => $idProducer
  63. ]);
  64. if (!$userProducer) {
  65. $newUserProducer = new UserProducer;
  66. $newUserProducer->id_producer = $idProducer;
  67. $newUserProducer->id_user = $idUser;
  68. $newUserProducer->credit = 0;
  69. $newUserProducer->active = 1;
  70. $newUserProducer->bookmark = (int)$bookmark;
  71. $newUserProducer->save();
  72. } else {
  73. if (!$userProducer->active) {
  74. $userProducer->active = 1;
  75. $userProducer->save();
  76. }
  77. }
  78. return $userProducer;
  79. }
  80. }