Example #1
0
        public async Task <IActionResult> Send(MessageSendDto model)
        {
            try
            {
                var claimId = int.Parse(User.Claims.FirstOrDefault(c => c.Type == "id").Value);
                if (model.UserId != claimId)
                {
                    return(StatusCode(StatusCodes.Status401Unauthorized));
                }

                var message = new Message {
                    UserId = model.UserId, RoomId = model.RoomId, Text = model.Text
                };

                message = await messageService.SendMessageAsync(message);

                var messageInfo = new MessageInfo
                {
                    Sent     = message.Created,
                    Id       = message.Id,
                    RoomId   = message.RoomId,
                    Text     = message.Text,
                    Username = User.Identity.Name
                };

                var sendTo = (await userService.GetUsersByRoomIdAsync(messageInfo.RoomId))
                             .Where(u => u != messageInfo.Username)
                             .ToList();

                context.Clients.Users(sendTo).SendAsync("updateMessages", messageInfo);

                return(Ok(messageInfo));
            }
            catch (SqlException e)
            {
                return(BadRequest(new { message = e.Message }));
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
        public IActionResult AddMeesage([FromBody] MessageSendDto message)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            if (currentUserId == message.UserId)
            {
                var currentUser = _userDal.GetUserById(currentUserId);
                if (currentUser.NameSurname == message.SenderName)
                {
                    try
                    {
                        Message addMessage = new Message();

                        addMessage.Content = message.Content;
                        addMessage.MState  = message.MState;
                        addMessage.Time    = DateTime.Now;
                        addMessage.UserId  = message.UserId;
                        if (addMessage.Content == null)
                        {
                            addMessage.Content = "Açıklama yok.";
                        }



                        _messageDal.Add(addMessage);
                        return(new StatusCodeResult(201));
                    }
                    catch
                    { }
                    return(BadRequest());
                }
                else
                {
                    return(Unauthorized());
                }
            }
            else
            {
                return(NotFound(404));
            }
        }