Ejemplo n.º 1
0
    public bool CanTakeGrabable(GrabableObject _grabable)
    {
        Aliment aliment = _grabable.GetComponent <Aliment>();
        bool    canGrab = aliment != null;

        return(canGrab);
    }
Ejemplo n.º 2
0
    public bool StockAliment(GrabableObject _grabable, bool _sendOnline)
    {
        if (haveObject == false)
        {
            Debug.Log("Gastro");
            Aliment newAliment = _grabable.GetComponent <Aliment>();
            if (newAliment != null && _grabable.Grab(null, transform, false))
            {
                Debug.Log("Take");
                alimentStocked = newAliment;
                alimentStocked.transform.position = posAliment.transform.position;
                alimentStocked.transform.rotation = posAliment.transform.rotation;

                haveObject = true;
                isClean    = false;

                if (_sendOnline)
                {
                    photonView.RPC("NetworkStockAliment", RpcTarget.Others, _grabable.photonView.ViewID);
                }
                return(true);
            }
            return(false);
        }

        return(false);
    }
Ejemplo n.º 3
0
        private void AddToEaten(Aliment a, int quantity, bool addInFile)
        {
            ListViewItem pula = new ListViewItem(a.FoodName);

            pula.SubItems.Add(quantity.ToString());

            float calPer100    = a.Calories;
            float protPer100   = a.Proteins;
            float carbsPer100  = a.Carbs;
            float lipidsPer100 = a.Lipids;
            float fibersPer100 = a.Fibers;

            pula.SubItems.Add(Math.Round(calPer100 * quantity / 100, 2).ToString());
            pula.SubItems.Add(Math.Round(protPer100 * quantity / 100, 2).ToString());
            pula.SubItems.Add(Math.Round(carbsPer100 * quantity / 100, 2).ToString());
            pula.SubItems.Add(Math.Round(lipidsPer100 * quantity / 100, 2).ToString());
            pula.SubItems.Add(Math.Round(fibersPer100 * quantity / 100, 2).ToString());

            listEaten.Items.Add(pula);

            UpdateStats();
            RefreshGoals();

            eatenAliments.Add(a);
            eatenQuantities.Add(quantity);

            if (addInFile)
            {
                Aliment.addFoodInFile(eatenAliments, eatenQuantities,
                                      new float[] { currentCalories, currentProteins, currentCarbs, currentLipids, currentFibers });
            }
        }
Ejemplo n.º 4
0
    void CutObject(Aliment _aliment, bool instantiateViewID)
    {
        // instantiation of standard aliment (bag, canned food)
        GameObject newCookedAlimentObject = PoolManager.Instance.Get(_aliment.CreateKeyPairValue(_aliment.alimentName, AlimentState.Cut), instantiateViewID).gameObject;

        objectCutted = newCookedAlimentObject.GetComponent <GrabableObject>();

        objectCutted.Init();

        Aliment alimentCooked = objectCutted.GetComponent <Aliment>();

        alimentCooked.alimentStepState = _aliment.alimentStepState;

        objectCutted.AllowPhysic(false);
        objectCutted.AllowGrab(true);
        objectCutted.transform.position = foodPos.position;
        objectCutted.transform.rotation = foodPos.rotation;
        objectCutted.onGrab            += RemoveObject;

        grabableReceived.AllowGrab(true);
        grabableReceived.gameObject.GetComponent <Poolable>().DelObject();
        grabableReceived = null;


        if (player.photonView.IsMine)
        {
            // Affect the player
            player.EndInteractionState(this);
            GameManager.Instance.PopUp.CreateText("Objet coupé", 50, new Vector2(0, 300), 3.0f);
        }
    }
Ejemplo n.º 5
0
        /// <summary>
        /// Méthode permettant de retirer le multiplicateur d'un aliment dans le plateau d'un plat.
        /// </summary>
        /// <param name="unAliment"></param>
        /// <returns></returns>
        private StackPanel Modifier_Bouton_Retrait_Plateau(Aliment unAliment)
        {
            StackPanel stackLigne = new StackPanel();

            stackLigne.Orientation         = Orientation.Horizontal;
            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
            stackLigne.Width = 275;

            Image imgBouton = new Image();

            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
            imgBouton.Width  = 15;
            imgBouton.Height = 15;
            stackLigne.Children.Add(imgBouton);

            Label lblNom = new Label();

            lblNom.Content  = unAliment.Nom;
            lblNom.Style    = (Style)(this.Resources["fontNutitia"]);
            lblNom.FontSize = 12;
            lblNom.Width    = 230;
            stackLigne.Children.Add(lblNom);

            return(stackLigne);
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> PutAliment([FromRoute] int id, [FromBody] Aliment aliment)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != aliment.Id)
            {
                return(BadRequest());
            }

            _context.Entry(aliment).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AlimentExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 7
0
    /// <summary>
    /// Instantiate an Aliment as GameObject
    /// </summary>
    public static GameObject InstantiateAliment(string _nameAliment, AlimentState _state)
    {
        if (mapAlimentObject.ContainsKey(_nameAliment))
        {
            // Create go

            Object     toInstantiate = null;
            GameObject alimentGO     = null;

            foreach (AlimentObject.InfoState infoState in mapAlimentObject[_nameAliment].listState)
            {
                if (infoState.state == _state)
                {
                    toInstantiate = infoState.prefab;
                }
            }

            if (toInstantiate != null)
            {
                alimentGO = Instantiate(toInstantiate) as GameObject;
            }

            // Set Aliment
            Aliment aliment = alimentGO.AddComponent <Aliment>();
            aliment.Init(mapAlimentObject[_nameAliment], _state);

            return(alimentGO);
        }

        return(null);
    }
