Example #1
0
        public async Task <IActionResult> Create([Bind("SubgenreName")] SubgenreModel subgenreModel)
        {
            if (ModelState.IsValid)
            {
                if (String.IsNullOrWhiteSpace(subgenreModel.SubgenreName))
                {
                    TempData["message"] = "You must enter a subgenre. Try again.";
                    return(View());
                }

                TextInfo toTitleCase = new CultureInfo("en-US", false).TextInfo;

                subgenreModel.SubgenreName = subgenreModel.SubgenreName.ToLower();
                subgenreModel.SubgenreName = toTitleCase.ToTitleCase(subgenreModel.SubgenreName);

                var subgenreNames = _context.Subgenres;

                foreach (var s in subgenreNames)
                {
                    if (subgenreModel.SubgenreName.ToLower() == s.SubgenreName.ToLower())
                    {
                        TempData["message"] = "That subgenre already exists.";
                        return(View());
                    }
                }

                _context.Add(subgenreModel);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(subgenreModel));
        }
Example #2
0
        public SubgenreModel CreateUnknownSubgenre()
        {
            SubgenreModel unknown = new SubgenreModel()
            {
                SubgenreName = "Unknown"
            };

            _context.Add(unknown);
            _context.SaveChanges();

            return(unknown);
        }
Example #3
0
        public async Task <IActionResult> Edit(int id, [Bind("SubgenreName")] SubgenreModel subgenreModel)
        {
            if (String.IsNullOrWhiteSpace(subgenreModel.SubgenreName))
            {
                TempData["messageSubName"] = "You must enter a subgenre. Try again.";
                return(View());
            }

            var subgenreToUpdate = await _context.Subgenres
                                   .FirstOrDefaultAsync(c => c.SubgenreID == id);

            TextInfo toTitleCase = new CultureInfo("en-US", false).TextInfo;

            subgenreModel.SubgenreName = toTitleCase.ToTitleCase(subgenreModel.SubgenreName);

            var subgenreNames = _context.Subgenres;

            foreach (var s in subgenreNames)
            {
                if (subgenreModel.SubgenreName.ToLower() == s.SubgenreName.ToLower())
                {
                    TempData["messageExists"] = "That subgenre already exists.";
                    return(View());
                }
            }

            if (await TryUpdateModelAsync <SubgenreModel>(subgenreToUpdate, "", c => c.SubgenreID, c => c.SubgenreName))
            {
                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateException)
                {
                    ModelState.AddModelError("", "Unable To Save Changes");
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(subgenreModel));
        }
