示例#1
0
 public void Delete(Titre titre)
 {
     Factory.Commentaires.RemoveAll(c => c.IdTitre == titre.IdTitre);                //pourrait créer des problèmes si un autre titre recuperait l'id du titre supprimé
     Factory.Artistes.ForEach(a => a.Titres.Remove(titre));
     Factory.Styles.ForEach(s => s.TitresStyles.RemoveAll(ts => ts.Titre == titre)); //enlève tout les liens entre les styles et le titre
     Factory.Titres.Remove(titre);
 }
示例#2
0
 public void Add(Titre titre)
 {
     titre.TitresStyles.ForEach(ts => ts.Titre = titre);//ajoute le titre à ses styles
     titre.IdTitre      = Factory.Titres.Max(t => t.IdTitre) + 1;
     titre.DateCreation = DateTime.Now;
     Factory.Titres.Add(titre);
 }
示例#3
0
        /// <summary>
        /// Permet d'initliaze la liste d'artistes et de styles avec id du titre en paramètre si edit et null si create
        /// </summary>
        private ManageTitresViewModel InitializeList(int?id)
        {
            ManageTitresViewModel titresMTVM = new ManageTitresViewModel();

            titresMTVM.Titre = new TitresViewModel {
                IdTitre = (id.HasValue) ? (int)id : 0, DateSortie = DateTime.Now, Styles = new List <StylesViewModel>()
            };
            if (id.HasValue)
            { //Si la valeur id n'est pas égal à null, la propriété Titre est affecté.
                Titre titre = _titreRepository.Find((int)id);
                titresMTVM.Titre.Styles = titre.LienStyle.Select(x => new StylesViewModel {
                    IdStyle = x.IdStyle
                }).ToList();
                titresMTVM.Titre.Album       = titre.Album;
                titresMTVM.Titre.IdArtiste   = titre.IdArtiste;
                titresMTVM.Titre.NomTitre    = titre.Libelle;
                titresMTVM.Titre.NbLectures  = titre.NbLectures;
                titresMTVM.Titre.NbLikes     = titre.NbLikes;
                titresMTVM.Titre.NomArtiste  = titre.Artiste.Nom;
                titresMTVM.Titre.Duree       = titre.Duree;
                titresMTVM.Titre.DateSortie  = titre.DateSortie;
                titresMTVM.Titre.Chronique   = titre.Chronique;
                titresMTVM.Titre.UrlEcoute   = titre.UrlEcoute;
                titresMTVM.Titre.UrlJaquette = titre.UrlJaquette;
            }
            InitializeArtistesList(titresMTVM);
            InitializeStyleList(titresMTVM);
            return(titresMTVM);
        }
示例#4
0
 private bool ActiverValider()
 {
     return(Photo != null &&
            Titre != null && !Titre.Equals("") &&
            Description != null && !Description.Equals("") &&
            ((Tag != null && !Tag.Equals("")) || (ListeTags != null && ListeTags.Count > 0)));
 }
        /// <summary>
        /// Met à jour un titre
        /// </summary>
        /// <param name="titre">Titre mis à jour</param>
        void ITitreRepository.Update(Titre titre)
        {
            Titre   titreContext   = _dbContext.Titres.Where(t => t.IdTitre == titre.IdTitre).Include(t => t.Artiste).Include(t => t.Commentaires).Include(t => t.LienStyle).ThenInclude(l => l.Style).FirstOrDefault();
            Artiste artisteContext = _dbContext.Artistes.FirstOrDefault(x => x.IdArtiste == titre.IdArtiste);

            titreContext.IdTitre     = titre.IdTitre;
            titreContext.Libelle     = titre.Libelle;
            titreContext.IdArtiste   = artisteContext.IdArtiste;
            titreContext.Artiste     = artisteContext;
            titreContext.Chronique   = titre.Chronique;
            titreContext.DateSortie  = titre.DateSortie;
            titreContext.Duree       = titre.Duree;
            titreContext.UrlEcoute   = titre.UrlEcoute;
            titreContext.UrlJaquette = titre.UrlJaquette;
            titreContext.LienStyle.ToList().ForEach(s =>
            {
                if (!titre.LienStyle.Any(x => x.IdStyle == s.IdStyle))
                {
                    titreContext.LienStyle.Remove(s);
                }
            });

            foreach (var newStyle in titre.LienStyle)
            {
                if (!titreContext.LienStyle.Any(x => x.IdStyle == newStyle.IdStyle))
                {
                    Style style = _dbContext.Styles.FirstOrDefault(styleContext => styleContext.IdStyle == newStyle.IdStyle);
                    titreContext.LienStyle.Add(new LienStyle {
                        IdStyle = style.IdStyle, Style = style, IdTitre = titre.IdTitre, Titre = titreContext
                    });;
                }
            }

            _dbContext.SaveChanges();
        }
        public IActionResult ActionLike(Titre titre)
        {
            ITitreService titreService = new TitreService();

            titreService.IncrementeNbLikes(titre.IdTitre, Startup.ititreRepository);
            return(RedirectToAction("Index", new { id = titre.IdTitre }));
        }
