コード例 #1
0
        public List <string> CreateTrack(CreateTrackViewModel model, string albumId)
        {
            ICollection <string> errorModel = this.Validator.ValidateModel(model);

            if (errorModel == null || errorModel.Count != 0)
            {
                return(errorModel.ToList());
            }

            var album = this.Data.Albums.FirstOrDefault(x => x.Id == albumId);

            var track = new Track
            {
                Name    = model.Name,
                Price   = model.Price,
                Link    = model.Link,
                Album   = album,
                AlbumId = albumId,
            };

            album.Tracks.Add(track);

            this.Data.Tracks.Add(track);

            this.Data.SaveChanges();

            return(errorModel.ToList());
        }
コード例 #2
0
        public ActionResult Create(CreateTrackViewModel model)
        {
            var imageContent = this.processImageHelper.ProcessImage(model.UploadedImage);
            var imageFileExtension = model.UploadedImage.FileName.Split(new[] { '.' }).Last();

            this.tracks.Create(model.Name, model.Length, model.Difficulty, imageContent, imageFileExtension);

            return this.View();
        }
コード例 #3
0
        public HttpResponse Create(string albumId)
        {
            var model = new CreateTrackViewModel()
            {
                AlbumId = albumId
            };

            return(this.View(model));
        }
コード例 #4
0
        public CreateTrackViewModel GetTrackViewModel(CreateTrackViewModel trackView)
        {
            trackView.SelectListSingers = new SelectList(singerDomainService.GetListSingers(), "Id", "Name");
            trackView.SelectListGenre   = new SelectList(genreDomainService.GetListGenre(), "Id", "Name");
            trackView.SelectListAlbums  = new SelectList(singerDomainService.GetAlbumsBySingerId(trackView.SingerId), "Id", "Name");
            trackView.PlaylistList      = playlistDomainService.GetDictionaryPlaylist();
            trackView.NoveltyList       = noveltyDomainService.GetDictionaryNovelty();
            trackView.PopularList       = popularDomainService.GetDictionaryPopular();

            return(trackView);
        }
コード例 #5
0
        public virtual ActionResult CreateTrack(CreateTrackViewModel trackModel)
        {
            if (ModelState.IsValid)
            {
                adminTrack.AddTrack(trackModel, Server);

                return(Redirect("/Admin/Admin/AdminLayout"));
            }

            return(View("CreateTrack", adminTrack.GetTrackViewModel(trackModel)));
        }
コード例 #6
0
        public IActionResult Create(CreateTrackViewModel viewModel)
        {
            var trackId = this.trackService.AddTrack(viewModel);

            var trackDetailsViewModel = new TrackDetailsViewModel()
            {
                AlbumId = viewModel.AlbumId,
                TrackId = trackId
            };

            return(this.Details(trackDetailsViewModel));
        }
コード例 #7
0
        public HttpResponse Create(CreateTrackViewModel model)
        {
            var errors = this.validatorService.TrackValidator(model);

            if (errors.Any())
            {
                return(this.View(model));
            }

            this.trackService.CreateTrack(model);

            return(this.Redirect($"/Albums/Details?id={model.AlbumId}"));
        }
コード例 #8
0
        public HttpResponse Create(string albumId)
        {
            if (!this.IsUserLoggedIn())
            {
                return(this.Redirect("/Users/Login"));
            }

            var viewModel = new CreateTrackViewModel {
                AlbumId = albumId
            };

            return(this.View(viewModel));
        }
コード例 #9
0
        public void CreateTrack(CreateTrackViewModel model)
        {
            var track = new Track()
            {
                Name    = model.Name,
                Link    = model.Link,
                Price   = model.Price,
                AlbumId = model.AlbumId
            };

            this.db.Tracks.Add(track);

            this.db.SaveChanges();

            AlbumPrice(model.AlbumId, model.Price);
        }
コード例 #10
0
ファイル: TrackController.cs プロジェクト: GMihalkow/CSharp
        public IHttpResponse CreateTrack()
        {
            string albumId = this.Request.QueryData["albumId"].ToString();

            string path     = StringExtensions.UrlDecode($"'/Albums/Details?id={albumId}'");
            string postPath = StringExtensions.UrlDecode($"/Tracks/Create?albumId={albumId}");

            CreateTrackViewModel viewModel = new CreateTrackViewModel()
            {
                BackToAlbum  = path,
                CreatePath   = postPath,
                ErrorMessage = string.Empty
            };

            return(this.View("createTrack", HttpResponseStatusCode.Ok, viewModel));
        }
