<?php
namespace App\Controller;
use App\Entity\Accessories;
use App\Entity\Basket;
use App\Entity\Geraete;
use App\Entity\Marke;
use App\Entity\Order;
use App\Entity\Preise;
use App\Entity\Reparaturen;
use App\Entity\Service;
use App\Entity\Settings;
use ChristophSchaeffer\Dhl\BusinessShipping\Credentials\ShippingClientCredentials;
use ChristophSchaeffer\Dhl\BusinessShipping\Credentials\TrackingClientCredentials;
use ChristophSchaeffer\Dhl\BusinessShipping\MultiClient;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
class MainController extends AbstractController
{
#Main
/**
* @Route("/", name="index")
*/
public function index()
{
$settings = $this->getDoctrine()->getRepository(Settings::class)->find(1);
$index = 'index/index.html.twig';
$maintaince = 'index/maintaince.html.twig';
$template = null;
$dev_mode = false;
$google_reviews = null;
$reviews = [
[
'rating' => "5",
'authorName' => 'Bernhard Bernuns',
'relativeTimeDescription' => 'vor 3 Tagen',
'text' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam'
],
[
'rating' => "5",
'authorName' => 'kevin kevin',
'relativeTimeDescription' => 'vor 3 Tagen',
'text' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam'
],
[
'rating' => "5",
'authorName' => 'asnd jasduern',
'relativeTimeDescription' => 'vor 3 Tagen',
'text' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam'
],
[
'rating' => "5",
'authorName' => 'Herr Bonn',
'relativeTimeDescription' => 'vor 3 Tagen',
'text' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam'
],
[
'rating' => "5",
'authorName' => 'GamerXXX99__',
'relativeTimeDescription' => 'vor 3 Tagen',
'text' => 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam'
],
];
if($settings->isMaintaince()){
$template = $maintaince;
} else {
$template = $index;
}
return $this->render($template, [
'reviews' => $dev_mode ? $reviews : $google_reviews
]);
}
/**
* @Route("/blog", name="blog")
*/
public function blog()
{
return $this->render('blog/blog.html.twig', [
]);
}
/**
* @Route("/api/instagram/likes", name="instagram_likes")
*/
public function getLikes(): JsonResponse
{
// Hier holst du die Likes von Instagram über die API
return new JsonResponse(['likes' => $likes]);
}
#Legal
/**
* @Route("/impressum", name="impressum")
*/
public function impressum()
{
return $this->render('legal/impressum.html.twig', [
]);
}
/**
* @Route("/datenschutz", name="datenschutz")
*/
public function datenschutz()
{
return $this->render('legal/datenschutz.html.twig', [
]);
}
/**
* @Route("/agb", name="agb")
*/
public function agb()
{
return $this->render('legal/agb.html.twig', [
]);
}
/**
* @Route("/widerruf", name="widerruf")
*/
public function widerruf()
{
return $this->render('legal/widerrufsbelehrung.html.twig', [
]);
}
#Sites
/**
* @Route("/kontakt", name="kontakt")
*/
public function kontakt()
{
return $this->render('sites/kontakt.html.twig', [
]);
}
/**
* @Route("/ueber-uns", name="ueber-uns")
*/
public function ueberUns()
{
return $this->render('sites/ueber-uns.html.twig', [
]);
}
/**
* @Route("/ankauf", name="ankauf")
*/
public function ankauf()
{
return $this->render('sites/ankauf.html.twig', [
]);
}
/**
* @Route("/einsenden", name="einsenden")
*/
public function einsenden()
{
return $this->render('sites/einsenden.html.twig', [
]);
}
#Reparatur
/**
* @Route("/reparieren", name="reparieren")
*/
public function reparieren()
{
return $this->render('sites/reparieren/reparieren.html.twig', [
]);
}
/**
* @Route("/reparieren/handy", name="handy")
*/
public function handy()
{
$marke = $this->getDoctrine()->getRepository(Marke::class)->findAll();
$settings = $this->getDoctrine()->getRepository(Settings::class)->find(1);
return $this->render('sites/reparieren/handy.html.twig', [
'marke' => $marke,
'maintaince' => $settings->isPricemaintaince()
]);
}
/**
* @Route("/reparieren/handy/{marke}", name="handy-marke")
*/
public function handyMarke($marke)
{
$markeEntity = $this->getDoctrine()->getRepository(Marke::class)->findOneBy(['marke' => $marke]);
$geraete = $this->getDoctrine()->getRepository(Geraete::class)->findBy(['deviceType' => 'handy' , 'marke' => $markeEntity->getId()],['name' => 'DESC']);
$sortByNumberInName = function ($a, $b) {
preg_match('/\d+/', $a->getName(), $aNumbers);
preg_match('/\d+/', $b->getName(), $bNumbers);
$aNumber = isset($aNumbers[0]) ? intval($aNumbers[0]) : PHP_INT_MAX;
$bNumber = isset($bNumbers[0]) ? intval($bNumbers[0]) : PHP_INT_MAX;
return $aNumber - $bNumber;
};
// Benutzerdefinierte Sortierfunktion für die Sortierung nach dem ersten Buchstaben und dann nach Zahlen
$sortByFirstLetterThenNumber = function ($a, $b) {
$firstLetterComparison = strcmp(substr($a->getName(), 0, 1), substr($b->getName(), 0, 1));
if ($firstLetterComparison == 0) {
preg_match('/\d+/', $a->getName(), $aNumbers);
preg_match('/\d+/', $b->getName(), $bNumbers);
$aNumber = isset($aNumbers[0]) ? intval($aNumbers[0]) : PHP_INT_MAX;
$bNumber = isset($bNumbers[0]) ? intval($bNumbers[0]) : PHP_INT_MAX;
return $aNumber - $bNumber;
}
return $firstLetterComparison;
};
// Verwenden Sie die entsprechende Sortierfunktion basierend auf der Marke
if ($markeEntity->getMarke() == 'Apple') {
usort($geraete, function ($a, $b) {
// Überprüfe, ob die Namen Zahlen enthalten
$aContainsNumber = preg_match('/\d/', $a->getName());
$bContainsNumber = preg_match('/\d/', $b->getName());
// Wenn beide Namen Zahlen enthalten oder beide keine Zahlen enthalten, vergleiche sie normal
if ($aContainsNumber && $bContainsNumber) {
// Extrahiere die Zahlen aus den Namen
preg_match('/\d+/', $a->getName(), $aNumbers);
preg_match('/\d+/', $b->getName(), $bNumbers);
// Vergleiche die extrahierten Zahlen, um absteigend zu sortieren (höchste zuerst)
return intval($bNumbers[0]) - intval($aNumbers[0]);
}
// Wenn nur einer der Namen Zahlen enthält, sortiere diesen zuerst
return $aContainsNumber ? -1 : 1;
});
} else {
usort($geraete, function ($a, $b) {
// Extrahiere Buchstaben und Zahlen aus den Namen
preg_match('/[a-zA-Z]+/', $a->getName(), $aLetters);
preg_match('/[a-zA-Z]+/', $b->getName(), $bLetters);
preg_match('/\d+/', $a->getName(), $aNumbers);
preg_match('/\d+/', $b->getName(), $bNumbers);
// Vergleiche zuerst die Buchstaben im Namen
$lettersComparison = strcmp($aLetters[0], $bLetters[0]);
if ($lettersComparison !== 0) {
return $lettersComparison;
}
// Wenn die Buchstaben im Namen gleich sind, vergleiche die Zahlen im Namen
// Wenn einer der Namen keine Zahlen enthält, wird er zuerst sortiert
if (isset($aNumbers[0]) && isset($bNumbers[0])) {
return intval($aNumbers[0]) - intval($bNumbers[0]);
} elseif (isset($aNumbers[0])) {
return -1;
} elseif (isset($bNumbers[0])) {
return 1;
}
// Wenn beide Namen keine Zahlen enthalten, sind sie gleich
return 0;
});
}
return $this->render('sites/reparieren/marke.html.twig', [
'geraete' => $geraete,
]);
}
/**
* @Route("/reparieren/tablet/{marke}", name="tablet-marke")
*/
public function tabletMarke($marke)
{
$markeEntity = $this->getDoctrine()->getRepository(Marke::class)->findOneBy(['marke' => $marke]);
$geraete = $this->getDoctrine()->getRepository(Geraete::class)->findBy(['deviceType' => 'tablet' , 'marke' => $markeEntity->getId()],['positionTable'=>'ASC']);
return $this->render('sites/reparieren/markeTablet.html.twig', [
'geraete' => $geraete,
]);
}
/**
* @Route("/reparatur/{id}", name="repairdevice")
*/
public function repairdevice($id)
{
$geraete = $this->getDoctrine()->getRepository(Geraete::class)->find($id);
$accessoires = $this->getDoctrine()->getRepository(Accessories::class)->findAll();
$service = $this->getDoctrine()->getRepository(Service::class)->findAll();
$preise = $this->getDoctrine()->getRepository(Preise::class)->findBy(['Geraete' => $id]);
return $this->render('sites/reparieren/repair.html.twig', [
'geraet' => $geraete,
'accessoires' => $accessoires,
'preise' => $preise,
'services' => $service,
]);
}
/**
* @Route("/reparieren/tablet", name="tablet")
*/
public function tablet()
{
$marke = $this->getDoctrine()->getRepository(Marke::class)->findAll();
$settings = $this->getDoctrine()->getRepository(Settings::class)->find(1);
return $this->render('sites/reparieren/tablet.html.twig', [
'marke' => $marke,
'maintaince' => $settings->isPricemaintaince()
]);
}
/**
* @Route("/reparieren/pc", name="pc")
*/
public function pc()
{
return $this->render('sites/reparieren/pc.html.twig', [
]);
}
/**
* @Route("/reparieren/smartwatch", name="smartwatch")
*/
public function smartwatch()
{
return $this->render('sites/reparieren/smartwatch.html.twig', [
]);
}
#Other
/**
* @Route("/geschaeftskunde", name="b2b")
*/
public function geschaeftskunde()
{
return $this->render('sites/geschaeftskunde.html.twig', [
]);
}
/**
* @Route("/anleitung", name="anleitung")
*/
public function anleitung()
{
return $this->render('sites/anleitung.html.twig', [
]);
}
#repair
/**
* @Route("/editBasket", name="editBasket", methods={"POST"})
*/
public function editBasket(Request $request)
{
$id = $request->request->get('id');
$action = $request->request->get('action');
$response = null;
if($action == 'delete'){
$response = $this->deletePosition($request, $id);
}
if($action == 'add'){
$response = $this->addPosition($request, $id);
}
return $response;
}
/**
* @Route("/addToBasket", name="addToBasket", methods={"POST"})
*/
public function addToBasket(Request $request)
{
$basket = json_decode($request->request->get('basket'));
$text = json_decode($request->request->get('text'));
$newBasket = [];
foreach ($basket as $item){
if(str_starts_with($item, 'A-')){
$trimId = explode('-', $item);
$acc = $this->getDoctrine()->getRepository(Accessories::class)->find($trimId[1]);
$id = $acc->getId();
$product = $acc->getType();
$price = $acc->getPrice();
array_push($newBasket, ['id' => $id, 'product' => $product, 'price' => $price]);
}
if(str_starts_with($item, 'S-')){
$trimId = explode('-', $item);
$acc = $this->getDoctrine()->getRepository(Service::class)->find($trimId[1]);
$id = $acc->getId();
$product = $acc->getName();
$price = $acc->getPreis();
array_push($newBasket, ['id' => $id, 'product' => $product, 'price' => $price]);
}
if(!str_starts_with($item, 'S-') && !str_starts_with($item, 'A-')){
$repair = $this->getDoctrine()->getRepository(Preise::class)->find($item);
var_dump($item);
$id = $repair->getId();
$product = $repair->getReparatur()->getReparaturen();
$price = $repair->getPreis();
array_push($newBasket, ['id' => $id, 'product' => $product, 'price' => $price]);
}
}
$finishedBasket['items'] =[$newBasket];
$response = new Response();
$response->headers->setCookie(new Cookie('basket', json_encode($finishedBasket) ,time() + (365 * 24 * 60 * 60)));
$response->headers->setCookie(new Cookie('basketText', json_encode($text) ,time() + (365 * 24 * 60 * 60)));
// return $this->redirectToRoute('repairbasket');
return $response;
}
/**
* @Route("/removeBasket", name="removeBasket", methods={"POST"})
*/
public function removeBasket(Request $request)
{
$response = new Response();
$response->headers->clearCookie('basket');
$response->headers->clearCookie('basketText');
return $response;
}
/**
* @Route("/reparaturkorb", name="repairbasket")
*/
public function repairbasket(Request $request)
{
$basket = json_decode($request->cookies->get('basket'));
$basketSum = 0;
if(!empty($basket)){
foreach($basket as $items){
foreach($items as $item){
foreach($item as $position){
$basketSum = $basketSum + (float)$position->price;
}
}
}
}
$basketTaxes = $basketSum * 0.19;
$accessories = $this->getDoctrine()->getManager()->getRepository(Accessories::class)->findAll();
return $this->render('repair/basket.html.twig', [
'basket' => json_decode($request->cookies->get('basket'),true),
'basketSum' => $basketSum,
'basketTaxes' => $basketTaxes,
'accessories' => $accessories
]);
}
/**
* @Route("/kasse", name="checkout")
*/
public function checkout(Request $request)
{
$basket = json_decode($request->cookies->get('basket'));
$basketSum = 0;
foreach($basket as $items){
foreach($items as $item){
foreach($item as $position){
$basketSum = $basketSum + (float)$position->price;
}
}
}
$basketTaxes = $basketSum * 0.19;
return $this->render('repair/checkout.html.twig', [
'basket' => json_decode($request->cookies->get('basket'),true),
'basketSum' => $basketSum,
'basketTaxes' => $basketTaxes
]);
}
/**
* @Route("/payment", name="payment", methods={"POST"})
*/
public function payment(Request $request)
{
$orderNumber = json_decode($request->request->get('orderNumber'));
$order = $this->getDoctrine()->getRepository(Order::class)->findOneBy(['orderNumber' => $orderNumber]);
$basketSum = $order->getBasketSum();
$mollie = new \Mollie\Api\MollieApiClient();
$mollie->setApiKey("test_nykdc6k3pxrtu7MgmheFdP4dAQruB9");
$payment = $mollie->payments->create([
"amount" => [
"currency" => "EUR",
"value" => number_format($basketSum, 2, '.', '.'),
],
"description" => "Bestellung - #" . $orderNumber,
"redirectUrl" => "https://kogorepair.de/erfolgreich/". $orderNumber,
"webhookUrl" => "https://kogorepair.de/kasse",
]);
$order->setPaymenttype($payment->id);
if($payment->isPaid()){
$order->setPaymentState(Status::PAYMENT_BEZAHLT);
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($order);
$entityManager->flush();
return new JsonResponse([
'status' => 'pending',
'ordernumber' => $orderNumber,
'url' => $payment->getCheckoutUrl(),
]);
}
/**
* @Route("/erfolgreich/{ordernumber}", name="checkout-finished")
*/
public function checkoutFinished($ordernumber, MailerInterface $mailer)
{
/**@var Order $order **/
$order = $this->getDoctrine()->getRepository(Order::class)->findOneBy(['orderNumber' => $ordernumber]);
$paid = ($order->getPaymentState() == 11 ? true : false);
$shipmentType = $order->getShippingtype();
$email = (new Email())
->from('noreply@einfachorient.de')
->to('mail@michael-kelm.de')
->replyTo('mail@michael-kelm.de')
->subject('Ihr Auftrag.')
->text('Ihr Reparaturauftrag bei Kogorepair.')
->html('<h1>Lorem ipsum</h1> <p>...</p>');
$mailer->send($email);
/* $email = (new Email())
->from('noreply@einfachorient.de')
->to('mail@michael-kelm.de')
->replyTo('info@kogorepair.de')
->subject('Auftrag: XXXX - Kogorepair')
->text('Ihr Reparaturauftrag bei Kogorepair.')
->htmlTemplate('emails/signup.html.twig')
//->attachFromPath('/path/to/documents/privacy.pdf', 'Privacy Policy')
$mailer->send($email);
if($paid && $shipmentType != 'noshipping'){
// sende Auftragsbestätigung mit DHL Label im Anhang
} else {
// sende Auftragsbestätigung ohne Label mit Adresse und aufforderung vorbei zu kommen.
}
/**if($status == 'paid' && $order->getShippingtype('dhl')){
if(empty($order->getShipmentnumber()) || $order->getShipmentnumber() == null || $order->getShipmentnumber() == 0){
$createdLabel = $this->createLabel($order->getFirstname(), $order->getLastname(),$order->getStreet(), $order->getStreetnumber(), $order->getZipcode(), $order->getCity(), date('Y-m-d', time()));
$order->setShipmentnumber($createdLabel);
$em = $this->getDoctrine()->getManager();
$em->persist($order);
$em->flush();
} else {
$createdLabel = $order->getShipmentnumber();
}
$downloadLabel = $this->getLabel($createdLabel);
}*/
return $this->render('repair/checkout_finished.html.twig', [
'payment' => $paid,
'order' => $order,
'shippingType' => $order->getShippingtype(),
]);
}
function getAuthToken($clientId, $clientSecret) {
$url = "https://api.dhl.com/auth/v2/token"; // Sandbox: /sandbox/
$data = [
"grant_type" => "client_credentials"
];
$headers = [
"Content-Type: application/x-www-form-urlencoded",
"Authorization: Basic " . base64_encode("$clientId:$clientSecret"),
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
return $response['access_token'] ?? null;
}
/**
* @Route("/createlabel", name="create-label")
*/
public function createlabelUrl()
{
$response = $this->createLabel("Michael", "Kelm", "Lindenallee", "1", "49661", "Cloppenburg", "2024-11-11");
$responseContent = $response->getContent();
$responseData = json_decode($responseContent, true);
$success = $responseData['success'];
return $success;
}
/**
* @Route("/label/{labelnumber}", name="checkout-label")
*/
public function label($labelnumber)
{
$downloadLabel = $this->getLabel($labelnumber);
return $this->redirect($downloadLabel);
}
function createLabel($vorname, $nachname,$straße, $hausnummer, $plz, $ort, $date) {
$authStorage = new \Dhl\Sdk\ParcelDe\Shipping\Auth\AuthenticationStorage('kH9qkZjQdf5ivjdA0B3NUVVeeIci88SB', 'kogorepairworker', 'Kogozugang1234!');
$logger = new \Psr\Log\NullLogger();
$serviceFactory = new \Dhl\Sdk\ParcelDe\Shipping\Service\ServiceFactory();
$service = $serviceFactory->createShipmentService($authStorage, $logger, $sandbox = false);
$orderConfiguration = new \Dhl\Sdk\ParcelDe\Shipping\Service\ShipmentService\OrderConfiguration(
mustEncode: true,
combinedPrinting: null,
docFormat: \Dhl\Sdk\ParcelDe\Shipping\Api\Data\OrderConfigurationInterface::DOC_FORMAT_PDF,
printFormat: \Dhl\Sdk\ParcelDe\Shipping\Api\Data\OrderConfigurationInterface::PRINT_FORMAT_A4
);
$requestBuilder = new \Dhl\Sdk\ParcelDe\Shipping\RequestBuilder\ShipmentOrderRequestBuilder();
$requestBuilder->setShipperAccount(billingNumber: '52833660740101');
$requestBuilder->setShipperAddress(
company: 'Kogorepair',
name: $nachname .' '. $vorname,
countryCode: 'DEU',
postalCode: $plz,
city: $ort,
streetName: $straße,
streetNumber: $hausnummer
);
$requestBuilder->setRecipientAddress(
company: 'Smartphone Service Kogorepair',
name: 'Ezdin Koyun',
countryCode: 'DEU',
postalCode: '49661',
city: 'Cloppenburg',
streetName: 'Lindenallee',
streetNumber: '2-4'
);
$requestBuilder->setShipmentDetails(productCode: 'V01PAK', shipmentDate: new \DateTime());
$requestBuilder->setPackageDetails(weightInKg: 2.4);
$shipmentOrder = $requestBuilder->create();
$shipments = $service->createShipments([$shipmentOrder], $orderConfiguration);
//var_dump($shipments);
// Antwortverarbeitung
if (!empty($shipments)) {
// Überprüfen, ob shipmentNumber und shipmentLabel im Array vorhanden sind
$shipmentNumber = $shipments[0]->getShipmentNumber(); // Zugriff auf shipmentNumber im Array
$shipmentLabelBase64 = $shipments[0]->getShipmentLabel(); // Zugriff auf shipmentLabel (base64 codiert)
if ($shipmentLabelBase64) {
// PDF-Daten dekodieren
$pdfData = base64_decode($shipmentLabelBase64);
// Pfad und PDF-Datei speichern
$pdfPath = '/var/www/development/kogorepair/public/dhl/pdf/' . $shipmentNumber . '.pdf';
file_put_contents($pdfPath, $pdfData);
// Erfolgsantwort zurückgeben
return new JsonResponse([
'success' => true,
'pdf_path' => $pdfPath,
'sendungsnummer' => $shipmentNumber
]);
} else {
return new JsonResponse([
'success' => false,
'message' => 'PDF-Daten fehlen in der Antwort'
]);
}
} else {
return new JsonResponse([
'success' => false,
'message' => 'Leere Antwort von DHL API'
]);
}
}
/**
* @Route("/formPost", name="formPost", methods={"POST"})
*/
public function formPost(Request $request)
{
$orderPost = json_decode($request->request->get('order'));
$basket = json_decode($request->cookies->get('basket'));
$basketText = json_decode($request->cookies->get('basketText'));
$basketSum = 0;
foreach($basket as $items){
foreach($items as $item){
foreach($item as $position){
$basketSum = $basketSum + (float)$position->price;
}
}
}
/* @var Order $order */
$order = new Order();
$order->setFirstname($orderPost->firstname);
$order->setLastname($orderPost->lastname);
$order->setStreet($orderPost->street);
$order->setStreetnumber($orderPost->streetnumber);
$order->setAddressoption($orderPost->streetoption);
$order->setCountry($orderPost->country);
$order->setZipcode($orderPost->zipcode);
$order->setCity($orderPost->city);
$order->setEmail($orderPost->email);
$order->setTel($orderPost->tel);
$order->setCreateDate(new \DateTime());
$order->setArchived(false);
$characters = '0123456789';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 6; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$orderNumber = $randomString;
$order->setOrderNumber($orderNumber);
$basketEntity = new Basket();
$basketEntity->setData(json_encode($basket));
$basketEntity->setText(json_encode($basketText));
$order->setBasket($basketEntity);
$order->setBasketSum($basketSum);
$order->setPaymenttype("0");
$order->setShippingtype($orderPost->shipping);
$order->setOrderState(Status::EINGEGANGEN);
$order->setPaymentstate(Status::PAYMENT_UNBEZAHLT);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($order);
$entityManager->persist($basketEntity);
$entityManager->flush();
return new JsonResponse([
'status' => 'ok',
'ordernumber' => $orderNumber,
]);
}
public function convertStatusToString($id)
{
$return = 'Status konnte nicht geladen werden...';
switch ($id) {
case 0:
$return = 'FEHLER';
break;
case Status::EINGEGANGEN:
$return = 'Eingegangen';
break;
case Status::IN_REPARATUR:
$return = 'in Reparatur';
break;
case Status::VERSAND:
$return = 'Versand';
break;
case Status::PAYMENT_BEZAHLT:
$return = 'Bezahlt';
break;
case Status::PAYMENT_UNBEZAHLT:
$return = 'Unbezahlt';
break;
case Status::ABGESCHLOSSEN:
$return = 'Abgeschlossen';
break;
}
return $return;
}
public function generateInvoiceID()
{
$characters = '0123456789';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 6; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
public function deletePosition(Request $request, $id){
$basket = json_decode($request->cookies->get('basket'));
$strBasket = [];
foreach($basket as $items){
foreach($items as $item){
foreach($item as $position){
if($position->id != $id){
array_push($strBasket, ['id' => $position->id, 'product' => $position->product, 'price' => $position->price]);
}
}
}
}
$newBasket['items'] =[$strBasket];
$response = new Response();
$response->headers->clearCookie('basket');
$response->headers->setCookie(new Cookie('basket', json_encode($newBasket) ,time() + (365 * 24 * 60 * 60)));
return $response;
}
public function addPosition(Request $request, $id){
$basket = json_decode($request->cookies->get('basket'));
$strBasket = [];
$accessories = $this->getDoctrine()->getRepository(Accessories::class)->find($id);
$accessore = ['id' => $accessories->getId(), 'product' => $accessories->getType(), 'price' => $accessories->getPrice()];
foreach($basket as $items){
foreach($items as $item){
foreach($item as $position){
if($position->id != $accessories->getId()){
array_push($strBasket, ['id' => $position->id, 'product' => $position->product, 'price' => $position->price]);
}
}
}
}
array_push($strBasket, $accessore);
$newBasket['items'] =[$strBasket];
$response = new Response();
$response->headers->clearCookie('basket');
$response->headers->setCookie(new Cookie('basket', json_encode($newBasket) ,time() + (365 * 24 * 60 * 60)));
return $response;
}
/**
* @Route("/sendMail", name="sendMail", methods={"POST"})
*/
public function sendMail(Request $request)
{
$name = $request->request->get('name');
$email = $request->request->get('email');
$handymodell = $request->request->get('handymodell'); //optional
$defekt = $request->request->get('defekt'); //optional
$nachricht = $request->request->get('nachricht');
$empfaenger = "info@kogorepair.de"; //info@kogorepair.de
$betreff = "Webseite: Kontaktanfrage";
$text = "Name: " . $name. "\n"
. " / E-Mail: " . $email. "\n"
. " / Nachricht: " . $nachricht. "\n"
. " / Handy: " . $handymodell. "\n"
. " / Defekt: " . $defekt;
$header = 'From: noreply@kogorepair.de' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($empfaenger, $betreff, $text, $header);
return new JsonResponse([
'status' => 'ok',
]);
}
/**
* @Route("/sendMailB2B", name="sendMailB2B", methods={"POST"})
*/
public function sendMailB2B(Request $request)
{
$name = $request->request->get('name');
$email = $request->request->get('email');
$firma = $request->request->get('firma'); //optional
$tel = $request->request->get('tel'); //optional
$nachricht = $request->request->get('nachricht');
$empfaenger = "info@kogorepair.de";
$betreff = "Webseite B2B: Kontaktanfrage";
$text = "Name: " . $name. "\n"
. " / E-Mail: " . $email. "\n"
. " / Nachricht: " . $nachricht. "\n"
. " / Firma: " . $firma. "\n"
. " / Tel: " . $tel;
mail($empfaenger, $betreff, $text);
return new JsonResponse([
'status' => 'ok',
]);
}
/**
* @Route("/sendMailAnkauf", name="sendMailAnkauf", methods={"POST"})
*/
public function sendMailAnkauf(Request $request)
{
$name = $request->request->get('name');
$email = $request->request->get('email');
$telefon = $request->request->get('telefon');
$marke = $request->request->get('marke');
$gerätename = $request->request->get('gerätename');
$zustand = $request->request->get('zustand');
$zusatzinformationen = $request->request->get('zusatzinformationen');
$empfaenger = "info@kogorepair.de";
$betreff = "Webseite: Ankauf Anfrage";
$text = "Name: " . $name . "\n" .
"E-Mail: " . $email . "\n" .
"Telefon: " . $telefon . "\n" .
"Marke: " . $marke . "\n" .
"Gerätename: " . $gerätename . "\n" .
"Zustand: " . $zustand . "\n" .
"Zusätzliche Informationen: " . $zusatzinformationen;
$header = 'From: noreply@kogorepair.de' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($empfaenger, $betreff, $text, $header);
return new JsonResponse([
'status' => 'ok',
]);
}
}