/// <summary> /// 引数のフォトの所属アルバムを変更する /// ※参照渡しなので返り値を保存しなくても書き換わる /// </summary> /// <param name="photo"></param> /// <param name="newAlbumName"></param> /// <returns></returns> public Photo Execute(Photo photo, string newAlbumName) { Func <IQueryable <Album>, Album> query = allAlbums => { foreach (Album album in allAlbums) { if (album.Name == newAlbumName) { return(album); } } return(null); }; Keyword newKeyword = keywordRepository.Find(query); if (newAlbum != null) { photo.IsAssignedTo(newAlbum); } photoRepository.Store(photo); return(photo); }
/// <summary> /// アルバムの登録 /// </summary> /// <param name="albumName"></param> /// <returns>終了状態を数値で返す</returns> public int Execute(string albumName) { IEnumerable <Keyword> result = keywordRepository.Find((IQueryable <Keyword> keywords) => (from p in keywords where p.KeyText == keytext select p)); if (albumName != "") { // 登録済みのアルバム名でない場合 if (result == null || result.Count() == 0) { var keyword = Keyword.Create(keytext); keywordRepository.Store(keyword); // 正常終了 return(0); } else { // 既存のアルバム名 return(2); } } else { // アルバム名未入力 return(1); } }
/// <summary> /// 引数のフォトのキーワードを変更する /// ※参照渡しなので返り値を保存しなくても書き換わる /// </summary> /// <param name="photo"></param> /// <param name="keytext"></param> /// <returns></returns> public Photo Execute(Photo photo, string keytext) { //入力されたキーワードの文字数が100文字を超えていた場合 if (keytext.Length > 100) { throw new ArgumentOutOfRangeException("入力されたkeywordの文字数が制限を超えています"); } //Photoインスタンスが入力されていない場合 if (photo == null) { throw new ArgumentNullException("写真が選択されていません"); } //クエリ Func <IQueryable <Keyword>, IQueryable <Keyword> > query = allKeywords => { List <Keyword> keys = new List <Keyword>(); foreach (Keyword keyword in allKeywords) { if (keyword.KeyText == keytext) { keys.Add(keyword); } } return(keys.AsQueryable()); }; //入力されたkeywordと等しいKeywordインスタンスを取得 Keyword newKeyword = keywordRepository.Find(query).First(); //Keywordインスタンスを取得できた場合 if (newKeyword != null) { photo.IsAssignedTo(newKeyword); photoRepository.Store(photo); } //出来なかった場合 else { return(null); } return(photo); }
/// <summary> /// キーワードの登録 /// </summary> /// <param name="keytext"></param> /// <returns>終了状態を数値で返す</returns> public int Execute(string keytext) { //登録するキーワードの文字数が100文字を超えていた場合 if (keytext.Length > 100) { throw new ArgumentOutOfRangeException("入力されたkeywordの文字数が制限を超えています"); } //キーワードが入力されていない場合(初期化無しを想定) if (keytext == null) { throw new ArgumentNullException("keywordが入力されていません"); } //DBに既にキーワードが格納されているか IEnumerable <Keyword> result = keywordRepository.Find((IQueryable <Keyword> keywords) => (from p in keywords where p.KeyText == keytext select p)); if (keytext != "") { // 登録済みのキーワード名でない場合 if (result == null || result.Count() == 0) { var keyword = Keyword.Create(keytext); keywordRepository.Store(keyword); // 正常終了 return(0); } else { // 既存のアルバム名 return(2); } } else { // アルバム名未入力 return(1); } }