push
continuous-integration/drone/push Build is failing Details

issue_031_import
David D'ALMEIDA 1 year ago
parent adb9584cba
commit 9eb7074df5

@ -34,6 +34,9 @@
"altorouter/altorouter": "1.1.0", "altorouter/altorouter": "1.1.0",
"psr/container": "^2.0" "psr/container": "^2.0"
}, },
"config": {
"process-timeout": 2000
},
"require-dev": { "require-dev": {
"phpunit/phpunit": "*" "phpunit/phpunit": "*"
}, },

@ -11,7 +11,7 @@ $dotenv->safeLoad();
// const DB_DATABASE = $_ENV['DB_DATABASE'] ?? 'heartTrack'; // const DB_DATABASE = $_ENV['DB_DATABASE'] ?? 'heartTrack';
// const DB_USER = $_ENV['DB_USER'] ?? 'toto'; // const DB_USER = $_ENV['DB_USER'] ?? 'toto';
// const DB_PASSWORD = $_ENV['DB_PASSWORD'] ?? 'achanger'; // const DB_PASSWORD = $_ENV['DB_PASSWORD'] ?? 'achanger';
define("APP_ENV", "development"); define("APP_ENV", getenv('APP_ENV'));
const DB_HOST = 'localhost'; const DB_HOST = 'localhost';
const DB_DATABASE = 'heartTrack'; const DB_DATABASE = 'heartTrack';

@ -54,6 +54,7 @@ class AuthController extends BaseController
]); ]);
} }
} }
#[Route('/login', name: 'login2',methods: ['GET'])] #[Route('/login', name: 'login2',methods: ['GET'])]
public function login2(IRequest $request): IResponse { public function login2(IRequest $request): IResponse {
@ -140,6 +141,27 @@ class AuthController extends BaseController
} }
#[Route(path: '/logout', name: 'logout', methods: ['POST'])]
public function logout(IRequest $request): IResponse
{
$error = [];
try {
if($this->userMgr->deconnecter()){
return new RedirectResponse('/');
}
else{
$error [] = "Erreur de deconnexion. Essayez encore";
return new RedirectResponse('/');
}
} catch (\Throwable $th) {
$error [] =$th->getMessage();
return new RedirectResponse('/');
}
}

@ -4,6 +4,8 @@ namespace App\Controller;
use App\Container; use App\Container;
use App\Router\Request\IRequest; use App\Router\Request\IRequest;
use App\Router\Response\IResponse;
use App\Router\Response\RedirectResponse;
use App\Router\Response\Response; use App\Router\Response\Response;
use Manager\ActivityManager; use Manager\ActivityManager;
use Shared\Attributes\Route; use Shared\Attributes\Route;
@ -41,67 +43,53 @@ class HeartRateController extends BaseController
} }
#[Route(path: '/upload', name: 'upload', methods: ['POST'])] #[Route(path: '/upload', name: 'upload', methods: ['POST'])]
public function uploadFile(string $activityType, int $effort, IRequest $req): Response public function uploadFile(string $activityType, int $effort, IRequest $req): IResponse
{ {
$error = []; $error = $this->validateRequest($effort);
/*$fileType = strtolower(pathinfo($_FILES["uploaded_file"]["name"], PATHINFO_EXTENSION)); if (!empty($error)) {
if (!$fileType == "fit") { return $this->renderError($error);
$error [] = "";
}*/
// Validate effort
if ($effort < 0 || $effort > 5) {
$error [] = 'Invalid effort level.';
$resp = new Response('Invalid effort level.', 400);
return $this->render('./page/import.html.twig', [
'css' => $this->preference->getCookie(),
'pp' => "test2",
'user' => "Doe",
'role' => "Athlète",
'friendship' => [],
'analyzes' => [],
'mails' => [],
'users' => [],
'infoUser' => [],
'exos' => [],
'member' => [],
'error' => $error
], $resp);
} }
/* $error [] = 'Le fichier doit être de type d\'une taille inferieur à 10 MB.';*/
// Move the file to the directory where files are stored
try {
$tmp_file = $_FILES['uploaded_file']['tmp_name']; $tmp_file = $_FILES['uploaded_file']['tmp_name'];
if(file_exists($tmp_file)) { if (!$this->isValidFile($tmp_file)) {
$fileExtension = pathinfo($_FILES['uploaded_file']['name'], PATHINFO_EXTENSION); return $this->renderError(['Failed to get file be sure that you provide the file']);
if ($fileExtension === 'fit') { }
$content = file_get_contents($tmp_file); $content = file_get_contents($tmp_file);
if ($this->activityMgr->uploadFile($activityType, 5, $content)) { try {
/////////////
return $this->render('./page/home.html.twig', [
'css' => $this->preference->getCookie(),
]);
}else{
Log::dd('Ratter Model');
if ($this->activityMgr->uploadFile($activityType, 5, $content)) {
return new RedirectResponse('/');
} }
}else{ } catch (\Exception $e) {
Log::dd('Le fichier doit être de type .fit.'); return $this->renderError([$e->getMessage()]);
} }
}else{ return $this->renderError(['Failed to save activity.']);
Log::dd("failed");
} }
} catch (\Exception $e) { private function validateRequest(int $effort): array
Log::dd($e); {
return new Response('File upload error.', 500); $error = [];
if ($effort < 0 || $effort > 5) {
$error[] = 'Invalid effort level.';
}
$fileExtension = pathinfo($_FILES['uploaded_file']['name'], PATHINFO_EXTENSION);
if ($fileExtension !== 'fit') {
$error[] = 'Invalid file type. Only .fit files are allowed.';
}
return $error;
} }
return new Response('Invalid file type.', 400); private function isValidFile(string $tmp_file): bool
{
return file_exists($tmp_file) && is_uploaded_file($tmp_file);
} }
private function renderError(array $error): Response
{
// Consolidez la logique de rendu ici
return $this->render('./error/error.html.twig', ['title'=> "Failed" , "code" => 400, "name" => "error import", "descr" => $error[0] ], new Response('$error', 400));
} }
}

