public function run()
 {
     global $request;
     $idCategorie = $request->request->get("id");
     $arrObjItemshop = \Site\SiteHelper::getItemshopRepository()->findItemsByCategorie($idCategorie, true);
     $this->arrayTemplate["arrObjItemshop"] = $arrObjItemshop;
     $view = $this->template->render($this->arrayTemplate);
     $this->response->setContent($view);
     $this->response->send();
 }
 public function run()
 {
     global $request;
     $idItemshop = $request->query->get("id_recu");
     $objItemShop = \Site\SiteHelper::getItemshopRepository()->find($idItemshop);
     $this->arrayTemplate["objItemShop"] = $objItemShop;
     $this->arrayTemplate["imgItem"] = getimagesize("../../images/items/" . $objItemShop->getIdItem() . ".png");
     $view = $this->template->render($this->arrayTemplate);
     $this->response->setContent($view);
     $this->response->send();
 }
Example #3
0
 public function run()
 {
     $idCategorie = 8;
     $arrObjItemshop = \Site\SiteHelper::getItemshopRepository()->findItemsByCategorie($idCategorie, true);
     $templateTop = $this->objTwig->loadTemplate("ajaxCategorieGetArticles.html5.twig");
     $viewItemshopDefault = $templateTop->render(["arrObjItemshop" => $arrObjItemshop]);
     $arrObjItemshopCategoriesCache = \Site\SiteHelper::getItemshopCategoriesRepository()->findCategoriesNotEmpty();
     $this->arrayTemplate["arrObjItemshopCategories"] = $arrObjItemshopCategoriesCache;
     $this->arrayTemplate["viewItemshopDefault"] = $viewItemshopDefault;
     $view = $this->template->render($this->arrayTemplate);
     $this->response->setContent($view);
     $this->response->send();
 }
 public function run()
 {
     global $request;
     $em = \Shared\DoctrineHelper::getEntityManager();
     $articleId = $request->request->get("articleId");
     $articleTitre = $request->request->get("articleTitre");
     $articlePrix = $request->request->get("articlePrix");
     $articleCategorie = $request->request->get("articleCategorie");
     $articleNombre = $request->request->get("articleNombre");
     $articleType = $request->request->get("articleType");
     $articleVnum = $request->request->get("articleVnum");
     $articleTypeBonus = $request->request->get("articleTypeBonus");
     $articleDescriptionCourte = $request->request->get("articleDescriptionCourte");
     $articleDescriptionComplete = $request->request->get("articleDescriptionComplete");
     $articleEstActif = $request->request->get("articleEstActif");
     $articleEstImportant = $request->request->get("articleEstImportant");
     if ($articleId > 0) {
         $objItemShop = \Site\SiteHelper::getItemshopRepository()->find($articleId);
     } else {
         $objItemShop = new \Site\Entity\Itemshop();
     }
     if ($articleEstActif !== null && $articleEstActif == "true") {
         $objItemShop->setEstActif(1);
     } else {
         $objItemShop->setEstActif(0);
     }
     if ($articleEstImportant !== null && $articleEstImportant == "true") {
         $objItemShop->setEstImportant(1);
     } else {
         $objItemShop->setEstImportant(0);
     }
     $objItemShop->setCat($articleCategorie);
     $objItemShop->setFullDescription($articleDescriptionComplete);
     if ($articleType == 2) {
         $objItemShop->setIdItem($articleTypeBonus);
     } else {
         $objItemShop->setIdItem($articleVnum);
     }
     $objItemShop->setInfoItem($articleDescriptionCourte);
     $objItemShop->setNameItem($articleTitre);
     $objItemShop->setNbItem($articleNombre);
     $objItemShop->setPrix($articlePrix);
     $objItemShop->setType($articleType);
     $em->persist($objItemShop);
     $em->flush();
     $result = array('result' => true, 'reasons' => "");
     echo json_encode($result);
 }
 public function run()
 {
     global $request;
     $em = \Shared\DoctrineHelper::getEntityManager();
     $idArticle = $request->request->get("idArticle");
     if ($idArticle > 0) {
         $objItemshop = \Site\SiteHelper::getItemshopRepository()->find($idArticle);
         if ($objItemshop !== null) {
             $em->remove($objItemshop);
             $em->flush();
             $result = array('result' => true, 'reasons' => "");
         } else {
             $result = array('result' => false, 'reasons' => "L'article sélectionné n'éxiste pas.");
         }
     } else {
         $result = array('result' => false, 'reasons' => "Problème de transmission d'identifiant.");
     }
     echo json_encode($result);
 }
 public function run()
 {
     global $request;
     $mode = $request->query->get("mode");
     if ($mode == "create") {
         $objItemshop = new \Site\Entity\Itemshop();
     } else {
         if ($mode == "mod") {
             $id = $request->query->get("idArticle");
             $objItemshop = \Site\SiteHelper::getItemshopRepository()->find($id);
             if ($objItemshop->getType() != "2") {
                 $objItemProto = \Player\PlayerHelper::getItemProtoRepository()->find($objItemshop->getIdItem());
                 $this->arrayTemplate["objItemProto"] = $objItemProto;
             }
         }
     }
     $arrObjItemShopCategorie = \Site\SiteHelper::getItemshopCategoriesRepository()->findAll();
     $this->arrayTemplate["objItemshop"] = $objItemshop;
     $this->arrayTemplate["arrObjItemShopCategorie"] = $arrObjItemShopCategorie;
     $view = $this->template->render($this->arrayTemplate);
     $this->response->setContent($view);
     $this->response->send();
 }
