public void CallCreateServiceMethodCreateArtistOnce_WhenInvoked()
        {
            // Arrange
            var createService = new Mock <ICreationService>();
            var artistService = new Mock <IArtistService>();
            var albumService  = new Mock <IAlbumService>();
            var genreService  = new Mock <IGenreService>();

            createService.Setup(x => x.CreateArtist(It.IsAny <string>()));

            var sut = new CreateController(
                createService.Object,
                artistService.Object,
                albumService.Object,
                genreService.Object);

            var model = new CreateArtistViewModel()
            {
                Name = "Artist Name"
            };

            // Act
            sut.CreateArtist(model);

            // Assert
            createService.Verify(x => x.CreateArtist(It.IsAny <string>()), Times.Once);
        }
示例#2
0
        public async Task <ArtistCreationResult> AddArtistAsync(
            CreateArtistViewModel viewModel)
        {
            ArtistCreationResult result = new ArtistCreationResult();
            string connectionString     = _databaseOptions.ConnectionString;
            string sqlStatement         = "insert into artists (first_name, last_name, full_name, is_approved, user_id, created_at, is_deleted, has_image) values (@first_name, @last_name, @full_name, @is_approved, @user_id, @created_at, @is_deleted, @has_image) returning id";
            int    artistId             = 0;

            string   firstName  = viewModel.FirstName.ToLower();
            string   lastName   = viewModel.LastName.ToLower();
            string   fullName   = string.IsNullOrEmpty(lastName) ? firstName : $"{firstName} {lastName}";
            bool     isApproved = false;
            DateTime createdAt  = DateTime.UtcNow;
            string   userId     = viewModel.UserId;
            bool     isDeleted  = false;
            bool     hasImage   = false;

            using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
            {
                NpgsqlCommand command = new NpgsqlCommand(sqlStatement, connection);
                command.Parameters.AddWithValue("@first_name", firstName);
                command.Parameters.AddWithValue("@last_name", lastName);
                command.Parameters.AddWithValue("@full_name", fullName);
                command.Parameters.AddWithValue("@is_approved", isApproved);
                command.Parameters.AddWithValue("@user_id", userId);
                command.Parameters.AddWithValue("@created_at", createdAt);
                command.Parameters.AddWithValue("@is_deleted", isDeleted);
                command.Parameters.AddWithValue("@has_image", hasImage);

                try
                {
                    await connection.OpenAsync();

                    object artistIdentity = command.ExecuteScalar();
                    artistId = (int)artistIdentity;

                    ArtistSlugCreateViewModel artistSlug = new ArtistSlugCreateViewModel();
                    artistSlug.Name      = fullName.NormalizeStringForUrl();
                    artistSlug.IsPrimary = true;
                    artistSlug.CreatedAt = createdAt;
                    artistSlug.ArtistId  = artistId;

                    await _artistSlugsService.AddArtistSlugAsync(artistSlug);

                    result.PrimarySlug = artistSlug.Name;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            return(result);
        }
        public async Task <IActionResult> Add()
        {
            CreateArtistViewModel model = new CreateArtistViewModel();
            var genresResult            = await _genreRepo.ListAsync(contentPublicationFlags : PublishStatus.PUBLISHED);

            model.Genres = genresResult.Genres.Select(g => new SelectableGenreViewModel
            {
                Name       = g.Name,
                IsSelected = false
            }).ToList();
            return(View(model));
        }
示例#4
0
        public async Task <IActionResult> Create(CreateArtistViewModel artistViewModel)
        {
            string pictureUrl = await this.cloudinaryService.UploadPictureAsync(artistViewModel.Image, artistViewModel.Name);

            ArtistServiceModel artist = new ArtistServiceModel
            {
                Name        = artistViewModel.Name,
                Description = artistViewModel.Description,
                Image       = pictureUrl
            };

            artistService.Create(artist);

            return(RedirectToAction("All", "Artists"));
        }
示例#5
0
        public ActionResult Create(CreateArtistViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var request = new CreateArtistRequest {
                Name = model.Name
            };

            _artistService.CreateArtist(request);

            return(RedirectToAction("Index"));
        }
示例#6
0
        public async Task <IActionResult> Create(
            CreateArtistViewModel viewModel)
        {
            try
            {
                viewModel.UserId = User
                                   .GetUserId()
                                   .ToString();

                ArtistCreationResult result = await _artistsService
                                              .AddArtistAsync(viewModel);

                return(RedirectToAction("ArtistLyrics", "Lyric", new { artistSlug = result.PrimarySlug }));
            }
            catch
            {
                return(View(viewModel));
            }
        }
        public async Task <IActionResult> Add(CreateArtistViewModel model)
        {
            if (ModelState.IsValid)
            {
                int?createdBioImageId = null;
                if (model.BioImage != null && model.BioImage.Length > 0)
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        await model.BioImage.CopyToAsync(ms);

                        ImageReferenceDetail imageRef = await _imageRepo.AddAsync(new ImageReferenceDetail
                        {
                            Data     = ms.ToArray(),
                            FileName = model.BioImage.FileName,
                            MimeType = model.BioImage.ContentType
                        });

                        if (imageRef != null)
                        {
                            createdBioImageId = imageRef.Id;
                        }
                    }
                }

                var result = await _artistRepo.AddAsync(new Artist
                {
                    PublishedStatus = PublishStatus.UNPUBLISHED,
                    Name            = model.Name,
                    BioText         = model.BioText,
                    Genres          = model.Genres.Where(g => g.IsSelected).Select(g => g.Name).ToList(),
                    BioImageId      = createdBioImageId
                });

                this.SetBootstrapPageAlert("Success", "Artist added", BootstrapAlertType.success);
                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                return(View(model));
            }
        }
示例#8
0
        public async Task <IActionResult> Update(CreateArtistViewModel serviceModel)
        {
            string pictureUrl = await this.cloudinaryService.UploadPictureAsync(serviceModel.Image, serviceModel.Name);

            var id = context.Artists.FirstOrDefault(x => x.Name.ToLower() == serviceModel.Name.ToLower());

            if (id != null)
            {
                ArtistServiceModel artist = new ArtistServiceModel
                {
                    Name        = serviceModel.Name,
                    Description = serviceModel.Description,
                    Image       = pictureUrl
                };

                artistService.Update(artist, id.Id);

                return(RedirectToAction("All", "Artists"));
            }
            else
            {
                return(NotFound());//RedirectToAction("All", "Artists");
            }
        }
示例#9
0
        public IActionResult Create(CreateArtistViewModel model)
        {
            Boolean success = _artistService.AddArtist(_mapper.Map <MusicCore.Artist>(model.artist));

            return(RedirectToAction("Artists"));
        }
示例#10
0
        public IActionResult Create()
        {
            CreateArtistViewModel model = new CreateArtistViewModel();

            return(View(model));
        }
示例#11
0
        public ActionResult CreateArtist(CreateArtistViewModel artist)
        {
            this.createService.CreateArtist(artist.Name);

            return(RedirectToAction(CreationChoiceAction));
        }
示例#12
0
        public ActionResult CreateArtist()
        {
            var model = new CreateArtistViewModel();

            return(View(model));
        }