Exemplo n.º 1
0
        public ActionResult Create([Bind(Include = "IsAboutId,TheContent")] SecretCreateVM secret,
                                   List <short> tags)
        {
            if (ModelState.IsValid)
            {
                #region make secret
                Secret daSecret = new Secret
                {
                    IsAboutId  = secret.IsAboutId,
                    TheContent = secret.TheContent
                };
                db.Secrets.Add(daSecret);
                db.SaveChanges();
                #endregion

                #region Add the tags
                if (tags != null)
                {
                    short id = db.Secrets.Max(s => s.SecretId);
                    foreach (short t in tags)
                    {
                        SecretSecretTag tag = new SecretSecretTag {
                            SecretId = id, SecretTagId = t
                        };
                        db.SecretSecretTags.Add(tag);
                    }
                }
                db.SaveChanges();
                #endregion


                return(RedirectToAction("Index"));
            }

            ViewBag.IsAboutId = new SelectList(db.Infos, "InfoId", "Name");
            ViewBag.Tags      = new MultiSelectList(db.SecretTags, "SecretTagId", "Name", tags);
            return(View(secret));
        }
Exemplo n.º 2
0
        public ActionResult Edit([Bind(Include = "SecretId,IsAboutId,TheContent")] SecretEditVM secret,
                                 List <short> tags)
        {
            if (ModelState.IsValid)
            {
                #region Update Tags
                short        secretId      = secret.SecretId;
                List <short> currentTagIds = db.SecretSecretTags.Where(x => x.SecretId == secretId).Select(x => x.SecretTagId).ToList();
                if (tags != null)
                {
                    foreach (short tag in tags)
                    {
                        if (true)
                        {
                            //if this is an already existing tag
                            if (currentTagIds.Contains(tag))
                            {
                                currentTagIds.Remove(tag);
                            }
                            //if this is a newly added tag
                            else
                            {
                                SecretSecretTag newTag = new SecretSecretTag {
                                    SecretId = secretId, SecretTagId = tag
                                };
                                db.SecretSecretTags.Add(newTag);
                            }
                        }
                    }
                }

                if (currentTagIds.Count != 0)
                {
                    foreach (short id in currentTagIds)
                    {
                        SecretSecretTag gone = db.SecretSecretTags.Where(x => x.SecretId == secretId & x.SecretTagId == id).FirstOrDefault();
                        db.SecretSecretTags.Remove(gone);
                    }
                }
                #endregion

                #region Update Secret
                Secret daSecret = new Secret
                {
                    SecretId   = secret.SecretId,
                    IsAboutId  = secret.IsAboutId,
                    TheContent = secret.TheContent
                };
                db.Entry(secret).State = EntityState.Modified;
                db.SaveChanges();
                #endregion

                return(RedirectToAction("Index"));
            }
            ViewBag.IsAboutId = new SelectList(db.Infos, "InfoId", "Name", secret.IsAboutId);
            ViewBag.Tags      = db.SecretTags.ToList();
            if (tags != null)
            {
                ViewBag.Selected = tags;
            }
            else
            {
                ViewBag.Selected = new List <short>();
            }
            return(View(secret));
        }