public async Task <SendMessagesResponseContract> SendBulkMessage(SendMessageRequestContract reqContract) { string endpoint = $"api/v4/messages?apikey={reqContract.ApiKey}&number={reqContract.Numbers}&message={reqContract.Message}&sendername={reqContract.SenderName}"; var responseTuple = await PostAsync <List <SendMessageResponseContract>, SendMessageRequestContract>(endpoint, new SendMessageRequestContract()); var resultContract = new SendMessagesResponseContract(); resultContract.SendMessages = responseTuple.Item2; resultContract.StatusCode = responseTuple.Item4; return(resultContract); }
public async Task SendMessage(string message, string fileUrl, Guid contactUserId, Guid conversationId) { var identity = _claimsService.GetUserClaims(); var payload = new SendMessageRequestContract { SenderId = identity.Id, ContactUserId = contactUserId, Message = message, MessageType = string.IsNullOrEmpty(fileUrl) ? 0 : 1, AttachmentUrl = fileUrl, ConversationId = conversationId }; var messageId = await _messageService.CreateMessageAsync(payload); payload.MessageId = messageId; var userConnectionIds = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Chat", identity.Id)) ?? new List <string>(); var contactConnectionIds = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Chat", contactUserId)) ?? new List <string>(); var connectionIds = userConnectionIds.Union(contactConnectionIds).ToList(); await _pubSub.Publish(Channels.PrivateMessageChannel, new PrivateMessageContract { ConnectionIds = connectionIds, NewMessage = payload }); var unreadMessages = await _messageService.GetUnreadMessages(contactUserId); await _pubSub.Publish(Channels.NotififcationMessageChannel, new NewNotificationMessageContract { ActionType = NotificationActionType.UnreadMessage, ConnectionIds = await _cacheService.Get <List <string> >(CachingHelpers.BuildKey("Notification", contactUserId)) ?? new List <string>(), TotalUnreadMessages = unreadMessages }); }
public async Task <Guid> CreateMessageAsync(SendMessageRequestContract request) { var conversation = await _context.Set <Conversation>() .SingleOrDefaultAsync(c => c.Id == request.ConversationId); if (conversation != null) { var message = new Message( request.Message, request.SenderId, (MessageType)request.MessageType, conversation.Id, request.AttachmentUrl ); await _context.AddAsync(message); await _context.SaveChangesAsync(); return(message.Id); } throw new Exception("Conversation is not existed"); }