Exemple #1
0
        public override void AjouterPrincesse()
        {
            PersonnageAbstrait g = Fabrique.CreerPrincesse(String.Format("Princesse {0}", PersonnagesList.Count), Fabrique.CreerPosition(coordMaison.X, coordMaison.Y), coordMaison);

            PersonnagesList.Add(g);
            ListObservateur.Add(g);
            meteo.ListObservateur.Add(g);
        }
Exemple #2
0
 public override void AjouterReine()
 {
     if (PersonnagesList.Where(x => x.GetType().Equals(typeof(Reine))).Count() == 0)
     {
         reine = (Reine)Fabrique.CreerReine("La reine", coordMaison);
         PersonnagesList.Add(reine);
     }
 }
Exemple #3
0
        private static IRendezVous InitialiserRendezVous(PayloadRendezVous payload)
        {
            IRendezVous rdv = Fabrique.Get <IRendezVous>();

            switch (payload.Data.Status)
            {
            case StatusExcused:
                rdv.Sujet           = $"EXCUSE - [rdv-solidarités] - {Sanitize(payload.Data.Motif.Name, SanitizeSujet)}";
                rdv.StatutAffichage = StatutAffichage.Disponible;
                break;

            case StatusNotExcused:
                rdv.Sujet           = $"NON EXCUSE - [rdv-solidarités] - {Sanitize(payload.Data.Motif.Name, SanitizeSujet)}";
                rdv.StatutAffichage = StatutAffichage.Disponible;
                break;

            default:
                rdv.Sujet           = $"[rdv-solidarités] - {Sanitize(payload.Data.Motif.Name, SanitizeSujet)}";
                rdv.StatutAffichage = StatutAffichage.AbsentduBureau;
                break;
            }

            rdv.Lieu = Sanitize(payload.Data.Address, SanitizeLieu);

            int duration = int.Parse(payload.Data.DurationInMin, CultureInfo.InvariantCulture);

            rdv.Debut = DateTime.ParseExact(payload.Data.StartsAt, "yyyy-MM-dd HH:mm:ss zzz", CultureInfo.InvariantCulture);
            rdv.Fin   = rdv.Debut.Add(new TimeSpan(0, duration, 0));

            AgentRendezVous organisateur = payload.Data.Agents[0];
            IParticipant    po           = Fabrique.Get <IParticipant>();

            po.Nom           = Sanitize($"{organisateur.LastName} {organisateur.FirstName}", SanitizeNom).Trim();
            po.Courriel      = organisateur.Email.ToLowerInvariant();
            rdv.Organisateur = po;

            rdv.RappelMinutesAvantDebut = RappelMinutesAvantDebut;
            rdv.ExternalId = payload.Data.Uuid;

            StringBuilder sb = new StringBuilder();

            if (payload.Data.Users.Count > 1)
            {
                sb.Append("Usagers concernés : <br/>");
            }

            for (int i = 0; i < payload.Data.Users.Count; i++)
            {
                sb.Append($"Usager n°{i + 1}");
                sb.Append("<ul>");
                sb.Append($"{payload.Data.Users[i].ToHtml()}");
                sb.Append("</ul>");
            }

            rdv.Description = sb.ToString();

            return(rdv);
        }
Exemple #4
0
 public override void AjouterTermite()
 {
     System.Windows.Application.Current.Dispatcher.Invoke(
         DispatcherPriority.Normal,
         (Action) delegate()
     {
         PersonnagesList.Add(Fabrique.CreerTermite(String.Format("Termite {0}", PersonnagesList.Count), Fabrique.CreerPosition(DimensionX, DimensionY), coordMaison));
     }
         );
 }
Exemple #5
0
 public override void InitZones()
 {
     for (int i = 0; i < DimensionX; i++)
     {
         for (int j = 0; j < DimensionY; j++)
         {
             ZoneList.Add(Fabrique.CreerZone(String.Format("Zone en X={0}, Y={1}", i, j), Fabrique.CreerPosition(i, j)));
         }
     }
 }
Exemple #6
0
        public void AjouteNourriture()
        {
            CoordonneesAbstrait position = new Coordonnees(Hazard.Next(1, DimensionX), Hazard.Next(1, DimensionY));

            while (position.X.Equals(coordMaison.X) || position.Y.Equals(coordMaison.Y))
            {
                position = new Coordonnees(Hazard.Next(1, DimensionX), Hazard.Next(1, DimensionY));
            }
            ObjetList.Add(Fabrique.CreerNourriture("Nourriture N " + ObjetList.Count, position));
        }
Exemple #7
0
        public override void FournirAcces()
        {
            foreach (var unInsecte in PersonnagesList)
            {
                List <ZoneAbstrait> zoneAdjacentes = new List <ZoneAbstrait>();
                zoneAdjacentes.AddRange(ZoneList.Where(x => x.Position.X > (unInsecte.Position.X - 2) && x.Position.X <(unInsecte.Position.X + 2) &&
                                                                                                                       x.Position.Y> (unInsecte.Position.Y - 2) && x.Position.Y < (unInsecte.Position.Y + 2)
                                                       ));

                unInsecte.ChoixZoneSuivante = Fabrique.CreerAcces(zoneAdjacentes);
            }
        }