@ -1,6 +1,8 @@
<?php <?php
namespace App\Router\Response; namespace App\Router\Response;
use Shared\Log;
class Response implements IResponse { class Response implements IResponse {
private string $content; private string $content;
private int $statusCode; private int $statusCode;

@ -27,7 +27,7 @@ class Activity
private float $variability; private float $variability;
private float $variance; private float $variance;
private float $standardDeviation; private float $standardDeviation;
private int $average; private float $average;
private int $maximum; private int $maximum;
private int $minimum; private int $minimum;
private float $avrTemperature; private float $avrTemperature;

@ -8,6 +8,7 @@
* *
* @package manager * @package manager
*/ */
namespace Manager; namespace Manager;
use adriangibbons\phpFITFileAnalysis; use adriangibbons\phpFITFileAnalysis;
@ -135,9 +136,14 @@ class ActivityManager
$standardDeviation = number_format(sqrt($variance), 2); $standardDeviation = number_format(sqrt($variance), 2);
$maximum = max($heartRateList); $maximum = max($heartRateList);
$minimum = min($heartRateList); $minimum = min($heartRateList);
if(isset($monFichierFit->data_mesgs['record']['temperature'])){
// Extraction de la température moyenne (si disponible
$temperatureList = $monFichierFit->data_mesgs['record']['temperature']; $temperatureList = $monFichierFit->data_mesgs['record']['temperature'];
$averageTemperature = (!empty($temperatureList)) ? number_format(array_sum($temperatureList) / count($temperatureList), 1) : -200; $averageTemperature = (!empty($temperatureList)) ? number_format(array_sum($temperatureList) / count($temperatureList), 1) : -200;
}
else{
$averageTemperature = -200;
}
$isPaused = count($monFichierFit->isPaused()) > 0; $isPaused = count($monFichierFit->isPaused()) > 0;
@ -158,17 +164,22 @@ class ActivityManager
$isPaused $isPaused
); );
// $this->dataManager->activityRepository->add($newActivity); // $this->dataManager->activityRepository->add($newActivity);
if ($this->saveFitFileToJSON($monFichierFit)){ // if ($this->saveFitFileToJSON($monFichierFit)) {
// Ajout de l'activité et enregistrement du fichier FIT en JSON // Ajout de l'activité et enregistrement du fichier FIT en JSON
if ($this->authService->getCurrentUser()->getRole()->addActivity($newActivity)) { if ($this->authService->getCurrentUser()->getRole()->addActivity($newActivity)) {
return true; return true;
} }
// }
return false;
} }
} catch (\Exception $e) { catch(\Exception $e){
echo $e; echo $e;
} }
return false; return false;
} }
} }
?> ?>
Loading…
Cancel
Save