Ejemplo n.º 8
0
        public override int GetHashCode()
        {
            int result;

            result = Aliment.GetHashCode() * Quantit.GetHashCode();
            return(result);
        }
        /// <summary>
        /// Constructeur et remplisseur d'un dictionnaire de donnée concernant les valeurs nutritionnelles
        /// </summary>
        /// <param name="aliment"></param>
        /// <param name="dValeurNutritive"></param>
        /// <returns></returns>
        Dictionary <String, Double> ConstruireDicValeurNutritive(Aliment aliment, Dictionary <String, Double> dValeurNutritive)
        {
            if (dValeurNutritive.Count == 0)
            {
                dValeurNutritive.Add("Calorie", 0);
                dValeurNutritive.Add("Glucides", 0);
                dValeurNutritive.Add("Fibres", 0);
                dValeurNutritive.Add("Proteines", 0);
                dValeurNutritive.Add("Lipides", 0);
                dValeurNutritive.Add("Cholesterol", 0);
                dValeurNutritive.Add("Sodium", 0);
            }
            else
            {
                double mesure   = aliment.Mesure;
                double quantite = aliment.Quantite;

                // Cas ou c'Est un simple aliment atomique qui est calculé et pas un plat
                if ((quantite / mesure) <= 1)
                {
                    mesure   = 1.0d;
                    quantite = 1.0d;
                }

                dValeurNutritive["Calorie"]     += aliment.Energie * (quantite / mesure);
                dValeurNutritive["Glucides"]    += aliment.Glucide * (quantite / mesure);
                dValeurNutritive["Fibres"]      += aliment.Fibre * (quantite / mesure);
                dValeurNutritive["Proteines"]   += aliment.Proteine * (quantite / mesure);
                dValeurNutritive["Lipides"]     += aliment.Lipide * (quantite / mesure);
                dValeurNutritive["Cholesterol"] += aliment.Cholesterol * (quantite / mesure);
                dValeurNutritive["Sodium"]      += aliment.Sodium * (quantite / mesure);
            }

            return(dValeurNutritive);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Méthode permettant de générer les valeurs nutritionnelles d'un aliment dans un tooltip.
        /// </summary>
        /// <param name="aliment">Un aliment.</param>
        /// <returns>Un tooltip contenant les valeurs nutritionnelles de l'aliment.</returns>
        private ToolTip GenererValeursNutritionnelles(Aliment aliment, int nbPersonnes)
        {
            ToolTip ttValeurNut = new ToolTip();

            ttValeurNut.Style = FindResource("toolTipNutritia") as Style;
            StackPanel spValeurNut = new StackPanel();

            Label lblEntete = new Label();

            lblEntete.Content = Nutritia.UI.Ressources.Localisation.FenetreIngredient.ValeurNutritionnelle;
            spValeurNut.Children.Add(lblEntete);

            double multiplicateurValeur = (aliment.Quantite * nbPersonnes) / aliment.Mesure;

            StringBuilder sbValeurNut = new StringBuilder();

            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Energie + " : ").Append(aliment.Energie * multiplicateurValeur).AppendLine(" cal");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Glucides + " : ").Append(aliment.Glucide * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Fibres + " : ").Append(aliment.Fibre * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Proteines + " : ").Append(aliment.Proteine * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Lipides + " : ").Append(aliment.Lipide * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Cholesterol + " : ").Append(aliment.Cholesterol * multiplicateurValeur).AppendLine(" mg");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Sodium + " : ").Append(aliment.Sodium * multiplicateurValeur).Append(" mg");
            Label lblValeurNut = new Label();

            lblValeurNut.Content = sbValeurNut.ToString();

            spValeurNut.Children.Add(lblValeurNut);
            ttValeurNut.Content = spValeurNut;
            return(ttValeurNut);
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> Edit(int id, [Bind("IdAliment,Nom,IdFamille")] Aliment aliment)
        {
            if (id != aliment.IdAliment)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(aliment);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AlimentExists(aliment.IdAliment))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdFamille"] = new SelectList(_context.Famille, "IdFamille", "Nom", aliment.IdFamille);
            return(View(aliment));
        }
Ejemplo n.º 12
0
        public IActionResult CreateAliment([FromBody] Aliment aliment)
        {
            _foodRepository.AddAliment(aliment);
            _foodRepository.Save();

            return(Ok());
        }
Ejemplo n.º 13
0
    public void PutObjectOnSampleStation(int actorNumber)
    {
        PlayerController photonPlayer = InGamePhotonManager.Instance.PlayersConnected[actorNumber].GetComponent <PlayerController>();

        player = photonPlayer;

        //if (player.pDatas.gastroInHand != null)
        //{
        //    grabableReceived = player.pDatas.gastroInHand.ReleaseObject(false, false, false);
        //}
        //else
        //{
        //    grabableReceived = player.pInteract.ReleaseObject(false, false, false);
        //}
        grabableReceived = player.pInteract.ReleaseObject(false, false, false);
        grabableReceived.AllowGrab(false);
        grabableReceived.transform.position = initPos.position;
        grabableReceived.transform.rotation = initPos.rotation;
        haveAnObject = true;

        Aliment newAliment = grabableReceived.GetComponent <Aliment>();

        // Affect the player
        photonPlayer.TeleportTo(playerPosition, true);

        //if (newAliment != null)
        //{
        //    currentStartAction = StartCoroutine(StartAction(newAliment, transformationTime, false, false));
        //}
    }
Ejemplo n.º 14
0
        /// <summary>
        /// Méthode permettant de supprimer un article de la liste d'épicerie.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSupprimer_Click(object sender, RoutedEventArgs e)
        {
            Aliment alimentSelectionne = (Aliment)dgListeEpicerie.SelectedItem;

            ListeAliments.Remove(alimentSelectionne);
            GenererListeConviviale();
        }
Ejemplo n.º 15
0
    /// <summary>
    /// Add aliment to the dish then change the name of the recipe
    /// </summary>
    public void AddAliment(Aliment _aliment)
    {
        bool hasFound;

        // Add new aliment
        Aliment newAliment = new Aliment();

        newAliment = _aliment;
        listAliments.Add(newAliment);

        // Find the recipe
        nameDish = FoodDatabase.GetDishRecipes(listAliments, out hasFound);

        if (hasFound)
        {
            //GetComponent<MeshRenderer>().materials = ;
            //GetComponent<MeshFilter>().mesh = ;
        }

        // Destroy the old aliment that is now in the dish
        if (_aliment.gameObject != null)
        {
            Destroy(_aliment.gameObject);
        }
    }
