Exemple #1
0
        public void AddContenu(SeanceContenu contenu)
        {
            db.SeanceContenus.Add(contenu);

            contenu.Contenu = db.Contenus.Find(contenu.ContenuTitre);

            db.SaveChanges();
        }
        public void DeleteContentFromSeance(int seanceID, string contenuTitre)
        {
            Seance seance = repository.GetSeance(seanceID);

            List <ContenuViewModel> contents =
                mapper.Map <IEnumerable <SeanceContenu>, IEnumerable <ContenuViewModel> >(seance.SeanceContenus)
                .Concat(mapper.Map <IEnumerable <SeancePromo>, IEnumerable <ContenuViewModel> >(seance.SeancePromoes))
                .ToList();

            contents.Sort();

            int  index  = 0;
            bool passed = false;

            foreach (var content in contents)
            {
                if (content.ContenuTitre == contenuTitre)
                {
                    passed = true;

                    if (content.Typage == ContenuTypeLibrary.CONT_TYPE_PROMO)
                    {
                        seance.SeancePromoes.Remove(seance.SeancePromoes.Where(sp => sp.PromoTitre == contenuTitre).FirstOrDefault());
                    }
                    else
                    {
                        SeanceContenu c = seance.SeanceContenus.Where(sc => sc.ContenuTitre == contenuTitre).FirstOrDefault();

                        if (c.estPrincipal.GetValueOrDefault())
                        {
                            SeanceContenu newPrincipal = seance.SeanceContenus.Where(sc => sc.Contenu.typage == ContenuTypeLibrary.CONT_TYPE_STANDARD).LastOrDefault();

                            if (newPrincipal != null)
                            {
                                newPrincipal.estPrincipal = true;
                            }
                        }

                        seance.SeanceContenus.Remove(c);
                    }
                }

                if (passed)
                {
                    content.indexOrdre = content.indexOrdre - 1;
                }

                index++;
            }
        }
        public void AddContentToSeance(int seanceID, string contenuTitre)
        {
            string type = repository.GetContentType(contenuTitre);

            if (type == "notfound")
            {
                throw new NotFoundException($"Le contenu avec le titre {contenuTitre} n'existe pas dans la base de données.");
            }

            Seance seance = repository.GetSeance(seanceID);

            List <ContenuViewModel> contents =
                mapper.Map <IEnumerable <SeanceContenu>, IEnumerable <ContenuViewModel> >(seance.SeanceContenus)
                .Concat(mapper.Map <IEnumerable <SeancePromo>, IEnumerable <ContenuViewModel> >(seance.SeancePromoes))
                .ToList();

            if (contents.Any(c => c.ContenuTitre == contenuTitre))
            {
                throw new DuplicateContentException(contenuTitre);
            }

            if (type != ContenuTypeLibrary.CONT_TYPE_PROMO)
            {
                SeanceContenu seanceContenu = new SeanceContenu();
                seanceContenu.ContenuTitre = contenuTitre;
                seanceContenu.indexOrdre   = contents.Count == 0 ? 0 : contents.Max(c => c.indexOrdre) + 1;
                seanceContenu.SeanceID     = seance.SeanceID;

                if (type == ContenuTypeLibrary.CONT_TYPE_STANDARD && seance.SeanceContenus.Where(sc => sc.SeanceID == seanceContenu.SeanceID && sc.Contenu.typage == ContenuTypeLibrary.CONT_TYPE_STANDARD).Count() == 0)
                {
                    seanceContenu.estPrincipal = true;
                }

                repository.AddContenu(seanceContenu);
            }
            else
            {
                SeancePromo seancePromo = new SeancePromo();
                seancePromo.PromoTitre = contenuTitre;
                seancePromo.indexOrdre = contents.Count == 0 ? 0 : contents.Max(c => c.indexOrdre) + 1;
                seancePromo.SeanceID   = seance.SeanceID;

                repository.AddPromo(seancePromo);
            }
        }