mise en place d'un controleur REST
This commit is contained in:
@@ -1,15 +1,11 @@
|
||||
# Read the documentation: https://symfony.com/doc/master/bundles/FOSRestBundle/index.html
|
||||
fos_rest: null
|
||||
# param_fetcher_listener: true
|
||||
# allowed_methods_listener: true
|
||||
# routing_loader: true
|
||||
# view:
|
||||
# view_response_listener: true
|
||||
# exception:
|
||||
# codes:
|
||||
# App\Exception\MyException: 403
|
||||
# messages:
|
||||
# App\Exception\MyException: Forbidden area.
|
||||
# format_listener:
|
||||
# rules:
|
||||
# - { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json, html ] }
|
||||
fos_rest:
|
||||
param_fetcher_listener: true
|
||||
body_listener: true
|
||||
|
||||
format_listener:
|
||||
enabled: true
|
||||
rules:
|
||||
- { path: '/rest', priorities: ['json', 'xml'], fallback_format: 'html' }
|
||||
- { path: '/', fallback_format: 'html' }
|
||||
|
||||
|
@@ -1,9 +1,9 @@
|
||||
nelmio_api_doc:
|
||||
documentation:
|
||||
info:
|
||||
title: My App
|
||||
description: This is an awesome app!
|
||||
title: '%appName%'
|
||||
description:
|
||||
version: 1.0.0
|
||||
areas: # to filter documented areas
|
||||
path_patterns:
|
||||
- ^/api(?!/doc$) # Accepts routes under /api except /api/doc
|
||||
- /rest # Accepts routes under /rest except /rest/doc
|
||||
|
@@ -1,12 +1,4 @@
|
||||
# Expose your documentation as JSON swagger compliant
|
||||
app.swagger:
|
||||
path: /api/doc.json
|
||||
app_swagger_ui:
|
||||
path: /rest
|
||||
methods: GET
|
||||
defaults: { _controller: nelmio_api_doc.controller.swagger }
|
||||
|
||||
## Requires the Asset component and the Twig bundle
|
||||
## $ composer require twig asset
|
||||
#app.swagger_ui:
|
||||
# path: /api/doc
|
||||
# methods: GET
|
||||
# defaults: { _controller: nelmio_api_doc.controller.swagger_ui }
|
||||
defaults: { _controller: nelmio_api_doc.controller.swagger_ui }
|
||||
|
@@ -6,6 +6,7 @@
|
||||
parameters:
|
||||
appAlias: '%env(resolve:APP_ALIAS)%'
|
||||
appAuth: '%env(resolve:APP_AUTH)%'
|
||||
appSecret: '%env(resolve:APP_SECRET)%'
|
||||
appName: '%env(resolve:APP_NAME)%'
|
||||
appEnv: '%env(resolve:APP_ENV)%'
|
||||
appCron: '%env(resolve:APP_CRON)%'
|
||||
@@ -80,3 +81,6 @@ services:
|
||||
public: true
|
||||
class: App\Service\mailService
|
||||
arguments: ["@mailer", "@twig"]
|
||||
|
||||
App\Controller\RestController:
|
||||
public: true
|
@@ -1,4 +1,2 @@
|
||||
#!/bin/bash
|
||||
# Si besoin export des valeurs de HTTP_PROXY et HTTPS_PROXY
|
||||
export HTTP_PROXY="192.168.57.160:8080"
|
||||
export HTTPS_PROXY="192.168.57.160:8080"
|
||||
|
134
src/schedule-2.0/src/Controller/RestController.php
Normal file
134
src/schedule-2.0/src/Controller/RestController.php
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use FOS\RestBundle\Controller\AbstractFOSRestController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use FOS\RestBundle\Controller\Annotations as FOSRest;
|
||||
use Swagger\Annotations as SWG;
|
||||
|
||||
use App\Entity\Cache;
|
||||
|
||||
|
||||
class RestController extends AbstractFOSRestController
|
||||
{
|
||||
private $output=[];
|
||||
private $cpt;
|
||||
|
||||
/**
|
||||
* Return list of maps
|
||||
*
|
||||
*
|
||||
* @FOSRest\Post("/rest/getBreakdays")
|
||||
* @SWG\Response(
|
||||
* response=200,
|
||||
* description="Return list of breakday events"
|
||||
* )
|
||||
* )
|
||||
* @SWG\Parameter(
|
||||
* name="key",
|
||||
* in="formData",
|
||||
* required=true,
|
||||
* description="APIKey",
|
||||
* type="string"
|
||||
* )
|
||||
* @SWG\Parameter(
|
||||
* name="username",
|
||||
* in="formData",
|
||||
* required=true,
|
||||
* description="username",
|
||||
* type="string"
|
||||
* )
|
||||
*/
|
||||
|
||||
public function getBreakdays(Request $request) {
|
||||
set_time_limit(0);
|
||||
ini_set('memory_limit', '1024M');
|
||||
|
||||
// Initalisation Manager
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
|
||||
// Récupération des parametres
|
||||
$key=$request->get("key");
|
||||
$username=$request->get("username");
|
||||
|
||||
if($key!=$this->getParameter("appSecret")) {
|
||||
$view = $this->view("API Key inconnue", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
$user=$em->getRepository("App:User")->findOneBy(["username"=>$username]);
|
||||
if(!$user) {
|
||||
$view = $this->view("User inconnue", 403);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
|
||||
// On formate le tableau de jour
|
||||
$start=new \Datetime('00:00');
|
||||
$start->modify("monday this week");
|
||||
$end=new \Datetime('00:00');
|
||||
$end->modify("last day of this month");
|
||||
$end->modify("next sunday");
|
||||
|
||||
|
||||
$events = $em
|
||||
->createQueryBuilder('event')
|
||||
->select('event')
|
||||
->from('App:Event','event')
|
||||
->Where('event.user=:user AND event.start>=:start AND event.end <:end')
|
||||
->setParameter('user',$user)
|
||||
->setParameter('start',$start)
|
||||
->setParameter('end',$end)
|
||||
->getQuery()->getResult();
|
||||
|
||||
|
||||
$output=[
|
||||
"start"=>$start->format("d/m/Y"),
|
||||
"end"=>$end->format("d/m/Y"),
|
||||
"events"=>[],
|
||||
];
|
||||
|
||||
$tbnature=[-200,-190,-100];
|
||||
foreach($events as $event) {
|
||||
if(in_array($event->getTask()->getNature()->getId(),$tbnature)) {
|
||||
$tmp = [
|
||||
"eventstart"=>$event->getStart(),
|
||||
"eventend"=>$event->getEnd(),
|
||||
"eventallday"=>$event->getAllday(),
|
||||
"taskid"=>$event->getTask()->getId(),
|
||||
"taskname"=>$event->getTask()->getName(),
|
||||
"natureid"=>$event->getTask()->getNature()->getId(),
|
||||
"naturename"=>$event->getTask()->getNature()->getName(),
|
||||
];
|
||||
|
||||
array_push($output["events"],$tmp);
|
||||
}
|
||||
}
|
||||
|
||||
$events = $em
|
||||
->createQueryBuilder('breakday')
|
||||
->select('breakday')
|
||||
->from('App:Breakday','breakday')
|
||||
->Where('breakday.start>=:start AND breakday.end <:end')
|
||||
->setParameter('start',$start)
|
||||
->setParameter('end',$end)
|
||||
->getQuery()->getResult();
|
||||
|
||||
foreach($events as $event) {
|
||||
$tmp = [
|
||||
"eventstart"=>$event->getStart(),
|
||||
"eventend"=>$event->getEnd(),
|
||||
"eventallday"=>true,
|
||||
"taskid"=>null,
|
||||
"taskname"=>"Jour Férié",
|
||||
"natureid"=>null,
|
||||
"naturename"=>"Jour Férié",
|
||||
];
|
||||
|
||||
array_push($output["events"],$tmp);
|
||||
}
|
||||
|
||||
$view = $this->view($output, 200);
|
||||
return $this->handleView($view);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user