public async Task <IActionResult> Edit(int id, [Bind("Id,Text,MessageId")] MessageHashtag messageHashtag)
        {
            if (id != messageHashtag.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(messageHashtag);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MessageHashtagExists(messageHashtag.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MessageId"] = new SelectList(_context.Messages, "Id", "Id", messageHashtag.MessageId);
            return(View(messageHashtag));
        }
        public async Task <IActionResult> Create([Bind("Id,Text,MessageId")] MessageHashtag messageHashtag)
        {
            if (ModelState.IsValid)
            {
                var userId              = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
                var neighbor            = _context.Neighbors.Where(n => n.ApplicationUserId == userId).FirstOrDefault();
                var messageHashtagTexts = messageHashtag.Text.Split(",").ToList();
                //var neighborHashtags = _context.Hashtags.Where(h => h.NeighborId == neighbor.Id).Select(h => h.Text).ToList();
                var hashtagTexts = _context.Hashtags.Where(h => h.NeighborId == neighbor.Id).Select(h => h.Text).ToList();
                //var hashtagListForMessage = new List<string>();
                foreach (var m in messageHashtagTexts)
                {
                    MessageHashtag newMessageHashtag = new MessageHashtag();
                    newMessageHashtag.MessageId = messageHashtag.MessageId;
                    //hashtagListForMessage.Add(m);
                    newMessageHashtag.Text = m;
                    _context.Add(newMessageHashtag);
                    await _context.SaveChangesAsync();

                    if (hashtagTexts.Contains(m))
                    {
                        continue;
                    }
                    else
                    {
                        Hashtag newHashtag = new Hashtag();
                        newHashtag.NeighborId = neighbor.Id;
                        newHashtag.Text       = m;
                        _context.Add(newHashtag);
                        await _context.SaveChangesAsync();
                    }
                }
                //Message message = _context.Messages.Where(m => m.Id == messageHashtag.MessageId).FirstOrDefault();
                //message.Hashtags = hashtagListForMessage;
                return(RedirectToAction("Index", "Messages"));
            }
            ViewData["MessageId"] = new SelectList(_context.Messages, "Id", "Id", messageHashtag.MessageId);
            return(View(messageHashtag));
        }
        private void CreateHashtag(Message message, Capture tag, IList <Hashtag> createdHashtags)
        {
            var value   = tag.Value.Replace("#", "").ToLower();
            var hashtag = createdHashtags.FirstOrDefault(x => x.Name == value) ?? _hashtagRepository.FindByName(value);

            if (hashtag == null)
            {
                hashtag = new Hashtag {
                    Name = value
                };
                _hashtagRepository.Create(hashtag);
                createdHashtags.Add(hashtag);
            }

            var messageHashtag = new MessageHashtag
            {
                Hashtag = hashtag,
                Message = message,
                Index   = tag.Index,
                Length  = tag.Length
            };

            _messageHashtagRepository.Create(messageHashtag);
        }