Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.58 KB | None | 0 0
  1. /**
  2.      * Метод отправляет подарок из матрицы геймификации указанному фанату
  3.      *
  4.      * @param GamificationMatrixGift $gift
  5.      * @param Fan $fan
  6.      */
  7.  
  8.     public function sendGift(GamificationMatrixGift $gift, Fan $fan)
  9.     {
  10. //        const GIFT_TYPE_GIFT           = 1; Подарок
  11. //        const GIFT_TYPE_PROMO          = 2; Промокод
  12. //        const GIFT_TYPE_ACTION         = 3; Акция
  13. //        const GIFT_TYPE_MAIL           = 4; Уведомление администратору
  14. //
  15.  
  16.         // $this храниит текущий объект fanGamificationProgress
  17.  
  18.         // Начинаем сбор данных для их последующего включения в шаблон письма
  19.         $data = [];
  20.         $data["name"] = $fan->firstName;
  21.         $data["sex"] = $fan->sex; // Нужно для Дорогой/Дорогая в начале письма
  22.         $data["matchName"] = $this->match ? $this->match->name : null;
  23.  
  24.         switch ($gift->giftType) {
  25.             case 1:
  26.                 // TODO Пока пропускаем
  27.                 //PromocodeSettings::model()->linkPromocodeToFan($fan);
  28.                 // Send mail тут по шаблону подарок
  29.                 break;
  30.             case 2:
  31.                 $promocode = PromocodeSettings::model()->linkPromocodeToFan($fan);
  32.  
  33.                 // TODO Send mail тут по шаблону промокод
  34.  
  35.                 $this->promocodeId = $promocode->id;
  36.                 $this->save();
  37.                 break;
  38.             case 3:
  39.                 $criteria = new CDbCriteria();
  40.                 $criteria->compare('actionId', $gift->actionId);
  41.                 $action = Action::model()->find($criteria);
  42.                 ActionFan::model()->linkFansToAction($action, [$fan->id]);
  43.  
  44.                 // Собираем данные для шаблона письма "Акция"
  45.                 $data["actionName"] = $action->name;
  46.                 $data["actionDescription"] = $action->description;
  47.  
  48.                 // TODO Тут отправить письмо по шаблону акция
  49.  
  50.                 $this->actionId = $action->id;
  51.                 break;
  52.             case 4:
  53.                 $criteria = new CDbCriteria();
  54.                 $criteria->compare('gamificationId', $this->gamificationId);
  55.                 $gs = GamificationSettings::model()->find($criteria);
  56.                 $email = $gs->email;
  57.                 // TODO Отправить письмо по шаблону "Уведомление администрации"
  58.                 break;
  59.         }
  60.  
  61.     }
  62.  
  63.     /**
  64.      * Метод обработки подарка в рамках геймификации
  65.      *
  66.      * @param Fan $fan
  67.      * @param int|null $matchId
  68.      */
  69.  
  70.     public function processGift (Fan $fan, int $matchId = null)
  71.     {
  72.         $fanGamificationProgress = new FanGamificationProgress();
  73.  
  74.         $fanGamificationProgress->fanId = $fan->id;
  75.         $fanGamificationProgress->matchId = $matchId;
  76.         $fanGamificationProgress->createDate = time();
  77.  
  78.         // TODO Как получить gamificationId, matrixId?? и соответсвенно как получить подарок, чтобы передать в sendGift
  79.  
  80.         // TODO Если несколько вариантов, отправляем уведомление и делаем $fanGamificationProgress->save();
  81.         // Если один, то
  82.         // $fanGamificationProgress->sendGift($gift, $fan)
  83.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement