/[openfoncier]/trunk/app/consultation_multiple.php
ViewVC logotype

Annotation of /trunk/app/consultation_multiple.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 534 - (hide annotations)
Wed Oct 24 15:47:20 2012 UTC (12 years, 3 months ago) by vpihour
File size: 22449 byte(s)
Ajout des fonctionnalités d'ajout de consultations multiples.

1 vpihour 527 <?php
2     require_once "../obj/utils.class.php";
3    
4     // Identifiant de l'objet metier a copier
5     (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");
6     // Nom de l'objet metier
7     (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = "");
8 vpihour 534 (isset($_GET['date_envoi']) ? $date_envoi = $_GET['date_envoi'] : $date_envoi = "");
9 vpihour 527
10     $f = new utils("nohtml");
11    
12     $liste_gauche = "";
13    
14 vpihour 534 if ( isset($_GET) && isset($_GET['data']) && !empty($_GET['data']) ){
15     $f->disableLog();
16     /*Récupération des données et formatage.*/
17     $donnees_temp = explode(';', $_GET['data']);
18     for ( $i = 0 ; $i < count($donnees_temp) - 1 ; $i++ )
19     $donnees[] = explode('_', $donnees_temp[$i]);
20 vpihour 527
21 vpihour 534 /*Nombre de consultations papier à générer */
22     $nbConsPap = 0;
23    
24     /* Ajout des données en base de données
25     * 0 : l'ID du service
26     * 1 : consultation papier {0,1}
27     * */
28     if ( isset($donnees) && count($donnees) > 0 ){
29    
30     require_once "../obj/consultation.class.php";
31     $consultation = new consultation("]",$f->db,DEBUG);
32 vpihour 527
33 vpihour 534 foreach ($donnees as $value) {
34    
35     $sql = "SELECT delai FROM service WHERE service = $value[0]";
36     $res = $f->db->query($sql);
37     $f->isDatabaseError($res);
38     $row=& $res->fetchRow();
39     $delai = $row[0];
40    
41     /*Calcul du delai de retour*/
42     $date_envoi_temp = explode("/", $date_envoi);
43     $date_envoi_temp = $date_envoi_temp[2]."-".$date_envoi_temp[1]."-".$date_envoi_temp[0];
44     $delai_temp = explode('-',$consultation->moisdate($date_envoi_temp, $delai));
45     $delai = $delai_temp[2]."/".$delai_temp[1]."/".$delai_temp[0];
46    
47     /*Les données à ajouter*/
48     $arrayVal = array(
49     'consultation' => "]",
50     'dossier' => $idx,
51     'date_envoi' => $date_envoi,
52     'date_retour' => NULL,
53     'date_limite' => $delai,
54     'service' => $value[0],
55     'avis_consultation' => NULL,
56     'date_reception' => NULL,
57     'motivation' => "",
58     'fichier' => NULL,
59     'lu' => TRUE
60     );
61    
62     $consultation->ajouter($arrayVal, $f->db, DEBUG);
63    
64     /*Génération des PDF + comptage du nombre de consultations papier demandées*/
65     if ($value[1]==1){
66    
67     $nbConsPap++;
68     }
69     }
70    
71     /*Affichage du message d'information*/
72     echo '<div class="subtitle">';
73     echo '<h3>';
74     echo _("Application");
75     echo '<span class="om-icon om-icon-16 om-icon-fix arrow-right-16"></span>';
76     echo _("consultation");
77     echo '</h3>';
78     echo '</div>';
79     echo '<div class="sformulaire">';
80     echo'<div class="message ui-widget ui-corner-all ui-state-highlight ui-state-valid">
81     <p>
82     <span class="ui-icon ui-icon-info"></span>
83     <span class="text">
84     '.count($donnees).' service(s) s&eacute;lectionn&eacute;(s) dont '.$nbConsPap.' consultation(s) papier.
85     </span>
86     </p>
87     </div>';
88     echo '</div>';
89 vpihour 527 }
90    
91 vpihour 534 }
92     else {
93     /*Requête qui récupère les services qui sont dans des thématiques*/
94     $sql =
95     "SELECT
96     ser_cat.service_categorie, ser_cat.libelle AS them_lib,
97     ser.service, ser.libelle AS ser_lib, ser.consultation_papier
98     FROM
99     public.lien_service_service_categorie lie,
100     public.service_categorie ser_cat,
101     public.service ser
102     WHERE
103     ser_cat.service_categorie = lie.service_categorie AND
104     ser.service = lie.service AND
105     (
106     ser.om_validite_fin <= CURRENT_DATE OR
107     ser.om_validite_fin IS NULL
108     )
109     ";
110    
111     $res = $f->db->query($sql);
112     $f->isDatabaseError($res);
113    
114     $temp_ser_cat = 0;
115     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
116     $name = $row['service_categorie'].'_'.
117     $row['service'].'_'.
118     (($row['consultation_papier'] == '' || $row['consultation_papier'] == FALSE ) ? '0' : '1' ).'_';
119     /*On change de thématique, donc rajoute le nom de la thématique*/
120     if ( $temp_ser_cat != $row['service_categorie'] ){
121    
122     $temp_ser_cat = $row['service_categorie'];
123     $liste_gauche .= '
124     <div id="them_'.$row['service_categorie'].'" class="liste_gauche_them" >'.
125     $row['them_lib'].
126     '</div>
127     <div
128     class="liste_gauche_service"
129     id="'.$name.'" >
130     '.$row['ser_lib'].'
131     <input name="'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == FALSE ) ? '' : 'checked' ).'/>
132     </div>
133     ';
134     }
135 vpihour 527
136 vpihour 534 /*On est dans la même thématique*/
137     else {
138    
139     $liste_gauche .= '
140     <div
141     class="liste_gauche_service"
142     id=id="'.$name.'" >
143     '.$row['ser_lib'].'
144     <input name="'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == FALSE ) ? '' : 'checked' ).'/>
145     </div>
146     ';
147     }
148    
149     }
150    
151     /*Requête qui récupère les services qui ne sont pas dans une thématique*/
152     $sql =
153     "SELECT service, libelle, consultation_papier
154     FROM public.service
155     WHERE service NOT IN
156     (
157     SELECT service
158     FROM lien_service_service_categorie
159     )
160     AND
161     (
162     om_validite_fin <= CURRENT_DATE OR
163     om_validite_fin IS NULL
164     )
165     ";
166    
167     $res = $f->db->query($sql);
168     $f->isDatabaseError($res);
169    
170     if ( $res->numrows() > 0 )
171 vpihour 527 $liste_gauche .= '
172 vpihour 534 <div id="them_0" class="liste_gauche_them">Autres</div>';
173    
174     while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
175     /*Ajout de tous les services qui n'ont pas de thématique*/
176     $name = '0_'.
177     $row['service'].'_'.
178     (($row['consultation_papier'] == '' || $row['consultation_papier'] == FALSE ) ? '0' : '1' ).'_';
179     $liste_gauche .= '
180 vpihour 527 <div
181     class="liste_gauche_service"
182 vpihour 534 id="'.$name.'" >
183     '.$row['libelle'].'&nbsp;
184     <input name="'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == FALSE ) ? '' : 'checked' ).'/>
185 vpihour 527 </div>
186     ';
187     }
188    
189 vpihour 534 /*Affichage du formulaire*/
190     echo '<div class="subtitle">';
191     echo '<h3>';
192     echo _("Application");
193     echo '<span class="om-icon om-icon-16 om-icon-fix arrow-right-16"></span>';
194     echo _("consultation");
195     echo '</h3>';
196     echo '</div>';
197     echo '<div class="sformulaire">';
198     echo '<form onsubmit="ajaxIt(\'consultation\', \'../app/consultation_multiple.php\');return false;"
199     method="get" action="" name="f2" id="form_val">';
200     echo '<div class="formEntete ui-corner-all">';
201     echo "<div id='form-content'>";
202     echo '<div class="bloc">';
203     echo "<fieldset class='cadre ui-corner-all ui-widget-content'>\n";
204     echo "\t<legend class='ui-corner-all ui-widget-content ui-state-active'>".
205     _("Consultation par th&eacute;matique ")."</legend>";
206     echo "<div class='fieldsetContent' style='width:100%'>";
207     echo '<div class="field-ser-them field-type-hiddenstatic">';
208     echo '<div class="form-libelle">';
209     echo '<label class="libelle-dossier" for="dossier">';
210     echo _('dossier');
211     echo '<span class="not-null-tag">*</span>';
212     echo '</label>';
213     echo '</div>';
214     echo '<div class="form-content">';
215     echo '<input id="dossier" class="champFormulaire" type="hidden" value="'.$idx.'" name="dossier">';
216     echo $idx;
217     echo '</div>';
218 vpihour 527 echo '</div>';
219 vpihour 534 /*Code du nouveau champ*/
220     echo '<div class="field-ser-them ser-them">';
221     echo '<div class="list-ser-them">';
222     echo $liste_gauche;
223     echo '</div>';
224     echo '<div class="button-ser-them">';
225     echo '<ul>';
226     echo '<li>';
227     echo '<input type="button" value="'._("Ajouter").' >>" id="add-ser-them"/>';
228     echo '</li>';
229     echo '<li>';
230     echo '<input type="button" value="<< '._("Supprimer").'" id="del-ser-them"/>';
231     echo '</li>';
232     echo '</ul>';
233     echo '</div>';
234     echo '<div class="list-sel-ser-them">';
235     echo '</div>';
236 vpihour 527 echo '</div>';
237 vpihour 534 /* -- FIN --*/
238     echo '<div class="field-ser-them field-type-date2">';
239     echo '<div class="form-libelle">';
240     echo '<label class="libelle-date_envoi" for="date_envoi">';
241     echo _('date_envoi');
242     echo '<span class="not-null-tag">*</span>';
243     echo '</label>';
244     echo '</div>';
245     echo '<div class="form-content">';
246     echo '<input id="date_envoi" class="champFormulaire datepicker"
247     type="text" onkeyup="" onchange="fdate(this)"
248     maxlength="10" size="12" value="'.date("d/m/Y").'"
249     name="date_envoi">';
250     echo '</div>';
251 vpihour 527 echo '</div>';
252 vpihour 534 echo "</div>";
253     echo "</fieldset>";
254     echo '</div>';
255 vpihour 527 echo '</div>';
256     echo '</div>';
257 vpihour 534 echo '<div class="formControls">';
258     echo '<input class="om-button ui-button ui-widget ui-state-default ui-corner-all"
259     type="button" onclick="ajaxIt(\'consultation\', \'../app/consultation_multiple.php\');"
260     value="Ajouter le(s) enregistrement(s) de la table : \'Consultation\'"
261     role="button" aria-disabled="false" id="button_val">';
262     echo '<a class="retour" onclick="ajaxIt(\'consultation\', \'../scr/soustab.php?obj=consultation&retourformulaire=PC&idxformulaire=PC12R0001&premier=0&tricol=\');"
263     href="#">';
264     echo 'Retour';
265     echo '</a>';
266     echo '</div>';
267     echo '</form>';
268     echo '</div>';
269    
270     echo "
271     <script>
272     $(function(){
273     /*
274     Sélectionne tous les services d'un thème au clique sur celui ci.
275     */
276     $('.liste_gauche_them').click(
277     function(){
278    
279     var id = $(this).attr('id').split('_')[1];
280     $('.list-ser-them div').each(
281     function() {
282    
283     if ( $(this).attr('id').indexOf('them') == -1 &&
284     $(this).attr('id').indexOf(id) == 0 ){
285     $(this).toggleClass('liste_gauche_service_selected');
286     }
287     }
288     );
289     }
290     );
291    
292     /*
293     Change la class CSS d'un service sur lequel on clique dans la liste de gauche.
294     */
295     $('.liste_gauche_service').click(
296     function(){
297     $(this).toggleClass('liste_gauche_service_selected');
298     }
299     );
300    
301     /*
302     Change la class CSS d'un service sur lequel on clique dans la liste de droite.
303     */
304     $('.liste_droite_service').live(
305     'click',
306     function(){
307     $(this).toggleClass('liste_droite_service_selected');
308     }
309     );
310    
311     $('.liste_droite_service input[type=checkbox]').live(
312     'click',
313     function(){
314     old_id = $(this).attr('name');
315     tab_don = $(this).attr('name').split('_');
316     new_id = tab_don[0] + '_' + tab_don[1] + '_' + ((tab_don[1] == 0 ) ? 1 : 0 ) + '_';
317     //alert($('#' + old_id+'.cell1').attr('id'));
318     $(this).attr('name', new_id);
319     }
320     );
321    
322     $('#date_envoi').change(
323     function (){
324    
325     var listServ = new Array();
326     var data = '';
327    
328     $('.liste_gauche_service_selected').each(
329     function(i) {
330    
331     var id = $(this).attr('id');
332    
333    
334     if ( listServ.length > 0 && listServ.indexOf(id.split('_')[1]) != -1 )
335     return;
336     listServ[i] = id.split('_')[1];
337     data += id.split('_')[1] + '_' + id.split('_')[2] + ';';
338    
339     }
340     );
341    
342     changeActionVal(data);
343     }
344     );
345    
346     /*
347     Passe les services sélectionnés dans la liste de gauche dans celle de droite.
348     */
349     $('#add-ser-them').click(
350     function() {
351    
352     changeDataLeftColumn();
353     }
354     );
355    
356     /*
357     Passe les services sélectionnés dans la liste de droite dans celle de gauche.
358     */
359     $('#del-ser-them').click(
360     function() {
361    
362     var data = '';
363    
364     $('.liste_droite_service_selected').each(
365     function() {
366    
367     var id = $('#'+ $(this).attr('id') + ' .cell1 div').attr('id');
368    
369     manageListServ('.list-ser-them div', id, 1);
370     data += id.split('_')[1] + '_' + id.split('_')[2] + ';';
371    
372     $(this).remove();
373     }
374     );
375    
376     changeActionVal(data);
377     }
378     );
379     });
380    
381     /*
382     Vérifie que l'objet n'est pas une thématique et que son identifiant correspond.
383     */
384     function isNotthemIsOneServ( objet, id ){
385     return ( $(objet).attr('id').indexOf('them') == -1 &&
386     $(objet).attr('id').indexOf('_' + id.split('_')[1] + '_') != -1 );
387     }
388    
389     /*
390     Affiche ou cache un élément qui n'est pas une thématique et dont son identifiant correspond.
391     */
392     function manageListServ( objet ,id, type){
393 nhaye 528
394 vpihour 534 $(objet).each(
395     function() {
396    
397     if ( isNotthemIsOneServ(this, id) ){
398     if ( type == 0 )
399 vpihour 530
400 vpihour 534 $(this).hide() ;
401    
402     else {
403    
404     if ( $(this).hasClass('liste_gauche_service_selected') )
405    
406     $(this).toggleClass('liste_gauche_service_selected');
407    
408     $(this).show() ;
409    
410 vpihour 530 }
411     }
412 vpihour 534 }
413     );
414     }
415 vpihour 530
416 vpihour 534 function changeActionVal(data){
417     date = $('#date_envoi').val();
418    
419     $('#form_val').attr(
420     'onsubmit',
421     'if ( $(\'.liste_gauche_service_selected\').length > 0 ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?data='+data+'&idx=$idx&date_envoi='+date+'\',true);return false;' +
422     'messageIt(\'consultation\', \'../scr/soustab.php?obj=consultation&retourformulaire=PC&idxformulaire=PC12R0001&premier=0&tricol=\',false);}'
423 vpihour 530
424 vpihour 534 );
425     $('#button_val').attr(
426     'onclick',
427     'if ( $(\'.liste_gauche_service_selected\').length > 0 ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?data='+data+'&idx=$idx&date_envoi='+date+'\',true);' +
428     'messageIt(\'consultation\', \'../scr/soustab.php?obj=consultation&retourformulaire=PC&idxformulaire=PC12R0001&premier=0&tricol=\',false);}'
429 vpihour 530
430 vpihour 534 );
431     }
432    
433     function changeDataLeftColumn(){
434     $('.list-sel-ser-them').empty();
435     var listServ = new Array();
436     var data = '';
437    
438     $('.liste_gauche_service_selected').each(
439     function(i) {
440    
441     var id = $(this).attr('id');
442    
443     ( i == 0 ) ?
444     $('.list-sel-ser-them').append(''+
445     '<div class=\'row\'>'+
446     '<div class=\'cell1\' id=\'list-sel-ser-them-title\'>"._('Service à consulter')."</div>'+
447     '<div class=\'cell2\' id=\'list-sel-ser-them-title\'>"._('Version papier')."</div>'+
448     '</div>')
449     : '' ;
450    
451     if ( listServ.length > 0 && listServ.indexOf(id.split('_')[1]) != -1 )
452     return;
453     listServ[i] = id.split('_')[1];
454     data += id.split('_')[1] + '_' + id.split('_')[2] + ';';
455    
456     $('.list-sel-ser-them').append(
457     '<div class=\'row liste_droite_service\' id=\'' + i + '\'>'+
458     '<div class=\'cell1\'>'+
459     '<div id=\'' + $(this).attr('id') + '\'>'+
460     $(this).html().split('<')[0]+
461 vpihour 530 '</div>'+
462 vpihour 534 '</div>' +
463     '<div class=\'cell2\'>'+
464     '<div>'+
465     '<'+$(this).html().split('<')[1]+
466     '</div>'+
467     '</div>'+
468     '</div>'
469     );
470    
471     $(this).hide();
472    
473     manageListServ('.list-ser-them div', id, 0);
474    
475     }
476     );
477 nhaye 528
478 vpihour 534 changeActionVal(data);
479     }
480     </script>";
481     }
482 vpihour 527 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26