public override string ToString(FormatType format, object supplement = null) { bool withoutConstant = SongGenreSplash == null; string splashAndDxData = $"{SongGenreSplash?.Be($"\n分类:{SongGenreSplash}")}" + $"{ToSplashRatingString()?.Be("\n难度:{0}", true)}" + $"{ToSplashConstantString()?.Be("\n定数:{0}", true)}" + $"{ToRatingString()?.Be("\n旧难度:{0}", true)}" + $"{ToConstantString()?.Be("\n旧定数:{0}", true)}"; switch (format) { case FormatType.Brief: return($"{SongId}.{SongTitle}({SongType}) {(withoutConstant ? $"*[{ToSplashRatingString()}]" : $"[{ToSplashConstantString()}]")}"); case FormatType.Detail: return($"{JacketUrl?.Be(new KouImage(JacketUrl, this).ToKouResourceString())}" + //BUG 需要解决翻页可能会使得图片资源字符串裂开的问题 $"{SongId}.{SongTitle} [{SongType}]" + splashAndDxData + Version?.Be($"\n版本:{Version}") + SongArtist?.Be($"\n曲师:{SongArtist}") + SongBpm?.Be($"\nBPM:{SongBpm}") + SongLength?.Be($"\n歌曲长度:{SongLength}") + Remark?.Be($"\n注:{Remark}")); } return(null); }
public override string ToString(FormatType format, object supplement = null) { string constantDesc = GetBriefConstant(); string designerDesc = GetBriefChartDesigner(); string allNotesDesc = GetBriefAllNotes(); switch (format) { case FormatType.Brief: return($"{SongId}.{SongTitle}{constantDesc?.Be($" [{constantDesc}]")}"); case FormatType.Detail: return($"{JacketUrl?.Be(new KouImage(JacketUrl, this).ToKouResourceString())}" + $"{SongId}.{SongTitle}\n" + constantDesc?.Be($"定数:{constantDesc}\n") + Aliases?.Be($"别名:{Aliases.Select(p => p.Alias).ToStringJoin(',')}\n") + SongArtist?.Be($"曲师:{SongArtist}\n") + designerDesc?.Be($"谱师:{designerDesc}\n") + JacketDesigner?.Be($"画师:{JacketDesigner}\n") + SongBpm?.Be($"BPM:{SongBpm}\n") + SongLength?.Be($"歌曲长度:{SongLength}\n") + SongPack?.Be($"曲包:{SongPack.GetKouEnumFirstName().ToTitleCase()}\n") + allNotesDesc?.Be($"总键数:{allNotesDesc}\n")); } return(null); }
public override string ToString(FormatType format, object supplement = null) { switch (format) { case FormatType.Brief: return($"{SongId}.{SongTitle} [{ChartRatingClass} {ChartRating}({ChartConstant})]"); case FormatType.Detail: //获取所有歌曲别名 string allAnotherName = ""; foreach (var item in PluginArcaeaSong2anothername.Where(x => x.SongId == SongId)) { allAnotherName += item.AnotherName.AnotherName + ","; } allAnotherName = allAnotherName.TrimEnd(','); if (allAnotherName.IsNullOrWhiteSpace()) { allAnotherName = null; } return($"{SongId}.{SongTitle} [{ChartRatingClass} {ChartConstant}]\n" + allAnotherName?.Be($"别名:{allAnotherName}\n") + SongArtist?.Be($"曲师:{SongArtist}\n") + JacketDesigner?.Be($"画师:{JacketDesigner}\n") + SongBpm?.Be($"BPM:{SongBpm}\n") + SongLength?.Be($"歌曲长度:{SongLength}\n") + SongPack?.Be($"曲包:{SongPack}\n") + ChartDesigner?.Be($"谱师:{ChartDesigner}\n") + ChartAllNotes?.Be($"note总数:{ChartAllNotes}\n地键:{ChartFloorNotes}\n天键:{ChartSkyNotes}\n蛇:{ChartArcNotes}\n长条:{ChartHoldNotes}")); } return(null); }
public ActionResult DeleteConfirmed(int id) { SongArtist songArtist = db.SongArtists.Find(id); db.SongArtists.Remove(songArtist); db.SaveChanges(); return(RedirectToAction("Index")); }
public async Task <SongArtist> AddSongArtist(SongArtist songArtist) { await _context.SongArtists.AddAsync(songArtist); await _context.SaveChangesAsync(); return(songArtist); }
public IActionResult Create(SongArtist songArtist) { if (!UserIsInRole(UserTypeEnum.Admin)) { return(Unauthorized("You are not in role to permit this action")); } _service.Insert(songArtist); return(Ok()); }
public async Task <int> CreateSongAsync(string songTitle, IList <string> songArtists, string sourceName, string sourceItemId) { if (songTitle == null || string.IsNullOrWhiteSpace(songTitle)) { throw new ArgumentException("Song title should be non-empty.", nameof(songTitle)); } if (songArtists == null || !songArtists.Any()) { throw new ArgumentException("Artists list should be non-empty.", nameof(songArtists)); } songTitle = songTitle.Trim(); // TODO: Merge artist names when similar? var artists = songArtists.Select(x => x.Trim()).Distinct().ToList(); var similarSongs = this.songsRepository.AllWithDeleted().Where(x => x.Name == songTitle).Select(x => new { x.Id, Artists = x.Artists.Select(a => a.Artist.Name) }).ToList(); foreach (var similarSong in similarSongs) { if (!similarSong.Artists.Except(artists).Any() && !artists.Except(similarSong.Artists).Any()) { // Found the same song return(similarSong.Id); } } var sourceId = this.sourcesRepository.All().FirstOrDefault(x => x.Name == sourceName)?.Id; var dbSong = new Song { Name = songTitle, SourceId = sourceId, SourceItemId = sourceItemId }; var dbSongArtists = new List <SongArtist>(); for (var index = 0; index < artists.Count; index++) { var dbArtist = this.artistsRepository.AllWithDeleted().FirstOrDefault(x => x.Name == artists[index]) ?? new Artist { Name = artists[index] }; var dbSongArtist = new SongArtist { Artist = dbArtist, Song = dbSong, Order = index + 1 }; dbSongArtists.Add(dbSongArtist); } dbSong.Artists = dbSongArtists; await this.songsRepository.AddAsync(dbSong); await this.songsRepository.SaveChangesAsync(); return(dbSong.Id); }
public ActionResult Edit([Bind(Include = "Id,SongId,ArtistId")] SongArtist songArtist) { if (ModelState.IsValid) { db.Entry(songArtist).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ArtistId = new SelectList(db.Artists, "Id", "StageName", songArtist.ArtistId); ViewBag.SongId = new SelectList(db.Songs, "Id", "SongTitle", songArtist.SongId); return(View(songArtist)); }
// GET: SongArtists/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SongArtist songArtist = db.SongArtists.Find(id); if (songArtist == null) { return(HttpNotFound()); } return(View(songArtist)); }
// GET: SongArtists/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SongArtist songArtist = db.SongArtists.Find(id); if (songArtist == null) { return(HttpNotFound()); } ViewBag.ArtistId = new SelectList(db.Artists, "Id", "StageName", songArtist.ArtistId); ViewBag.SongId = new SelectList(db.Songs, "Id", "SongTitle", songArtist.SongId); return(View(songArtist)); }
// POST api/SongArtist public HttpResponseMessage PostSongArtist(SongArtist songartist) { if (ModelState.IsValid) { db.SongArtists.Add(songartist); db.SaveChanges(); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, songartist); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = songartist.Id })); return response; } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } }
/// <summary> /// 自动格式化歌曲信息 /// </summary> /// <param name="song"></param> /// <param name="format"></param> /// <returns></returns> public string AutoFormatSong(PluginArcaeaSong song) { if (song == null) { return(null); } string info = $"{song.SongTitle} [{song.ChartRatingClass} {song.ChartConstant}]\n" + (SongArtist.IsNullOrWhiteSpace() ? null : song.SongArtist?.Be($"曲师:{song.SongArtist}\n")) + (JacketDesigner.IsNullOrWhiteSpace() ? null : song.JacketDesigner?.Be($"画师:{song.JacketDesigner}\n")) + (SongBPM.IsNullOrWhiteSpace() ? null : song.SongBpm?.Be($"BPM:{song.SongBpm}\n")) + (SongLength.IsNullOrWhiteSpace() ? null : song.SongLength?.Be($"歌曲长度:{ song.SongLength}\n")) + //(song.Song_pack?.Be($"曲包:{song.Song_pack}\n")) + (ChartDesigner.IsNullOrWhiteSpace() ? null : song.ChartDesigner?.Be($"谱师:{song.ChartDesigner}\n")) + (NotesCount.IsNullOrWhiteSpace() ? null : song.ChartAllNotes?.Be($"note总数:{song.ChartAllNotes}\n")); return(info.ToString().Trim()); }
public int CreateSong(string songTitle, IList <string> artists) { songTitle = songTitle.Trim(); List <string> songArtists = artists.Select(x => x.Trim()).Distinct().ToList(); var similarSongs = this.context.Songs .Where(x => x.Name == songTitle) .Select(x => new { x.Id, Artists = x.Artists.Select(a => a.Artist.Name) }).ToList(); foreach (var song in similarSongs) { if (!song.Artists.Except(songArtists).Any() && !songArtists.Except(song.Artists).Any()) { return(song.Id); } } Song dbSong = new Song { Name = songTitle, CreatedOn = DateTime.UtcNow }; List <SongArtist> dbSongArtists = new List <SongArtist>(); for (int i = 0; i < songArtists.Count; i++) { Artist dbArtist = this.context.Artists.FirstOrDefault(a => a.Name == songArtists[i]) ?? new Artist { Name = songArtists[i], CreatedOn = DateTime.UtcNow }; SongArtist dbSongArtist = new SongArtist { Artist = dbArtist, Song = dbSong }; dbSongArtists.Add(dbSongArtist); } dbSong.Artists = dbSongArtists; this.context.Songs.Add(dbSong); this.context.SaveChanges(); return(dbSong.Id); }
public bool Update(SongArtist songArtist) { _repository.Update(songArtist); return(_repository.SaveChanges()); }
public bool Insert(SongArtist songArtist) { _repository.Create(songArtist); return(_repository.SaveChanges()); }
void ReleaseDesignerOutlets() { if (BackgroundView != null) { BackgroundView.Dispose(); BackgroundView = null; } if (CloseButton != null) { CloseButton.Dispose(); CloseButton = null; } if (ContentView != null) { ContentView.Dispose(); ContentView = null; } if (FavouriteSongsCollectionView != null) { FavouriteSongsCollectionView.Dispose(); FavouriteSongsCollectionView = null; } if (FavouritesTitle != null) { FavouritesTitle.Dispose(); FavouritesTitle = null; } if (FooterView != null) { FooterView.Dispose(); FooterView = null; } if (MaskView != null) { MaskView.Dispose(); MaskView = null; } if (NextLabel != null) { NextLabel.Dispose(); NextLabel = null; } if (PlayerBlurScreen != null) { PlayerBlurScreen.Dispose(); PlayerBlurScreen = null; } if (PlayingSongCoverImageView != null) { PlayingSongCoverImageView.Dispose(); PlayingSongCoverImageView = null; } if (ProgressView != null) { ProgressView.Dispose(); ProgressView = null; } if (SongArtist != null) { SongArtist.Dispose(); SongArtist = null; } if (SongsQueueTitle != null) { SongsQueueTitle.Dispose(); SongsQueueTitle = null; } if (SongsQueueView != null) { SongsQueueView.Dispose(); SongsQueueView = null; } if (SongTitle != null) { SongTitle.Dispose(); SongTitle = null; } if (SubContentViewClipped != null) { SubContentViewClipped.Dispose(); SubContentViewClipped = null; } if (SunContentView != null) { SunContentView.Dispose(); SunContentView = null; } if (TableView != null) { TableView.Dispose(); TableView = null; } }
public static Song FromDataRecord(IDataRecord dr) { Song o = new Song(); int ordinal; o.Id = dr.GetInt32(dr.GetOrdinal("Id")); try { o.ChartRank = dr.GetInt64(dr.GetOrdinal("ChartRank")); } catch (IndexOutOfRangeException iorx) { // Ignore these. } o.Fullname = dr.GetString(dr.GetOrdinal("Fullname")); o.Title = dr.GetString(dr.GetOrdinal("Title")); ordinal = dr.GetOrdinal("ArtistsXML"); if (!dr.IsDBNull(ordinal)) { o.Artists = new List <SongArtist>(); XDocument doc = XDocument.Parse("<root>" + dr.GetString(ordinal) + "</root>"); foreach (XElement element in doc.Root.Descendants()) { Artist artist = new Artist() { Id = (int)element.Attribute("Id"), Fullname = (string)element.Attribute("Fullname"), Title = (string)element.Attribute("Title") }; SongArtist sa = new SongArtist() { Artist = artist, RoleSlug = (string)element.Attribute("RoleSlug") }; o.Artists.Add(sa); } } ordinal = dr.GetOrdinal("GenreId"); if (!dr.IsDBNull(ordinal)) { Genre genre = new Genre(); genre.Id = dr.GetInt32(ordinal); genre.Fullname = dr.GetString(dr.GetOrdinal("GenreFullname")); genre.Title = dr.GetString(dr.GetOrdinal("GenreTitle")); o.Genre = genre; } //public Decimal[] Ranks { get; set; } ordinal = dr.GetOrdinal("Score"); o.Score = dr.IsDBNull(ordinal) ? 0 : dr.GetDecimal(ordinal); ordinal = dr.GetOrdinal("DebutRank"); o.DebutRank = dr.IsDBNull(ordinal) ? 0 : dr.GetDecimal(ordinal); ordinal = dr.GetOrdinal("PeakRank"); o.PeakRank = dr.IsDBNull(ordinal) ? 0 : dr.GetDecimal(ordinal); ordinal = dr.GetOrdinal("Duration"); o.Duration = dr.IsDBNull(ordinal) ? 0 : dr.GetInt32(ordinal); ordinal = dr.GetOrdinal("DebutDateFullname"); if (!dr.IsDBNull(ordinal)) { o.DebutDate = new DebutPeriod(dr.GetString(ordinal)); } ordinal = dr.GetOrdinal("Tags"); o.Tags = dr.IsDBNull(ordinal) ? "" : dr.GetString(ordinal); return(o); }
// PUT api/SongArtist/5 public HttpResponseMessage PutSongArtist(int id, SongArtist songartist) { if (!ModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } if (id != songartist.Id) { return Request.CreateResponse(HttpStatusCode.BadRequest); } db.Entry(songartist).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException ex) { return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); } return Request.CreateResponse(HttpStatusCode.OK); }