Ejemplo n.º 1
0
        public async Task <IOperationDetails> CreateAsynk(TwitViewModel twit)
        {
            Twit targetTwit = AppMapper.Mapper.Map <Twit>(twit);

            targetTwit.Created = DateTime.Now;
            User user = await unitOfWork.UserManager.FindByIdAsync(twit.UserId);

            targetTwit.User = user;
            unitOfWork.TwitRepository.Create(targetTwit);
            await unitOfWork.SaveAsynk();

            return(new OperationDetails(true, "Twit has been created", ""));
        }
        public async Task <ActionResult> Add(TwitViewModel twitViewModel)
        {
            var twit = twitViewModel;

            twit.UserId = User.Identity.GetUserId();
            twit.Id     = Guid.NewGuid().ToString();

            await twitService.CreateAsynk(twit);

            IHubContext context = GlobalHost.ConnectionManager.GetHubContext <TwitHub>();

            context.Clients.All.addNewTwit("Refresh");
            return(Json(true));
        }
        public ActionResult CreateTwit(TwitViewModel model)
        {
            if (ModelState.IsValid)
            {
                var regex   = new Regex(@"(?<=#)\w+");
                var matches = regex.Matches(model.Content);
                var user    = Data.Users.All().FirstOrDefault(x => x.UserName == User.Identity.Name);
                var newTwit = new Twit {
                    Content = model.Content, Author = user
                };

                var tags = new List <Tag>();
                foreach (Match tag in matches)
                {
                    newTwit.Content = newTwit.Content.Replace("#" + tag.Value, string.Format("<a href='Home/Tag/{0}'>#{0}</a>", tag.Value));
                    var existedTag = Data.Tags.All().FirstOrDefault(t => t.Content.ToLower() == tag.Value.ToLower());
                    if (existedTag != null)
                    {
                        newTwit.Tags.Add(existedTag);
                        Data.Twits.Add(newTwit);
                        existedTag.Twits.Add(newTwit);
                    }
                    else
                    {
                        var newTag = new Tag {
                            Content = tag.Value.ToLower()
                        };
                        Data.Tags.Add(newTag);
                        newTwit.Tags.Add(newTag);
                        Data.Twits.Add(newTwit);
                        newTag.Twits.Add(newTwit);
                    }
                    Data.SaveChanges();
                }

                Data.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View("Index", model));
        }