public virtual ActionResult SaveEmail(CrmMailEditModel model)
        {
            CrmEmail crmemail = crmService.Email(model.Email);
            crmemail.Name = model.Name;
            crmemail.Phone = model.Phone;

            // now process tags
            List<string> tagsInModel = model.Tags.Split(',').Select(t => t.Trim()).ToList();
            List<string> tagsInDb = crmemail.Tags.Select(t => (t.Tagspace ?? "") + "." + (t.Tag ?? "")).ToList();

            // add tags not in db
            foreach (var t in tagsInModel)
            {
                string tt, ts;
                RegexUtilities.SplitFullTag(t, out ts, out tt);

                crmemail.SetTag(ts, tt);
            }

            // clear tags not in model
            foreach (var t in tagsInDb)
            {
                if (!tagsInModel.Contains(t))
                {
                    string tt, ts;
                    RegexUtilities.SplitFullTag(t, out ts, out tt);

                    crmService.ClearTagForEmail(crmemail, ts, tt);
                }
            }

            crmService.SaveChanges();

            return Redirect("/Mailing/EditEmail?email=" + model.Email);
        }
 public virtual ActionResult EditEmail(string email)
 {
     if (email.Empty())
     {
         return View("Email");
     }
     CrmEmail crmemail = crmService.Email(email);
     CrmMailEditModel model = new CrmMailEditModel()
     {
         Name = crmemail.Name,
         Email = crmemail.Email,
         Phone = crmemail.Phone,
         Tags = string.Join(",", crmemail.Tags.Select(t => (t.Tagspace ?? "") + "." + (t.Tag ?? "")).ToList())
     };
     return View("EditEmail",model);
 }