Ejemplo n.º 16
0
        /// <summary>
        /// Méthode permettant d'afficher les ingrédients d'un plat.
        /// </summary>
        /// <param name="listeIngredients">La liste des aliments.</param>
        private void AfficherIngredients(List <Aliment> listeIngredients, int nbPersonnes)
        {
            for (int i = 0; i < listeIngredients.Count; i++)
            {
                Aliment alimentCourant = listeIngredients[i];

                StringBuilder sbIngredients = new StringBuilder();
                sbIngredients.Append(alimentCourant.Quantite * nbPersonnes).ToString();
                sbIngredients.Append(alimentCourant.Symbole);
                alimentCourant.Nom = alimentCourant.Nom.ToLower();
                if (alimentCourant.Nom[0] == 'a' || alimentCourant.Nom[0] == 'e' || alimentCourant.Nom[0] == 'h' ||
                    alimentCourant.Nom[0] == 'i' || alimentCourant.Nom[0] == 'o' || alimentCourant.Nom[0] == 'u')
                {
                    sbIngredients.Append(" d'");
                }
                else
                {
                    sbIngredients.Append(" de ");
                }
                sbIngredients.Append(alimentCourant.Nom);

                Label lblIngredients = new Label();
                lblIngredients.Content = sbIngredients.ToString();
                lblIngredients.ToolTip = GenererValeursNutritionnelles(alimentCourant, nbPersonnes);
                Grid.SetRow(lblIngredients, i + 1);

                grdIngredients.Children.Add(lblIngredients);
            }
        }
Ejemplo n.º 17
0
    public void Interact(PlayerController pController)
    {
        player = pController;
        Gastro gastroInHand = player.pDatas.gastroInHand;

        if (gastroInHand != null) // Put object in trolley
        {
            Aliment actualAliment = gastroInHand.alimentStocked;
            if (actualAliment != null && (actualAliment.alimentState == AlimentState.Cooked || actualAliment.alimentState == AlimentState.Cut || actualAliment.alimentState == AlimentState.Standard || actualAliment.alimentState == AlimentState.Clean))
            {
                onUse = true;

                PutObjectInTrolley(actualAliment);
            }
            else
            {
                GameManager.Instance.PopUp.CreateText("Le gastro ne contient pas d'aliment", 50, new Vector2(0, 300), 3.0f);
            }
        }
        else // check température
        {
            player.pDatas.temperatureInMind = true;
            GameManager.Instance.PopUp.CreateText("Température relevée", 50, new Vector2(0, 300), 3.0f);
        }
    }
Ejemplo n.º 18
0
    private void PutObjectInPost(int _actorNumber)
    {
        PlayerController photonPlayer = InGamePhotonManager.Instance.PlayersConnected[_actorNumber];

        player = photonPlayer;

        if (player.pDatas.gastroInHand != null)
        {
            grabableReceived = player.pDatas.gastroInHand.ReleaseObject(false, false, false);
        }
        else
        {
            grabableReceived = player.pInteract.ReleaseObject(false, false, false);
        }
        grabableReceived.AllowGrab(false);
        grabableReceived.transform.position = initPos.position;
        grabableReceived.transform.rotation = initPos.rotation;

        haveAnObject = true;

        Aliment newAliment = grabableReceived.GetComponent <Aliment>();

        // Affect the player
        photonPlayer.TeleportTo(playerPosition, true);

        // transform dirty aliment into fresh aliment
        if (newAliment != null)
        {
            currentStartAction = StartCoroutine(StartAction(newAliment, transformationTime, false, false));
        }
    }
Ejemplo n.º 19
0
        private void frmSuggestFood_Load(object sender, EventArgs e)
        {
            quantities = new List <int>();
            for (int i = 0; i < aliments.Count; ++i)
            {
                quantities.Add(int.MaxValue);
                if (calories > 0 && aliments[i].Calories > 0)
                {
                    quantities[i] = Math.Min(quantities[i], (int)(calories / aliments[i].Calories * 100));
                }
                if (proteins > 0 && aliments[i].Proteins > 0)
                {
                    quantities[i] = Math.Min(quantities[i], (int)(proteins / aliments[i].Proteins * 100));
                }
                if (carbs > 0 && aliments[i].Carbs > 0)
                {
                    quantities[i] = Math.Min(quantities[i], (int)(carbs / aliments[i].Carbs * 100));
                }
                if (lipids > 0 && aliments[i].Lipids > 0)
                {
                    quantities[i] = Math.Min(quantities[i], (int)(lipids / aliments[i].Lipids * 100));
                }
                if (fibers > 0 && aliments[i].Fibers > 0)
                {
                    quantities[i] = Math.Min(quantities[i], (int)(fibers / aliments[i].Fibers * 100));
                }
            }

            for (int i = 0; i < aliments.Count; ++i)
            {
                for (int j = i + 1; j < aliments.Count; ++j)
                {
                    if (quantities[i] < quantities[j])
                    {
                        int qt = quantities[i];
                        quantities[i] = quantities[j];
                        quantities[j] = qt;
                        Aliment at = aliments[i];
                        aliments[i] = aliments[j];
                        aliments[j] = at;
                    }
                }
            }

            for (int i = 0; i < Math.Min(aliments.Count, 100); ++i)
            {
                if (quantities[i] > 0)
                {
                    ListViewItem item = new ListViewItem(aliments[i].FoodName);
                    item.SubItems.Add(quantities[i].ToString());
                    listView1.Items.Add(item);
                }
                else
                {
                    break;
                }
            }
        }
Ejemplo n.º 20
0
        public void AddAliment(Aliment aliment)
        {
            if (aliment == null)
            {
                throw new ArgumentNullException(nameof(aliment));
            }

            _foodContext.Add(aliment);
        }
Ejemplo n.º 21
0
        public void DeleteAliment(Aliment aliment)
        {
            if (aliment == null)
            {
                throw new ArgumentNullException(nameof(aliment));
            }

            _foodContext.Alimets.Remove(aliment);
        }
        public async Task Insert(Aliment entity)
        {
            var queryParameters = new DynamicParameters();

            queryParameters.Add("@Id", entity.Id);
            queryParameters.Add("@Label", entity.Label);

            await Execute("InsertAliment", queryParameters);
        }
Ejemplo n.º 23
0
    public GameObject LoadAndSetParent(Aliment loadedAliment, Transform parent)
    {
        GameObject toEat = LoadWithSliceManagement(loadedAliment);

        toEat.transform.SetParent(parent);
        toEat.transform.localPosition = Vector3.zero;
        toEat.transform.localRotation = toEat.transform.rotation;
        return(toEat);
    }
