/// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
            }
        }