コード例 #11
0
        public HttpResponse Create(string albumId, CreateTrackViewModel model)
        {
            if (!User.IsAuthenticated)
            {
                return(Redirect("Users/Login"));
            }

            var checkForerrors = TrackService.CreateTrack(model, albumId);

            if (checkForerrors.Count != 0)
            {
                return(Error(checkForerrors));
            }

            return(Redirect($"/Albums/Details?id={albumId}"));
        }
コード例 #12
0
        public IEnumerable <string> TrackValidator(CreateTrackViewModel input)
        {
            if (input.Name == null)
            {
                this.errorMessage.Add(string.Format(REQUIRED, "username"));
            }
            else if (input.Name.ToString().Length < 4 || input.Name.ToString().Length > 20)
            {
                this.errorMessage.Add(string.Format(MaxMinLength, "Username"));
            }

            if (input.Link == null)
            {
                this.errorMessage.Add(string.Format(REQUIRED, "username"));
            }

            return(this.errorMessage);
        }
コード例 #13
0
        public IActionResult Create(CreateTrackViewModel model, string albumId)
        {
            var trackNameIsInvalid = string.IsNullOrWhiteSpace(model.TrackName);
            var linkIsInvalid      = string.IsNullOrWhiteSpace(model.Link);
            var priceIsInvalid     = string.IsNullOrWhiteSpace(model.Price);

            if (trackNameIsInvalid || linkIsInvalid || priceIsInvalid)
            {
                return(this.RedirectToAction($"/tracks/create?albumId={albumId}"));
            }

            var album = this.DbContext.Albums.FirstOrDefault(a => a.Id == albumId);

            var track = new Track()
            {
                Name  = model.TrackName,
                Link  = WebUtility.UrlDecode(model.Link),
                Price = decimal.Parse(model.Price)
            };

            var trackAlbum = new TrackAlbum()
            {
                Track   = track,
                AlbumId = albumId
            };

            if (album.TrackAlbums.Any(ta => ta.Album.Id == albumId && ta.Track.Name == track.Name))
            {
                return(this.RedirectToAction("/tracks/create"));
            }

            album.TrackAlbums.Add(trackAlbum);

            try
            {
                this.DbContext.SaveChanges();
            }
            catch (Exception e)
            {
                throw new InternalServerException(e.Message);
            }

            return(this.RedirectToAction($"/Albums/Details?albumId={albumId}"));
        }
コード例 #14
0
        public void AddTrack(CreateTrackViewModel trackModel, HttpServerUtilityBase server)
        {
            Track track = Mapper.Map <CreateTrackViewModel, Track>(trackModel);

            track.Singer  = singerDomainService.GetSingerById(trackModel.SingerId);
            track.Album   = albumDomainService.GetAlbumById(trackModel.AlbumId);
            track.Genre   = genreDomainService.GetGenreById(trackModel.GenreId);
            track.Popular = popularDomainService.GetPopularById(trackModel.PopularId);
            track.Novelty = noveltyDomainService.GetNoveltyById(trackModel.NoveltyId);

            track.TrackImage.ImageData = GetArray(trackModel.TrackImage);

            trackModel.PlaylistArrayId
            .ForEach(x => track.Playlists.Add(playlistDomainService.GetPlaylistById(x)));

            string name = trackModel.TrackFile.FileName;

            trackModel.TrackFile.SaveAs(server.MapPath(PathServerBefore + name));
            track.TrackFile.FileLocation = PathServerAfter + name;

            trackDomainService.Entry(track).State = EntityState.Added;
            trackDomainService.SaveChanges();
        }
コード例 #15
0
        public string AddTrack(CreateTrackViewModel viewModel)
        {
            var track = new Track()
            {
                Name  = viewModel.Name,
                Link  = viewModel.Link,
                Price = viewModel.Price,
            };

            var albumTrack = new AlbumTrack()
            {
                Track   = track,
                AlbumId = viewModel.AlbumId
            };

            this.dbContext
            .AlbumTracks
            .Add(albumTrack);
            this.dbContext
            .SaveChanges();

            return(albumTrack.TrackId);
        }
