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