Exemplo n.º 1
0
        public async Task <IActionResult> SendGroupMessage([FromForm] GroupMessageForAddDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _response = await _repo.SendGroupMessage(model);

            var response = await _repo.GetGroupChatMessages(model.MessageToUserIds, model.GroupId, true);

            if (_response.Success)
            {
                var lastMessageStr = JsonConvert.SerializeObject(response.Data);
                var lastMessage    = JsonConvert.DeserializeObject <GroupMessageForListByTimeDto>(lastMessageStr);
                var ToReturn       = new GroupSignalRMessageForListDto
                {
                    Id   = lastMessage.Messages[0].Id,
                    Type = lastMessage.Messages[0].Type,
                    DateTimeToDisplay   = lastMessage.Messages[0].TimeToDisplay,
                    TimeToDisplay       = lastMessage.Messages[0].TimeToDisplay,
                    Comment             = lastMessage.Messages[0].Comment,
                    MessageFromUserId   = lastMessage.Messages[0].MessageFromUserId,
                    MessageFromUser     = lastMessage.Messages[0].MessageFromUser,
                    MessageToUserIdsStr = lastMessage.Messages[0].MessageToUserIdsStr,
                    GroupId             = lastMessage.Messages[0].GroupId,
                    Attachment          = lastMessage.Messages[0].Attachment,
                    FileName            = lastMessage.Messages[0].FileName,
                    FileType            = lastMessage.Messages[0].FileType,
                    //MessageToUser = lastMessage.Messages[0].MessageToUser,
                };

                // List<MessageForListByTimeDto> collection = new List<MessageForListByTimeDto>((IEnumerable<MessageForListByTimeDto>)lastMessage.Data);

                await _hubContext.Clients.All.SendAsync("MessageNotificationAlert", ToReturn);
            }

            return(Ok(_response));
        }
Exemplo n.º 2
0
        public async Task <ServiceResponse <object> > SendGroupMessage(GroupMessageForAddDto model)
        {
            var ToAdd = new GroupMessage
            {
                Comment           = model.Comment,
                MessageToUserIds  = string.Join(',', model.MessageToUserIds),
                IsRead            = false,
                CreatedDateTime   = DateTime.UtcNow,
                MessageFromUserId = _LoggedIn_UserID,
                MessageReplyId    = model.MessageReplyId,
                GroupId           = model.GroupId,
            };
            await _context.GroupMessages.AddAsync(ToAdd);

            await _context.SaveChangesAsync();

            if (model.files != null && model.files.Count() > 0)
            {
                for (int i = 0; i < model.files.Count(); i++)
                {
                    var dbPath     = _fileRepo.SaveFile(model.files[i]);
                    var attachment = new ChatMessageAttachment
                    {
                        MessageId      = ToAdd.Id,
                        AttachmentPath = dbPath,
                        FileName       = model.files[i].FileName != "blob" ? model.files[i].FileName : "",
                        FileType       = model.files[i].FileName != "blob" ? "FileAttachment" : ""
                    };
                    await _context.ChatMessageAttachments.AddAsync(attachment);

                    await _context.SaveChangesAsync();
                }
            }

            _serviceResponse.Success = true;
            _serviceResponse.Message = CustomMessage.Added;
            return(_serviceResponse);
        }