Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • fabcat/vmap
1 result
Select Git revision
Loading items
Show changes
Showing
with 2001 additions and 0 deletions
<?php
/**
* \file Traitements.class.inc
* \class Traitements
*
* \author WAB <support.wab@veremes.com>.
*
* \brief This file contains the Traitements php class
*
* This class defines Rest Api to Vitis Traitements
*
*/
require_once __DIR__ . '/Anc.class.inc';
require_once 'Traitement.class.inc';
class Traitements extends Anc {
/**
* @SWG\Definition(
* definition="/traitements",
* allOf={
* @SWG\Schema(ref="#/definitions/traitements")
* }
* )
* * @SWG\Tag(
* name="Traitements",
* description="Operations about Traitements"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
*/
function __construct($aPath, $aValues, $properties) {
$this->aValues = $aValues;
$this->aPath = $aPath;
$this->aProperties = $properties;
$this->oConnection = new Connection($this->aValues, $this->aProperties);
$this->oFilesManager = new Files_manager($this->aProperties);
}
/**
* @SWG\Get(path="/traitements",
* tags={"Traitements"},
* summary="Get Traitements",
* description="Request to get Traitements",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="order_by",
* in="query",
* description="list of ordering fields",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="sort_order",
* in="query",
* description="sort_order",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="limit",
* in="query",
* description="number of element",
* required=false,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="offset",
* in="query",
* description="index of first element",
* required=false,
* type="string",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="filter",
* in="query",
* description="filter results",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="distinct",
* in="query",
* description="delete duplicates",
* required=false,
* type="boolean"
* ),
* @SWG\Response(
* response=200,
* description="traitement Response",
* @SWG\Schema(ref="#/definitions/traitements")
* )
* )
*/
/**
* get Traitements
* @return Traitements
*/
function GET() {
$aReturn = $this->genericGet($this->aProperties['schema_anc'], "v_traitement", "id_traitement");
$sMessage = $aReturn['sMessage'];
return $sMessage;
}
/**
* @SWG\Post(path="/traitements",
* tags={"Traitements"},
* summary="Add traitement",
* description="Request to add Traitements",
* operationId="POST",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="traitement Response",
* @SWG\Schema(ref="#/definitions/traitements")
* )
* )
*/
/**
* insert traitement
* @return id of the traitement created
*/
function POST() {
$this->aValues['create'] = $_SESSION["ses_Login"];
$this->aValues['create_date'] = date('Y-m-d');
// Fichiers à uploader
$aUploadFiles = array(
'photos_f' => [],
'fiche_f' => [],
'schema_f' => [],
'documents_f' => [],
'plan_f' => []
);
// Envoi Post
$aReturn = $this->genericPost($this->aProperties['schema_anc'], 'v_traitement', $this->aProperties['schema_anc'].'.traitement_id_traitement_seq', 'id_traitement', $aUploadFiles, 'anc_saisie_anc_evacuation_eaux', 'anc');
return $aReturn['sMessage'];
}
/**
* @SWG\Put(path="/traitements/{id_traitement}",
* tags={"Traitements"},
* summary="update Traitements",
* description="Request to update Traitements",
* operationId="PUT",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="Traitement token",
* required=true,
* type="string"
* ),
* * @SWG\Parameter(
* name="id_traitement",
* in="path",
* description="id of the Traitements",
* required=true,
* type="integer",
* format = "int32"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/traitements")
* )
* )
*/
/**
* update traitements
* @return id of traitements updated or error object if a traitements is not updated
*/
function PUT() {
if (empty($this->aValues['maj']))
$this->aValues['maj'] = $_SESSION["ses_Login"];
if (empty($this->aValues['maj_date']))
$this->aValues['maj_date'] = date('Y-m-d');
// Fichiers à uploader
$aUploadFiles = array(
'photos_f' => [],
'fiche_f' => [],
'schema_f' => [],
'documents_f' => [],
'plan_f' => []
);
// Envoi Put
$aReturn = $this->genericPut($this->aProperties['schema_anc'], 'v_traitement', 'id_traitement', $aUploadFiles, 'anc_saisie_anc_traitement', 'anc');
return $aReturn['sMessage'];
}
/**
* @SWG\Delete(path="/traitements",
* tags={"Traitements"},
* summary="delete Traitements",
* description="Request to delete Traitements",
* operationId="DELETE",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="token",
* required=true,
* type="string"
* ),
* * @SWG\Parameter(
* name="idList",
* in="query",
* description="id of the traitement",
* required=true,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="traitement Response",
* @SWG\Schema(ref="#/definitions/traitements")
* )
* )
*/
/**
* @SWG\Delete(path="/traitements/{id_traitement}",
* tags={"Traitements"},
* summary="delete Traitements",
* description="Request to delete Traitements",
* operationId="DELETE",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="Traitement token",
* required=true,
* type="string"
* ),
* * @SWG\Parameter(
* name="id_traitement",
* in="path",
* description="id of the Traitements",
* required=true,
* type="integer",
* format = "int32"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/traitements")
* )
* )
*/
/**
* delete traitements
* @return id of traitements deleted or error object if a traitements is not deleted
*/
function DELETE() {
$aReturn = $this->genericDelete($this->aProperties['schema_anc'], 'v_traitement', 'id_traitement');
return $aReturn['sMessage'];
}
}
?>
<?php
require_once 'Anc.class.inc';
/**
* \file versions.class.inc
* \class Versions
*
* \author Armand Bahi <armand.bahi@veremes.com>.
*
* \brief This file contains the Versions php class
*
* This class defines the rest api for versions
*
*/
class Versions extends Anc{
/**
* @SWG\Definition(
* definition="/Versions",
* allOf={
* @SWG\Schema(ref="#/definitions/Versions")
* }
* )
* @SWG\Tag(
* name="Versions",
* description="Operations about versions"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $versions ptroperties
*/
function __construct($aPath, $aValues, $properties){
$this->aValues = $aValues;
$this->aPath = $aPath;
$this->aProperties = $properties;
}
/**
* @SWG\Get(path="/Versions",
* tags={"Versions"},
* summary="Get versions",
* description="Request to get versions",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/Versions")
* )
* )
*/
/**
*
* @return versions
*/
function GET(){
$this->getVersion("anc");
//$this->aFields = $this->aVersions;
//
$aXmlRacineAttribute['status']=1;
$sMessage = $this->asDocument('','vitis',$this->aValues['sEncoding'],True,$aXmlRacineAttribute,$this->aValues['sSourceEncoding'],$this->aValues['output']);
return $sMessage;
}
}
?>
\ No newline at end of file
<?php
/**
* @SWG\Swagger(
* basePath="/[service_alias]/anc",
* host="[server]",
* schemes={"[protocol]"},
* produces={
* "application/json",
"application/xml",
"text/html"
* },
* @SWG\Info(
* version="1.0.0",
* title="Anc Test Rest",
* description="All fetaures to access server operation for anc",
* )
* )
*/
?>
<h1 class="titleOverview">Service Anc</h1>
<p>
<a class="linkOverview" href="javascript:sService='anc';LoadApi()">Anc</a>: this is the most comprehensive service which should be used as a preference when developing applications communicating with Anc. Those services allow you to administrate Anc applications.
</p>
\ No newline at end of file
# module_anomalies
Module Anomalies pour vMap
\ No newline at end of file
<?php
$properties["anomalies_email_admin"] = "ludivine.premont@veremes.com";
$properties["email_object_user_create_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} a été créé";
$properties["email_user_create_anomaly"] = "Bonjour,<br/>
<br/>
Vous venez de créer une nouvelle anomalie le {{anomaly.anomalies_date}} :<br/>
Identifiant : {{anomaly.anomalies_id}}<br/>
Thème : {{anomaly.theme_name}}<br/>
Titre : {{anomaly.title}}<br/>
Description : {{anomaly.description}}<br/>
Coordonnées pour vous recontacter : {{anomaly.contact}}<br/>
<br/>
Nous vous remercions pour votre retour et y donnerons suite dès que possible.<br/>
Vous pouvez suivre la prise en charge de votre demande depuis l’onglet « Anomalies » du MODULE ANOMALIES dans vmap.<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_user_update_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} a été mise à jour";
$properties["email_user_update_anomaly"] = "Bonjour,<br/>
<br/>
La modification de votre anomalie n°{{anomaly.anomalies_id}} a bien été enregistrée le {{anomaly.last_update_date}}.<br/>
Identifiant : {{anomaly.anomalies_id}}<br/>
Thème : {{anomaly.theme_name}}<br/>
Titre : {{anomaly.title}}<br/>
Description : {{anomaly.description}}<br/>
Coordonnées pour vous recontacter : {{anomaly.contact}}<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_user_status_in_progress_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} est en cours de traitement";
$properties["email_user_status_in_progress_anomaly"] = "Bonjour,<br/>
<br/>
Votre anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}} est en cours de traitement.<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_user_status_waiting_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} est en attente d'information";
$properties["email_user_status_waiting_anomaly"] = "Bonjour,<br/>
<br/>
Nous sommes en attente d’informations pour le traitement de votre anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}}.<br/>
N’hésitez pas à nous recontacter pour plus de précisions.<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_user_status_cancel_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} a été annulée";
$properties["email_user_status_cancel_anomaly"] = "Bonjour,<br/>
<br/>
Votre anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}} a été annulée, à votre demande ou par votre administrateur SIG.<br/>
N’hésitez pas à nous recontacter pour plus de précisions.<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_user_status_finished_anomaly"] = "L'anomalie VMAP n°{{anomaly.anomalies_id}} a été traitée";
$properties["email_user_status_finished_anomaly"] = "Bonjour,<br/>
<br/>
Votre anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}} a été traitée, la demande est clôturée le {{anomaly.closing_date}}.<br/>
Remarques éventuelles : {{anomaly.admin_comment}}.<br/>
<br/>
Merci encore pour vos retours,<br/>
<br/>
Bien cordialement,<br/>
L’équipe SIG";
$properties["email_object_admin_create_anomaly"] = "Anomalie VMAP n°{{anomaly.anomalies_id}}{{anomaly.theme_name}}{{anomaly.title}}";
$properties["email_admin_create_anomaly"] = "MODULE ANOMALIE VMAP<br/>
<br/>
Une nouvelle anomalie a été signalée le {{anomaly.anomalies_date}} :<br/>
Identifiant : {{anomaly.anomalies_id}}<br/>
Thème : {{anomaly.theme_name}}<br/>
Titre : {{anomaly.title}}<br/>
Description : {{anomaly.description}}<br/>
Coordonnées pour vous recontacter : {{anomaly.contact}}<br/>
<br/>
Utilisateur : {{anomaly.login}}<br/>
Coordonnées : {{anomaly.user_email}}";
$properties["email_object_admin_update_anomaly"] = "Anomalie VMAP n°{{anomaly.anomalies_id}}{{anomaly.theme_name}}{{anomaly.title}}";
$properties["email_admin_update_anomaly"] = "MODULE ANOMALIE VMAP<br/>
<br/>
L’ anomalie n°{{anomaly.anomalies_id}} a été modifiée le {{anomaly.last_update_date}}. :<br/>
Identifiant : {{anomaly.anomalies_id}}<br/>
Thème : {{anomaly.theme_name}}<br/>
Titre : {{anomaly.title}}<br/>
Description : {{anomaly.description}}<br/>
Coordonnées pour vous recontacter : {{anomaly.contact}}<br/>
<br/>
Utilisateur : {{anomaly.login}}<br/>
Coordonnées : {{anomaly.user_email}}";
$properties["email_object_admin_status_change_anomaly"] = "Anomalie VMAP n°{{anomaly.anomalies_id}}{{anomaly.theme_name}}{{anomaly.title}}";
$properties["email_admin_status_change_anomaly"] = "MODULE ANOMALIE VMAP<br/>
<br/>
L’anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}} a pris le statut {{anomaly.status_name}} le {{anomaly.last_update_date}}.<br/>
<br/>
Utilisateur : {{anomaly.login}}<br/>
Coordonnées : {{anomaly.user_email}}";
$properties["email_object_admin_finished_anomaly"] = "Anomalie VMAP n°{{anomaly.anomalies_id}}{{anomaly.theme_name}}{{anomaly.title}}";
$properties["email_admin_finished_anomaly"] = "MODULE ANOMALIE VMAP<br/>
<br/>
L’anomalie n°{{anomaly.anomalies_id}} « {{anomaly.title}} » du {{anomaly.anomalies_date}} a été clôturée le {{anomaly.closing_date}}.<br/>
<br/>
Remarques : {{anomaly.admin_comment}}.<br/>
<br/>
Utilisateur : {{anomaly.login}}<br/>
Coordonnées : {{anomaly.user_email}}";
$properties["anomalies_max_zoom"] = 11;
\ No newline at end of file
<?php
$properties['schema_anomalies'] = 's_anomalies';
<?php
$aAdminFields = Array(
'anomalies_max_zoom',
);
$aUserFields = Array(
'anomalies_max_zoom',
);
$properties['aAdminFields'] = array_merge($properties['aAdminFields'], $aAdminFields);
$properties['aUserFields'] = array_merge($properties['aUserFields'], $aUserFields);
?>
\ No newline at end of file
<?php
// Numéro de la version de Vmap anomalies
define ("VM_VERSION", "[VERSION]");
define ("VM_BUILD", "[BUILD]");
define ("VM_MONTH_YEAR", "[MONTH_YEAR]");
define ("VM_STATUS", "UNSTABLE");
?>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<sqlQueries>
<title>Scripts d'installation et de mises à jour de la base du VAS</title>
<queriesCollection>
<query>
<type>init</type>
<version>2019.01.00</version>
<code>
<![CDATA[
-- Création du schéma et des roles
CREATE SCHEMA s_anomalies;
select s_vitis.create_role_if_not_exists('vmap_anomalies_admin', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION');
select s_vitis.create_role_if_not_exists('vmap_anomalies_user', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION');
select s_vitis.create_role_if_not_exists('vmap_anomalies_light_user', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION');
ALTER SCHEMA s_anomalies OWNER TO u_vitis;
REVOKE ALL ON SCHEMA s_anomalies FROM PUBLIC;
REVOKE ALL ON SCHEMA s_anomalies FROM u_vitis;
GRANT ALL ON SCHEMA s_anomalies TO u_vitis;
GRANT USAGE ON SCHEMA s_anomalies TO vmap_anomalies_admin;
GRANT USAGE ON SCHEMA s_anomalies TO vmap_anomalies_user;
GRANT USAGE ON SCHEMA s_anomalies TO vmap_anomalies_light_user;
-- Ajout du module dans vmap
INSERT INTO s_vitis.privileges(rolname, description) VALUES ('vmap_anomalies_admin', 'rôle administrateur du module anomalies de vMap');
INSERT INTO s_vitis.privileges(rolname, description) VALUES ('vmap_anomalies_user', 'rôle utilisateur du module anomalies de vMap');
INSERT INTO s_vitis.privileges(rolname, description) VALUES ('vmap_anomalies_light_user', 'rôle utilisateur du module anomalies light de vMap');
INSERT INTO s_vmap.module(module_id, description, label, rolname, rolname_list) VALUES ('anomalies', 'Module anomalies', 'Module anomalies', 'vmap_anomalies_user', 'vmap_anomalies_admin|vmap_anomalies_user|vmap_anomalies_light_user');
-- Création d'une séquence commune
CREATE SEQUENCE s_anomalies.seq_common START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
ALTER TABLE s_anomalies.seq_common OWNER TO u_vitis;
GRANT ALL ON SEQUENCE s_anomalies.seq_common TO vmap_anomalies_admin;
GRANT SELECT ON SEQUENCE s_anomalies.seq_common TO vmap_anomalies_user;
GRANT SELECT ON SEQUENCE s_anomalies.seq_common TO vmap_anomalies_light_user;
-- Création table status
CREATE TABLE s_anomalies.rt_anomalies_status (status_id integer NOT NULL, name character varying(50) COLLATE pg_catalog."default" NOT NULL, description character varying(255) COLLATE pg_catalog."default" DEFAULT NULL::character varying, color character varying(255) COLLATE pg_catalog."default" DEFAULT NULL::character varying);
ALTER TABLE s_anomalies.rt_anomalies_status OWNER TO u_vitis;
GRANT ALL ON TABLE s_anomalies.rt_anomalies_status TO vmap_anomalies_admin;
GRANT SELECT ON TABLE s_anomalies.rt_anomalies_status TO vmap_anomalies_user;
GRANT SELECT ON TABLE s_anomalies.rt_anomalies_status TO vmap_anomalies_light_user;
-- Insertion des status
INSERT INTO s_anomalies.rt_anomalies_status (status_id, name, description, color) VALUES (1, 'Nouveau', 'Nouveau: L’anomalie a été créé récemment.', '#00F80B');
INSERT INTO s_anomalies.rt_anomalies_status (status_id, name, description, color) VALUES (2, 'En attente d’information', 'En attente d’information: L’anomalie est prise en charge mais des éléments sont manquants pour pouvoir enclencher l’En cours (nécessite prise de contact avec le login qui a signalé pour plus de précisions).', '#DD7500');
INSERT INTO s_anomalies.rt_anomalies_status(status_id, name, description, color) VALUES (3, 'En cours', 'En cours: L’anomalie est confirmée, comprise, et elle est en cours de résolution.', '#387AFF');
INSERT INTO s_anomalies.rt_anomalies_status (status_id, name, description, color) VALUES (4, 'Terminé', 'Terminé: L’anomalie est résolue (équivalent à archiver).', '#050505');
INSERT INTO s_anomalies.rt_anomalies_status (status_id, name, description, color) VALUES (5, 'Annulé', 'Annulé: L’utilisateur ou l’administrateur si on se rend compte après signalement que ce n’est pas une anomalie', '#FF0000');
-- Création table theme
CREATE TABLE s_anomalies.anomalies_theme (theme_id integer NOT NULL DEFAULT nextval('s_anomalies.seq_common'::regclass), name character varying(50) NOT NULL, short_name character varying(50) NOT NULL, description character varying(255) COLLATE pg_catalog."default" DEFAULT NULL::character varying);
ALTER TABLE s_anomalies.anomalies_theme OWNER TO u_vitis;
GRANT ALL ON TABLE s_anomalies.anomalies_theme TO vmap_anomalies_admin;
GRANT SELECT ON TABLE s_anomalies.anomalies_theme TO vmap_anomalies_user;
GRANT SELECT ON TABLE s_anomalies.anomalies_theme TO vmap_anomalies_light_user;
-- Création séquence s_anomalies
CREATE SEQUENCE s_anomalies.seq_anomalies_id START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
ALTER TABLE s_anomalies.seq_anomalies_id OWNER TO u_vitis;
GRANT ALL ON SEQUENCE s_anomalies.seq_anomalies_id TO vmap_anomalies_admin;
GRANT ALL ON SEQUENCE s_anomalies.seq_anomalies_id TO vmap_anomalies_user;
GRANT SELECT ON SEQUENCE s_anomalies.seq_anomalies_id TO vmap_anomalies_light_user;
-- Création table anomalies
CREATE TABLE s_anomalies.anomalies (anomalies_id integer DEFAULT nextval('s_anomalies.seq_anomalies_id'::regclass) NOT NULL, status_id integer, theme_id integer NOT NULL, title character varying(255) NOT NULL, description text NOT NULL, files text, contact character varying(255), user_id integer NOT NULL, anomalies_date timestamp with time zone NOT NULL DEFAULT NOW(), last_update_date timestamp with time zone, closing_date timestamp with time zone, map_id integer NOT NULL, admin_comment text, geom geometry(MultiPoint), CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = $(SRID)));
ALTER TABLE s_anomalies.anomalies OWNER TO u_vitis;
GRANT ALL ON TABLE s_anomalies.anomalies TO vmap_anomalies_admin;
GRANT ALL ON TABLE s_anomalies.anomalies TO vmap_anomalies_user;
GRANT SELECT ON TABLE s_anomalies.anomalies TO vmap_anomalies_light_user;
-- Création vue v_anomalies
CREATE OR REPLACE VIEW s_anomalies.v_anomalies AS SELECT anomalies.anomalies_id, anomalies.status_id, status.name AS status_name, status.color AS status_color, anomalies.theme_id, theme.name AS theme_name, theme.short_name as theme_short_name, anomalies.title, anomalies.description, anomalies.files, anomalies.contact, anomalies.user_id, "user".login, "user".name AS user_name, "user".email as user_email, anomalies.anomalies_date, anomalies.last_update_date, anomalies.closing_date, anomalies.map_id, anomalies.admin_comment, anomalies.geom FROM s_anomalies.anomalies LEFT JOIN s_vitis.user ON anomalies.user_id = "user".user_id LEFT JOIN s_anomalies.anomalies_theme as theme ON anomalies.theme_id = theme.theme_id LEFT JOIN s_anomalies.rt_anomalies_status as status ON anomalies.status_id = status.status_id;
ALTER TABLE s_anomalies.v_anomalies OWNER TO u_vitis;
GRANT ALL ON TABLE s_anomalies.v_anomalies TO vmap_anomalies_admin;
GRANT ALL ON TABLE s_anomalies.v_anomalies TO vmap_anomalies_user;
GRANT SELECT ON TABLE s_anomalies.v_anomalies TO vmap_anomalies_light_user;
GRANT ALL ON TABLE s_anomalies.v_anomalies TO u_vitis;
-- Création d'une table pour les styles de features
ALTER TABLE s_anomalies.anomalies_theme ADD CONSTRAINT unique_theme_name UNIQUE (name);
ALTER TABLE s_anomalies.rt_anomalies_status ADD CONSTRAINT unique_status_name UNIQUE (name);
CREATE TABLE s_anomalies.anomalies_feature_style (anomalies_feature_style_id integer NOT NULL DEFAULT nextval('s_anomalies.seq_common'::regclass), theme_name character varying(50) REFERENCES s_anomalies.anomalies_theme(name), status_name character varying(50) REFERENCES s_anomalies.rt_anomalies_status(name), feature_style_id integer NOT NULL, CONSTRAINT pk_anomalies_feature_style_id PRIMARY KEY (anomalies_feature_style_id), CONSTRAINT u_constrainte UNIQUE (theme_name, status_name), CONSTRAINT fk_featurestyle FOREIGN KEY (feature_style_id) REFERENCES s_vitis.feature_style(feature_style_id));
ALTER TABLE s_anomalies.anomalies_feature_style OWNER to u_vitis;
GRANT ALL ON TABLE s_anomalies.anomalies_feature_style TO u_vitis;
CREATE OR REPLACE VIEW s_anomalies.v_anomalies_feature_style AS SELECT anomalies_feature_style.status_name, anomalies_feature_style.theme_name, feature_style.feature_style_id, feature_style.draw_color, feature_style.draw_outline_color, feature_style.draw_size, feature_style.draw_dash, feature_style.draw_symbol, feature_style.draw_rotation, feature_style.text_font, feature_style.text_color, feature_style.text_outline_color, feature_style.text_size, feature_style.text_outline_size, feature_style.text_offset_x, feature_style.text_offset_y, feature_style.text_rotation, feature_style.text_text, feature_style.image FROM s_anomalies.anomalies_feature_style LEFT JOIN s_vitis.feature_style ON anomalies_feature_style.feature_style_id = feature_style.feature_style_id;
ALTER TABLE s_anomalies.v_anomalies_feature_style OWNER TO u_vitis;
GRANT ALL ON TABLE s_anomalies.v_anomalies_feature_style TO vmap_anomalies_admin;
GRANT SELECT ON TABLE s_anomalies.v_anomalies_feature_style TO vmap_anomalies_user;
GRANT SELECT ON TABLE s_anomalies.v_anomalies_feature_style TO vmap_anomalies_light_user;
GRANT ALL ON TABLE s_anomalies.v_anomalies_feature_style TO u_vitis;
-- Insertion des données style
WITH rows AS ( INSERT INTO s_vitis.feature_style(draw_color, draw_outline_color, draw_size, draw_symbol, text_font, text_color, text_outline_color, text_size, text_outline_size, text_offset_x, text_offset_y, text_rotation, text_text, feature_type) VALUES ('#00F80B', '#000000', 5, '', '', '#ffffff', '#000000', 18, 2, 0, 20, 0, '', 'point') RETURNING feature_style_id) INSERT INTO s_anomalies.anomalies_feature_style(theme_name, status_name, feature_style_id) VALUES (NULL, 'Nouveau', (SELECT feature_style_id FROM rows));
WITH rows AS ( INSERT INTO s_vitis.feature_style(draw_color, draw_outline_color, draw_size, draw_symbol, text_font, text_color, text_outline_color, text_size, text_outline_size, text_offset_x, text_offset_y, text_rotation, text_text, feature_type) VALUES ('#DD7500', '#000000', 5, '', '', '#ffffff', '#000000', 18, 2, 0, 20, 0, '', 'point') RETURNING feature_style_id) INSERT INTO s_anomalies.anomalies_feature_style(theme_name, status_name, feature_style_id) VALUES (NULL, 'En attente d’information', (SELECT feature_style_id FROM rows));
WITH rows AS ( INSERT INTO s_vitis.feature_style(draw_color, draw_outline_color, draw_size, draw_symbol, text_font, text_color, text_outline_color, text_size, text_outline_size, text_offset_x, text_offset_y, text_rotation, text_text, feature_type) VALUES ('#387AFF', '#000000', 5, '', '', '#ffffff', '#000000', 18, 2, 0, 20, 0, '', 'point') RETURNING feature_style_id) INSERT INTO s_anomalies.anomalies_feature_style(theme_name, status_name, feature_style_id) VALUES (NULL, 'En cours', (SELECT feature_style_id FROM rows));
WITH rows AS ( INSERT INTO s_vitis.feature_style(draw_color, draw_outline_color, draw_size, draw_symbol, text_font, text_color, text_outline_color, text_size, text_outline_size, text_offset_x, text_offset_y, text_rotation, text_text, feature_type) VALUES ('#050505', '#000000', 5, '', '', '#ffffff', '#000000', 18, 2, 0, 20, 0, '', 'point') RETURNING feature_style_id) INSERT INTO s_anomalies.anomalies_feature_style(theme_name, status_name, feature_style_id) VALUES (NULL, 'Terminé', (SELECT feature_style_id FROM rows));
WITH rows AS ( INSERT INTO s_vitis.feature_style(draw_color, draw_outline_color, draw_size, draw_symbol, text_font, text_color, text_outline_color, text_size, text_outline_size, text_offset_x, text_offset_y, text_rotation, text_text, feature_type) VALUES ('#FF0000', '#000000', 5, '', '', '#ffffff', '#000000', 18, 2, 0, 20, 0, '', 'point') RETURNING feature_style_id) INSERT INTO s_anomalies.anomalies_feature_style(theme_name, status_name, feature_style_id) VALUES (NULL, 'Annulé', (SELECT feature_style_id FROM rows));
]]>
</code>
</query>
</queriesCollection>
</sqlQueries>
<?php
require_once 'Anomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
/**
* \file Anomalie.class.inc
* \class Anomalie
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Anomalie php class
*
* This class defines operation for one Anomalie
*
*/
class Anomalie extends Vitis {
public $oError;
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('anomalies_id', 'status_id', 'status_name', 'status_color', 'theme_id', 'theme_name', 'theme_short_name', 'title', 'description', 'files', 'contact', 'user_id', 'login', 'user_name', 'email', 'anomalies_date', 'last_update_date', 'closing_date', 'map_id', 'admin_comment', 'geom');
}
/**
* @SWG\Get(path="/anomalies/{anomalies_id}",
* tags={"Anomalies"},
* summary="Get Anomalie",
* description="Request to get Anomalie by id",
* operationId="GET",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="anomalies_id",
* in="path",
* description="anomalie id",
* required=true,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/anomalie")
* )
* )
*/
/**
* get informations about mode
*/
function GET() {
require dirname($_SERVER['SCRIPT_FILENAME']) . "/ws/vitis/" . $this->sRessourcesFile;
$this->aFields = $this->getFields($this->aProperties['schema_anomalies'], "v_anomalies", "anomalies_id", 'anomalies', 'anomalies');
}
}
?>
\ No newline at end of file
<?php
/**
* \file Anomalies.class.inc
* \class Anomalies
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Modes php class
*
* This class defines Rest Api to Vitis Anomalies
*
*/
require_once 'AnomaliesAnomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
require_once 'Anomalie.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/Email.class.inc';
class Anomalies extends AnomaliesAnomalies {
/**
* @SWG\Definition(
* definition="/anomalie",
* allOf={
* @SWG\Schema(ref="#/definitions/anomalie")
* }
* )
* * @SWG\Tag(
* name="Anomalies",
* description="Operations about Anomalies"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('anomalies_id', 'status_id', 'status_name', 'status_color', 'theme_id', 'theme_name', 'theme_short_name', 'title', 'description', 'files', 'contact', 'user_id', 'login', 'user_name', 'email', 'anomalies_date', 'last_update_date', 'closing_date', 'map_id', 'admin_comment', 'geom');
}
/**
* @SWG\Get(path="/anomalies",
* tags={"Anomalies"},
* summary="Get Anomalies",
* description="Request to get Anomalies",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="order_by",
* in="query",
* description="list of ordering fields",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="sort_order",
* in="query",
* description="sort order",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="limit",
* in="query",
* description="number of element",
* required=false,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="offset",
* in="query",
* description="index of first element",
* required=false,
* type="string",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="filter",
* in="query",
* description="filter results",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="distinct",
* in="query",
* description="delete duplicates",
* required=false,
* type="boolean"
* ),
* @SWG\Response(
* response=200,
* description="Properties Response",
* @SWG\Schema(ref="#/definitions/anomalies")
* )
* )
*/
/**
* get Anomalies
* @return Anomalies
*/
function GET() {
$aReturn = $this->genericGet($this->aProperties['schema_anomalies'], "v_anomalies", "anomalies_id", false, 'anomalies', 'anomalies');
return $aReturn['sMessage'];
}
/**
* @SWG\Post(path="/anomalies",
* tags={"Anomalies"},
* summary="Add Anomaly",
* description="Request to add anomaly",
* operationId="POST",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="formData",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="geom",
* in="formData",
* description="geom of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="theme_id",
* in="formData",
* description="theme of the anomaly",
* required=true,
* type="integer"
* ),
* @SWG\Parameter(
* name="title",
* in="formData",
* description="title of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="description",
* in="formData",
* description="description of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="files",
* in="formData",
* description="files of the anomaly",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="contact",
* in="formData",
* description="contact who declare the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="user_id",
* in="formData",
* description="user who declare the anomaly",
* required=true,
* type="integer"
* ),
* @SWG\Parameter(
* name="map_id",
* in="formData",
* description="map of the anomaly",
* required=true,
* type="integer"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/anomalies")
* )
* )
*/
/**
* insert anomaly
* @return id of the anomaly created
*/
function POST() {
require 'Anomalies.class.sql.inc';
// Selectionne le status par défaut
$oBd = new BD($this->aProperties["db_superuser_login"], $this->aProperties["db_superuser_pass"], $this->aProperties["database"], $this->aProperties["server"], $this->aProperties["port"], $this->aProperties["sgbd"]);
$aParams = array(
"SCHEMA" => array("value" => $this->aProperties["schema_anomalies"], "type" => "column_name"),
"STATUS_NAME" => array("value" => 'Nouveau', "type" => "string"),
);
$oPDOresult = $oBd->executeWithParams($aSql['selectStatus'], $aParams);
$oStatus = $oBd->ligneSuivante($oPDOresult);
$this->aValues['status_id'] = $oStatus['status_id'];
// Si il a au moins un fichier
if (!empty($_FILES['files'])) {
// On vérifie que la somme des tailles des fichiers est plus petite que 20Mo
if ($this->getFilesSize() < (20 * 1000000)) {
$aReturn = $this->genericPost($this->aProperties['schema_anomalies'], 'anomalies', $this->aProperties['schema_anomalies'] . '.seq_anomalies_id', 'anomalies_id', array('*'), 'anomalies', 'anomalies');
} else {
// ERROR
$aReturn = array();
$aReturn['status'] = 0;
$aReturn['errorMessage'] = "Les fichiers sont trop volumineux";
return json_encode($aReturn);
}
} else {
$aReturn = $this->genericPost($this->aProperties['schema_anomalies'], 'anomalies', $this->aProperties['schema_anomalies'] . '.seq_anomalies_id', 'anomalies_id');
}
// Envoi d'une email de confirmation de création a l'utilisateur (si il a une adresse) et à l'admin
$oMessage = json_decode($aReturn['sMessage']);
if ($oMessage->status == 1) {
$oAnomaly = $this->getAnomaly($oMessage->anomalies_id);
$this->prepareAndSendEmail('email_user_create_anomaly', $oAnomaly, 'email_object_user_create_anomaly', false);
$this->prepareAndSendEmail('email_admin_create_anomaly', $oAnomaly, 'email_object_admin_create_anomaly', true);
}
return $aReturn['sMessage'];
}
/**
* @SWG\Post(path="/anomalies/{anomalies_id}",
* tags={"Anomalies"},
* summary="Add Anomaly",
* description="Request to add anomaly",
* operationId="POST",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="formData",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="geom",
* in="formData",
* description="geom of the anomaly",
* required=true,
* type="string"
* ),
* * @SWG\Parameter(
* name="theme_id",
* in="formData",
* description="theme of the anomaly",
* required=true,
* type="integer"
* ),
* @SWG\Parameter(
* name="title",
* in="formData",
* description="title of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="description",
* in="formData",
* description="description of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="files",
* in="formData",
* description="files of the anomaly",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="contact",
* in="formData",
* description="contact who declare the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="status_id",
* in="formData",
* description="status of the anomaly",
* required=true,
* type="integer"
* ),
* @SWG\Parameter(
* name="admin_comment",
* in="formData",
* description="map of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="geom",
* in="formData",
* description="geom of the anomaly",
* required=true,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/anomalies")
* )
* )
*/
/**
* update anomaly
* @return id of the anomaly created
*/
function PUT() {
$oAnomaly = $this->getAnomaly($this->aValues['anomalies_id']);
$this->aValues['last_update_date'] = 'NOW()';
// Le statut vaut 'terminé' (4) ou 'annulé' (5), initialise la date de clôture
if ($this->aValues['status_id'] == 4 || $this->aValues['status_id'] == 5) {
$this->aValues['closing_date'] = 'NOW()';
}
if ($this->aValues['status_id'] == 4 && (!isset($this->aValues['admin_comment']) || $this->aValues['admin_comment'] === '')) {
// ERROR
$aReturn = array();
$aReturn['status'] = 0;
$aReturn['errorMessage'] = "Le commentaire administrateur est obligatoire pour clôturer une demande";
return json_encode($aReturn);
}
// Si il a au moins un fichier
if (!empty($_FILES['files'])) {
// On vérifie que la somme des tailles des fichiers est plus petite que 20Mo
if ($this->getFilesSize() < (20 * 1000000)) {
$aReturn = $this->genericPut($this->aProperties['schema_anomalies'], 'anomalies', 'anomalies_id', array('*'), 'anomalies', 'anomalies');
} else {
// ERROR
$aReturn = array();
$aReturn['status'] = 0;
$aReturn['errorMessage'] = "Les fichiers sont trop volumineux";
return json_encode($aReturn);
}
} else {
$aReturn = $this->genericPut($this->aProperties['schema_anomalies'], 'anomalies', 'anomalies_id');
}
// Envoi d'une email de confirmation de création a l'utilisateur (si il a une adresse) et à l'admin
$oMessage = json_decode($aReturn['sMessage']);
if ($oMessage->status == 1) {
$emailUserTitle = '';
$emailAdminTitle = '';
$emailUserId = '';
$emailAdminId = '';
// Si le status change
if (isset($this->aValues['status_id']) && $oAnomaly['status_id'] != $this->aValues['status_id']) {
$emailAdminTitle = 'email_object_admin_status_change_anomaly';
$emailAdminId = 'email_admin_status_change_anomaly';
switch ($this->aValues['status_id']) {
case '2': // En attente d’information
$emailUserTitle = 'email_object_user_status_waiting_anomaly';
$emailUserId = 'email_user_status_waiting_anomaly';
break;
case '3': // En cours
$emailUserTitle = 'email_object_user_status_in_progress_anomaly';
$emailUserId = 'email_user_status_in_progress_anomaly';
break;
case '4': // Terminé
$emailUserTitle = 'email_object_user_status_finished_anomaly';
$emailUserId = 'email_user_status_finished_anomaly';
$emailAdminTitle = 'email_object_admin_finished_anomaly';
$emailAdminId = 'email_admin_finished_anomaly';
break;
case '5': // Annulé
$emailUserTitle = 'email_object_user_status_cancel_anomaly';
$emailUserId = 'email_user_status_cancel_anomaly';
break;
default:
break;
}
} else if ($oAnomaly['login'] == $_SESSION["ses_Login"]) { // Si la modification vient de l'utilisateur
$emailUserTitle = 'email_object_user_update_anomaly';
$emailAdminTitle = 'email_object_admin_update_anomaly';
$emailUserId = 'email_user_update_anomaly';
$emailAdminId = 'email_admin_update_anomaly';
}
$oAnomaly = $this->getAnomaly($oMessage->anomalies_id);
if ($emailUserTitle != '' && $emailUserId != '') {
$this->prepareAndSendEmail($emailUserId, $oAnomaly, $emailUserTitle, false);
}
if ($emailAdminTitle != '' && $emailAdminId != '') {
$this->prepareAndSendEmail($emailAdminId, $oAnomaly, $emailAdminTitle, true);
}
}
return $aReturn['sMessage'];
}
function prepareAndSendEmail($propertiesId, $oAnomaly, $sTitleId, $isAdminMail) {
$sTemplateEmail = $this->getTemplateEmail($propertiesId, $oAnomaly);
$sTitle = $this->getTemplateEmail($sTitleId, $oAnomaly);
$this->sendMail($oAnomaly, $sTemplateEmail, $sTitle, $isAdminMail);
}
function getAnomaly($anomalyId) {
require 'Anomalies.class.sql.inc';
// Selectionne les informations sur l'anomalie
$oBd = new BD($this->aProperties["db_superuser_login"], $this->aProperties["db_superuser_pass"], $this->aProperties["database"], $this->aProperties["server"], $this->aProperties["port"], $this->aProperties["sgbd"], 'UTF8');
$aParams = array(
"SCHEMA" => array("value" => $this->aProperties["schema_anomalies"], "type" => "column_name"),
"ANOMALY_ID" => array("value" => $anomalyId, "type" => "number"),
);
$oPDOresult = $oBd->executeWithParams($aSql['selectAnomaly'], $aParams);
$oAnomaly = $oBd->ligneSuivante($oPDOresult);
return $oAnomaly;
}
function getTemplateEmail($propertiesId, $oAnomaly) {
$sTemplateEmail = $this->aProperties[$propertiesId];
// Remplace
foreach ($oAnomaly as $key => $value) {
if ($key === 'anomalies_date' || $key == 'last_update_date' || $key == 'closing_date' && $value != '') {
try {
$date = new \DateTime($value);
$sTemplateEmail = str_replace('{{anomaly.'.$key.'}}', $date->format($this->aProperties['date_format']), $sTemplateEmail);
} catch (\Exception $e) {
$sTemplateEmail = str_replace('{{anomaly.'.$key.'}}', $value, $sTemplateEmail);
}
} else {
$sTemplateEmail = str_replace('{{anomaly.' . $key . '}}', $value, $sTemplateEmail);
}
}
return $sTemplateEmail;
}
function sendMail($oAnomaly, $sBody, $sTitle, $isAdminMail) {
if ($isAdminMail) {
$sTo = $this->aProperties['anomalies_email_admin'];
} else if (isset($oAnomaly['user_email']) && $oAnomaly['user_email'] !== '') {
$sTo = $oAnomaly['user_email'];
}
if (isset($sTo) && $sTo !== '') {
$sMailStruct = array(
"to" => $sTo,
"cci"=> "",
"subject" => $this->aProperties['mail_tag_subject'] . $sTitle,
"body" => $sBody,
"aAttachments" => array()
);
$mail = new Email(null, null, $this->aProperties, null);
$mail->loadFromExernalDataStruct($sMailStruct);
$mail->send();
}
}
/**
* Récupère la taille des fichiers existant + la taille des fichiers télédéchargé
*
* @return {integer}
*/
function getFilesSize() {
$size = 0;
// Si il y a des fichiers que l'on garde, on ajoute aussi leur poids
$sFolder = $this->aProperties['ws_data_dir'] . '/anomalies/anomalies/documents/' . $this->aValues['my_vitis_id'] . '/files';
if (isset($this->aValues['vitis_unchanged_files'])) {
$aUnchangedFiles = json_decode($this->aValues['vitis_unchanged_files'], true);
if (is_array($aUnchangedFiles['files']) && is_dir($sFolder)) {
$aFolder = scandir($sFolder);
foreach ($aFolder as $sFile) {
if ($sFile != "." && $sFile != "..") {
if (!is_dir($sFolder . "/" . $sFile) && in_array($sFile, $aUnchangedFiles['files'])) {
$size = $size + filesize($sFolder . "/" . $sFile);
}
}
}
}
}
// Ajoute le poids des fichiers ajouté
if ($_FILES['files']['size']) {
$size = $_FILES['files']['size'];
} else {
for ($i=0; $i < count($_FILES['files']); $i++) {
$size = $size + $_FILES['files'][$i]['size'];
}
}
return $size;
}
}
?>
\ No newline at end of file
<?php
$aSql["selectStatus"] = "SELECT status_id FROM [SCHEMA].rt_anomalies_status WHERE name=[STATUS_NAME];";
$aSql["selectAnomaly"] = "SELECT * FROM [SCHEMA].v_anomalies WHERE anomalies_id=[ANOMALY_ID];";
\ No newline at end of file
<?php
require_once dirname($_SERVER['SCRIPT_FILENAME']) . "/class/vitis_lib/DbClass.class.inc";
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/ws/vitis/Vitis.class.inc';
class AnomaliesAnomalies extends Vitis {
//Chemin du fichier de ressources contenant les requêtes SQL
var $sRessourcesFile = 'Vitis.class.sql.inc';
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
}
}
?>
\ No newline at end of file
<?php
require_once 'AnomaliesFeatureStyles.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
/**
* \file AnomaliesFeatureStyle.class.inc
* \class AnomaliesFeatureStyle
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the AnomaliesFeatureStyle php class
*
* This class defines operation for one AnomaliesFeatureStyle
*
*/
class AnomaliesFeatureStyle extends Vitis {
public $oError;
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array(
'anomalies_feature_style_id',
'theme_name',
'status_name',
'feature_style_id',
'draw_color',
'draw_outline_color',
'draw_size',
'draw_dash',
'draw_symbol',
'draw_rotation',
'image',
'text_font',
'text_color',
'text_outline_color',
'text_size',
'text_outline_size',
'text_offset_x',
'text_offset_y',
'text_rotation',
'text_text'
);
}
/**
* @SWG\Get(path="/anomaliesfeaturestyles/{anomalies_feature_style_id}",
* tags={"AnomaliesFeatureStyles"},
* summary="Get AnomaliesFeatureStyle",
* description="Request to get AnomaliesFeatureStyle by id",
* operationId="GET",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="anomalies_feature_style_id",
* in="path",
* description="anomalies_feature_style_id",
* required=true,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/anomaliesfeaturestyle")
* )
* )
*/
/**
* get informations about mode
*/
function GET() {
require dirname($_SERVER['SCRIPT_FILENAME']) . "/ws/vitis/" . $this->sRessourcesFile;
$this->aFields = $this->getFields($this->aProperties['schema_anomalies'], "v_anomalies_feature_style", "anomalies_feature_style_id");
}
}
?>
\ No newline at end of file
<?php
/**
* \file AnomaliesFeatureStyles.class.inc
* \class AnomaliesFeatureStyles
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Modes php class
*
* This class defines Rest Api to Vitis AnomaliesFeatureStyles
*
*/
require_once 'AnomaliesAnomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
require_once 'AnomaliesFeatureStyle.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc';
class AnomaliesFeatureStyles extends AnomaliesAnomalies {
/**
* @SWG\Definition(
* definition="/anomaliesfeaturestyle",
* allOf={
* @SWG\Schema(ref="#/definitions/anomaliesfeaturestyle")
* }
* )
* * @SWG\Tag(
* name="AnomaliesFeatureStyles",
* description="Operations about AnomaliesFeatureStyles"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array(
'anomalies_feature_style_id',
'theme_name',
'status_name',
'feature_style_id',
'draw_color',
'draw_outline_color',
'draw_size',
'draw_dash',
'draw_symbol',
'draw_rotation',
'image',
'text_font',
'text_color',
'text_outline_color',
'text_size',
'text_outline_size',
'text_offset_x',
'text_offset_y',
'text_rotation',
'text_text'
);
}
/**
* @SWG\Get(path="/anomaliesfeaturestyles",
* tags={"AnomaliesFeatureStyles"},
* summary="Get AnomaliesFeatureStyles",
* description="Request to get AnomaliesFeatureStyles",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="order_by",
* in="query",
* description="list of ordering fields",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="sort_order",
* in="query",
* description="sort order",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="limit",
* in="query",
* description="number of element",
* required=false,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="offset",
* in="query",
* description="index of first element",
* required=false,
* type="string",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="filter",
* in="query",
* description="filter results",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="distinct",
* in="query",
* description="delete duplicates",
* required=false,
* type="boolean"
* ),
* @SWG\Response(
* response=200,
* description="Properties Response",
* @SWG\Schema(ref="#/definitions/anomaliesfeaturestyles")
* )
* )
*/
/**
* get Anomalies
* @return Anomalies
*/
function GET() {
$aReturn = $this->genericGet($this->aProperties['schema_anomalies'], "v_anomalies_feature_style", "anomalies_feature_style_id");
for ($i = 0; $i < count($this->aObjects); $i++) {
$this->aObjects[$i]->aFields['style'] = $this->getGeoJSONStyle($this->aObjects[$i]->aFields);
}
$aXmlRacineAttribute['status'] = 1;
$sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], True, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']);
return $sMessage;
}
/**
* Returns a GeoJSON format style from an array format style
* @param array $aStyle
* @return array
*/
function getGeoJSONStyle($aStyle) {
$aGeoJSONStyle = array(
'draw' => array(),
'text' => array(),
);
// Draw
if (!empty($aStyle['draw_color'])) {
$aGeoJSONStyle['draw']['color'] = $aStyle['draw_color'];
}
if (!empty($aStyle['draw_outline_color'])) {
$aGeoJSONStyle['draw']['outline_color'] = $aStyle['draw_outline_color'];
}
if (!empty($aStyle['draw_size'])) {
$aGeoJSONStyle['draw']['size'] = $aStyle['draw_size'];
}
if (!empty($aStyle['draw_dash'])) {
$aGeoJSONStyle['draw']['dash'] = $aStyle['draw_dash'];
}
if (!empty($aStyle['draw_symbol'])) {
$aGeoJSONStyle['draw']['symbol'] = $aStyle['draw_symbol'];
}
if (!empty($aStyle['draw_rotation'])) {
$aGeoJSONStyle['draw']['rotation'] = $aStyle['draw_rotation'];
}
if (!empty($aStyle['image'])) {
$aGeoJSONStyle['draw']['image'] = $aStyle['image'];
}
// Text
if (!empty($aStyle['text_font'])) {
$aGeoJSONStyle['text']['font'] = $aStyle['text_font'];
}
if (!empty($aStyle['text_color'])) {
$aGeoJSONStyle['text']['color'] = $aStyle['text_color'];
}
if (!empty($aStyle['text_outline_color'])) {
$aGeoJSONStyle['text']['outline_color'] = $aStyle['text_outline_color'];
}
if (!empty($aStyle['text_size'])) {
$aGeoJSONStyle['text']['size'] = $aStyle['text_size'];
}
if (!empty($aStyle['text_outline_size'])) {
$aGeoJSONStyle['text']['outline_size'] = $aStyle['text_outline_size'];
}
if (!empty($aStyle['text_offset_x'])) {
$aGeoJSONStyle['text']['offsetX'] = $aStyle['text_offset_x'];
}
if (!empty($aStyle['text_offset_y'])) {
$aGeoJSONStyle['text']['offsetY'] = $aStyle['text_offset_y'];
}
if (!empty($aStyle['text_rotation'])) {
$aGeoJSONStyle['text']['rotation'] = $aStyle['text_rotation'];
}
if (!empty($aStyle['text_text'])) {
$aGeoJSONStyle['text']['text'] = $aStyle['text_text'];
}
// Vide draw ou text si ils sont vides
if (empty($aGeoJSONStyle['draw'])) {
unset($aGeoJSONStyle['draw']);
}
if (empty($aGeoJSONStyle['text'])) {
unset($aGeoJSONStyle['text']);
}
return $aGeoJSONStyle;
}
}
?>
\ No newline at end of file
<?php
require_once 'Anomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
/**
* \file Status.class.inc
* \class Status
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Status php class
*
* This class defines operation for one Status
*
*/
class Status extends Vitis {
public $oError;
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('status_id', 'name', 'description', 'color');
}
/**
* @SWG\Get(path="/status/{status_id}",
* tags={"Status"},
* summary="Get Status",
* description="Request to get Status by id",
* operationId="GET",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="status_id",
* in="path",
* description="status id",
* required=true,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/status")
* )
* )
*/
/**
* get informations about mode
*/
function GET() {
require dirname($_SERVER['SCRIPT_FILENAME']) . "/ws/vitis/" . $this->sRessourcesFile;
$this->aFields = $this->getFields($this->aProperties['schema_anomalies'], "rt_anomalies_status", "status_id");
}
}
?>
\ No newline at end of file
<?php
/**
* \file Statuss.class.inc
* \class Statuss
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Modes php class
*
* This class defines Rest Api to Vitis Statuss
*
*/
require_once 'Anomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
require_once 'Status.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc';
class Statuss extends Anomalies {
/**
* @SWG\Definition(
* definition="/status",
* allOf={
* @SWG\Schema(ref="#/definitions/status")
* }
* )
* * @SWG\Tag(
* name="Statuss",
* description="Operations about Statuss"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('status_id', 'name', 'description', 'color');
}
/**
* @SWG\Get(path="/statuss",
* tags={"Statuss"},
* summary="Get Statuss",
* description="Request to get Statuss",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="order_by",
* in="query",
* description="list of ordering fields",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="sort_order",
* in="query",
* description="sort order",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="limit",
* in="query",
* description="number of element",
* required=false,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="offset",
* in="query",
* description="index of first element",
* required=false,
* type="string",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="filter",
* in="query",
* description="filter results",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="distinct",
* in="query",
* description="delete duplicates",
* required=false,
* type="boolean"
* ),
* @SWG\Response(
* response=200,
* description="Properties Response",
* @SWG\Schema(ref="#/definitions/statuss")
* )
* )
*/
/**
* get Statuss
* @return Statuss
*/
function GET() {
$aReturn = $this->genericGet($this->aProperties['schema_anomalies'], "rt_anomalies_status", "status_id");
return $aReturn['sMessage'];
}
}
?>
\ No newline at end of file
<?php
require_once 'AnomaliesAnomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
/**
* \file Theme.class.inc
* \class Theme
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Theme php class
*
* This class defines operation for one Theme
*
*/
class Theme extends Vitis {
public $oError;
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('theme_id', 'name', 'short_name', 'description');
}
/**
* @SWG\Get(path="/theme/{theme_id}",
* tags={"Theme"},
* summary="Get Theme",
* description="Request to get Theme by id",
* operationId="GET",
* produces={"application/xml", "application/json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="theme_id",
* in="path",
* description="theme id",
* required=true,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Response(
* response=200,
* description="Poprerties Response",
* @SWG\Schema(ref="#/definitions/theme")
* )
* )
*/
/**
* get informations about mode
*/
function GET() {
require dirname($_SERVER['SCRIPT_FILENAME']) . "/ws/vitis/" . $this->sRessourcesFile;
$this->aFields = $this->getFields($this->aProperties['schema_anomalies'], "anomalies_theme", "theme_id");
}
}
?>
\ No newline at end of file
<?php
/**
* \file Themes.class.inc
* \class Themes
*
* \author Ludivine Premont <ludivine.premont@veremes.com>.
*
* \brief This file contains the Modes php class
*
* This class defines Rest Api to Vitis Themes
*
*/
require_once 'AnomaliesAnomalies.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc';
require_once 'Theme.class.inc';
require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vmlib/BdDataAccess.inc';
class Themes extends AnomaliesAnomalies {
/**
* @SWG\Definition(
* definition="/theme",
* allOf={
* @SWG\Schema(ref="#/definitions/theme")
* }
* )
* * @SWG\Tag(
* name="Themes",
* description="Operations about Themes"
* )
*/
/**
* construct
* @param type $aPath url of the request
* @param type $aValues parameters of the request
* @param type $properties properties
* @param type $bShortcut false to reinit variables
* @param type $oConnection connection object
*/
function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) {
parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection);
$this->aSelectedFields = Array('theme_id', 'name', 'short_name','description');
}
/**
* @SWG\Get(path="/themes",
* tags={"Themes"},
* summary="Get Themes",
* description="Request to get Themes",
* operationId="GET",
* produces={"application/xml", "application/json", "application/x-vm-json"},
* @SWG\Parameter(
* name="token",
* in="query",
* description="user token",
* required=true,
* type="string"
* ),
* @SWG\Parameter(
* name="order_by",
* in="query",
* description="list of ordering fields",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="sort_order",
* in="query",
* description="sort order",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="limit",
* in="query",
* description="number of element",
* required=false,
* type="integer",
* format="int32"
* ),
* @SWG\Parameter(
* name="offset",
* in="query",
* description="index of first element",
* required=false,
* type="string",
* format="int32"
* ),
* @SWG\Parameter(
* name="attributs",
* in="query",
* description="list of attributs",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="filter",
* in="query",
* description="filter results",
* required=false,
* type="string"
* ),
* @SWG\Parameter(
* name="distinct",
* in="query",
* description="delete duplicates",
* required=false,
* type="boolean"
* ),
* @SWG\Response(
* response=200,
* description="Properties Response",
* @SWG\Schema(ref="#/definitions/themes")
* )
* )
*/
/**
* get Themes
* @return Themes
*/
function GET() {
$aReturn = $this->genericGet($this->aProperties['schema_anomalies'], "anomalies_theme", "theme_id");
return $aReturn['sMessage'];
}
}
?>
\ No newline at end of file