示例#7
0
        /// <summary>
        /// Méthode pour ajouter un nouveau titre.
        /// </summary>
        /// <param name="titre">Le titre à ajouter.</param>
        public void Add(Titre titre)
        {
            var idStyles = titre.TitresStyles.Select(s => s.IdStyle);

            titre.TitresStyles = null;
            this.context.Titres.Add(titre);
            titre.TitresStyles = new List <TitreStyle>();
            try
            {
                this.context.SaveChanges();
                foreach (int idSyle in idStyles)
                {
                    titre.TitresStyles.Add(new TitreStyle()
                    {
                        IdStyle = idSyle,
                        IdTitre = titre.IdTitre
                    });
                }

                try
                {
                    this.context.SaveChanges();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            } catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
 /// <summary>
 /// Ajoute le titre passé en paramètre à la base de données.
 /// </summary>
 /// <param name="titre"></param>
 public void Add(Titre titre)
 {
     titre.Artiste = _context.Artistes.FirstOrDefault(x => x.IdArtiste == titre.IdArtiste);
     titre.TitresStyles.ForEach(ts => { ts.Style = _context.Styles.FirstOrDefault(s => s.IdStyle == ts.IdStyle); });//Evite erreur de recréation d'objet a lier au titre à inserer
     _context.Titres.Add(titre);
     _context.SaveChanges();
 }
示例#9
0
        public IActionResult Commentaire(TitreViewModel titreViewModel)
        {
            Titre          titre             = _titreRepository.Find(titreViewModel.IdTitre);
            TitreViewModel newTitreViewModel = new TitreViewModel
            {
                Titre   = titre,
                IdTitre = titre.IdTitre
            };

            if (ModelState.IsValid)
            {
                Commentaire commentaire = new Commentaire
                {
                    Auteur       = titreViewModel.NewCommentaire.Auteur,
                    Contenu      = titreViewModel.NewCommentaire.Contenu,
                    DateCreation = DateTime.Now,
                    IdTitre      = newTitreViewModel.IdTitre,
                    Titre        = _titreRepository.Find(newTitreViewModel.IdTitre)
                };
                _commentaireRepository.Add(commentaire);
                return(RedirectToAction(nameof(TitreController.Index), "Titre", new { id = titreViewModel.IdTitre }));
            }
            else
            {
                return(RedirectToAction(nameof(TitreController.Index), "Titre", new { id = titreViewModel.IdTitre }));
            }
        }
        /// <summary>
        /// Met à jour un titre de la base de données.
        /// </summary>
        /// <param name="titre"></param>
        public void Update(Titre titre)
        {
            titre.Artiste = _context.Artistes.FirstOrDefault(x => x.IdArtiste == titre.IdArtiste);
            titre.TitresStyles.ForEach(ts => { ts.Style = _context.Styles.FirstOrDefault(s => s.IdStyle == ts.IdStyle); });//Evite erreur de recréation d'objet a lier au titre à inserer
            var updatetitre = _context.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre);

            //L'update ne fonctionne pas en passant directement l'objet : il y a une erreur de tracking sur l'objet modifié donc on modifie directement l'objet du repository puis on sauvegarde
            //l'objet dans la base
            updatetitre.Artiste      = titre.Artiste;
            updatetitre.Chronique    = titre.Chronique;
            updatetitre.Commentaires = titre.Commentaires;
            updatetitre.DateCreation = titre.DateCreation;
            updatetitre.DateSortie   = titre.DateSortie;
            updatetitre.Duree        = titre.Duree;
            updatetitre.IdArtiste    = titre.IdArtiste;
            updatetitre.Libelle      = titre.Libelle;
            updatetitre.NbLectures   = titre.NbLectures;
            updatetitre.NbLikes      = titre.NbLikes;
            updatetitre.TitresStyles = titre.TitresStyles;
            updatetitre.UrlEcoute    = titre.UrlEcoute;
            updatetitre.UrlJaquette  = titre.UrlJaquette;


            _context.Titres.Update(updatetitre);
            _context.SaveChanges();
        }
示例#11
0
 /// <summary>
 /// Return the index page to be displayed
 /// </summary>
 ///
 /// <returns>Return the index page</returns>
 ///
 public IActionResult Index(int id)
 {
     try
     {
         Titre          t     = _titreRepository.Find(id);
         TitreViewModel titre = new TitreViewModel()
         {
             Libelle      = t.Libelle,
             Chronique    = t.Chronique,
             Artiste      = t.Artiste,
             Commentaires = t.Commentaires,
             TitresStyles = t.TitresStyles,
             UrlJaquette  = t.UrlJaquette,
             Album        = t.Album,
             UrlEcoute    = t.UrlEcoute,
             DateCreation = t.DateSortie,
             NbLikes      = t.NbLikes,
             IdTitre      = id
         };
         this.ViewData.Model = titre;
         _titreRepository.IncrementNbLectures(t); //PAGE COUNTER
         return(View());
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         return(this.NotFound());
     }
 }
示例#12
0
 public override int GetHashCode()
 {
     unchecked
     {
         int hashCode = (Titre != null ? Titre.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Date.GetHashCode();
         hashCode = (hashCode * 397) ^ (Description != null ? Description.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Lien != null ? Lien.GetHashCode() : 0);
         return(hashCode);
     }
 }
示例#13
0
 public IActionResult AddTitre([FromBody] Titre titre)
 {
     try
     {
         Startup.ititreRepository.Add(titre);
         return(Ok(JsonConvert.SerializeObject(titre)));
     }
     catch (System.Exception)
     {
         throw;
     }
 }
示例#14
0
 public IActionResult PostTitre(Titre titre)
 {
     try
     {
         _titreRepository.Add(titre);
         return(CreatedAtAction("GetTitre", new { id = titre.IdTitre }, titre));
     }
     catch (Exception e)
     {
         throw; return(StatusCode(500, e));
     }
 }
示例#15
0
        public IActionResult Like(int id)
        {
            Titre          titre          = _titreRepository.Find(id);
            TitreViewModel titreViewModel = new TitreViewModel
            {
                Titre   = titre,
                IdTitre = id
            };

            _titreBusiness.IncrementLike(titre);
            return(View(nameof(TitreController.Index), titreViewModel));
        }
示例#16
0
 public IActionResult DeleteTitre(Titre titre)
 {
     try
     {
         _titreRepository.Delete(titre);
         return(RedirectToAction(nameof(Index)));
     }
     catch
     {
         return(View());
     }
 }
示例#17
0
        /// <summary>
        /// Supprime un titre du set de données
        /// </summary>
        /// <param name="titre">Titre à supprimer</param>
        void ITitreRepository.Delete(Titre titre)
        {
            // Si le titre existe dans le set, suppression
            if (StaticFactory.Titres.Contains(titre))
            {
                StaticFactory.LienStyles.Where(x => x.IdTitre == titre.IdTitre).ToList().ForEach(ls => StaticFactory.LienStyles.Remove(ls));

                StaticFactory.Commentaires.Where(x => x.IdTitre == titre.IdTitre).ToList().ForEach(x => StaticFactory.Commentaires.Remove(x));
                StaticFactory.Titres.Remove(titre);
                StaticFactory.UpdateBinavigabilite();
            }
        }
示例#18
0
        public IActionResult Index(int id)
        {
            Titre          titre          = _titreRepository.Find(id);
            TitreViewModel titreViewModel = new TitreViewModel
            {
                Titre   = titre,
                IdTitre = id
            };

            _titreBusiness.IncrementVue(titre);
            return(View(titreViewModel));
        }
示例#19
0
        /// <summary>
        /// Méthode pour modifier un titre.
        /// </summary>
        /// <param name="titre">Le titre à modifier.</param>
        public void Update(Titre titre)
        {
            var rank = 0;

            foreach (var item in FactoryTitre.Titres)
            {
                if (item.IdTitre == titre.IdTitre)
                {
                    if (titre.Libelle == null)
                    {
                        titre.Libelle = item.Libelle;
                    }

                    if (titre.Chronique == null)
                    {
                        titre.Chronique = item.Chronique;
                    }

                    if (titre.Duree == 0)
                    {
                        titre.Duree = item.Duree;
                    }

                    if (titre.Artiste == null)
                    {
                        titre.Artiste = item.Artiste;
                    }

                    if (titre.DateSortie == null)
                    {
                        titre.DateSortie = item.DateSortie;
                    }

                    if (titre.UrlJaquette == null)
                    {
                        titre.UrlJaquette = item.UrlJaquette;
                    }

                    if (titre.UrlEcoute == null)
                    {
                        titre.UrlEcoute = item.UrlEcoute;
                    }

                    titre.TitresStyles        = item.TitresStyles;
                    titre.Commentaires        = item.Commentaires;
                    FactoryTitre.Titres[rank] = titre;
                    break;
                }

                rank++;
            }
        }
示例#20
0
 public IActionResult Liker(int idTitre)
 {
     try
     {
         Titre titre = _titreRepository.Find(idTitre);
         _titreBussiness.LikeTitre(titre);
         return(Redirect("/titre/" + idTitre));
     }
     catch (Exception e)
     {
         return(this.NotFound());
     }
 }
示例#21
0
 public IActionResult PostTitre([FromBody] Titre titre)
 {
     try
     {
         _titreRepository.Add(titre);
         return(Ok(JsonConvert.DeserializeObject <Titre>(JsonConvert.SerializeObject(_titreRepository.Find(titre.IdTitre), Formatting.Indented, new JsonSerializerSettings {
             ReferenceLoopHandling = ReferenceLoopHandling.Ignore
         }))));
     }
     catch (Exception e)
     {
         return(StatusCode(500, e));
     }
 }
示例#22
0
        /// <summary>
        /// Ajoute un Titre dans le set de données
        /// </summary>
        /// <param name="titre">Titre à ajouter</param>
        void ITitreRepository.Add(Titre titre)
        {
            titre.IdTitre = StaticFactory.Titres.Max(x => x.IdTitre) + 1;

            // Ajout du titre dans le set de données
            StaticFactory.Titres.Add(titre);

            titre.LienStyle.ToList().ForEach(ls =>
            {
                ls.IdTitre = titre.IdTitre;
                StaticFactory.LienStyles.Add(ls);
            });

            StaticFactory.UpdateBinavigabilite();
        }
示例#23
0
 public void Update(Titre titre)
 {
     //mise a jour des propriétées du titre selectioné
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).Artiste      = titre.Artiste;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).IdArtiste    = titre.Artiste.IdArtiste;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).Libelle      = titre.Libelle;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).DateSortie   = titre.DateSortie;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).Chronique    = titre.Chronique;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).Duree        = titre.Duree;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).UrlJaquette  = titre.UrlJaquette;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).UrlEcoute    = titre.UrlEcoute;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).TitresStyles = titre.TitresStyles;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).NbLectures   = titre.NbLectures;
     Factory.Titres.FirstOrDefault(t => t.IdTitre == titre.IdTitre).NbLikes      = titre.NbLikes;
 }
