public async Task <IActionResult> PutChat(int id, ClientChat cc)
        {
            Chat chat = new Chat(cc, true);

            if (id != chat.ChatId)
            {
                return(BadRequest());
            }

            _context.Entry(chat).State = EntityState.Modified;


            if (chat.Users != null && chat.Users.Count != 0)
            {
                foreach (Participation p in chat.Users)
                {
                    _context.Entry(p).State = EntityState.Modified;
                    Participation similar = _context.Participations.Where(pa => pa.ChatId == p.ChatId && pa.UserId == p.UserId).FirstOrDefault();
                    if (similar == default)
                    {
                        _context.Participations.Add(p);
                    }
                    _context.Entry(p.User).State = EntityState.Modified;
                }
            }

            if (chat.Messages != null && chat.Messages.Count != 0)
            {
                foreach (Message m in chat.Messages)
                {
                    _context.Entry(m).State = EntityState.Modified;
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ChatExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutParticipation(int id, Participation participation)
        {
            if (id != participation.UserId)
            {
                return(BadRequest());
            }

            _context.Entry(participation).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ParticipationExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutMessage(int id, Message message)
        {
            if (id != message.MessageId)
            {
                return(BadRequest());
            }

            _context.Entry(message).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MessageExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }