/[openfoncier]/branches/lien-openaria/obj/om_widget.class.php
ViewVC logotype

Diff of /branches/lien-openaria/obj/om_widget.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4368 by fmichon, Fri May 13 14:41:58 2016 UTC revision 4369 by fmichon, Wed Jun 1 05:51:19 2016 UTC
# Line 1234  class om_widget extends om_widget_core { Line 1234  class om_widget extends om_widget_core {
1234          );          );
1235      }      }
1236    
1237    
1238        /**
1239         * WIDGET DASHBOARD - Dossiers en incomplet ou majoration sans retour RAR
1240         *
1241         * @return void
1242         */
1243        function view_widget_dossiers_evenement_incomplet_majoration($content = null) {
1244    
1245            /**
1246             * Ce widget est configurable via l'interface Web. Lors de la création
1247             * du widget dans le paramétrage il est possible de spécifier la ou les
1248             * options suivantes :
1249             *
1250             * - filtre :
1251             *    = instructeur
1252             *    = division
1253             *    = aucun
1254             *   (default) Par défaut les dossiers sont filtrés sur l'instructeur.
1255             */
1256            // Liste des paramètres
1257            $params = array("filtre", );
1258            // Formatage des arguments reçus en paramètres
1259            $arguments = $this->get_arguments($content, $params);
1260            // Récupération de la configuration du widget
1261            $conf = $this->get_config_dossiers_evenement_incomplet_majoration($arguments);
1262            //
1263            $filtre = $conf["arguments"]["filtre"];
1264    
1265            /**
1266             * Composition de la requête
1267             */
1268            //
1269            $query = sprintf("
1270                SELECT
1271                    %s
1272                FROM
1273                    %s
1274                WHERE
1275                    %s
1276                    %s
1277                ORDER BY
1278                    %s
1279                LIMIT 10",
1280                $conf["query_ct_select"],
1281                $conf["query_ct_from"],
1282                $conf["query_ct_where_common"],
1283                $conf["query_ct_where_user_filter"],
1284                $conf["query_ct_orderby"]
1285            );
1286    
1287            // Exécution de la requête
1288            $res = $this->f->db->query($query);
1289            $this->addToLog(__METHOD__."(): db->query(\"".$query."\");", VERBOSE_MODE);
1290            $this->f->isDatabaseError($res);
1291    
1292            // Affichage du message d'informations
1293            printf(
1294                $this->template_help,
1295                $conf["message_help"]
1296            );
1297    
1298            /**
1299             * Si il n'y a aucun dossier à afficher, alors on affiche un message
1300             * clair à l'utilisateur et on sort de la vue.
1301             */
1302            // Si il n'y a aucun dossier à afficher
1303            if ($res->numrows() == 0) {
1304                // Affichage du message d'informations
1305                echo _("Vous n'avez pas de dossiers avec un evenement incomplet ou majoration sans RAR pour le moment.");
1306                // Exit
1307                return;
1308            }
1309    
1310            /**
1311             * Template nécessaires à l'affichage du widget
1312             */
1313            // Lien vers le dossier d'instructions
1314    
1315            // Bouton consulter
1316            $template_btn_consulter = '
1317            <span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'
1318                ._('Consulter')
1319            .'</span>
1320            ';
1321    
1322            $template_table = '
1323            <table class="tab-tab">
1324                <thead>
1325                    <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
1326                        <th class="title col-0 firstcol">
1327                            <span class="name">
1328                                %s
1329                            </span>
1330                        </th>
1331                        <th class="title col-1">
1332                            <span class="name">
1333                                %s
1334                            </span>
1335                        </th>
1336                        <th class="title col-2 lastcol">
1337                            <span class="name">
1338                                %s
1339                            </span>
1340                        </th>
1341                    </tr>
1342                </thead>
1343                <tbody>
1344            %s
1345                </tbody>
1346            </table>
1347            ';
1348    
1349            // Données dans le tableau
1350            //
1351            $template_line = '
1352            <tr class="tab-data odd">
1353                <td class="col-1 firstcol">
1354                    %s
1355                </td>
1356                <td class="col-1">
1357                    %s
1358                </td>
1359                <td class="col-2 lastcol">
1360                    %s
1361                </td>
1362            </tr>
1363            ';
1364            //
1365            $template_href = '../scr/form.php?obj=dossier_instruction&amp;action=3&amp;idx=%s';
1366            //
1367            $template_link = '
1368            <a class="lienTable" href="%s">
1369                %s
1370            </a>
1371            ';
1372    
1373            /**
1374             * Si il y a des dossiers à afficher, alors on affiche le widget.
1375             */
1376            // On construit le contenu du tableau
1377            $ct_tbody = '';
1378            while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
1379                // On construit l'attribut href du lien
1380                $ct_href = sprintf(
1381                    $template_href,
1382                    // idx
1383                    $row["dossier"]
1384                );
1385                // On construit la ligne
1386                $ct_tbody .= sprintf(
1387                    $template_line,
1388                    // Colonne 1 - Bouton consulter
1389                    sprintf(
1390                        $template_link,
1391                        $ct_href,
1392                        $template_btn_consulter
1393                    ),
1394                    // Colonne 2 - Numéro de dossier
1395                    sprintf(
1396                        $template_link,
1397                        $ct_href,
1398                        $row["dossier_libelle"]
1399                    ),
1400                    // Colonne 3 - Date de dépôt
1401                    sprintf(
1402                        $template_link,
1403                        $ct_href,
1404                        $this->f->formatDate($row["date_depot"])
1405                    )
1406                );
1407            }
1408            // Affichage du tableau listant les dossiers
1409            printf(
1410                $template_table,
1411                // Colonne 1 - Bouton consulter
1412                '',
1413                // Colonne 2 - Numéro de dossier
1414                _('dossier'),
1415                // Colonne 3 - Date de dépôt du dossier
1416                _('date_depot'),
1417                // Contenu du tableau
1418                $ct_tbody
1419            );
1420    
1421            // Affichage du footer
1422            printf(
1423                $this->template_footer,
1424                // href (avec les paramètres du widget)
1425                sprintf(
1426                    "../scr/tab.php?obj=dossiers_evenement_incomplet_majoration&filtre=%s",
1427                    $filtre
1428                ),
1429                // titre
1430                _("Voir tous les dossiers evenement incomplet ou majoration sans RAR")
1431            );
1432        }
1433    
1434    
1435        /**
1436         * Cette méthode permet de récupérer la configuration du widget 'Retours de
1437         * consultation'.
1438         *
1439         * @return array
1440         */
1441        function get_config_dossiers_evenement_incomplet_majoration($arguments) {
1442            // Initialisation du tableau des paramètres avec ses valeur par défaut
1443            $arguments_default = array(
1444                "filtre" => "instructeur",
1445            );
1446            // Vérification des arguments
1447            foreach ($arguments_default as $key => $value) {
1448                //
1449                if (isset($arguments[$key])) {
1450                    //
1451                    $elem = trim($arguments[$key]);
1452                    //
1453                    if ($key === "filtre"
1454                        && in_array($elem, array("instructeur", "division", "aucun"))) {
1455                        // La valeur doit être dans cette liste
1456                        $arguments[$key] = $elem;
1457                        continue;
1458                    }
1459                }
1460                //
1461                $arguments[$key] = $value;
1462            }
1463            //
1464            $filtre = $arguments["filtre"];
1465    
1466            /**
1467             * Construction de la requête
1468             */
1469            // SELECT
1470            $query_ct_select = "
1471                dossier.dossier,
1472                dossier.dossier_libelle,
1473                dossier.date_depot
1474            ";
1475            // SELECT - CHAMPAFFICHE
1476            $query_ct_select_champaffiche = array(
1477                'dossier.dossier as "'._("dossier").'"',
1478                'dossier.dossier_libelle as "'._("dossier").'"',
1479                'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"'
1480            );
1481            // FROM
1482            $query_ct_from = "
1483            ".DB_PREFIXE."dossier
1484            LEFT JOIN
1485                ".DB_PREFIXE."instruction
1486                ON
1487                    dossier.dossier = instruction.dossier
1488            LEFT JOIN
1489                ".DB_PREFIXE."evenement
1490                ON
1491                    instruction.evenement = evenement.evenement
1492            LEFT JOIN
1493                ".DB_PREFIXE."instructeur
1494                ON
1495                    instructeur.instructeur = dossier.instructeur
1496            LEFT JOIN
1497                ".DB_PREFIXE."om_utilisateur
1498                ON
1499                    instructeur.om_utilisateur=om_utilisateur.om_utilisateur
1500            ";
1501            // WHERE - COMMON
1502            $query_ct_where_common = "
1503                (
1504                    LOWER(evenement.type) = 'incompletude' OR
1505                    LOWER(evenement.type) = 'majoration_delai'
1506                ) AND
1507                (
1508                    instruction.date_envoi_rar > CURRENT_TIMESTAMP  - interval '1 month' AND
1509                    instruction.date_envoi_rar <= CURRENT_TIMESTAMP
1510                ) AND
1511                instruction.date_retour_rar IS NULL AND
1512                evenement.retour = 'f'
1513            ";
1514    
1515            // WHERE - USER
1516            // Filtre sur les dossiers qui concernent l'utilisateur
1517            $query_ct_where_user_filter = "";
1518            //
1519            if ($filtre == "instructeur") {
1520                //
1521                $query_ct_where_user_filter .= "
1522                AND om_utilisateur.login='".$_SESSION['login']."'
1523                ";
1524            } elseif ($filtre == "division") {
1525                //
1526                $query_ct_where_user_filter .= "
1527                AND dossier.division = ".$_SESSION['division']."
1528                ";
1529            } elseif ($filtre == "aucun") {
1530                // Dans tous les cas si l'utilisateur fait partie d'une collectivité
1531                // de niveau 1 (mono), on restreint le listing sur les dossiers de sa
1532                // collectivité
1533                if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
1534                    $query_ct_where_user_filter = "
1535                    AND dossier.om_collectivite=".$_SESSION['collectivite']."
1536                    ";
1537                }
1538            }
1539            // ORDER BY
1540            $query_ct_orderby = "
1541                dossier.date_depot desc
1542            ";
1543    
1544            /**
1545             * Message d'aide
1546             */
1547            //
1548            $message_filtre = "";
1549            //
1550            switch ($filtre) {
1551                case "instructeur":
1552                    $message_filtre = " "._("dont je suis l'instructeur");
1553                    break;
1554                case "division":
1555                    $message_filtre = " "._("situés dans ma division");
1556                    break;
1557                case "aucun":
1558                    if ($this->f->isCollectiviteMono($_SESSION['collectivite']) === true) {
1559                        $message_filtre = " "._("situés dans ma collectivité");
1560                    } else {
1561                        $message_filtre = " "._("situés dans toutes les collectivités");
1562                    }
1563                    break;
1564            }
1565            //
1566            $message_help = sprintf(
1567                _("Les dossiers d'instruction%s qui ont un evenement incomplet ou majoration".
1568                " avec une date d'envoi RAR, mais pas de date de retour RAR."),
1569                $message_filtre
1570            );
1571    
1572            /**
1573             * Return
1574             */
1575            //
1576            return array(
1577                "arguments" => $arguments,
1578                "message_help" => $message_help,
1579                "query_ct_select" => $query_ct_select,
1580                "query_ct_select_champaffiche" => $query_ct_select_champaffiche,
1581                "query_ct_from" => $query_ct_from,
1582                "query_ct_where_common" => $query_ct_where_common,
1583                "query_ct_where_user_filter" => $query_ct_where_user_filter,
1584                "query_ct_orderby" => $query_ct_orderby,
1585            );
1586        }
1587    
1588    
1589  }  }
1590    
1591  ?>  ?>
1592    
1593    

Legend:
Removed from v.4368  
changed lines
  Added in v.4369

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26