示例#24
0
 public IActionResult EditTitre(int id, Titre titre)
 {
     if (id != titre.IdTitre)
     {
         return(BadRequest());
     }
     try
     {
         _titreRepository.Update(titre);
         return(Ok());
     }
     catch (Exception e)
     {
         return(StatusCode(500, e));
     }
 }
示例#25
0
        public IActionResult Delete(int id)
        {
            try
            {
                Titre           titre = _titreRepository.Find(id);
                TitresViewModel vm    = new TitresViewModel
                {
                    IdTitre  = titre.IdTitre,
                    NomTitre = titre.Libelle
                };

                return(this.View(nameof(TitresController.Delete), vm));
            }
            catch (NullReferenceException e)
            {
                return(RedirectToAction(nameof(TitresController.Index), "Titres", new { area = "Administration" }));
            }
        }
示例#26
0
        public IActionResult ActionAdd(Titre titre, List <Style> styles)
        {
            var stylesToAdd = styles.Where(s => s.CheckboxAnswer).ToList();//retire tous les styles ou la checkbox n'est pas coché

            stylesToAdd.ForEach(s => titre.TitresStyles.Add(new LienTitreStyle {
                Style = s, IdStyle = s.IdStyle, Titre = titre, IdTitre = titre.IdTitre
            }));
            titre.DateCreation = DateTime.Now;
            titre.Artiste      = Startup.iartisteRepository.Find(titre.IdArtiste);
            if (titre.IdTitre == 0)
            {
                Startup.ititreRepository.Add(titre);
                return(RedirectToAction("Index"));
            }
            else
            {
                return(ActionEdit(titre));
            }
        }
