Exemplo n.º 1
0
        public void GetPriceViewModelForTrackPriceTest()
        {
            var currencyDto   = CreateCurrency();
            var priceLevelDto = CreatePriceLevel();

            var trackDto = new Track
            {
                Id   = 1,
                Name = "Some track"
            };

            var trackPriceDto = new TrackPrice
            {
                Id           = 1,
                TrackId      = trackDto.Id,
                Track        = trackDto,
                CurrencyId   = currencyDto.Id,
                Currency     = currencyDto,
                Price        = 4.99m,
                PriceLevelId = priceLevelDto.Id,
                PriceLevel   = priceLevelDto
            };

            var priceViewModel = ModelsMapper.GetPriceViewModel(trackPriceDto);

            Assert.IsNotNull(priceViewModel);

            Assert.IsTrue(priceViewModel.Amount == trackPriceDto.Price);

            Assert.IsNotNull(priceViewModel.Currency);
            Assert.IsTrue(priceViewModel.Currency.Code == trackPriceDto.Currency.Code);
            Assert.IsTrue(priceViewModel.Currency.ShortName.Equals(trackPriceDto.Currency.ShortName, StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(priceViewModel.Currency.FullName.Equals(trackPriceDto.Currency.FullName, StringComparison.OrdinalIgnoreCase));
            Assert.IsTrue(priceViewModel.Currency.Symbol.Equals(trackPriceDto.Currency.Symbol, StringComparison.OrdinalIgnoreCase));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Executes a mapping from the <see cref="TrackPrice"/> model to a new <see cref="PriceViewModel"/> model.
 /// </summary>
 /// <param name="trackPrice">
 /// The track price DTO model.
 /// </param>
 /// <returns>
 /// A new <see cref="PriceViewModel"/> model.
 /// </returns>
 public static PriceViewModel GetPriceViewModel(TrackPrice trackPrice)
 {
     return(_commonMapper.Map <PriceViewModel>(trackPrice));
 }
Exemplo n.º 3
0
        public virtual ActionResult Edit(
            [Bind(Include = "Id,PostedTrackFile,PostedImage,PostedTrackSample,ArtistId,ArtistName,Duration,Genres,GenreId,Name,ReleaseDate,FileName,Price,Image,TrackFile,TrackSample")]
            TrackManagementViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                Track currentTrack;
                using (var repo = this.RepositoryFactory.GetTrackRepository())
                {
                    currentTrack = repo.GetById(viewModel.Id);
                }

                if (currentTrack == null)
                {
                    return(this.HttpNotFound($"Трек с id = {viewModel.Id} не найден"));
                }

                if (viewModel.PostedTrackFile == null)
                {
                    viewModel.TrackFile = currentTrack.TrackFile;
                }

                if (viewModel.PostedImage == null)
                {
                    viewModel.Image = currentTrack.Image;
                }

                var track = ManagementMapper.GetTrackModel(viewModel);
                track.OwnerId = currentTrack.OwnerId;
                using (var repository = this.RepositoryFactory.GetTrackRepository())
                {
                    repository.AddOrUpdate(track);
                    repository.SaveChanges();
                }

                if (viewModel.Price != null)
                {
                    using (var priceRepository = RepositoryFactory.GetTrackPriceRepository())
                    {
                        var trackPrice = priceRepository.FirstOrDefault(p => p.TrackId == track.Id &&
                                                                        p.CurrencyId == CurrentUserCurrency.Id &&
                                                                        p.PriceLevelId == CurrentUser.PriceLevelId);
                        if (trackPrice == null)
                        {
                            trackPrice = new TrackPrice
                            {
                                TrackId      = track.Id,
                                CurrencyId   = CurrentUserCurrency.Id,
                                PriceLevelId = CurrentUser.PriceLevelId
                            };
                        }

                        trackPrice.Price = viewModel.Price.Value;
                        priceRepository.AddOrUpdate(trackPrice);
                        priceRepository.SaveChanges();
                    }
                }

                return(this.RedirectToAction("Details", "Tracks", new { id = track.Id, area = "Content" }));
            }

            if (viewModel.Genres == null)
            {
                viewModel.Genres = GetGenres();
            }

            return(View(viewModel));
        }