示例#1
0
        internal ScrutinModel(Scrutin rawScrutin)
        {
            this.Uid           = rawScrutin.Uid;
            this.Numero        = (int)rawScrutin.Numero;
            this.Titre         = rawScrutin.Titre;
            this.Demandeur     = rawScrutin.Demandeur.Texte;
            this.Date          = rawScrutin.DateScrutin.GetValueOrDefault();
            this.Annonce       = rawScrutin.SyntheseVote.Annonce;
            this.Results       = new List <GroupeResult>();
            this.TotalExprimes = (int)rawScrutin.SyntheseVote.SuffragesExprimes;
            foreach (var groupe in rawScrutin.VentilationVotes.OrganeScrutin.Groupes.Groupe)
            {
                // forge new gp as it may have changed
                GroupeParlementaireModel groupeParlementaire = new GroupeParlementaireModel(ObjectStorage <BaseRawData> .Singleton().Get <Organe>(groupe.OrganeRef));

                this.Results.Add(new GroupeResult
                {
                    Abstentions = ParseVotants(groupeParlementaire, groupe.Vote.DecompteNominatif.Abstentions?.Votant),
                    NonVotants  = ParseVotants(groupeParlementaire, groupe.Vote.DecompteNominatif.NonVotants?.Votant),
                    Pour        = ParseVotants(groupeParlementaire, groupe.Vote.DecompteNominatif.Pours?.Votant),
                    Contre      = ParseVotants(groupeParlementaire, groupe.Vote.DecompteNominatif.Contres?.Votant),
                    Groupe      = groupeParlementaire
                });
            }

            _modelStorage.Register(this.Uid, this);
        }
示例#2
0
        public IEnumerable <OrganeModel> Organes(string parentDir)
        {
            var tmp    = RawOrgane.FromDirectory(Path.Combine(parentDir, "organe"));
            var result = new List <OrganeModel>();

            foreach (var rawOrgane in tmp)
            {
                OrganeModel model;
                if (rawOrgane.CodeType == TypeOrgane.Gp)
                {
                    model = new GroupeParlementaireModel(rawOrgane);
                }
                else
                {
                    model = new OrganeModel(rawOrgane);
                }

                if (rawOrgane.OrganeParent != null && _modelStorage.Contains <OrganeModel>(rawOrgane.OrganeParent))
                {
                    model.Parent = _modelStorage.Get <OrganeModel>(rawOrgane.OrganeParent);
                }

                result.Add(model);
            }

            return(result);
        }
示例#3
0
        private void ParseMandats(Acteur rawActeur)
        {
            Mandats = new HashSet <MandatModel>();
            for (int i = 0; i < rawActeur.Mandats.Mandat.Length; ++i)
            {
                var m = rawActeur.Mandats.Mandat[i];
                if (m.ActeurRef != rawActeur.Uid)
                {
                    throw new InvalidDataException("le mandat ne correspond pas à l'acteur");
                }
                var mandalModel = new MandatModel
                {
                    Debut   = m.DateDebut.Value,
                    Fin     = m.DateFin,
                    Uid     = m.Uid,
                    Libelle = m.Libelle,
                    Qualite = m.InfosQualite.CodeQualite,
                    Organes = m.Organes.OrganeRef.Select(o => _modelStorage.Get <OrganeModel>(o)).ToArray()
                };

                if (mandalModel.Libelle == null && m.Organes.OrganeRef.Count() == 1)
                {
                    mandalModel.Libelle = _modelStorage.Get <OrganeModel>(m.Organes.OrganeRef.First()).Nom;
                }

                Mandats.Add(mandalModel);

                if (m.TypeOrgane == TypeOrgane.Gp)
                {
                    if (m.Organes.OrganeRef.Count() > 1)
                    {
                        throw new NotImplementedException("groupe parlementaire avec plus d'un organe associé");
                    }

                    // attention les groupes parlementaires perdent des membres et ne sont pas recréés...
                    var groupeParlementaire = _modelStorage.Get <GroupeParlementaireModel>(m.Organes.OrganeRef.First());

                    if (m.DateFin != default && m.DateFin.HasValue && m.DateFin.Value < DateTimeOffset.Now)
                    {
                        continue;
                    }

                    groupeParlementaire.Deputes.Add(this);
                    GroupeParlementaire = groupeParlementaire;
                }
            }
        }
示例#4
0
 private HashSet <VoteDepute> ParseVotants(GroupeParlementaireModel gp, IEnumerable <Votant> votants)
 {
     if (votants == null)
     {
         return(new HashSet <VoteDepute>());
     }
     return(new HashSet <VoteDepute>(votants
                                     .Where(v => _modelStorage.Contains <DeputeModel>(v.ActeurRef)) // somehow unknown acteurRef appears here : to be reported to questeur
                                     .Select(v =>
     {
         var depute = _modelStorage.Get <DeputeModel>(v.ActeurRef);
         gp.Deputes.Add(depute);
         return new VoteDepute
         {
             Depute = depute,
             ParDelegation = v.ParDelegation.HasValue ? v.ParDelegation.Value : false,
             CausePositionVote = v.CausePositionVote
         };
     })));
 }