public PartialViewResult _SaveIP(int Id)
        {
            if (Id != -1)
            {
            }

            FillViewData();

            ViewData["features"] = _featureRepository.LoadSortAndSelect(x => x.ForIP,
                                                                        x => new SelectListItem_Custom {
                Id = x.Id, Description = x.Name
            },
                                                                        Sorter <Feature> .Get(x => x.Id, true)).ToSelectList(x => x.Id);
            ViewData["categories"] = _categoryRepository.LoadAndSelect(x => x.Active,
                                                                       x => new SelectListItem_Custom {
                Id = x.Id, Description = x.Name
            }, false).ToSelectList(x => x.Description);

            var model = new SaveIPOptionModel()
            {
                _guid = Guid.NewGuid(),

                _adult  = false,
                _di     = false,
                _public = false,
                _filter = new VoicerFilterModel()
                {
                    _frm_id = "voicerfilter_filter"
                },
                _event = new VoicerFilterModel()
                {
                    _frm_id = "voicerfilter_event"
                },
                _connected = _connectionRepository.GetAllVoicerModelsByFilter(x => x.User1.Active && x.User1.ActiveIPFeeds && x.UserId == _userID && x.Type == VoicerConnectionType.CONNECTED.ToString(),
                                                                              Sorter <UsersConnection> .Get(x => x.DateConnected, false)),
                _img = "/Images/common/no-image.jpg",
            };

            model._selected = new List <bool>();
            foreach (var item in model._connected)
            {
                model._selected.Add(true);
            }

            model._filter._frm_type = 4;
            model._event._frm_type  = 5;
            return(PartialView(model));
        }
        public ActionResult SaveIP(SaveIPOptionModel model)
        {
            // validation check
            if (String.IsNullOrEmpty(model._name))
            {
                return(Json("Name is not valid", JsonRequestBehavior.AllowGet));
            }
            if (model._feature_id == null || model._feature_id <= 0)
            {
                return(Json("Select the feature please", JsonRequestBehavior.AllowGet));
            }
            if ((model._category_id == null || model._category_id <= 0) && (model._feature_id != EVENT_ID && model._feature_id != URBANDICTIONARY_ID))
            {
                return(Json("Select the category please", JsonRequestBehavior.AllowGet));
            }
            if (model._cover_id <= 0)
            {
                return(Json("Select the cover image please", JsonRequestBehavior.AllowGet));
            }
            if (model._feature_id == Constants.URBANDICTIONARY_ID && (model._tags == "" || model._tags == null))
            {
                return(Json("Please input the valid tags", JsonRequestBehavior.AllowGet));
            }
            var user = _userRepository.FirstOrDefault(x => x.Id == _userID);

            int UserIpId = _crudRepository.Save(new UsersIP()
            {
                AdultOnly        = model._adult,
                BodyHtml         = model._body.Replace("onclick=\"GoToLink(0", "onclick=\"GoToLink(1"),
                BodyStyle        = model._style,
                CategoryId       = model._category_id,
                FeatureId        = (int)model._feature_id,
                DateAdd          = DateTime.Now,
                UserId           = _userID,
                Name             = model._name,
                Public           = model._public,
                route            = model._name.ToRoute(),
                UserAttachmentId = model._cover_id,
                Views            = 0,
                Comments         = 0,
                Dislikes         = 0,
                EPPoints         = 0,
                Likes            = 0,
                Surfs            = 0
            });

            if (model._di)
            {
                user.CurrentUserIPDI = UserIpId;
                _userRepository.Save(user);
            }
            // save Tags
            if (model._tags != null && model._tags.Length > 0)
            {
                List <string> lst = model._tags.Split(',').ToList();
                foreach (var item in lst)
                {
                    int?iptagid = _ipTagRepository.FirstOrDefault <int?>(x => x.Tag == item, x => x.Id, null);
                    if (iptagid == null || iptagid == 0)
                    {
                        iptagid = _ipTagRepository.Save(new IPTag()
                        {
                            Tag = item
                        });
                    }

                    _userIPTagRepository.Save(new UsersIPTag()
                    {
                        IPTagId  = iptagid.Value,
                        UserIPId = UserIpId
                    });
                }
            }

            // event
            if (model._feature_id == EVENT_ID)
            {
                _userIPFilterRepository.Save(model._event.ToUserIIPFilterEntity(UserIpId));
            }

            // spread to voicer
            // spread to connected
            var connected = _connectionRepository.GetAllVoicerModelsByFilter(x => x.User1.Active && x.User1.ActiveIPFeeds && x.UserId == _userID && x.Type == VoicerConnectionType.CONNECTED.ToString(),
                                                                             Sorter <UsersConnection> .Get(x => x.DateConnected, false));


            var userIds = new List <int>();



            if (model._filter != null && !model._filter.isEmpty())
            {
                var filter = model._filter.GetFilter(_connectionRepository.GetAllBlockedUsers(_userID));
                filter = filter.And(x => x.ActiveIPFeeds);
                var voicers = _userRepository.LoadAndSelect(filter, x => x.Id, false);
                foreach (var item in voicers)
                {
                    if (!userIds.Contains(item))
                    {
                        userIds.Add(item);
                    }
                }
            }

            var index = 0;

            foreach (var item in connected)
            {
                if (model._selected[index] && !userIds.Contains(item.Id))
                {
                    userIds.Add(item.Id);
                }
                index++;
            }
            SpreadToUsers(UserIpId, userIds);

            // set activity
            _userActivityRepository.SetActivity("ACTIVITY", "Spread", _userID, UserIpId);

            return(Json("Success", JsonRequestBehavior.AllowGet));
        }