void Write_XML() { try { // Write to the Isolated Storage ListHistory = new List <HistorySong>(); for (int i = 0; i < List_NowPlaying.Count; i++) { HistorySong HS = new HistorySong(); HS.CopySong(List_NowPlaying[i]); HS.Current_Index = Current_NowPlaying; ListHistory.Add(HS); } XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); xmlWriterSettings.Indent = true; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("DataHistory.xml", FileMode.Create)) { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(List <HistorySong>)); using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings)) { serializer.Serialize(xmlWriter, ListHistory); } } } } catch { MessageBox.Show("Có lổi khi lưu vào dữ liệu lịch sử hệ thống!"); } }
public IActionResult SearchByHistory([FromBody] HistorySong historySong) { try { using AvailableSongContext availableSongContext = CreateAvailableSongContext(out DbSet <AvailableSong> availableSongs); // ID で検索 AvailableSong?result = availableSongs.SingleOrDefault(x => x.Id == historySong.AvailableSongId); if (result == null) { // フルパスで検索 // 実際の運用時は外部アプリケーションが予約可能曲データベースを作成することが想定され、AvailableSongId が変更されている場合も想定されるため、パスでも検索する result = availableSongs.FirstOrDefault(x => x.Path == historySong.Path); } if (result == null) { // ファイル名で検索 result = availableSongs.FirstOrDefault(x => EF.Functions.Like(x.Path, $"%\\{Path.GetFileName(historySong.Path)}%")); } if (result == null) { return(NotAcceptable()); } return(File(JsonSerializer.SerializeToUtf8Bytes(result), ServerConstants.MIME_TYPE_JSON)); } catch (Exception excep) { Debug.WriteLine("曲履歴検索サーバーエラー:\n" + excep.Message); Debug.WriteLine(" スタックトレース:\n" + excep.StackTrace); return(InternalServerError()); } }
// ==================================================================== // public メンバー関数 // ==================================================================== // -------------------------------------------------------------------- // 履歴で曲を検索 // <返値> (成功した場合は空文字列、エラーの場合はエラーメッセージ, 曲) // -------------------------------------------------------------------- public async Task <(String, AvailableSong?)> SearchByHistoryAsync(HistorySong historySong) { (HttpStatusCode statusCode, AvailableSong? availableSong) = await PostAndGetFromJsonAsync <AvailableSong, HistorySong>(YbdConstants.URL_HISTORY, historySong); return(statusCode switch { HttpStatusCode.NotAcceptable => ("指定された曲が見つかりません。", availableSong), _ => (DefaultErrorMessage(statusCode), availableSong), });