Ejemplo n.º 24
0
    void CleanObject(Aliment _aliment, bool instantiateViewID)
    {
        // instantiation of empty aliment (bag, canned food)
        GameObject newEmptyAlimentObject = PoolManager.Instance.Get(_aliment.CreateKeyPairValue(_aliment.alimentName, AlimentState.EmptyContent), instantiateViewID).gameObject;

        newEmptyAlimentObject.transform.position = initPos.position;
        newEmptyAlimentObject.transform.rotation = initPos.rotation;

        ObjectEmpty = newEmptyAlimentObject.GetComponent <GrabableObject>();

        ObjectEmpty.Init();

        ObjectEmpty.AllowPhysic(false);
        ObjectEmpty.AllowGrab(true); // To do : change to false
        ObjectEmpty.onGrab += RemoveObject;


        // instantiation of standard aliment (bag, canned food)
        GameObject newStandardAlimentObject = PoolManager.Instance.Get(_aliment.CreateKeyPairValue(_aliment.alimentName, AlimentState.Standard), instantiateViewID).gameObject;

        newStandardAlimentObject.transform.position = FinalPos.position;
        newStandardAlimentObject.transform.rotation = FinalPos.rotation;

        ObjectStandard = newStandardAlimentObject.GetComponent <GrabableObject>();

        ObjectStandard.Init();

        Aliment alimentStandard = ObjectStandard.GetComponent <Aliment>();

        if (alimentStandard.alimentType == AlimentType.Vegetable || alimentStandard.alimentType == AlimentType.Meat || alimentStandard.alimentType == AlimentType.Fish)
        {
            alimentStandard.alimentStepState = AlimentStepState.Deconditionning;
        }
        else
        {
            alimentStandard.alimentStepState = AlimentStepState.Treated;
        }


        ObjectStandard.AllowPhysic(false);
        ObjectStandard.AllowGrab(true);
        ObjectStandard.onGrab += RemoveObject;

        grabableReceived.AllowGrab(true);
        grabableReceived.gameObject.GetComponent <Poolable>().DelObject();
        grabableReceived = null;



        if (player.photonView.IsMine)
        {
            // Affect the player
            player.EndInteractionState(this);
            GameManager.Instance.PopUp.CreateText("Objet nettoyé", 50, new Vector2(0, 300), 3.0f);
        }
    }
Ejemplo n.º 25
0
    private void FinishAction(Aliment _aliment, int _transformationTime, bool instantiateViewID)
    {
        CookObject(_aliment, instantiateViewID);

        int ObjectCookedViewID = objectCooked.GetComponent <PhotonView>().ViewID;

        currentStartAction = null;

        photonView.RPC("FinishActionOnline", RpcTarget.Others, _aliment.alimentName, (int)_aliment.alimentState, _transformationTime, false, ObjectCookedViewID);
    }
Ejemplo n.º 26
0
        public async Task Insert(Aliment aliment, NutritionalInfoType type, decimal value)
        {
            var queryParameters = new DynamicParameters();

            queryParameters.Add("@AlimentId", aliment.Id);
            queryParameters.Add("@NutritionalInfoId", type);
            queryParameters.Add("@Value", value);

            await Execute("InsertNutritionalValue", queryParameters);
        }
        public async Task <IActionResult> Create([Bind("Nom,Description")] Aliment aliment)
        {
            if (ModelState.IsValid)
            {
                _context.Add(aliment);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(aliment));
        }
Ejemplo n.º 28
0
    IEnumerator StartAction(Aliment _aliment, int _timeInSecond, bool instantiateViewID, bool _owner)
    {
        GameManager.Instance.Audio.PlaySound("CuttingCarrot", AudioManager.Canal.SoundEffect);

        yield return(new WaitForSeconds(_timeInSecond));

        if (_owner)// player who make the action (for online)
        {
            FinishAction(_aliment, _timeInSecond, instantiateViewID, _owner);
        }
    }
Ejemplo n.º 29
0
    IEnumerator StartAction(Aliment _aliment, int _timeInSecond, bool instantiateViewID, bool _owner)
    {
        GameManager.Instance.Audio.PlaySound("Washing", AudioManager.Canal.SoundEffect);
        waterParticleSystem.gameObject.SetActive(true);
        foamParticleSystem.gameObject.SetActive(true);
        yield return(new WaitForSeconds(_timeInSecond));

        if (_owner)// player who make the action (for online)
        {
            FinishAction(_aliment, _timeInSecond, instantiateViewID, _owner);
        }
    }
