public async Task <ChatMessageModel> AddChatMessage(AddMessageModel request, Guid personUid) { var chatEntity = await _chatRepository.GetChat(request.ChatUid); var personEntity = await _personRepository.GetPerson(personUid); var chatMessageUid = Guid.NewGuid(); var date = DateTime.UtcNow; var messageEntity = new ChatMessageEntity { ChatMessageUid = chatMessageUid, Content = request.Content, MessageTime = date, ChatId = chatEntity.ChatId, AuthorId = personEntity.PersonId }; await _chatRepository.AddChatMessage(messageEntity); var chatImageUids = new List <Guid>(); foreach (var image in request.Images) { var chatImageUid = await _imageLogic.SaveImage(image); await _chatRepository.SaveChatImage(chatMessageUid, new ChatImageContentEntity { ChatImageContentUid = chatImageUid }); chatImageUids.Add(chatImageUid); } await _chatRepository.AddLastReadChatMessage(chatEntity, personUid, messageEntity.ChatMessageId); await SendPushNotificationsToChatMembers(chatEntity, personEntity, request.Content); return(new ChatMessageModel { Images = chatImageUids, MessageContent = request.Content, MessageUid = chatMessageUid, PersonUid = personEntity.PersonUid, PersonName = personEntity.Name, MessageTime = date, PersonImageUid = personEntity.PersonImageContentEntity?.PersonImageContentUid }); }