public bool CanTakeGrabable(GrabableObject _grabable) { Aliment aliment = _grabable.GetComponent <Aliment>(); bool canGrab = aliment != null; return(canGrab); }
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); }
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 }); } }
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); } }
/// <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); }
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()); }
/// <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); }
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); }
/// <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); }
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)); }
public IActionResult CreateAliment([FromBody] Aliment aliment) { _foodRepository.AddAliment(aliment); _foodRepository.Save(); return(Ok()); }
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)); //} }
/// <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(); }
/// <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); } }
/// <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); } }
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); } }
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)); } }
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; } } }
public void AddAliment(Aliment aliment) { if (aliment == null) { throw new ArgumentNullException(nameof(aliment)); } _foodContext.Add(aliment); }
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); }
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); }
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); } }
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); }
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)); }
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); } }
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); } }
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)); }
/// <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; }