示例#27
0
 /// <summary>
 /// Met à jour un titre
 /// </summary>
 /// <param name="titre">Titre mis à jour</param>
 void ITitreRepository.Update(Titre titre)
 {
     // Si l'artiste existe bien
     if (!StaticFactory.Titres.FirstOrDefault(a => a.IdTitre == titre.IdTitre).Equals(default(Titre)))
     {
         Titre titreStatic = StaticFactory.Titres.FirstOrDefault(a => a.IdTitre == titre.IdTitre);
         titreStatic.IdArtiste   = titre.IdArtiste;
         titreStatic.Artiste     = titre.Artiste;
         titreStatic.Libelle     = titre.Libelle;
         titreStatic.Album       = titre.Album;
         titreStatic.LienStyle   = titre.LienStyle;
         titreStatic.UrlEcoute   = titre.UrlEcoute;
         titreStatic.UrlJaquette = titre.UrlJaquette;
         titreStatic.Chronique   = titre.Chronique;
         titreStatic.DateSortie  = titre.DateSortie;
         titreStatic.Duree       = titre.Duree;
         StaticFactory.LienStyles.RemoveAll(x => x.IdTitre == titre.IdTitre);
         StaticFactory.LienStyles.AddRange(titre.LienStyle);
     }
 }
示例#28
0
        /// <summary>
        /// Ajoute un Titre dans le set de données
        /// </summary>
        /// <param name="titre">Titre à ajouter</param>
        void ITitreRepository.Add(Titre titre)
        {
            Artiste artisteContext = _dbContext.Artistes.FirstOrDefault(x => x.IdArtiste == titre.IdArtiste);

            titre.IdArtiste = artisteContext.IdArtiste;
            titre.Artiste   = artisteContext;

            List <LienStyle> liensStyle = new List <LienStyle>();

            foreach (var newStyle in titre.LienStyle)
            {
                Style style = _dbContext.Styles.FirstOrDefault(styleContext => styleContext.IdStyle == newStyle.IdStyle);
                liensStyle.Add(new LienStyle {
                    IdStyle = style.IdStyle, Style = style, IdTitre = titre.IdTitre, Titre = titre
                });;
            }
            titre.LienStyle.Clear();
            titre.LienStyle = liensStyle;

            _dbContext.Titres.Add(titre);
            _dbContext.SaveChanges();
        }
