Commit ba497be2 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Merge branch 'kusanagi' into connor-dev

parents 8751f9e2 c7788d30
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ return array(

                [
                    'controller' => 'Public',
                    'action' => ['documentation', 'parameters', 'gitlog'],
                    'action' => ['documentation', 'parameters', 'gitlog', 'todo'],
                    'roles' => ['user'],
                ],

+8 −0
Original line number Diff line number Diff line
@@ -37,6 +37,14 @@ gitlog:
      controller: Public
      action: gitlog

todo:
  type: literal
  options:
    route: /todo
    defaults:
      controller: Public
      action: todo


################################################################################
# ACCÈS aux DONNÉES
+89 −0
Original line number Diff line number Diff line
-------------------------------------------------------------------
-- Retourne les jalons non-faits, faisables, de la personne
-------------------------------------------------------------------
WITH
-- Liste des jalons à faire
jalons_non_faits AS (

    SELECT
        ad.id AS activitydate_id,
        ad.*,
        d.label,
        a.label as activity_label,
        a.codeeotp as activity_numfinancier,
        a.oscarnum as activity_oscarnum,
        p.acronym as acronym

    FROM activitydate ad
             join activity a on a.id = ad.activity_id
             join datetype d on d.id = ad.type_id
             left join project p on p.id = a.project_id

    WHERE
      -- Type de jalons terminables
        d.finishable = true and

      -- Jalon non terminé
        (ad.finished IS NULL OR ad.finished <= 50) and

      -- et passé
        ad.datestart < :dateref and

      -- Sur une activité active
        a.status NOT IN(:inactivestatus)
),
-- Rôles selon les types de jalons
roles_needed AS (
    SELECT datetype_id, role_id
    FROM role_datetype
)

-- Person <> Activity
SELECT DISTINCT
    ud.*
FROM jalons_non_faits ud
         JOIN datetype dt ON dt.id = ud.type_id
         JOIN roles_needed rn ON rn.datetype_id = dt.id
         JOIN activityperson ap
              ON ap.activity_id = ud.activity_id
                  AND ap.roleobj_id = rn.role_id
                  AND ap.person_id = :person_id
UNION
--- Person <> Project>Activity
SELECT DISTINCT
    ud.*
FROM jalons_non_faits ud
         JOIN activity a ON a.id = ud.activity_id
         JOIN datetype dt ON dt.id = ud.type_id
         JOIN roles_needed rn ON rn.datetype_id = dt.id
         JOIN projectmember pm
              ON pm.project_id = a.project_id
                  AND pm.roleobj_id = rn.role_id
                  AND pm.person_id = :person_id
UNION
--- Person <> Organization>Activity
SELECT DISTINCT
    ud.*
FROM jalons_non_faits ud
         JOIN datetype dt ON dt.id = ud.type_id
         JOIN roles_needed rn ON rn.datetype_id = dt.id
         JOIN activityorganization ao
              ON ao.activity_id = ud.activity_id
         JOIN organizationperson op
              ON op.organization_id = ao.organization_id
                  AND op.roleobj_id = rn.role_id
                  AND op.person_id = :person_id
UNION
--- Person <> Organization>Project
SELECT DISTINCT
    ud.*
FROM jalons_non_faits ud
         JOIN activity a ON a.id = ud.activity_id
         JOIN datetype dt ON dt.id = ud.type_id
         JOIN roles_needed rn ON rn.datetype_id = dt.id
         JOIN projectpartner pp
              ON pp.project_id = a.project_id
         JOIN organizationperson op
              ON op.organization_id = pp.organization_id
                  AND op.roleobj_id = rn.role_id
                  AND op.person_id = :person_id
+63 −0
Original line number Diff line number Diff line
-------------------------------------------------------------------
-- Retourne les versements prévisionnels en retard de la personne
-------------------------------------------------------------------
WITH payments_non_faits AS (
    -- Versement en retard
    SELECT ap.*,
           a.label    as activity_label,
           a.oscarnum as activity_oscarnum,
           a.status as activity_status,
           a.codeeotp as activity_numfinancier,
           p.acronym  as project_acronym

    FROM activitypayment ap
             JOIN activity a ON a.id = ap.activity_id
             LEFT JOIN project p ON a.project_id = p.id
    -- Payment prévisionnel du passé
    WHERE ap.status = :status_previsionnel
      AND ap.datepredicted <= CAST(:dateref AS DATE)
),
-- Rôles pouvant éditer les versements
     roles_needed AS (SELECT ur.id, ur.role_id
                      FROM user_role ur
                               JOIN role_privilege rp ON rp.role_id = ur.id
                               JOIN privilege p ON p.id = rp.privilege_id
                               JOIN public.categorie_privilege cp on p.categorie_id = cp.id
                      WHERE p.code = 'PAYMENT_MANAGE'
                        AND cp.code = 'ACTIVITY')

-- Person <> Activity
SELECT DISTINCT pn.*
FROM payments_non_faits pn
         JOIN activityperson ap ON ap.activity_id = pn.activity_id
         JOIN roles_needed rn ON ap.roleobj_id = rn.id
WHERE ap.person_id = :person_id
UNION

--- Person <> Project>Activity
SELECT DISTINCT pn.*
FROM payments_non_faits pn
         JOIN activity a ON a.id = pn.activity_id
         JOIN projectmember pm ON pm.project_id = a.project_id
         JOIN roles_needed rn ON pm.roleobj_id = rn.id
WHERE pm.person_id = :person_id
UNION

--- Person <> Organization>Activity
SELECT DISTINCT pn.*
FROM payments_non_faits pn
         JOIN activityorganization ao ON ao.activity_id = pn.activity_id
         JOIN organizationperson op ON op.organization_id = ao.organization_id
         JOIN roles_needed rn ON rn.id = op.roleobj_id
WHERE op.person_id = :person_id
UNION

--- Person <> Organization>Project
SELECT DISTINCT pn.*
FROM payments_non_faits pn
         JOIN activity a ON a.id = pn.activity_id
         JOIN projectpartner pp ON pp.project_id = a.project_id
         JOIN organizationperson op ON op.organization_id = pp.organization_id
         JOIN roles_needed rn ON op.roleobj_id = rn.id
WHERE op.person_id = :person_id
;
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ class OscarNotificationsMailsPersonsCommand extends OscarCommandAbstract
        /** @var PersonService $personService */
        $personService = $this->getServicemanager()->get(PersonService::class);
        try {
            $personService->mailPersonsWithUnreadNotification($dateRef->format('Y-m-d H:i:s'), $io);
            $personService->notificationsPersons($dateRef->format('Y-m-d H:i:s'), $io);
        } catch (\Exception $e) {
            $io->error($e->getMessage());
            return self::FAILURE;
Loading