コード例 #1
0
ファイル: ChatLogic.cs プロジェクト: kirill-shevch/Lume
        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
            });
        }