示例#29
0
        public IActionResult Edit(TitleViewModel titreVM)
        {
            try
            {
                Titre titre = _titreRepository.Find(titreVM.Titre.IdTitre);
                titre.Libelle      = titreVM.Titre.Libelle;
                titre.UrlEcoute    = titreVM.Titre.UrlEcoute;
                titre.UrlJaquette  = titreVM.Titre.UrlJaquette;
                titre.Chronique    = titreVM.Titre.Chronique;
                titre.Album        = titreVM.Titre.Album;
                titre.DateSortie   = titreVM.Titre.DateSortie;
                titre.IdArtiste    = titreVM.Titre.IdArtiste;
                titre.Duree        = titreVM.Titre.Duree;
                titre.TitresStyles = new List <TitreStyle>();
                if (titreVM.StylesChecked != null)
                {
                    foreach (int idStyle in titreVM.StylesChecked)
                    {
                        Style style = _styleRepository.Find(idStyle);
                        if (style != null)
                        {
                            TitreStyle titreStyle = new TitreStyle()
                            {
                                IdStyle = idStyle,
                                IdTitre = titreVM.Titre.IdTitre
                            };
                            titre.TitresStyles.Add(titreStyle);
                        }
                    }
                }

                _titreRepository.Update(titre);
                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception e)
            {
                return(RedirectToAction(nameof(Index)));
            }
        }