Example #4
0
        public async Task <IActionResult> Edit(int id, [Bind("ArtistName,CountryOfOrigin,Subgenre")] ArtistModel artistModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var artistToUpdate = await _context.Artists
                                         .Include(a => a.Albums)
                                         .ThenInclude(t => t.Tracks)
                                         .Include(s => s.Subgenre)
                                         .AsNoTracking()
                                         .FirstOrDefaultAsync(c => c.ArtistID == id);

                    if (String.IsNullOrWhiteSpace(artistModel.ArtistName))
                    {
                        TempData["messageArtist"] = "You must enter an artist. Try again.";
                        return(View());
                    }
                    if (String.IsNullOrWhiteSpace(artistModel.CountryOfOrigin))
                    {
                        artistModel.CountryOfOrigin = "Unknown";
                    }

                    if (String.IsNullOrWhiteSpace(artistModel.Subgenre.SubgenreName))
                    {
                        artistModel.Subgenre.SubgenreName = "Unknown";
                    }

                    TextInfo caseSwitch = new CultureInfo("en-US", false).TextInfo;

                    artistModel.ArtistName = artistModel.ArtistName.ToLower();
                    artistModel.ArtistName = caseSwitch.ToTitleCase(artistModel.ArtistName);

                    artistModel.Subgenre.SubgenreName = artistModel.Subgenre.SubgenreName.ToLower();
                    artistModel.Subgenre.SubgenreName = caseSwitch.ToTitleCase(artistModel.Subgenre.SubgenreName);

                    artistModel.CountryOfOrigin = artistModel.CountryOfOrigin.ToLower();
                    artistModel.CountryOfOrigin = caseSwitch.ToTitleCase(artistModel.CountryOfOrigin);

                    string[] ukArray  = new string[] { "uk", "united kingdom", "britain", "great britain", "england", "scotland", "wales", "northern ireland" };
                    string[] usaArray = new string[] { "usa", "us", "america", "united states", "united states of america",
                                                       "u.s", "u.s.", "u.s.a", "u.s.a.", "us of a", "'murica", "murica", "merica", "'merica" };

                    foreach (var u in ukArray)
                    {
                        if (artistModel.CountryOfOrigin.ToLower() == u)
                        {
                            artistModel.CountryOfOrigin = "UK";
                        }
                    }

                    foreach (var u in usaArray)
                    {
                        if (artistModel.CountryOfOrigin.ToLower() == u)
                        {
                            artistModel.CountryOfOrigin = "USA";
                        }
                    }

                    if (artistModel.ArtistName.ToLower() != artistToUpdate.ArtistName.ToLower())
                    {
                        artistModel.ArtistID = id;
                    }

                    if (artistModel.CountryOfOrigin.ToLower() != artistToUpdate.CountryOfOrigin.ToLower())
                    {
                        artistToUpdate.CountryOfOrigin = artistModel.CountryOfOrigin;
                        artistModel.ArtistID           = id;
                    }

                    if (artistModel.ArtistName.ToLower() == artistToUpdate.ArtistName.ToLower() &&
                        artistModel.CountryOfOrigin.ToLower() == artistToUpdate.CountryOfOrigin.ToLower() &&
                        artistModel.Subgenre.SubgenreName.ToLower() == artistToUpdate.Subgenre.SubgenreName.ToLower())
                    {
                        artistModel.ArtistID = id;
                    }

                    var duplicateCheck = _context.Artists
                                         .Include(s => s.Subgenre)
                                         .Include(a => a.Albums)
                                         .ThenInclude(t => t.Tracks)
                                         .AsNoTracking();

                    foreach (var d in duplicateCheck)
                    {
                        if (artistModel.ArtistName.ToLower() == d.ArtistName.ToLower())
                        {
                            if (artistModel.ArtistName.ToLower() != artistToUpdate.ArtistName.ToLower())
                            {
                                TempData["messageExists"] = "That artist already exists.";
                                return(View());
                            }
                        }
                    }

                    var subgenreCheck = _context.Subgenres
                                        .AsNoTracking();

                    foreach (var s in subgenreCheck)
                    {
                        if (artistModel.Subgenre.SubgenreName == s.SubgenreName)
                        {
                            artistModel.ArtistID            = id;
                            artistModel.Subgenre.SubgenreID = s.SubgenreID;
                        }
                    }

                    if (!subgenreCheck.Any(s => s.SubgenreName == artistModel.Subgenre.SubgenreName))
                    {
                        artistModel.ArtistID = id;
                        SubgenreModel newSubgenre = new SubgenreModel();
                    }

                    _context.Update(artistModel);
                    await _context.SaveChangesAsync();
                }

                catch (DbUpdateException)
                {
                    if (!ArtistModelExists(artistModel.ArtistID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            return(View(artistModel));
        }
Example #5
0
        public async Task <IActionResult> Create([Bind("ArtistName,CountryOfOrigin,Subgenre")] ArtistModel artistModel)
        {
            if (ModelState.IsValid)
            {
                if (String.IsNullOrWhiteSpace(artistModel.ArtistName))
                {
                    TempData["messageArtist"] = "You must enter an artist name. Try again.";
                    return(View());
                }

                if (String.IsNullOrWhiteSpace(artistModel.CountryOfOrigin))
                {
                    artistModel.CountryOfOrigin = "Unknown";
                }

                if (String.IsNullOrWhiteSpace(artistModel.Subgenre.SubgenreName))
                {
                    artistModel.Subgenre.SubgenreName = "Unknown";
                }

                TextInfo caseSwitch = new CultureInfo("en-US", false).TextInfo;

                artistModel.ArtistName = artistModel.ArtistName.ToLower();
                artistModel.ArtistName = caseSwitch.ToTitleCase(artistModel.ArtistName);

                artistModel.Subgenre.SubgenreName = artistModel.Subgenre.SubgenreName.ToLower();
                artistModel.Subgenre.SubgenreName = caseSwitch.ToTitleCase(artistModel.Subgenre.SubgenreName);

                artistModel.CountryOfOrigin = artistModel.CountryOfOrigin.ToLower();
                artistModel.CountryOfOrigin = caseSwitch.ToTitleCase(artistModel.CountryOfOrigin);

                string[] ukArray  = new string[] { "uk", "united kingdom", "britain", "great britain", "england", "scotland", "wales", "northern ireland" };
                string[] usaArray = new string[] { "usa", "us", "america", "united states", "united states of america",
                                                   "u.s", "u.s.", "u.s.a", "u.s.a.", "us of a", "'murica", "murica", "merica", "'merica" };

                foreach (var u in ukArray)
                {
                    if (artistModel.CountryOfOrigin.ToLower() == u)
                    {
                        artistModel.CountryOfOrigin = "UK";
                    }
                }

                foreach (var u in usaArray)
                {
                    if (artistModel.CountryOfOrigin.ToLower() == u)
                    {
                        artistModel.CountryOfOrigin = "USA";
                    }
                }

                SubgenreModel subgenre = await _context.Subgenres.SingleOrDefaultAsync(s => s.SubgenreName == artistModel.Subgenre.SubgenreName);

                if (subgenre == null)
                {
                    subgenre = new SubgenreModel()
                    {
                        SubgenreName = artistModel.Subgenre.SubgenreName
                    };
                }

                ArtistModel newArtist = new ArtistModel()
                {
                    ArtistName      = artistModel.ArtistName,
                    CountryOfOrigin = artistModel.CountryOfOrigin,
                    Subgenre        = subgenre
                };

                var subgenreNames = _context.Subgenres;

                foreach (var s in subgenreNames)
                {
                    if (artistModel.Subgenre.SubgenreName.ToLower() == s.SubgenreName.ToLower())
                    {
                        artistModel.SubgenreID = s.SubgenreID;
                    }
                }

                var artistNames = _context.Artists;
                foreach (var a in artistNames)
                {
                    if (artistModel.ArtistName.ToLower() == a.ArtistName.ToLower())
                    {
                        TempData["message"] = "That artist already exists in the database.";
                        return(View());
                    }
                }

                _context.Add(newArtist);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(artistModel));
        }