예제 #1
0
        public async Task CreateChat(Save.Request request, CancellationToken cancellationToken)
        {
            var advertisement = await _advertisementRepository.FindById(request.AdvertisementId, cancellationToken);

            if (advertisement == null)
            {
                throw new AdNotFoundException(request.AdvertisementId);
            }

            var userId = await _identityService.GetCurrentUserId(cancellationToken);

            var chatDuplicate = await _chatRepository.FindWhere(c => c.Advertisement.Id == advertisement.Id && c.BuyerId == userId, cancellationToken);

            if (chatDuplicate != null)
            {
                throw new ChatDuplicateException($"Чат с id {chatDuplicate.Id} уже создан");
            }

            if (userId == advertisement.OwnerId)
            {
                throw new ChatException($"Попытка создать чат с самим собой, пользователь с id {userId}, является владельцем объявления");
            }

            var chat = new Domain.Chat
            {
                Advertisement = advertisement,
                BuyerId       = userId,
                CreatedDate   = DateTime.UtcNow,
            };

            await _chatRepository.Save(chat, cancellationToken);
        }
예제 #2
0
 public Chat(Domain.Chat c)
 {
     ChatId    = c.ChatId;
     UserId    = c.UserId;
     User      = new DTO.User(c.User);
     CreatedOn = c.CreatedOn;
     Content   = c.Content;
     ChannelId = c.ChannelId;
     Channel   = new DTO.Channel(c.Channel);
 }