Exemple #8
0
        private static IList <IRendezVous> ChercherRendezVousDansLeMois(IRendezVous rendezVous)
        {
            ICritereRechercheRendezVousParExternalId crrv = Fabrique.Get <ICritereRechercheRendezVousParExternalId>();

            crrv.Organisateur           = rendezVous.Organisateur;
            crrv.DateDebutRecherche     = new DateTime(rendezVous.Debut.Year, rendezVous.Debut.Month, 1);
            crrv.DateFinRecherche       = new DateTime(rendezVous.Debut.Year, rendezVous.Debut.Month, 30);
            crrv.NombreMaximumResultats = NombreMaximumResultats;
            crrv.ExternalId             = rendezVous.ExternalId;

            return(Fabrique.Get <IServiceExchange>().RechercherRendezVous(crrv));
        }
Exemple #9
0
        /// <summary>
        /// Méthode de chargement des cocktails
        /// </summary>
        /// <returns>en retournant une collection de cocktails</returns>
        public IEnumerable <Cocktail> loadCocktail()
        {
            cocktailFile = XDocument.Load(dirData + "cocktails.xml");
            IEnumerable <Cocktail> liste = new List <Cocktail>();

            liste = cocktailFile.Descendants("cocktail").Select(cocktail => Fabrique.creerCocktail
                                                                (
                                                                    cocktail.Element("nom").Value,
                                                                    cocktail.Element("recette").Value,
                                                                    cocktail.Element("ingredients").Descendants("ingredient").Select(ing => new Ingredient(ing.Element("nom").Value,
                                                                                                                                                           Convert.ToInt32(ing.Element("quantite").Value),
                                                                                                                                                           Fabrique.convertToUnite(ing.Element("unite").Value))).ToList(),
                                                                    cocktail.Element("commentaires").Descendants("commentaire").ToDictionary(item => new User(item.Attribute("pseudo").Value),
                                                                                                                                             item => new Commentaire(item.Element("titre").Value,
                                                                                                                                                                     item.Element("texte").Value,
                                                                                                                                                                     Convert.ToInt16(item.Element("note").Value))
                                                                                                                                             ),
                                                                    cocktail.Element("url").Value
                                                                ));

            return(liste);
        }
Exemple #10
0
        public HttpResponseMessage NewCalendarEvent()
        {
            Log.EcrireInfo("[NewCalendarEvent] > Nouvel événement reçu");

            if (Request == null)
            {
                return(HttpResponseMessageNoCache(new Reponse
                {
                    Erreur = "Erreur interne",
                    Signature = false
                }));
            }

            DumpRequest("NewCalendarEvent");

            string message = Request.Content.ReadAsStringAsync().Result;

            if (string.IsNullOrEmpty(message))
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, new Reponse()
                {
                    Erreur = "Message vide",
                    Signature = false
                }));
            }

            Log.EcrireDebug($"[NewCalendarEvent] > Message reçu : {message}");

            IControleurRdvs cr = Fabrique.Get <IControleurRdvs>();

            try
            {
                cr.ControlerRequest(Request, message);
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, new Reponse()
                {
                    Erreur = ex.Message,
                    Signature = false
                }));
            }

            try
            {
                cr.CreerRendezVous(message);
            }
            catch (Exception ex)
            {
                Log.EcrireErreur($"[NewCalendarEvent] >> Erreur >> {ex.Message}");
                Log.EcrireErreur($"[NewCalendarEvent] >> Erreur >> StackTrace : {ex.StackTrace}");
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, new Reponse()
                {
                    Erreur = ex.Message,
                    Signature = true
                }));
            }

            return(HttpResponseMessageNoCache(new Reponse {
                Signature = true
            }));
        }
Exemple #11
0
        public void CreerRendezVous(string message)
        {
            // La balise Meta est commune
            // On désérialise sur un payload quelconque pour la récupérer
            Meta meta = JsonConvert.DeserializeObject <PayloadRendezVous>(message).Meta;

            IPayload    payload;
            IRendezVous rendezVous;

            if (TypeRendezVous.Equals(meta.Model, StringComparison.Ordinal))
            {
                payload    = DeserialiserRendezVous(message);
                rendezVous = InitialiserRendezVous((PayloadRendezVous)payload);
            }
            else if (TypePlageOuverture.Equals(meta.Model, StringComparison.Ordinal))
            {
                payload    = DeserialiserPlageOuverture(message);
                rendezVous = InitialiserPlageOuverture((PayloadPlageOuverture)payload);
            }
            else
            {
                throw new NotSupportedException("Model non supporté.");
            }

            switch (meta.Event)
            {
            case Create:
                Log.EcrireInfo("[NewCalendarEvent] >> Nouveau rdv");
                LogEvent(rendezVous);

                Fabrique.Get <IServiceExchange>().CreerRendezVous(rendezVous);
                break;

            case Update:
                Log.EcrireInfo("[NewCalendarEvent] >> mise à jour rdv");
                LogEvent(rendezVous);

                IList <IRendezVous> lrvm = ChercherRendezVousDansLeMois(rendezVous);

                if (!lrvm.Any())
                {
                    throw new InvalidDataException("Aucune plage trouvée dans le mois spécifié.");
                }

                rendezVous.Id = lrvm[0].Id;     // La recherche donne au moins 1 rdv de la série que je réutilise avec les nouvelles données

                Fabrique.Get <IServiceExchange>().ModifierRendezVous(rendezVous, true);

                break;

            case Delete:
                Log.EcrireInfo("[NewCalendarEvent] >> Suppression rdv");
                LogEvent(rendezVous);

                IList <IRendezVous> lrvs = ChercherRendezVousDansLeMois(rendezVous);

                if (!lrvs.Any())
                {
                    throw new InvalidDataException("Aucune plage trouvée dans le mois spécifié.");
                }

                Fabrique.Get <IServiceExchange>().SupprimerRendezVous(lrvs[0], true);
                break;

            default:
                throw new NotSupportedException();
            }
        }