Example #7
0
 public function run()
 {
     global $session;
     global $request;
     $em = \Shared\DoctrineHelper::getEntityManager();
     $arrResult["result"] = 1;
     $arrResult["isBonusCompte"] = 0;
     $idItem = $request->request->get("id_item");
     $nombreItem = $request->request->get("nombre_item");
     $nombreItemBuy = 0;
     $objItemshop = \Site\SiteHelper::getItemshopRepository()->findItem($idItem, true);
     if (!$this->checkEntrepotIS()) {
         $arrResult["result"] = 0;
         $arrResult["code"] = 8;
         echo json_encode($arrResult);
         die;
     }
     if ($objItemshop !== null) {
         /* ------- Si l'item est de type Simple 1 -------- */
         if ($objItemshop->getType() == 1) {
             //Si le Membre a assez de Cash
             if ($session->get("Cash") >= $objItemshop->getPrix() * $nombreItem) {
                 $flagItem = \Player\PlayerHelper::getItemProtoRepository()->findFlagByVnum($objItemshop->getIdItem());
                 $socketPct = \Player\PlayerHelper::getItemProtoRepository()->findSocketPctByVnum($objItemshop->getIdItem());
                 //Si empilable
                 if ($flagItem == 4 || $flagItem == 20 || $flagItem == 132 || $flagItem == 2052 || $flagItem == 8212) {
                     $nombreItemTotal = $nombreItem * $objItemshop->getNbItem();
                     $nombreItemPendingTotal = $nombreItemTotal;
                     $nombreItemOkTotal = 0;
                     $nombreCase = round($nombreItemTotal / 200);
                     for ($iModulo = 0; $iModulo <= $nombreCase; $iModulo++) {
                         if ($nombreItemTotal > 0) {
                             if ($this->checkFieldEntrepotIS() !== false) {
                                 $nextFreePosition = $this->checkFieldEntrepotIS();
                                 $objItem = new \Player\Entity\Item();
                                 $objItem->setOwnerId($this->objAccount->getId());
                                 $objItem->setWindow("MALL");
                                 $objItem->setPos($nextFreePosition);
                                 if ($nombreItemTotal > 200) {
                                     $objItem->setCount(200);
                                     $nombreItemTotal = $nombreItemTotal - 200;
                                     $nombreItemOkTotal = $nombreItemOkTotal + 200;
                                 } else {
                                     $objItem->setCount($nombreItemTotal);
                                     $nombreItemTotal = $nombreItemTotal - $nombreItemTotal;
                                     $nombreItemOkTotal = $nombreItemOkTotal + $nombreItemTotal;
                                 }
                                 $objItem->setVnum($objItemshop->getIdItem());
                                 $em->persist($objItem);
                                 $em->flush();
                                 $em->detach($objItem);
                                 $nombreItemBuy++;
                             } else {
                                 $arrResult = ["result" => 0, "code" => 5];
                                 break;
                             }
                         }
                     }
                     if ($arrResult["result"] == 0) {
                         if ($nombreItemOkTotal > 0) {
                             $prixTotal = $objItemshop->getPrix() * $nombreItem;
                             $proportionItemOk = $nombreItemOkTotal / $nombreItemPendingTotal * 100;
                             $soustraction = round($objItemshop->getPrix() * $nombreItem * $proportionItemOk / 100);
                             $prixTotal = $soustraction;
                             $arrResult["result"] = 1;
                         } else {
                             $prixTotal = 0;
                         }
                     } elseif ($arrResult["result"] == 1) {
                         $prixTotal = $objItemshop->getPrix() * $nombreItem;
                         $nombreItemBuy = $nombreItem;
                     }
                     $this->objAccount->setCash($this->objAccount->getCash() - $prixTotal);
                     $this->objAccount->setMileage($this->objAccount->getMileage() + $prixTotal);
                     $em->persist($this->objAccount);
                     $em->flush();
                     $session->set("Cash", $this->objAccount->getCash());
                     $session->set("Mileage", $this->objAccount->getMileage());
                 } else {
                     $nombreItemTotal = $nombreItem * $objItemshop->getNbItem();
                     $nombreItemPendingTotal = $nombreItemTotal;
                     $nombreItemOkTotal = 0;
                     for ($i = 0; $i < $nombreItemTotal; $i++) {
                         $nextFreePosition = $this->checkFieldEntrepotIS();
                         if ($nextFreePosition !== false) {
                             $objItem = new \Player\Entity\Item();
                             $objItem->setOwnerId($this->objAccount->getId());
                             $objItem->setWindow("MALL");
                             $objItem->setPos($nextFreePosition);
                             $objItem->setCount(1);
                             $objItem->setVnum($objItemshop->getIdItem());
                             if ($socketPct > 0) {
                                 for ($iSocket = 0; $iSocket < $socketPct; $iSocket++) {
                                     $func = "setSocket" . $iSocket;
                                     $objItem->{$func}("1");
                                 }
                             }
                             $em->persist($objItem);
                             $em->flush();
                             $em->detach($objItem);
                             $nombreItemBuy++;
                             $nombreItemOkTotal++;
                         } else {
                             $arrResult = ["result" => 0, "code" => 5];
                             break;
                         }
                     }
                     if ($arrResult["result"] == 0) {
                         if ($nombreItemOkTotal > 0) {
                             $prixTotal = $objItemshop->getPrix() * $nombreItem;
                             $proportionItemOk = $nombreItemOkTotal / $nombreItemPendingTotal * 100;
                             $soustraction = round($objItemshop->getPrix() * $nombreItem * $proportionItemOk / 100);
                             $prixTotal = $soustraction;
                             $arrResult["result"] = 1;
                         } else {
                             $prixTotal = 0;
                         }
                         if ($nombreItemBuy > 1) {
                             $nombreItemBuy = round($nombreItemBuy / $objItemshop->getNbItem());
                         }
                     } elseif ($arrResult["result"] == 1) {
                         $prixTotal = $objItemshop->getPrix() * $nombreItem;
                         $nombreItemBuy = $nombreItem;
                     }
                     $this->objAccount->setCash($this->objAccount->getCash() - $prixTotal);
                     $this->objAccount->setMileage($this->objAccount->getMileage() + $prixTotal);
                     $em->persist($this->objAccount);
                     $em->flush();
                     $session->set("Cash", $this->objAccount->getCash());
                     $session->set("Mileage", $this->objAccount->getMileage());
                 }
             } else {
                 $arrResult = ["result" => 0, "code" => 3];
             }
             /* ----------- Si l'item est de type durée ------------ */
         } elseif ($objItemshop->getType() == 2) {
             //Si le membre a assez de cash
             if ($session->get("Cash") >= $objItemshop->getPrix()) {
                 $anneeRestantMysql = 2037 - date("Y");
                 $dateActuel = \Carbon\Carbon::now();
                 switch ($objItemshop->getIdItem()) {
                     case 1:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getGoldExpire()->getTimestamp());
                         break;
                     case 2:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getSilverExpire()->getTimestamp());
                         break;
                     case 3:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getSafeboxExpire()->getTimestamp());
                         break;
                     case 4:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getAutolootExpire()->getTimestamp());
                         break;
                     case 5:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getFishMindExpire()->getTimestamp());
                         break;
                     case 6:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getMarriageFastExpire()->getTimestamp());
                         break;
                     case 7:
                         $dateBonusActuel = \Carbon\Carbon::createFromTimestamp($this->objAccount->getMoneyDropRateExpire()->getTimestamp());
                         break;
                 }
                 if ($objItemshop->getNbItem() == 9999) {
                     $dateBonusNew = $dateActuel->addYear($anneeRestantMysql);
                 } else {
                     if ($dateBonusActuel->gt($dateActuel)) {
                         $dateBonusNew = $dateBonusActuel->addDay($objItemshop->getNbItem());
                     } else {
                         $dateBonusNew = $dateActuel->addDay($objItemshop->getNbItem());
                     }
                 }
                 switch ($objItemshop->getIdItem()) {
                     case 1:
                         $this->objAccount->setGoldExpire($dateBonusNew);
                         break;
                     case 2:
                         $this->objAccount->setSilverExpire($dateBonusNew);
                         break;
                     case 3:
                         $this->objAccount->setSafeboxExpire($dateBonusNew);
                         break;
                     case 4:
                         $this->objAccount->setAutolootExpire($dateBonusNew);
                         break;
                     case 5:
                         $this->objAccount->setFishMindExpire($dateBonusNew);
                         break;
                     case 6:
                         $this->objAccount->setMarriageFastExpire($dateBonusNew);
                         break;
                     case 7:
                         $this->objAccount->setMoneyDropRateExpire($dateBonusNew);
                         break;
                 }
                 $prixTotal = $objItemshop->getPrix() * $nombreItem;
                 $this->objAccount->setCash($this->objAccount->getCash() - $prixTotal);
                 $this->objAccount->setMileage($this->objAccount->getMileage() + $prixTotal);
                 $em->persist($this->objAccount);
                 $em->flush();
                 $session->set("Cash", $this->objAccount->getCash());
                 $session->set("Mileage", $this->objAccount->getMileage());
                 $arrResult["isBonusCompte"] = 1;
             } else {
                 $arrResult = ["result" => 0, "code" => 3];
             }
             /* -------------- Si l'item est de type Mileage -------------- */
         } elseif ($objItemshop->getType() == 3) {
             //Si le membre a assez de marques
             if ($session->get("Mileage") >= $objItemshop->getPrix() * $nombreItem) {
                 $flagItem = \Player\PlayerHelper::getItemProtoRepository()->findFlagByVnum($objItemshop->getIdItem());
                 $socketPct = \Player\PlayerHelper::getItemProtoRepository()->findSocketPctByVnum($objItemshop->getIdItem());
                 //Si empilable
                 if ($flagItem == 4 || $flagItem == 20 || $flagItem == 132 || $flagItem == 2052 || $flagItem == 8212) {
                     $nombreItemTotal = $nombreItem * $objItemshop->getNbItem();
                     $nombreItemPendingTotal = $nombreItemTotal;
                     $nombreItemOkTotal = 0;
                     $nombreCase = round($nombreItemTotal / 200);
                     for ($iModulo = 0; $iModulo <= $nombreCase; $iModulo++) {
                         if ($nombreItemTotal > 0) {
                             if ($this->checkFieldEntrepotIS() !== false) {
                                 $nextFreePosition = $this->checkFieldEntrepotIS();
                                 $objItem = new \Player\Entity\Item();
                                 $objItem->setOwnerId($this->objAccount->getId());
                                 $objItem->setWindow("MALL");
                                 $objItem->setPos($nextFreePosition);
                                 if ($nombreItemTotal > 200) {
                                     $objItem->setCount(200);
                                     $nombreItemTotal = $nombreItemTotal - 200;
                                     $nombreItemOkTotal = $nombreItemOkTotal + 200;
                                 } else {
                                     $objItem->setCount($nombreItemTotal);
                                     $nombreItemTotal = $nombreItemTotal - $nombreItemTotal;
                                     $nombreItemOkTotal = $nombreItemOkTotal + $nombreItemTotal;
                                 }
                                 $objItem->setVnum($objItemshop->getIdItem());
                                 $em->persist($objItem);
                                 $em->flush();
                                 $em->detach($objItem);
                                 $nombreItemBuy++;
                             } else {
                                 $arrResult = ["result" => 0, "code" => 5];
                                 break;
                             }
                         }
                     }
                     if ($arrResult["result"] == 0) {
                         if ($nombreItemOkTotal > 0) {
                             $prixTotal = $objItemshop->getPrix() * $nombreItem;
                             $proportionItemOk = $nombreItemOkTotal / $nombreItemPendingTotal * 100;
                             $soustraction = round($objItemshop->getPrix() * $nombreItem * $proportionItemOk / 100);
                             $prixTotal = $soustraction;
                             $arrResult["result"] = 1;
                         } else {
                             $prixTotal = 0;
                         }
                     } elseif ($arrResult["result"] == 1) {
                         $prixTotal = $objItemshop->getPrix() * $nombreItem;
                         $nombreItemBuy = $nombreItem;
                     }
                     $this->objAccount->setMileage($this->objAccount->getMileage() - $prixTotal);
                     $em->persist($this->objAccount);
                     $em->flush();
                     $session->set("Mileage", $this->objAccount->getMileage());
                 } else {
                     $nombreItemTotal = $nombreItem * $objItemshop->getNbItem();
                     $nombreItemPendingTotal = $nombreItemTotal;
                     $nombreItemOkTotal = 0;
                     for ($i = 0; $i < $nombreItemTotal; $i++) {
                         $nextFreePosition = $this->checkFieldEntrepotIS();
                         if ($nextFreePosition !== false) {
                             $nextFreePosition = $this->checkFieldEntrepotIS();
                             $objItem = new \Player\Entity\Item();
                             $objItem->setOwnerId($this->objAccount->getId());
                             $objItem->setWindow("MALL");
                             $objItem->setPos($nextFreePosition);
                             $objItem->setCount(1);
                             $objItem->setVnum($objItemshop->getIdItem());
                             if ($socketPct > 0) {
                                 for ($iSocket = 0; $iSocket < $socketPct; $iSocket++) {
                                     $func = "setSocket" . $iSocket;
                                     $objItem->{$func}("1");
                                 }
                             }
                             $em->persist($objItem);
                             $em->flush();
                             $em->detach($objItem);
                             $nombreItemBuy++;
                             $nombreItemOkTotal++;
                         } else {
                             $arrResult = ["result" => 0, "code" => 5];
                             break;
                         }
                     }
                     if ($arrResult["result"] == 0) {
                         if ($nombreItemOkTotal > 0) {
                             $prixTotal = $objItemshop->getPrix() * $nombreItem;
                             $proportionItemOk = $nombreItemOkTotal / $nombreItemPendingTotal * 100;
                             $soustraction = round($objItemshop->getPrix() * $nombreItem * $proportionItemOk / 100);
                             $prixTotal = $soustraction;
                             $arrResult["result"] = 1;
                         } else {
                             $prixTotal = 0;
                         }
                         if ($nombreItemBuy > 1) {
                             $nombreItemBuy = round($nombreItemBuy / $objItemshop->getNbItem());
                         }
                     } elseif ($arrResult["result"] == 1) {
                         $prixTotal = $objItemshop->getPrix() * $nombreItem;
                         $nombreItemBuy = $nombreItem;
                     }
                     $this->objAccount->setMileage($this->objAccount->getMileage() - $prixTotal);
                     $em->persist($this->objAccount);
                     $em->flush();
                     $session->set("Mileage", $this->objAccount->getMileage());
                 }
             } else {
                 $arrResult = ["result" => 0, "code" => 6];
             }
         } else {
             $arrResult = ["result" => 0, "code" => 4];
         }
     }
     if ($objItemshop->getType() == 1) {
         $idDevise = "1";
     } else {
         if ($objItemshop->getType() == 3) {
             $idDevise = "2";
         } else {
             if ($objItemshop->getType() == 2) {
                 $idDevise = "1";
             }
         }
     }
     if ($arrResult["result"] == 1) {
         $Resultat_Achat = "Réussi";
     } else {
         if ($arrResult["code"] == 4) {
             $Resultat_Achat = "Type d'item inconnu";
         } elseif ($arrResult["code"] == 5) {
             if ($nombreItemOkTotal > 0) {
                 $Resultat_Achat = "Livraison partiel";
             } else {
                 $Resultat_Achat = "Manque de place";
             }
         } elseif ($arrResult["code"] == 6) {
             $Resultat_Achat = "Pas assez de " . \DeviseHelper::getLibelle(2);
         } elseif ($arrResult["code"] == 3) {
             $Resultat_Achat = "Pas assez de " . \DeviseHelper::getLibelle(1);
         } else {
             $Resultat_Achat = "Erreur";
         }
     }
     $objLogsItemshopAchats = new \Site\Entity\LogsItemshopAchats();
     $objLogsItemshopAchats->setIdCompte($this->objAccount->getId());
     $objLogsItemshopAchats->setVnum($objItemshop->getIdItem());
     if ($objItemshop->getNbItem() > 1) {
         $objLogsItemshopAchats->setItem($objItemshop->getNameItem() . " (x" . $nombreItemBuy . ")");
     } else {
         $objLogsItemshopAchats->setItem($objItemshop->getNameItem());
     }
     $objLogsItemshopAchats->setQuantite($nombreItemBuy);
     $objLogsItemshopAchats->setPrix($prixTotal);
     $objLogsItemshopAchats->setDevise($idDevise);
     $objLogsItemshopAchats->setIp($this->ipAdresse);
     $objLogsItemshopAchats->setDate(\Carbon\Carbon::now());
     $objLogsItemshopAchats->setResultat($Resultat_Achat);
     $em->persist($objLogsItemshopAchats);
     $em->flush();
     if ($arrResult["result"] == 1) {
         $template = $this->objTwig->loadTemplate("ItemShopArticleBuy.html5.twig");
         $result = $template->render(["compte" => $this->objAccount->getLogin(), "article" => $objItemshop->getNameItem(), "nombre" => $nombreItemBuy, "prix" => $prixTotal, "devise" => $idDevise, "identifiantAchat" => $objLogsItemshopAchats->getId()]);
         $subject = 'VamosMT2 - Achat de ' . $objItemshop->getNameItem();
         \EmailHelper::sendEmail($this->objAccount->getEmail(), $subject, $result);
     }
     $arrResult["nombreBuy"] = $nombreItemBuy;
     $arrResult["idTransaction"] = $objLogsItemshopAchats->getId();
     echo json_encode($arrResult);
 }