Ejemplo n.º 30
0
        public async Task <IActionResult> Create([Bind("IdAliment,Nom,IdFamille")] Aliment aliment)
        {
            if (ModelState.IsValid)
            {
                _context.Add(aliment);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdFamille"] = new SelectList(_context.Famille, "IdFamille", "Nom", aliment.IdFamille);
            return(View(aliment));
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Méthode permettant de générer les valeurs nutritionnelles d'un aliment dans un tooltip.
        /// </summary>
        /// <param name="aliment">Un aliment.</param>
        /// <returns>Un tooltip contenant les valeurs nutritionnelles de l'aliment.</returns>
        private ToolTip GenererValeursNutritionnelles(Aliment aliment, int nbPersonnes)
        {
            ToolTip ttValeurNut = new ToolTip();
            ttValeurNut.Style = FindResource("toolTipNutritia") as Style;
            StackPanel spValeurNut = new StackPanel();

            Label lblEntete = new Label();
            lblEntete.Content = Nutritia.UI.Ressources.Localisation.FenetreIngredient.ValeurNutritionnelle;
            spValeurNut.Children.Add(lblEntete);

            double multiplicateurValeur = (aliment.Quantite * nbPersonnes)/aliment.Mesure;

            StringBuilder sbValeurNut = new StringBuilder();
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Energie + " : ").Append(aliment.Energie * multiplicateurValeur).AppendLine(" cal");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Glucides + " : ").Append(aliment.Glucide * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Fibres + " : ").Append(aliment.Fibre * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Proteines + " : ").Append(aliment.Proteine * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Lipides + " : ").Append(aliment.Lipide * multiplicateurValeur).AppendLine(" g");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Cholesterol + " : ").Append(aliment.Cholesterol * multiplicateurValeur).AppendLine(" mg");
            sbValeurNut.Append(Nutritia.UI.Ressources.Localisation.ValeurNutritionnelle.Sodium + " : ").Append(aliment.Sodium * multiplicateurValeur).Append(" mg");
            Label lblValeurNut = new Label();
            lblValeurNut.Content = sbValeurNut.ToString();

            spValeurNut.Children.Add(lblValeurNut);
            ttValeurNut.Content = spValeurNut;
            return ttValeurNut;
        }
        /// <summary>
        /// Méthode qui copie dans le répertoire de l'application l'image de l'aliment.
        /// </summary>
        /// <param name="unAliment"></param>
        /// <param name="uneImage"></param>
        /// <returns></returns>
        private string Sauvegarder_Image_Aliment(Aliment unAliment, Image uneImage)
        {
            string chemin = uneImage.Source.ToString();
            int position = chemin.LastIndexOf('/');
            string image = chemin.Substring(position + 1);
            string actuel;

            int positionPack = chemin.IndexOf("pack");

            if (positionPack == -1)
            {
                chemin = chemin.Substring(8);
                actuel = Directory.GetCurrentDirectory();

                actuel += cheminSauvegarde;

                bool dossierExiste = System.IO.Directory.Exists(actuel);
                if (!dossierExiste)
                    System.IO.Directory.CreateDirectory(actuel);

                actuel += image;

                if (!File.Exists(actuel))
                {
                    System.IO.File.Copy(chemin, actuel);
                }

                unAliment.ImageURL = "pack://application:,,,/UI/Images/" + image;
            }
            else
            {
                unAliment.ImageURL = chemin;
            }

            return unAliment.ImageURL;
        }
        /// <summary>
        /// Méthode de retrait d'un aliment du plateau d'un plat.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Retirer_Aliment_Plateau_Modif(object sender, RoutedEventArgs e)
        {
            Button btnSender = sender as Button;

            int idButton = int.Parse(btnSender.Name.Substring(3));

            Aliment unAliment = new Aliment();

            for (int i = 0; i < listeAlimentsPlateauModification.Count; i++)
            {
                if (listeAlimentsPlateauModification[i].IdAliment == idButton)
                {
                    listeAlimentsPlateauModification[i].Quantite -= 1;

                    if (listeAlimentsPlateauModification[i].Quantite == 0)
                    {
                        composition_plat_modif.Children.Remove(btnSender);
                        listeAlimentsPlateauModification.Remove(listeAlimentsPlateauModification[i]);
                    }
                    else
                    {
                        if (listeAlimentsPlateauModification[i].Quantite == 1)
                        {
                            btnSender.Content = Modifier_Bouton_Retrait_Plateau(listeAlimentsPlateauModification[i]);
                        }
                        else
                        {
                            btnSender.Content = Modifier_Quantite_Bouton_Plateau(listeAlimentsPlateauModification[i]);
                        }

                    }
                }
            }
        }
        /// <summary>
        /// Supprime la ligne de Plat/Aliment si l'utilisateur clique sur le bouton
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnControlSupprimer_Click(object sender, RoutedEventArgs e)
        {
            Button btn = (Button)sender;
            Plat monPlat = new Plat();
            Aliment monAliment = new Aliment();

            bool estPlat = Convert.ToInt32(btn.Uid) > 0;

            // On compte le nbr de plat ou aliment présent dans le plateau pour controller sa suppréssion
            int nbrItemActuel = (estPlat ?
                                PlateauPlat.Count(P => P.IdPlat == Convert.ToInt32(btn.Uid)) :
                                PlateauAliment.Count(A => A.IdAliment == Convert.ToInt32(btn.Uid) * -1));
            int iteration = 1;
            if (Keyboard.Modifiers == ModifierKeys.Control)
                iteration = (nbrItemActuel < 10 ?
                            nbrItemActuel :
                            10);

            else if (Keyboard.Modifiers == ModifierKeys.Shift)
                iteration = nbrItemActuel;

            // On supprime 1 / 10 / ou tous le items qui correspondent à l'objet cliqué
            if (estPlat)
            {
                // Si on vide ce plat, il faut enlever son id de la liste des plats à dérouler
                if (nbrItemActuel == iteration)
                    LstIdPlatADerouler.Remove(Convert.ToInt32(btn.Uid));
                for (int i = 0; i < iteration; i++)
                    PlateauPlat.Remove(PlateauPlat.Last(P => P.IdPlat == Convert.ToInt32(btn.Uid)));

            }

            else
                for (int i = 0; i < iteration; i++)
                    PlateauAliment.Remove(PlateauAliment.Last(P => P.IdAliment == Convert.ToInt32(btn.Uid) * -1));

            DessinerPlateau();
        }
        /// <summary>
        /// Constructeur et remplisseur d'un dictionnaire de donnée concernant les valeurs nutritionnelles
        /// </summary>
        /// <param name="aliment"></param>
        /// <param name="dValeurNutritive"></param>
        /// <returns></returns>
        Dictionary<String, Double> ConstruireDicValeurNutritive(Aliment aliment, Dictionary<String, Double> dValeurNutritive)
        {
            if (dValeurNutritive.Count == 0)
            {
                dValeurNutritive.Add("Calorie", 0);
                dValeurNutritive.Add("Glucides", 0);
                dValeurNutritive.Add("Fibres", 0);
                dValeurNutritive.Add("Proteines", 0);
                dValeurNutritive.Add("Lipides", 0);
                dValeurNutritive.Add("Cholesterol", 0);
                dValeurNutritive.Add("Sodium", 0);
            }
            else
            {
                double mesure = aliment.Mesure;
                double quantite = aliment.Quantite;
                if (quantite / mesure <= 1) // Cas ou c'Est un simple aliment atomique qui est calculé et pas un plat
                {
                    mesure = 1;
                    quantite = 1;
                }

                dValeurNutritive["Calorie"] += aliment.Energie * quantite / mesure;
                dValeurNutritive["Glucides"] += aliment.Glucide * quantite / mesure;
                dValeurNutritive["Fibres"] += aliment.Fibre * quantite / mesure;
                dValeurNutritive["Proteines"] += aliment.Proteine * quantite / mesure;
                dValeurNutritive["Lipides"] += aliment.Lipide * quantite / mesure;
                dValeurNutritive["Cholesterol"] += aliment.Cholesterol * quantite / mesure;
                dValeurNutritive["Sodium"] += aliment.Sodium * quantite / mesure;
            }

            return dValeurNutritive;
        }
        /// <summary>
        /// Méthode de modification dans la base de données d'un aliment existant.
        /// </summary>
        private void Modifier_Aliment()
        {
            Aliment modifAliment = new Aliment();

            //----------------------------------------Enregistrement des valeurs nutritionnelles----------------------------------------

            // Conversion automatisée de la première lettre du nom de l'aliment.
            if (char.IsLower(Nom_alim_modif.Text[0]))
            {
                Nom_alim_modif.Text = char.ToUpper(Nom_alim_modif.Text[0]) + Nom_alim_modif.Text.Substring(1);
            }

            modifAliment.IdAliment = idAlimentModif;
            modifAliment.Nom = Nom_alim_modif.Text;
            modifAliment.Categorie = cbo_grp_alim_modif.SelectionBoxItem.ToString();
            modifAliment.Mesure = int.Parse(Mesure_modif.Text);
            modifAliment.UniteMesure = cbo_unite_mesure_modif.SelectionBoxItem.ToString();
            modifAliment.Energie = double.Parse(Calories_modif.Text);
            modifAliment.Glucide = double.Parse(Glucides_modif.Text);
            modifAliment.Fibre = double.Parse(Fibres_modif.Text);
            modifAliment.Proteine = double.Parse(Proteines_modif.Text);
            modifAliment.Lipide = double.Parse(Lipides_modif.Text);
            modifAliment.Cholesterol = double.Parse(Cholesterol_modif.Text);
            modifAliment.Sodium = double.Parse(Sodium_modif.Text);

            //----------------------------------------Enregistrement du chemin de l'image----------------------------------------
            modifAliment.ImageURL = Sauvegarder_Image_Aliment(modifAliment, img_alim_modif);

            //----------------------------------------Update en BD----------------------------------------
            ServiceFactory.Instance.GetService<IAlimentService>().Update(modifAliment);
            listeAliments = ServiceFactory.Instance.GetService<IAlimentService>().RetrieveAll();

            //----------------------------------------Remise à neuf des champs de saisie----------------------------------------
            Search_alim.Text = "";
            Nom_alim_modif.Text = "";
            cbo_grp_alim_modif.SelectedIndex = -1;
            cbo_unite_mesure_modif.SelectedIndex = -1;
            Mesure_modif.Text = "";
            Calories_modif.Text = "";
            Glucides_modif.Text = "";
            Fibres_modif.Text = "";
            Proteines_modif.Text = "";
            Lipides_modif.Text = "";
            Cholesterol_modif.Text = "";
            Sodium_modif.Text = "";
            img_alim_modif.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/nonDisponible.png"));
        }
        /// <summary>
        /// Méthode d'ajout d'un aliment au plateau d'un plat à modifier.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Ajout_Aliment_Plateau_Modif(object sender, RoutedEventArgs e)
        {
            Button btnSender = sender as Button;

            int idButton = int.Parse(btnSender.Name.Substring(3));

            bool test = false;

            Aliment unAliment = new Aliment();

            // Il faut trouver l'aliment dont l'id correspond à celle du bouton.
            for (int i = 0; i < listeAlimentsModifPlat.Count; i++)
            {
                // Si l'id de l'aliment est égal à celui du bouton, alors on a trouvé le bon aliment.
                if (idButton == listeAlimentsModifPlat[i].IdAliment)
                {
                    // Il faut vérifier la présence de cet aliment dans le plateau du plat.
                    for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                    {
                        if (listeAlimentsModifPlat[i].IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                        {
                            test = true;
                        }
                    }

                    // S'il n'est pas dans la composition de l'aliment, alors on l'ajoute.
                    if (!test)
                    {
                        unAliment = listeAlimentsModifPlat[i];
                        listeAlimentsPlateauModification.Add(unAliment);
                        Creer_Bouton_Retrait_Modif(btnSender, unAliment, composition_plat_modif);

                        for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                        {
                            if (unAliment.IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                            {
                                listeAlimentsPlateauModification[j].Quantite += 1;
                            }
                        }

                    }
                    // Sinon, il existe auquel cas il faut changer la quantité et modifier l'affichage du bouton.
                    else
                    {
                        for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                        {
                            if (listeAlimentsModifPlat[i].IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                            {
                                listeAlimentsPlateauModification[j].Quantite += 1;

                                for (int k = 0; k < composition_plat_modif.Children.Count; k++)
                                {
                                    Button btnPlateau = (Button)composition_plat_modif.Children[k];

                                    if (btnPlateau.Name == btnSender.Name)
                                    {
                                        btnPlateau.Content = Modifier_Quantite_Bouton_Plateau(listeAlimentsPlateauModification[j]);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Méthode servant à générer l'aide contextuelle pour chaque aliment.
        /// </summary>
        /// <param name="unAliment"></param>
        /// <returns></returns>
        private ToolTip Produire_Aide_Contextuelle(Aliment unAliment)
        {
            ToolTip aideContextuelle = new ToolTip();
            StackPanel unStackPanel = new StackPanel();

            Label lblEntete = new Label();
            lblEntete.Content = unAliment.Nom;
            unStackPanel.Children.Add(lblEntete);

            Label lblMesure = new Label();
            lblMesure.Content = unAliment.Mesure + " " + unAliment.UniteMesure + " pour 1";
            unStackPanel.Children.Add(lblMesure);

            aideContextuelle.Content = unStackPanel;

            return aideContextuelle;
        }
        /// <summary>
        /// Méthode permettant de modifier le multiplicateur d'un aliment dans le plateau d'un plat.
        /// </summary>
        /// <param name="unAliment"></param>
        /// <returns></returns>
        private StackPanel Modifier_Quantite_Bouton_Plateau(Aliment unAliment)
        {
            StackPanel stackLigne = new StackPanel();
            stackLigne.Orientation = Orientation.Horizontal;
            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
            stackLigne.Width = 275;

            Image imgBouton = new Image();
            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
            imgBouton.Width = 15;
            imgBouton.Height = 15;
            stackLigne.Children.Add(imgBouton);

            Label lblQuantite = new Label();
            lblQuantite.Content = unAliment.Quantite.ToString() + "x";
            lblQuantite.Style = (Style)(this.Resources["fontNutitia"]);
            lblQuantite.FontSize = 12;
            lblQuantite.Width = 40;
            stackLigne.Children.Add(lblQuantite);

            Label lblNom = new Label();
            lblNom.Content = unAliment.Nom;
            lblNom.Style = (Style)(this.Resources["fontNutitia"]);
            lblNom.FontSize = 12;
            lblNom.Width = 230;
            stackLigne.Children.Add(lblNom);

            return stackLigne;
        }
        /// <summary>
        /// Méthode de retrait d'un aliment du plateau d'un plat.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Retirer_Aliment_Plateau_Modif(object sender, RoutedEventArgs e)
        {
            Button btnSender = sender as Button;

            int idButton = int.Parse(btnSender.Name.Substring(3));

            Aliment unAliment = new Aliment();

            for (int i = 0; i < listeAlimentsPlateauModification.Count; i++)
            {
                if (listeAlimentsPlateauModification[i].IdAliment == idButton)
                {
                    listeAlimentsPlateauModification[i].Quantite -= 1;

                    if (listeAlimentsPlateauModification[i].Quantite == 0)
                    {
                        composition_plat_modif.Children.Remove(btnSender);
                        listeAlimentsPlateauModification.Remove(listeAlimentsPlateauModification[i]);
                    }
                    else
                    {
                        if (listeAlimentsPlateauModification[i].Quantite == 1)
                        {
                            StackPanel stackLigne = new StackPanel();
                            stackLigne.Orientation = Orientation.Horizontal;
                            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
                            stackLigne.Width = 275;

                            Image imgBouton = new Image();
                            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
                            imgBouton.Width = 15;
                            imgBouton.Height = 15;
                            stackLigne.Children.Add(imgBouton);

                            Label lblNom = new Label();
                            lblNom.Content = listeAlimentsPlateauModification[i].Nom;
                            lblNom.Style = (Style)(this.Resources["fontNutitia"]);
                            lblNom.FontSize = 12;
                            lblNom.Width = 230;
                            stackLigne.Children.Add(lblNom);

                            btnSender.Content = stackLigne;
                        }
                        else
                        {
                            StackPanel stackLigne = new StackPanel();
                            stackLigne.Orientation = Orientation.Horizontal;
                            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
                            stackLigne.Width = 275;

                            Image imgBouton = new Image();
                            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
                            imgBouton.Width = 15;
                            imgBouton.Height = 15;
                            stackLigne.Children.Add(imgBouton);

                            Label lblQuantite = new Label();
                            lblQuantite.Content = listeAlimentsPlateauModification[i].Quantite.ToString() + "x";
                            lblQuantite.Style = (Style)(this.Resources["fontNutitia"]);
                            lblQuantite.FontSize = 12;
                            lblQuantite.Width = 40;
                            stackLigne.Children.Add(lblQuantite);

                            Label lblNom = new Label();
                            lblNom.Content = listeAlimentsPlateauModification[i].Nom;
                            lblNom.Style = (Style)(this.Resources["fontNutitia"]);
                            lblNom.FontSize = 12;
                            lblNom.Width = 230;
                            stackLigne.Children.Add(lblNom);

                            btnSender.Content = stackLigne;
                        }

                    }
                }
            }
        }
        /// <summary>
        /// Méthode d'ajout d'un aliment au plateau d'un plat à modifier.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Ajout_Aliment_Plateau_Modif(object sender, RoutedEventArgs e)
        {
            Button btnSender = sender as Button;

            int idButton = int.Parse(btnSender.Name.Substring(3));

            bool test = false;

            Aliment unAliment = new Aliment();

            // Il faut trouver l'aliment dont l'id correspond à celle du bouton.
            for (int i = 0; i < listeAlimentsModifPlat.Count; i++)
            {
                // Si l'id de l'aliment est égal à celui du bouton, alors on a trouvé le bon aliment.
                if (idButton == listeAlimentsModifPlat[i].IdAliment)
                {
                    // Il faut vérifier la présence de cet aliment dans le plateau du plat.
                    for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                    {
                        if (listeAlimentsModifPlat[i].IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                        {
                            test = true;
                        }
                    }

                    // S'il n'est pas dans la composition de l'aliment, alors on l'ajoute.
                    if (!test)
                    {
                        unAliment = listeAlimentsModifPlat[i];
                        listeAlimentsPlateauModification.Add(unAliment);
                        Creer_Bouton_Retrait_Modif(btnSender, unAliment, composition_plat_modif);

                        for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                        {
                            if (unAliment.IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                            {
                                listeAlimentsPlateauModification[j].Quantite += 1;
                            }
                        }

                    }
                    // Sinon, il existe auquel cas il faut changer la quantité et modifier l'affichage du bouton.
                    else
                    {
                        for (int j = 0; j < listeAlimentsPlateauModification.Count; j++)
                        {
                            if (listeAlimentsModifPlat[i].IdAliment == listeAlimentsPlateauModification[j].IdAliment)
                            {
                                listeAlimentsPlateauModification[j].Quantite += 1;

                                for (int k = 0; k < composition_plat_modif.Children.Count; k++)
                                {
                                    Button btnPlateau = (Button)composition_plat_modif.Children[k];

                                    if (btnPlateau.Name == btnSender.Name)
                                    {
                                        StackPanel stackLigne = new StackPanel();
                                        stackLigne.Orientation = Orientation.Horizontal;
                                        stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
                                        stackLigne.Width = 275;

                                        Image imgBouton = new Image();
                                        imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
                                        imgBouton.Width = 15;
                                        imgBouton.Height = 15;
                                        stackLigne.Children.Add(imgBouton);

                                        Label lblQuantite = new Label();
                                        lblQuantite.Content = listeAlimentsPlateauModification[j].Quantite.ToString() + "x";
                                        lblQuantite.Style = (Style)(this.Resources["fontNutitia"]);
                                        lblQuantite.FontSize = 12;
                                        lblQuantite.Width = 40;
                                        stackLigne.Children.Add(lblQuantite);

                                        Label lblNom = new Label();
                                        lblNom.Content = listeAlimentsPlateauModification[j].Nom;
                                        lblNom.Style = (Style)(this.Resources["fontNutitia"]);
                                        lblNom.FontSize = 12;
                                        lblNom.Width = 230;
                                        stackLigne.Children.Add(lblNom);

                                        btnPlateau.Content = stackLigne;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Méthode de modification dans la base de données d'un aliment existant.
        /// </summary>
        private void Modifier_Aliment()
        {
            Aliment modifAliment = new Aliment();

            //----------------------------------------Enregistrement des valeurs nutritionnelles----------------------------------------

            // Conversion automatisée de la première lettre du nom de l'aliment.
            if (char.IsLower(Nom_alim_modif.Text[0]))
            {
                Nom_alim_modif.Text = char.ToUpper(Nom_alim_modif.Text[0]) + Nom_alim_modif.Text.Substring(1);
            }

            modifAliment.IdAliment = idAlimentModif;
            modifAliment.Nom = Nom_alim_modif.Text;
            modifAliment.Categorie = cbo_grp_alim_modif.SelectionBoxItem.ToString();
            modifAliment.Mesure = int.Parse(Mesure_modif.Text);
            modifAliment.UniteMesure = cbo_unite_mesure_modif.SelectionBoxItem.ToString();
            modifAliment.Energie = double.Parse(Calories_modif.Text);
            modifAliment.Glucide = double.Parse(Glucides_modif.Text);
            modifAliment.Fibre = double.Parse(Fibres_modif.Text);
            modifAliment.Proteine = double.Parse(Proteines_modif.Text);
            modifAliment.Lipide = double.Parse(Lipides_modif.Text);
            modifAliment.Cholesterol = double.Parse(Cholesterol_modif.Text);
            modifAliment.Sodium = double.Parse(Sodium_modif.Text);

            //----------------------------------------Enregistrement du chemin de l'image----------------------------------------
            string chemin = img_alim_modif.Source.ToString();
            int position = chemin.LastIndexOf('/');
            string image = chemin.Substring(position + 1);
            string actuel;

            int positionPack = chemin.IndexOf("pack");

            if (positionPack == -1)
            {
                chemin = chemin.Substring(8);
                actuel = Directory.GetCurrentDirectory();
                int positionDest = actuel.LastIndexOf('\\');
                actuel = actuel.Substring(0, actuel.Length - (actuel.Length - positionDest));
                positionDest = actuel.LastIndexOf('\\');
                actuel = actuel.Substring(0, actuel.Length - (actuel.Length - positionDest));
                actuel += "\\UI\\Images\\" + image;

                if (!File.Exists(actuel))
                {
                    System.IO.File.Copy(chemin, actuel);
                }

                modifAliment.ImageURL = "pack://application:,,,/UI/Images/" + image;
            }
            else
            {
                modifAliment.ImageURL = chemin;
            }

            //----------------------------------------Update en BD----------------------------------------
            ServiceFactory.Instance.GetService<IAlimentService>().Update(modifAliment);
            listeAliments = ServiceFactory.Instance.GetService<IAlimentService>().RetrieveAll();

            //----------------------------------------Remise à neuf des champs de saisie----------------------------------------
            Search_alim.Text = "";
            Nom_alim_modif.Text = "";
            cbo_grp_alim_modif.SelectedIndex = -1;
            cbo_unite_mesure_modif.SelectedIndex = -1;
            Mesure_modif.Text = "";
            Calories_modif.Text = "";
            Glucides_modif.Text = "";
            Fibres_modif.Text = "";
            Proteines_modif.Text = "";
            Lipides_modif.Text = "";
            Cholesterol_modif.Text = "";
            Sodium_modif.Text = "";
            img_alim_modif.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/nonDisponible.png"));
        }
        /// <summary>
        /// Méthode permettant de créer le bouton de retrait d'un aliment du plateau d'un plat.
        /// </summary>
        /// <param name="unBouton"></param>
        /// <param name="unAliment"></param>
        void Creer_Bouton_Retrait(Button unBouton, Aliment unAliment)
        {
            Button btnControl = new Button();

            // Création du bouton pour supprimer ou ajouter un Plat/Aliment
            btnControl.HorizontalContentAlignment = HorizontalAlignment.Left;
            Thickness margin = btnControl.Margin;
            margin.Left = 0;
            btnControl.Margin = margin;
            btnControl.Height = 32;
            btnControl.Name = unBouton.Name;
            btnControl.Click += Retirer_Aliment_Plateau;
            btnControl.ToolTip = Produire_Aide_Contextuelle(unAliment);

            StackPanel stackLigne = new StackPanel();
            stackLigne.Orientation = Orientation.Horizontal;
            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
            stackLigne.Width = 275;

            Image imgBouton = new Image();
            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/minusIcon.png"));
            imgBouton.Width = 15;
            imgBouton.Height = 15;
            stackLigne.Children.Add(imgBouton);

            Label lblNom = new Label();
            lblNom.Content = unAliment.Nom;
            lblNom.Style = (Style)(this.Resources["fontNutitia"]);
            lblNom.FontSize = 12;
            lblNom.Width = 230;
            stackLigne.Children.Add(lblNom);

            btnControl.Content = stackLigne;

            composition_plat.Children.Add(btnControl);
        }
        /// <summary>
        /// Méthode qui permet de créer le bouton d'ajout d'un aliment au plateau d'un plat.
        /// </summary>
        /// <param name="plus"></param>
        /// <param name="unAliment"></param>
        /// <returns></returns>
        Button Creer_Bouton_Aliment(bool plus, Aliment unAliment)
        {
            Button btnControl = new Button();

            // Création du bouton pour supprimer ou ajouter un Plat/Aliment
            btnControl.HorizontalContentAlignment = HorizontalAlignment.Left;
            Thickness margin = btnControl.Margin;
            margin.Left = 0;
            btnControl.Margin = margin;
            btnControl.Height = 32;
            btnControl.Name = "btn" + ((int)unAliment.IdAliment).ToString();
            btnControl.ToolTip = Produire_Aide_Contextuelle(unAliment);

            if (plus)
            {
                //listeAlimentsPlateau.Add(unAliment);
                btnControl.Click += Ajout_Aliment_Plateau;

            }

            StackPanel stackLigne = new StackPanel();
            stackLigne.Orientation = Orientation.Horizontal;
            stackLigne.HorizontalAlignment = HorizontalAlignment.Left;
            stackLigne.Width = 275;

            Image imgBouton = new Image();
            imgBouton.Source = new BitmapImage(new Uri("pack://application:,,,/UI/Images/" + (plus ? "plusIcon" : "minusIcon") + ".png"));
            imgBouton.Width = 15;
            imgBouton.Height = 15;
            stackLigne.Children.Add(imgBouton);

            Label lblNom = new Label();
            lblNom.Content = unAliment.Nom;
            lblNom.Style = (Style)(this.Resources["fontNutitia"]);
            lblNom.FontSize = 12;
            lblNom.Width = 230;
            stackLigne.Children.Add(lblNom);

            btnControl.Content = stackLigne;

            return btnControl;
        }