michaellaunay / alirpunkto

0 stars 0 forks source link

Transitions of members between Dynamic Groups #148

Open SergioArbarviro opened 1 week ago

SergioArbarviro commented 1 week ago

This issue summarises and replaces the issues:

List of dynamic groups

The LDAP directory should contain the following Dynamic Groups:

Formal representation of the transitions between groups

The transitions are represented as follows: startGroup = [event] => destinationGroup

Registration process

None = [Successful registration] => communityGroup

None = [Successful registration as Cooperator] => candidatesMissingShareYearContribGroup

candidatesMissingShareYearContribGroup = [numberSharesOwned >0] => candidatesMissingYearContribGroup

candidatesMissingShareYearContribGroup = [dateEndValidityYearlyContribution ≥ present] => candidatesMissingShareGroup

candidatesMissingShareGroup = [numberSharesOwned >0] => cooperatorsGroup

candidatesMissingYearContribGroup = [dateEndValidityYearlyContribution ≥ present] => cooperatorsGroup

Promotion of Cooperators to the Board XOR to the Mediation & Arbitration Council and back

cooperatorsGroup = [Promotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => boardMembersGroup and cooperatorsGroup

cooperatorsGroup = [Promotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => mediationArbitrationCouncilGroup and cooperatorsGroup

boardMembersGroup and cooperatorsGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => cooperatorsGroup

mediationArbitrationCouncilGroup and cooperatorsGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => cooperatorsGroup

suspendedBoardMembersGroup and sanctionedGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => sanctionedGroup

suspendedMediationArbitrationCouncilGroup and sanctionedGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => sanctionedGroup

sanctionedMissingYearContribGroup and suspendedBoardMembersGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => sanctionedMissingYearContribGroup

sanctionedMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup = [Demotion performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #57 ] => sanctionedMissingYearContribGroup

Sanction of Cooperators and back

cooperatorsGroup = [Sanction performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => sanctionedGroup

boardMembersGroup and cooperatorsGroup = [Sanction performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => sanctionedGroup and suspendedBoardMembersGroup

mediationArbitrationCouncilGroup and cooperatorsGroup = [Sanction performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => sanctionedGroup and suspendedMediationArbitrationCouncilGroup

sanctionedGroup = [Sanction lifted by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => cooperatorsGroup

sanctionedGroup and suspendedBoardMembersGroup = [Sanction lifted by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => boardMembersGroup and cooperatorsGroup

sanctionedGroup and suspendedMediationArbitrationCouncilGroup = [Sanction lifted by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => mediationArbitrationCouncilGroup and cooperatorsGroup

sanctionedMissingYearContribGroup and suspendedBoardMembersGroup = [Sanction lifted by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => candidatesMissingYearContribGroup and suspendedBoardMembersGroup

sanctionedMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup = [Sanction lifted by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => candidatesMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup

Loss and recovery of Cooperator's rights when yearly contribution not paid

AlirPunkto scans daily the cooperatorsGroup and compares the variable dateEndValidityYearlyContribution with the present date. cooperatorsGroup = [dateEndValidityYearlyContribution < present] => candidatesMissingYearContribGroup

boardMembersGroup and cooperatorsGroup = [dateEndValidityYearlyContribution < present] => candidatesMissingYearContribGroup and suspendedBoardMembersGroup

mediationArbitrationCouncilGroup and cooperatorsGroup = [dateEndValidityYearlyContribution < present] => candidatesMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup

candidatesMissingYearContribGroup and suspendedBoardMembersGroup = [dateEndValidityYearlyContribution ≥ present] => boardMembersGroup and cooperatorsGroup

candidatesMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup = [dateEndValidityYearlyContribution ≥ present] => mediationArbitrationCouncilGroup and cooperatorsGroup

Combination of sanction and yearly contribution not paid and back

AlirPunkto scans daily the sanctionedGroup and compares the variable dateEndValidityYearlyContribution with the present date. sanctionedGroup = [dateEndValidityYearlyContribution < present] => sanctionedMissingYearContribGroup

sanctionedGroup and suspendedBoardMembersGroup = [dateEndValidityYearlyContribution < present] => sanctionedMissingYearContribGroup and suspendedBoardMembersGroup

sanctionedGroup and suspendedMediationArbitrationCouncilGroup = [dateEndValidityYearlyContribution < present] => sanctionedMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup

sanctionedMissingYearContribGroup = [dateEndValidityYearlyContribution ≥ present] => sanctionedGroup

sanctionedMissingYearContribGroup and suspendedBoardMembersGroup = [dateEndValidityYearlyContribution ≥ present] => sanctionedGroup and suspendedBoardMembersGroup

sanctionedMissingYearContribGroup and suspendedMediationArbitrationCouncilGroup = [dateEndValidityYearlyContribution ≥ present] => sanctionedGroup and suspendedMediationArbitrationCouncilGroup

Resignation and exclusion

[communityGroup and **not** (candidatesMissingYearContribGroup or cooperatorsGroup or sanctionedGroup or sanctionedMissingYearContribGroup or candidatesMissingShareYearContribGroup or candidatesMissingShareGroup ) ] = [Resignation by the member or Sanction performed by Adminisrator] => removal of the member from the LDAP directory

candidatesMissingShareYearContribGroup or candidatesMissingShareGroup or candidatesMissingYearContribGroup or cooperatorsGroup or sanctionedGroup or sanctionedMissingYearContribGroup = [Resignation by the member or Sanction performed by Adminisrator or by Member of the Mediation & Arbitration Council as per Issue #56 ] => None

AlirPunkto scans daily the users belonging to no Group and compares the variable dateErasureIdentityData with the present date. None = [dateErasureIdentityData < present] => removal of the member from the LDAP directory