public void LotteryRegistration(InviteHistoryEntity inviteEntity)
        {
            // 申し込みビジネスロジック用のDao(DataAccessObject)のインスタンス applicationDao を生成
            ApplicationDao applicationDao = new ApplicationDao();

            // applicationDao のアンケート結果をデータベースに登録する処理 ApplicationInsertExecute へ resultEntity を渡し実行
            applicationDao.ApplicationInsertExecute(inviteEntity);
        }
        public void Changecoin(InviteHistoryEntity inviteEntity, int inviteusercoin)
        {
            // ログインビジネスロジック用のDao(DataAccessObject)のインスタンス LoginDao を生成
            ApplicationDao ApplicationDao = new ApplicationDao();

            // inviteEntityの値を元にコインの変更を行う
            ApplicationDao.ChangeCoin(inviteEntity, inviteusercoin);
        }
        public DataTable LotterySelect(InviteHistoryEntity inviteEntity)
        {
            // ログインビジネスロジック用のDao(DataAccessObject)のインスタンス LoginDao を生成
            ApplicationDao ApplicationDao = new ApplicationDao();

            // LoginDao のログイン内容をデータベースに登録する処理 LoginInsertExecute へ loginEntity を渡し実行
            return(ApplicationDao.GetLotteryHistory(inviteEntity));
        }
        public DataTable GetLotteryHistory(InviteHistoryEntity inviteEntity)
        {
            var table = new DataTable();

            // データベースから抜出処理
            using (SqlConnection connection = new SqlConnection()) // データベースへ接続すためのインスタンスconnectionを生成
            {
                // データベースへ接続するためのプロパティを設定。
                connection.ConnectionString = connectionString;
                // データベースへの接続を開始。以降データベースへの操作が可能となる。
                connection.Open();

                using (SqlCommand command = new SqlCommand()) // データベースへ処理の指示をだすインスタンスcommandを作成
                {
                    // commandが操作をする先の接続を設定
                    command.Connection = connection;
                    // 実際にデータベースに実行するSql文を設定
                    command.CommandText = LotterySelectsSql;
                    // 入力項目毎にSqlに渡すパラメータのインスタンスを作成
                    SqlParameter id = new SqlParameter("id", SqlDbType.Int);     //nameをデータベース上の定義をvarchar型として

                    // 作成したパラメータに回答してもらった内容(引数:resultEntityの内容)を格納
                    id.Value = inviteEntity.invitedUser;

                    // 作成したパラメータのインスタンスを実際にcommandに追加
                    // これでSqlファイルの@~が変数が渡したパラメータに置き換えられる
                    command.Parameters.Add(id);

                    using (SqlTransaction transaction = connection.BeginTransaction()) // connectionよりトランザクション(データベースのセーブポイント)を作成
                    {
                        command.Transaction = transaction;
                        //commandに用意した処理を実行
                        try
                        {
                            //とりあえずデータベースに処理を流してみて
                            //command.ExecuteNonQuery();
                            //成功したら保存
                            //transaction.Commit();
                            var adapter = new SqlDataAdapter(command);
                            adapter.Fill(table);
                        }
                        catch (Exception e)
                        {
                            //失敗したらトランザクションを作ったところまで戻す
                            if (transaction != null)
                            {
                                transaction.Rollback();
                            }
                            //発生したException(エラー)を呼び出し元に返す
                            throw;
                        }
                    }
                }
            }

            return(table);
        }
        // データベースへの接続プロパティを用意
        // Data Source :サーバ名やIP
        // Catalog     :データベース名
        // User Id     :データベース接続ユーザID
        // Password    :ユーザのログインパスワード
        //private const string connectionString = @"Data Source=192.168.183.128;Initial Catalog=SAMPLE;Persist Security Info=True;User Id=sa;Password=Welbox123";

        // データベースへ申し込み内容を保存するメソッド
        public void ApplicationInsertExecute(InviteHistoryEntity inviteEntity)
        {
            // データベースへの登録処理
            using (SqlConnection connection = new SqlConnection()) // データベースへ接続すためのインスタンスconnectionを生成
            {
                // データベースへ接続するためのプロパティを設定。
                connection.ConnectionString = connectionString;
                // データベースへの接続を開始。以降データベースへの操作が可能となる。
                connection.Open();

                using (SqlCommand command = new SqlCommand()) // データベースへ処理の指示をだすインスタンスcommandを作成
                {
                    // commandが操作をする先の接続を設定
                    command.Connection = connection;
                    // 実際にデータベースに実行するSql文を設定
                    command.CommandText = ApplicationInsertSql;
                    // 入力項目毎にSqlに渡すパラメータのインスタンスを作成
                    SqlParameter inputuserid = new SqlParameter("inputUserId", SqlDbType.Int); //dateをデータベース上の定義をvarchar型として
                    SqlParameter loginuserid = new SqlParameter("loginUserId", SqlDbType.Int); //nameをデータベース上の定義をvarchar型として
                    SqlParameter coin        = new SqlParameter("coin", SqlDbType.Int);        //nameをデータベース上の定義をvarchar型として

                    // 作成したパラメータに回答してもらった内容(引数:resultEntityの内容)を格納
                    inputuserid.Value = inviteEntity.inviteUser;
                    loginuserid.Value = inviteEntity.invitedUser;
                    coin.Value        = inviteEntity.coin;

                    // 作成したパラメータのインスタンスを実際にcommandに追加
                    // これでSqlファイルの@~が変数が渡したパラメータに置き換えられる
                    command.Parameters.Add(inputuserid);
                    command.Parameters.Add(loginuserid);
                    command.Parameters.Add(coin);

                    using (SqlTransaction transaction = connection.BeginTransaction()) // connectionよりトランザクション(データベースのセーブポイント)を作成
                    {
                        command.Transaction = transaction;
                        //commandに用意した処理を実行
                        try
                        {
                            //とりあえずデータベースに処理を流してみて
                            command.ExecuteNonQuery();
                            //成功したら保存
                            transaction.Commit();
                        }catch (Exception e)
                        {
                            //失敗したらトランザクションを作ったところまで戻す
                            if (transaction != null)
                            {
                                transaction.Rollback();
                            }
                            //発生したException(エラー)を呼び出し元に返す
                            throw;
                        }
                    }
                }
            }
        }
        protected void Button_Click2(object sender, EventArgs e)
        {
            InviteHistoryEntity inviteEntity = new InviteHistoryEntity();
            var a = (string)Session["id"];
            ApplicationBusiness applicationBusiness = new ApplicationBusiness();

            // applicationBusinessの申し込み結果の登録ロジック ApplicationRegistration に resultEntity を渡し実行

            inviteEntity.invitedUser = int.Parse(a); //自分のID獲得
            var mytable = applicationBusiness.Selecte(inviteEntity);

            if (mytable.Rows.Count == 4) //自分が4人招待した
            {
                var lottable = applicationBusiness.LotterySelect(inviteEntity);
                if (lottable.Rows.Count == 0)
                {
                    Response.Redirect("./ResultPage.aspx");
                }
                else
                {
                    Response.Redirect("./Ivent_error.aspx");
                }
            }
        }
        // 「送信」ボタンを押下した時の処理
        protected void Button_Click(object sender, EventArgs e)
        {
            error1.Visible = false;

            // 申込内容を保持するオブジェクトのインスタンスを生成
            ApplicationEntity   resultEntity = new ApplicationEntity();
            InviteHistoryEntity inviteEntity = new InviteHistoryEntity();
            int inviteid       = 0;
            int inviteusercoin = 0;
            var a = (string)Session["id"];

            // 申込内容をresultEntityのメンバに格納
            if (!TextBox1.Text.Trim().Equals(""))
            {
                inviteid = int.Parse(TextBox1.Text);
            }

            // エラーメッセージが表示されていない = 入力欄に不備が無い
            if (!error1.Visible)
            {
                // 申し込み画面のBusinessLogic(計算・加工処理・実施)のインスタンス applicationBusiness を生成
                ApplicationBusiness applicationBusiness = new ApplicationBusiness();



                // applicationBusinessの申し込み結果の登録ロジック ApplicationRegistration に resultEntity を渡し実行

                var table = applicationBusiness.Selects(inviteid);
                inviteEntity.invitedUser = int.Parse(a);                  //自分のID獲得
                var mytable = applicationBusiness.Selected(inviteEntity); //自分が招待されたことがあるか確認

                if (mytable.Rows.Count == 0)                              //自分が招待されたことが無い
                {
                    // 入力されたユーザID
                    if (table.Rows.Count != 0)
                    {
                                               //入力した人が存在している
                        {
                            inviteEntity.inviteUser = (int)table.Rows[0][0];
                            inviteusercoin          = (int)table.Rows[0][3];
                            // 入力したユーザID

                            var inviteHistoryTable = applicationBusiness.InvitehistorySelect(inviteEntity.inviteUser);

                            //入力した相手が4人以上招待していない && 入力した相手が自分ではない
                            if (inviteHistoryTable.Rows.Count < 4 && inviteEntity.inviteUser != inviteEntity.invitedUser)
                            {
                                inviteEntity.coin = (inviteHistoryTable.Rows.Count + 1) * 100;
                                inviteusercoin   += inviteEntity.coin;
                                applicationBusiness.ApplicationRegistration(inviteEntity);
                                applicationBusiness.Changecoin(inviteEntity, inviteusercoin);

                                // 完了画面ページへ遷移する
                                Response.Redirect("./Ivented_user.aspx");
                            }
                        }
                    }


                    Response.Redirect("./error_user.aspx");
                }
                else //招待されたことがある
                {
                    // エラーメッセージを表示する
                    error1.Visible = true;
                }
            }
        }