Пример #1
0
        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!"); }
        }
Пример #2
0
        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());
            }
        }
Пример #3
0
        // ====================================================================
        // 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),
            });