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

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

@ -18,12 +18,12 @@
"Shared\\": "src/shared",
"App\\Router\\": "src/app/router",
"App\\Controller\\": "src/app/controller",
"App\\Router\\Response\\" : "src/app/router/response",
"App\\Router\\Middleware\\" : "src/app/router/middleware",
"App\\Router\\Request\\" : "src/app/router/request",
"App\\Router\\Response\\": "src/app/router/response",
"App\\Router\\Middleware\\": "src/app/router/middleware",
"App\\Router\\Request\\": "src/app/router/request",
"Shared\\Exception\\": "src/shared/exception",
"Shared\\Attributes\\": "src/shared/attributes",
"App\\Views\\Directives\\" : "src/app/views/directives",
"App\\Views\\Directives\\": "src/app/views/directives",
"Data\\Core\\": "src/data/core/"
}
},
@ -34,12 +34,15 @@
"altorouter/altorouter": "1.1.0",
"psr/container": "^2.0"
},
"config": {
"process-timeout": 2000
},
"require-dev": {
"phpunit/phpunit": "*"
},
"scripts": {
"dev": "php -S localhost:8081 -t public -d display_errors=1 -d error_reporting=E_ALL",
"dev:console": "export APP_ENV=console && php public/index.php",
"dev:html" : "export APP_ENV=html && php -S localhost:8080 -t public -d display_errors=1 -d error_reporting=E_ALL"
"dev:html": "export APP_ENV=html && php -S localhost:8080 -t public -d display_errors=1 -d error_reporting=E_ALL"
}
}

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

@ -54,6 +54,7 @@ class AuthController extends BaseController
]);
}
}
#[Route('/login', name: 'login2',methods: ['GET'])]
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\Router\Request\IRequest;
use App\Router\Response\IResponse;
use App\Router\Response\RedirectResponse;
use App\Router\Response\Response;
use Manager\ActivityManager;
use Shared\Attributes\Route;
@ -41,67 +43,53 @@ class HeartRateController extends BaseController
}
#[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 = [];
/*$fileType = strtolower(pathinfo($_FILES["uploaded_file"]["name"], PATHINFO_EXTENSION));
if (!$fileType == "fit") {
$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 = $this->validateRequest($effort);
if (!empty($error)) {
return $this->renderError($error);
}
/* $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'];
if(file_exists($tmp_file)) {
$fileExtension = pathinfo($_FILES['uploaded_file']['name'], PATHINFO_EXTENSION);
if ($fileExtension === 'fit') {
if (!$this->isValidFile($tmp_file)) {
return $this->renderError(['Failed to get file be sure that you provide the file']);
}
$content = file_get_contents($tmp_file);
if ($this->activityMgr->uploadFile($activityType, 5, $content)) {
/////////////
return $this->render('./page/home.html.twig', [
'css' => $this->preference->getCookie(),
]);
}else{
Log::dd('Ratter Model');
try {
if ($this->activityMgr->uploadFile($activityType, 5, $content)) {
return new RedirectResponse('/');
}
}else{
Log::dd('Le fichier doit être de type .fit.');
} catch (\Exception $e) {
return $this->renderError([$e->getMessage()]);
}
}else{
Log::dd("failed");
return $this->renderError(['Failed to save activity.']);
}
} catch (\Exception $e) {
Log::dd($e);
return new Response('File upload error.', 500);
private function validateRequest(int $effort): array
{
$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
namespace App\Router\Response;
use Shared\Log;
class Response implements IResponse {
private string $content;
private int $statusCode;

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

@ -8,6 +8,7 @@
*
* @package manager
*/
namespace Manager;
use adriangibbons\phpFITFileAnalysis;
@ -39,7 +40,7 @@ class ActivityManager
*
* @param IAuthService $authService Le service d'authentification utilisé pour vérifier l'utilisateur actuel.
*/
public function __construct(DataManager $dataManager,IAuthService $authService)
public function __construct(DataManager $dataManager, IAuthService $authService)
{
$this->authService = $authService;
$this->dataManager = $dataManager;
@ -72,7 +73,7 @@ class ActivityManager
// Conversion des données en format JSON
$jsonFitData = json_encode($fitData, JSON_PRETTY_PRINT);
// Enregistrement du fichier JSON
file_put_contents( './you.json', $jsonFitData);
file_put_contents('./you.json', $jsonFitData);
return true;
} catch (\Exception $e) {
@ -135,9 +136,14 @@ class ActivityManager
$standardDeviation = number_format(sqrt($variance), 2);
$maximum = max($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'];
$averageTemperature = (!empty($temperatureList)) ? number_format(array_sum($temperatureList) / count($temperatureList), 1) : -200;
}
else{
$averageTemperature = -200;
}
$isPaused = count($monFichierFit->isPaused()) > 0;
@ -158,17 +164,22 @@ class ActivityManager
$isPaused
);
// $this->dataManager->activityRepository->add($newActivity);
if ($this->saveFitFileToJSON($monFichierFit)){
// if ($this->saveFitFileToJSON($monFichierFit)) {
// Ajout de l'activité et enregistrement du fichier FIT en JSON
if ($this->authService->getCurrentUser()->getRole()->addActivity($newActivity)) {
return true;
}
// }
return false;
}
} catch (\Exception $e) {
catch(\Exception $e){
echo $e;
}
return false;
}
}
?>
Loading…
Cancel
Save