示例#30
0
        public IActionResult ManagePOST(ManageTitresViewModel manageTitresViewModel)
        {
            if (ModelState.IsValid)
            {
                //Get selected and affect them in new list of style
                List <Style> styles = new List <Style>();
                Titre        titre  = new Titre((manageTitresViewModel.Titre.IdTitre != 0) ? manageTitresViewModel.Titre.IdTitre : 0, manageTitresViewModel.Titre.IdArtiste, _artisteRepository.Find(manageTitresViewModel.Titre.IdArtiste), manageTitresViewModel.Titre.Chronique, manageTitresViewModel.Titre.Album, manageTitresViewModel.Titre.DateSortie, manageTitresViewModel.Titre.Duree, manageTitresViewModel.Titre.NomTitre, manageTitresViewModel.Titre.NbLectures, manageTitresViewModel.Titre.NbLikes, manageTitresViewModel.Titre.UrlEcoute, manageTitresViewModel.Titre.UrlJaquette);
                var          liens  = Request.Form["style.IdStyle"].Select(id => new LienStyle {
                    IdTitre = (manageTitresViewModel.Titre.IdTitre != 0) ? manageTitresViewModel.Titre.IdTitre : 0, Titre = titre, IdStyle = Convert.ToInt32(id), Style = _styleRepository.Find(Convert.ToInt32(id))
                }).ToList();
                titre.LienStyle = liens;

                if (manageTitresViewModel.Titre.IdTitre != 0)
                {
                    _titreRepository.Update(titre);
                }
                else
                {
                    _titreRepository.Add(titre);
                }
                return(RedirectToAction(nameof(TitresController.Index), "Titres", new { area = "Administration" }));
            }
            else
            {
                InitializeArtistesList(manageTitresViewModel);

                //Get already selected and affect them in new list of styleviewmodel to display them again
                manageTitresViewModel.Titre.Styles = Request.Form["style.IdStyle"].ToList().Select(vm =>
                {
                    Style style = _styleRepository.Find(Convert.ToInt32(vm));
                    return(new StylesViewModel {
                        IdStyle = style.IdStyle, Libelle = style.Libelle, Checked = true
                    });
                }).ToList();

                InitializeStyleList(manageTitresViewModel);
                return(this.View(nameof(TitresController.Manage), manageTitresViewModel));
            }
        }