Ejemplo n.º 1
0
        public ActionResult Add(Lead lead, FormCollection form)
        {
            bool isNew = false;

            //write activity to the log
            if (lead.ID == 0)
            {
                isNew       = true;
                lead.Status = LeadType.New;
            }

            if (!string.IsNullOrEmpty(form["Companies"]))
            {
                lead.CompanyID = System.Convert.ToInt32(form["Companies"]);
                // make sure we clear the company name reference if association already exists
                lead.CompanyName = string.Empty;
            }

            if (!string.IsNullOrEmpty(form["PriorityType"]))
            {
                lead.Priority = (PriorityType)Enum.Parse(typeof(CrumbCRM.PriorityType), form["PriorityType"], true);
            }

            if (!string.IsNullOrEmpty(form["Campaigns"]))
            {
                lead.CampaignID = System.Convert.ToInt32(form["Campaigns"]);
            }
            else if (!string.IsNullOrEmpty(form["CampaignName"]))
            {
                var campaign = new Campaign()
                {
                    CreatedByID = _membershipService.GetCurrentMember().UserId,
                    CreatedDate = DateTime.Now,
                    Name        = form["CampaignName"],
                    Description = ""
                };

                lead.CampaignID = _campaignService.Save(campaign);
            }

            lead.OwnerID = _membershipService.GetCurrentMember().UserId;

            _leadService.Save(lead);

            if (!string.IsNullOrEmpty(form["TagSelector"]))
            {
                var      current = _tagService.GetByArea(AreaType.Lead);
                string[] tags    = form["TagSelector"].Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                tags.ToList().ForEach(t => {
                    var tag = _tagService.GetByName(t);
                    if (tag == null)
                    {
                        tag = new Tag()
                        {
                            Name        = t.ToLower(),
                            CreatedDate = DateTime.Now,
                            CreatedByID = _membershipService.GetCurrentMember().UserId
                        };
                        _tagService.Save(tag);
                    }
                    if (!current.Contains(tag))
                    {
                        _leadService.AssignTag(lead, tag);
                    }
                });
            }

            if (isNew)
            {
                _activityService.Create("was added", AreaType.Lead, User.Identity.Name, lead.ID);
            }

            TempData.Add("StatusMessage", "Lead added");

            return(RedirectToAction("Index"));
        }