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); }
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); }