コード例 #16
0
        public IActionResult Create(CreateTrackViewModel model)
        {
            //if (!this.IsAuthenticated())
            //{
            //    return this.RedirectToAction("/Users/Login");
            //}

            if (!this.ModelState.IsValid.HasValue || !this.ModelState.IsValid.Value)
            {
                return(this.RedirectToAction("/Tracks/Create"));
            }

            var name = model.Name.Trim();
            var link = WebUtility.UrlDecode(model.Link).Replace("watch?v=", "embed/");

            // src="https://www.youtube.com/watch?v=_avb2ikX-rQ<iframe width="640" height="480" src="https://www.youtube.com/embed/_avb2ikX-rQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>"
            var price   = decimal.Parse(model.Price);
            var albumId = this.Request.QueryData["albumId"].ToString().ToUpper();

            var track = new Track
            {
                Name  = name,
                Link  = link,
                Price = price
            };

            if (!this.TrackService.CreateTrack(track, albumId))
            {
                this.Model.Data["Error"] = "Something went wrong when trying to create track in database.";
                return(this.RedirectToAction("/Tracks/Create"));
            }

            //TODO: add success message handle in viewEngine!!!
            this.Model.Data["Success"] = $"Successfully create track in database for album with id {albumId}.";
            return(this.RedirectToAction($"/Albums/Details?id={albumId}"));
        }
コード例 #17
0
ファイル: TrackController.cs プロジェクト: GMihalkow/CSharp
        public IHttpResponse PostCreateTrack(DoTrackViewModel model)
        {
            Regex trackNameRegex = new Regex(@"^\w{3,30}$");
            Regex linkUrlRegex   = new Regex(@"^\b((http|https):\/\/?)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/?))$");

            string albumId = this.Request.QueryData["albumId"].ToString();

            string backToAlbumPath = StringExtensions.UrlDecode($"'/Albums/Details?id={albumId}'");

            model.Link = StringExtensions.UrlDecode(model.Link);
            decimal trackPrice = 0;

            bool IsDecimal = decimal.TryParse(model.Price.ToString(), out trackPrice);

            Track track = new Track()
            {
                Id    = Guid.NewGuid().ToString(),
                Name  = model.Name,
                Price = trackPrice,
                Link  = model.Link
            };

            AlbumTrack albumTrack = new AlbumTrack()
            {
                AlbumId = albumId,
                TrackId = track.Id
            };

            if (!IsDecimal
                ||
                !linkUrlRegex.Match(model.Link).Success
                ||
                !trackNameRegex.Match(model.Name).Success
                ||
                track.Price < 0
                )
            {
                CreateTrackViewModel createTrackViewModel = new CreateTrackViewModel()
                {
                    BackToAlbum  = backToAlbumPath,
                    ErrorMessage = InvalidTrackInformationError,
                    CreatePath   = WebUtility.UrlDecode($"/Tracks/Create?albumId={albumId}")
                };

                return(this.View("createTrack", HttpResponseStatusCode.BadRequest, createTrackViewModel));
            }
            else if (this.Context.AlbumTracks.Where(at => at.AlbumId == albumId).Any(tr => tr.Track.Name == model.Name))
            {
                CreateTrackViewModel createTrackViewModel = new CreateTrackViewModel()
                {
                    BackToAlbum  = backToAlbumPath,
                    ErrorMessage = TrackAlreadyExistsError,
                    CreatePath   = WebUtility.UrlDecode($"/Tracks/Create?albumId={albumId}")
                };

                return(this.View("createTrack", HttpResponseStatusCode.BadRequest, createTrackViewModel));
            }

            using (this.Context)
            {
                this.Context
                .Add(track);

                this.Context
                .Add(albumTrack);

                this.Context
                .Albums
                .First(album => album.Id == albumId)
                .Tracks
                .Add(albumTrack);

                this.Context
                .SaveChanges();
            }

            TrackViewModel viewModel = new TrackViewModel()
            {
                Link        = track.Link,
                Name        = track.Name,
                Price       = $"{track.Price.ToString(CultureInfo.InvariantCulture):f2}",
                BackToAlbum = backToAlbumPath,
                CreatePath  = StringExtensions.UrlDecode($"/Tracks/Create?albumId={albumId}")
            };

            return(this.View("track", HttpResponseStatusCode.Ok, viewModel));
        }