2022-12-30 14:41:49 -08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
// src/Controller/DataImport.php
|
|
|
|
// Grab data from transfer app
|
|
|
|
|
|
|
|
namespace App\Controller\Routes\Back;
|
|
|
|
|
|
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
use Symfony\Component\Routing\Annotation\Route;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
use App\Service\HandleLocations;
|
2023-01-03 16:08:50 -08:00
|
|
|
use Doctrine\DBAL\Connection;
|
2022-12-30 14:41:49 -08:00
|
|
|
use App\Service\Auth;
|
|
|
|
use App\Service\FileUploader;
|
2023-01-08 14:28:25 -08:00
|
|
|
use App\Service\Render;
|
2022-12-30 14:41:49 -08:00
|
|
|
|
|
|
|
class Locations extends AbstractController
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Route("/den/locations", name="den-reroute-index")
|
|
|
|
*/
|
|
|
|
public function rerouteIndex()
|
|
|
|
{
|
|
|
|
header("Location:/den/locations/page/1");
|
|
|
|
return new Response("<html><body>LOGGED IN</body></html>");
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Route("/den/locations/page/{pageNum}", name="den-locations")
|
|
|
|
*/
|
|
|
|
public function locationIndex(
|
|
|
|
Request $request,
|
|
|
|
RequestStack $requestStack,
|
|
|
|
Auth $auth,
|
|
|
|
HandleLocations $locations,
|
2023-01-03 16:08:50 -08:00
|
|
|
ManagerRegistry $doctrine,
|
|
|
|
Connection $connection,
|
2023-01-08 14:28:25 -08:00
|
|
|
Render $render,
|
2022-12-30 14:41:49 -08:00
|
|
|
string $pageNum
|
|
|
|
): Response {
|
|
|
|
$result = $auth->status();
|
|
|
|
if ($result["status"]) {
|
|
|
|
$session = $requestStack->getSession();
|
|
|
|
$member = $session->get("member");
|
|
|
|
$list = $locations->getLocationsPage($pageNum);
|
2023-01-03 16:08:50 -08:00
|
|
|
|
|
|
|
//$search = $connection->fetchAllAssociative("SELECT * FROM searchlocations('agenda')");
|
2023-01-08 14:28:25 -08:00
|
|
|
return $render->page(["list" => $list, "mode" => "index"], "Bad Space | Locations", "back/locations.twig");
|
2022-12-30 14:41:49 -08:00
|
|
|
} else {
|
|
|
|
return $this->render("back/index.twig", [
|
|
|
|
"title" => "Close the door behind you",
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2023-01-08 14:28:25 -08:00
|
|
|
* @Route("/den/locations/modify/{action}/{uuid}", name="location-modify")
|
2022-12-30 14:41:49 -08:00
|
|
|
*/
|
2023-01-08 14:28:25 -08:00
|
|
|
public function modifyLocation(
|
2022-12-30 14:41:49 -08:00
|
|
|
Request $request,
|
|
|
|
Auth $auth,
|
|
|
|
HandleLocations $locations,
|
|
|
|
ManagerRegistry $doctrine,
|
2023-01-08 14:28:25 -08:00
|
|
|
FileUploader $uploader,
|
|
|
|
Render $render,
|
|
|
|
string $action = "add",
|
|
|
|
string $uuid = "001"
|
2022-12-30 14:41:49 -08:00
|
|
|
): Response {
|
|
|
|
$result = $auth->status();
|
|
|
|
if ($result["status"]) {
|
|
|
|
if ($request->getMethod() == "GET") {
|
2023-01-08 14:28:25 -08:00
|
|
|
$options = [];
|
|
|
|
if ($action == 'add') {
|
|
|
|
return $render->page(
|
|
|
|
["mode" => $action],
|
|
|
|
"Bad Space | Locations | Add",
|
|
|
|
"back/locations.twig"
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
$location = $locations->getLocationbyUUID($uuid);
|
|
|
|
return $render->page(
|
|
|
|
["mode" => $action, "location" => $location[0]],
|
|
|
|
"Bad Space | Locations | Edit",
|
|
|
|
"back/locations.twig"
|
|
|
|
);
|
|
|
|
}
|
2022-12-30 14:41:49 -08:00
|
|
|
} else {
|
|
|
|
//add new member
|
2023-01-08 14:28:25 -08:00
|
|
|
$token = $request->get("token");
|
|
|
|
$notice = "";
|
|
|
|
$mode = $request->get("mode");
|
2022-12-30 14:41:49 -08:00
|
|
|
|
|
|
|
//token check
|
|
|
|
if (!$this->isCsrfTokenValid("upload", $token)) {
|
|
|
|
$logger->info("CSRF failure");
|
|
|
|
|
|
|
|
return new Response(
|
|
|
|
"Operation not allowed",
|
|
|
|
Response::HTTP_BAD_REQUEST,
|
|
|
|
[
|
|
|
|
"content-type" => "text/plain",
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (
|
|
|
|
$request->request->get("loc_name") == "" ||
|
|
|
|
$request->request->get("loc_url") == "" ||
|
|
|
|
$request->request->get("loc_desc") == "" ||
|
|
|
|
$request->request->get("loc_tags") == ""
|
|
|
|
) {
|
|
|
|
$notice = "All fields are required, champ.";
|
|
|
|
return $this->render("back/locations.twig", [
|
|
|
|
"title" => "Bad Space | Locations | Add",
|
|
|
|
"notice" => $notice,
|
|
|
|
"mode" => "add"
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
2023-01-08 14:28:25 -08:00
|
|
|
//once everything clears, upload images and process request
|
|
|
|
$examples = [];
|
|
|
|
$files = $request->files->get("loc_examples");
|
|
|
|
if (!empty($files)) {
|
|
|
|
for ($i = 0; $i < count($files); $i++) {
|
|
|
|
$path = $files[$i]->getClientOriginalName();
|
|
|
|
array_push($examples, ["image_index" => $i, "path" => urlencode($path)]);
|
|
|
|
$uploader->uploadExamples("../public/assets/images/examples", $files[$i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$response = $locations->modifyLocation($request, $result["id"], $mode, $request->request->get("uuid"));
|
2022-12-30 14:41:49 -08:00
|
|
|
if ($response["status"]) {
|
2023-01-08 14:28:25 -08:00
|
|
|
$options = [];
|
|
|
|
if ($mode == 'add') {
|
|
|
|
$options = [
|
|
|
|
"title" => "Bad Space | Locations | Add",
|
|
|
|
"notice" => $response["message"],
|
|
|
|
"mode" => $mode
|
|
|
|
];
|
|
|
|
} else {
|
|
|
|
$location = $locations->getLocationbyUUID($request->request->get("uuid"));
|
|
|
|
$options = [
|
|
|
|
"title" => "Bad Space | Locations | Edit",
|
|
|
|
"mode" => $mode,
|
|
|
|
"notice" => $response["message"],
|
|
|
|
"location" => $location[0]
|
|
|
|
];
|
|
|
|
}
|
|
|
|
return $this->render("back/locations.twig", $options);
|
2022-12-30 14:41:49 -08:00
|
|
|
} else {
|
|
|
|
return $this->render("back/locations.twig", [
|
2023-01-08 14:28:25 -08:00
|
|
|
"title" => "Bad Space | Locations | Error",
|
2022-12-30 14:41:49 -08:00
|
|
|
"notice" => $response["message"],
|
2023-01-08 14:28:25 -08:00
|
|
|
"mode" => $mode
|
2022-12-30 14:41:49 -08:00
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
//back to index to login
|
|
|
|
header("Location:/den");
|
|
|
|
return new Response("<html><body>LOGGED IN</body></html>");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-03 16:08:50 -08:00
|
|
|
/**
|
|
|
|
* @Route("/den/locations/bulk-add", name="location-bulk-add")
|
|
|
|
*/
|
|
|
|
public function bulkAddLocation(
|
|
|
|
Request $request,
|
|
|
|
Auth $auth,
|
|
|
|
HandleLocations $locations,
|
|
|
|
ManagerRegistry $doctrine,
|
2023-01-08 14:28:25 -08:00
|
|
|
FileUploader $uploader,
|
|
|
|
Render $render
|
2023-01-03 16:08:50 -08:00
|
|
|
): Response {
|
|
|
|
$result = $auth->status();
|
|
|
|
if ($result["status"]) {
|
|
|
|
if ($request->getMethod() == "GET") {
|
2023-01-08 14:28:25 -08:00
|
|
|
return $render->page(
|
|
|
|
["mode" => "bulk-add"],
|
|
|
|
"Bad Space | Locations | Bulk Add",
|
|
|
|
"back/locations.twig"
|
|
|
|
);
|
2023-01-03 16:08:50 -08:00
|
|
|
} else {
|
|
|
|
// do posting stuff
|
|
|
|
$token = $request->get("token");
|
|
|
|
$entityManager = $doctrine->getManager();
|
|
|
|
$notice = '';
|
|
|
|
|
|
|
|
if (!$this->isCsrfTokenValid("upload", $token)) {
|
|
|
|
$logger->info("CSRF failure");
|
|
|
|
return new Response(
|
|
|
|
"Operation not allowed",
|
|
|
|
Response::HTTP_BAD_REQUEST,
|
|
|
|
[
|
|
|
|
"content-type" => "text/plain",
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
//get file from post
|
|
|
|
$file = $request->files->get("myfile");
|
|
|
|
//grab extension
|
|
|
|
if (!empty($file)) {
|
|
|
|
$extention = substr(strrchr($file->getClientOriginalName(), "."), 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
//check it out to make sure it's cool
|
|
|
|
if (
|
|
|
|
empty($file) ||
|
|
|
|
$extention != "csv"
|
|
|
|
) {
|
|
|
|
if (empty($file)) {
|
|
|
|
$notice = 'You didn\'t select a file, boss';
|
|
|
|
} elseif ($extention != "csv") {
|
|
|
|
$notice = "Only files of type .csv are accepted, slick. " . $extention;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $this->render("back/locations.twig", [
|
|
|
|
"title" => "Bad Space | Locations | Add",
|
|
|
|
"notice" => $notice,
|
|
|
|
"mode" => "bulk-add"
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
//if it's cool, send it to be processed
|
|
|
|
$response = $locations->addMultipleLocations($file, $result["id"]);
|
|
|
|
if ($response["status"]) {
|
|
|
|
$notice = "New locations added! Take a break.";
|
|
|
|
return $this->render("back/locations.twig", [
|
|
|
|
"title" => "Bad Space | Locations | Add",
|
|
|
|
"notice" => $response["message"],
|
|
|
|
"mode" => "bulk-add"
|
|
|
|
]);
|
|
|
|
} else {
|
|
|
|
return $this->render("back/locations.twig", [
|
|
|
|
"title" => "Bad Space | Locations | Add",
|
|
|
|
"notice" => $response["message"],
|
|
|
|
"mode" => "bulk-add"
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
header("Location:/den");
|
|
|
|
return new Response("<html><body>LOGGED IN</body></html>");
|
|
|
|
}
|
|
|
|
}
|
2022-12-30 14:41:49 -08:00
|
|
|
}
|