Esempio n. 1
0
        public async Task <CreateAdResponse> CreateAd(CreateAdRequest request, CancellationToken cancellationToken)
        {
            var identityUser = await _identityService.GetCurrentIdentityUserId(cancellationToken);

            if (identityUser == null)
            {
                throw new NoUserForAdCreationException(
                          $"Попытка создания объявления [{request.Name}] без пользователя.");
            }

            var domainUser = await _userRepository.FindById(new Guid(identityUser.Id), cancellationToken);

            if (!domainUser.Active)
            {
                throw new UserNoHaveRightToCreateAdException("Данный пользователь заблокирован, свяжитесь с администрацией для уточнения деталей.");
            }

            var ad = _mapper.Map <Domain.Ad>(request);

            ad.OwnerId = new Guid(identityUser.Id);
            ad.Status  = Domain.Shared.Statuses.OnSale;
            await _repository.Save(ad, cancellationToken);

            foreach (var photoId in request.Photos)
            {
                await _photoService.SetAdOwnerPhoto(new SetAdOwnerPhotoRequest()
                {
                    Id        = photoId,
                    AdOwnerId = ad.Id,
                }, cancellationToken);
            }
            return(_mapper.Map <CreateAdResponse>(ad));
        }
Esempio n. 2
0
        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CreateAdResponse CreateAd(CreateAdRequest request)
        {
            using (var client = DbFactory.GetClient())
            {
                var ad = new Ad
                {
                    AdPlaceId  = request.AdPlaceId,
                    Title      = request.Title,
                    ImagePath  = request.ImagePath,
                    TargetUrl  = request.TargetUrl,
                    OrderIndex = 0,
                    IsShow     = true
                };
                ad.Id = client.Insertable(ad).ExecuteReturnBigIdentity();

                _eventPublisher.EntityCreated(ad);
                return(new CreateAdResponse());
            }
        }
Esempio n. 3
0
 public Task <ApiResponse> CreateAsync(CreateAdRequest request)
 => _client.PostAsync("ads-service/ads", request);