//選択した商品を返却 ボタン
        protected void Button3_Click(object sender, EventArgs e)
        {
            if (Do_You_Have_Any_Unreturned_DVDs())
            {
                //未返却のDVDがある場合

                List <int> unreturned_id     = new List <int>();
                string     str_unreturned_id = Session["unreturned_id"].ToString();
                //Session.Remove("unreturned_id");
                string[] arr = str_unreturned_id.Split(',');

                //選択されたdvdのIDを格納します。重複したIDが入っている可能性がありますが正常です。
                List <string> selected_dvd_id = new List <string>();
                List <string> selected_id     = new List <string>();
                int           dvd_num         = CheckBoxList1.Items.Count;
                for (int i = 0; i < dvd_num; i++)
                {
                    if (CheckBoxList1.Items[i].Selected)
                    {
                        //選択されていたら

                        //選択されたレンタルidを抽出
                        selected_id.Add(arr[i]);

                        //選択されたdvdの名前をidに変換します
                        string name_to_id = C_Sasaki_Common.Convert_DVD_Name_To_ID(CheckBoxList1.Items[i].Value);

                        //格納。
                        selected_dvd_id.Add(name_to_id);
                    }
                }
                //1つ以上選択されたDVDがあるか
                if (selected_dvd_id.Count != 0)
                {
                    Label3.Text = "";
                    Session.Remove("confirmation_error");

                    List <string> stock_update_date_time_storehouse;
                    //dvd_idからUpdate_Date_Timeを求める
                    stock_update_date_time_storehouse = C_Sasaki_Common.Get_Stock_Update_Date_Time_For_DVD_Id(selected_dvd_id);

                    List <string> rental_update_date_time_storehouse;
                    //レンタルDBのIdからUpdate_Date_Timeを求める
                    rental_update_date_time_storehouse = C_Sasaki_Common.Get_Rental_Update_Date_Time_For_Rental_Id(selected_id);


                    //返却管理画面で返却を押した時のUpdateDateTimeを格納。
                    Session["management_time_stock_update_datetime"]  = string.Join(",", stock_update_date_time_storehouse);
                    Session["management_time_rental_update_datetime"] = string.Join(",", rental_update_date_time_storehouse);

                    Session["Member_ID"]     = m_member_id;
                    Session["Select_DVD_ID"] = string.Join(",", selected_dvd_id);
                    Session["Selected_ID"]   = string.Join(",", selected_id);
                    Response.Redirect("/sasaki_masayuki/101_return_confirmation/return_confirmation.aspx");
                }
            }
        }
Beispiel #2
0
        protected void Button2_Click(object sender, EventArgs e)
        {
            // 確定ボタン
            if (Session["DvdID"] != null)
            {
                //セッションの中身がnullじゃない場合

                string dvd_id = null;
                dvd_id = Session["DvdID"].ToString();
                string[] dvd_id_arr = dvd_id.Split(',');
                foreach (string i in dvd_id_arr)
                {
                    DvdID.Add(int.Parse(i));
                }
            }

            InsertDateTime = DateTime.Now;

            string connection_csring = null;

            C_Sasaki_Common.Generate_A_Strin_To_Connect_To_The_SQL(ref connection_csring);
            SqlConnection sql_connection = new SqlConnection(connection_csring);

            sql_connection.Open();
            SqlCommand sqlcommand = sql_connection.CreateCommand();

            // Rentalの最後のIDを取得
            string max_id = null;

            C_Sasaki_Common.Select_SQL("Select MAX(Id) as Id  From [dbo].[Rental]", "Id", ref max_id);
            Id = int.Parse(max_id);

            int limit = DvdID.Count();

            // ログインしているユーザーIDを持ってくる
            int InsertUserID = C_Sasaki_Common.Login_Name_To_Id(Request);

            // レンタル画面時のUpdateDateTimeを格納
            string RentalForm_Stock_UpdateDateTime_str = Session["RentalForm_Stock_UpdateDateTime"].ToString();

            string[] RentalForm_UpdateDateTime = RentalForm_Stock_UpdateDateTime_str.Split(',');

            List <string> Stock_Quantity_str = new List <string>();

            C_Sasaki_Common.Select_SQL("Select * From [dbo].[Stock] ", "Quantity", Stock_Quantity_str);


            // レンタル確認画面時のUpdateDateTimeを格納
            List <string> Confirm_Stock_UpdateDateTime = C_Sasaki_Common.Get_Stock_Update_Date_Time_For_DVD_Id(DvdID_str);

            //datetimeが一致するか確認
            //一致していない場合falseがはいるbool
            bool b_sync = true;

            //stockの数を比較の回数とする
            int check_num = Confirm_Stock_UpdateDateTime.Count;

            for (int i = 0; i < check_num; i++)
            {
                //管理画面時の更新日時と確認時の更新日時が一致しているかの判定をしていく


                if (RentalForm_UpdateDateTime[i] != Confirm_Stock_UpdateDateTime[i])
                {
                    //ストックの更新日時が一致していない場合

                    b_sync = false;
                }
            }

            if (b_sync)
            {
                // 日時を求める
                DateTime dt = DateTime.Now;

                for (int i = 0; i < limit; i++)
                {
                    // レンタルしたものをインサートする
                    sqlcommand.CommandText = Up_To_Insert_SQL() +
                                             "( "
                                             + (Id + i + 1) + ","                                                   // ID
                                             + MemberID + ","                                                       // MemberID
                                             + DvdID[i] + ","                                                       // DVDID
                                             + 0 + ","                                                              // IsReturned
                                             + "'" + InsertDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'" + "," // InsertDateTime
                                             + InsertUserID + ","                                                   // InsertUserID ログインユーザーID
                                             + "NULL" + ","                                                         // UpdateDateTime
                                             + "NULL" +                                                             // UpdateDateUserID
                                             " )";

                    //StockDBの処理
                    {
                        //更新日時を更新
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Stock] SET UpdateDateTime = '" + dt.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' Where DVDId = " + DvdID[i]);
                        //更新者を現在のユーザーに設定
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Stock] SET UpdateUserId = " + InsertUserID + " Where DVDId = " + DvdID[i]);

                        if (DvdID[i] != 11)
                        {
                            if (Stock_Quantity_str[DvdID[i] - 1] != "0")
                            {
                                C_Sasaki_Common.Update_SQL("Update[dbo].[Stock] SET Quantity -= 1 Where DVDId = " + DvdID[i]);
                            }
                        }
                        else
                        {
                            if (Stock_Quantity_str[9] != "0")
                            {
                                C_Sasaki_Common.Update_SQL("Update[dbo].[Stock] SET Quantity -= 1 Where DVDId = " + DvdID[i]);
                            }
                        }
                    }

                    sqlcommand.ExecuteNonQuery();
                }
            }
            else
            {
                //一致していない
                Session["Rental_Comfirm_error"] = "レンタル確認時にエラー(競合)が発生しました。もう一度やり直してください。";
            }
            sqlcommand.Dispose();

            sql_connection.Close();
            sql_connection.Dispose();

            Response.Redirect("RentalForm.aspx");
        }
        //確定ボタン
        protected void Button2_Click(object sender, EventArgs e)
        {
            //返却管理画面時のUpdate_datetimeの取り出し。
            string management_time_stock_update_datetime_str  = Session["management_time_stock_update_datetime"].ToString();
            string management_time_rental_update_datetime_str = Session["management_time_rental_update_datetime"].ToString();

            string[] management_time_stock_update_datetime  = management_time_stock_update_datetime_str.Split(',');
            string[] management_time_rental_update_datetime = management_time_rental_update_datetime_str.Split(',');


            //dvdidの文字列取得
            String selected_dvd_id_str = Session["Select_DVD_ID"].ToString();

            //,で区切られたdvdidを分割
            string[] selected_dvd_id_arr = selected_dvd_id_str.Split(',');
            //リストに変換
            List <string> selected_dvd_id = new List <string>();

            selected_dvd_id.AddRange(selected_dvd_id_arr);

            //選択されたIDの取得
            string selected_id_str = Session["Selected_ID"].ToString();

            //Session.Remove("Selected_ID");
            //選択されたIDを配列に格納
            string[]      selcted_id_arr = selected_id_str.Split(',');
            List <string> selected_id    = new List <string>();

            selected_id.AddRange(selcted_id_arr);


            //返却確認画面時のUpdate_datetimeの取り出し
            List <string> confirmation_time_stock_update_datetime  = C_Sasaki_Common.Get_Stock_Update_Date_Time_For_DVD_Id(selected_dvd_id);
            List <string> confirmation_time_rental_update_datetime = C_Sasaki_Common.Get_Rental_Update_Date_Time_For_Rental_Id(selected_id);

            //datetimeが一致するか確認
            //一致していない場合falseがはいるbool
            bool b_sync = true;
            //stockの数を比較の回数とする
            int check_num = confirmation_time_stock_update_datetime.Count;

            for (int i = 0; i < check_num; i++)
            {
                //管理画面時の更新日時と確認時の更新日時が一致しているかの判定をしていく


                if (management_time_stock_update_datetime[i] != confirmation_time_stock_update_datetime[i])
                {
                    //ストックの更新日時が一致していない場合

                    b_sync = false;
                }

                if (management_time_rental_update_datetime[i] != confirmation_time_rental_update_datetime[i])
                {
                    //レンタルの更新日時が一致していない場合

                    b_sync = false;
                }
            }

            if (b_sync)
            {
                //一致している場合

                int user_id        = C_Sasaki_Common.Login_Name_To_Id(Request);
                int return_dvd_num = return_dvd_id_list.Count();
                for (int i = 0; i < return_dvd_num; i++)
                {
                    //日付を求める
                    DateTime dt = DateTime.Now;

                    //StockDBの処理
                    {
                        //更新日時を更新
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Stock] SET UpdateDateTime = '" + dt.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' Where DVDId = " + return_dvd_id_list[i]);
                        //更新者を現在のユーザーに設定
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Stock] SET UpdateUserId = " + user_id + " Where DVDId = " + return_dvd_id_list[i]);
                        //Stockを増やす。
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Stock] SET Quantity += 1 Where DVDId = " + return_dvd_id_list[i]);
                    }

                    //RentalDBの処理
                    {
                        //更新日時を更新
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Rental] SET UpdateDateTime = '" + dt.ToString("yyyy-MM-dd HH:mm:ss.fff") + "' Where Id = " + selected_id[i]);
                        //更新者を現在のユーザーに設定
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Rental] SET UpdateUserId = " + user_id + " Where Id = " + selected_id[i]);
                        //RentalDBのIDと選択されたIDが一致する物のIsReturnedフラグをtrueに設定。(※一つだけ)
                        C_Sasaki_Common.Update_SQL("Update [dbo].[Rental] SET IsReturned = 1 Where " + selected_id[i] + " =  Id");
                    }
                }
            }
            else
            {
                //一致していない
                Session["confirmation_error"] = "返却確認時にエラー(競合)が発生しました。もう一度やり直してください。";
            }

            Termination_Process();
            Redirect_Regression_Management();
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            // テキストボックスに入力されているメンバーIDを取得
            string        MemberIDText   = GetMemberId_TextBox();
            List <string> MemberID_Check = new List <string>();
            bool          ID_Check       = false;

            C_Sasaki_Common.Select_SQL("Select * From [dbo].[Member] ", "Id", MemberID_Check)
            ;
            for (int i = 0; i < MemberID_Check.Count; i++)
            {
                // 入力されたメンバーIDとDB内のメンバーIDを比較
                if (MemberID_Check[i] == MemberIDText)
                {
                    ID_Check = true;
                    break;
                }
            }

            // テキストボックス内に入力されているかつDB内IDと一致していれば次ページに進む
            if (MemberIDText != "" && ID_Check == true)
            {
                Label1.Text      = "";
                Label4.Text      = "";
                Label2.ForeColor = Color.Black;
                Session.Remove("Rental_Comfirm_error");

                int count = 1;                // DVDIDカウント

                // チェックが入っているものをSessionに入れる(力技)
                foreach (ListItem li in CheckBoxList1.Items)
                {
                    // チェックが付いているものにデータを入れる
                    if (li.Selected)
                    {
                        switch (count)
                        {
                        case 1:
                            Session["DVD1"] = li.Text;
                            break;

                        case 2:
                            Session["DVD2"] = li.Text;
                            break;

                        case 3:
                            Session["DVD3"] = li.Text;
                            break;

                        case 4:
                            Session["DVD4"] = li.Text;
                            break;

                        case 5:
                            Session["DVD5"] = li.Text;
                            break;

                        case 6:
                            Session["DVD6"] = li.Text;
                            break;

                        case 7:
                            Session["DVD7"] = li.Text;
                            break;

                        case 8:
                            Session["DVD8"] = li.Text;
                            break;

                        case 9:
                            Session["DVD9"] = li.Text;
                            break;

                        case 10:
                            Session["DVD10"] = li.Text;
                            break;

                        case 11:
                            Session["DVD11"] = li.Text;
                            break;

                        case 12:
                            Session["DVD12"] = li.Text;
                            break;
                        }
                    }
                    // チェックがついていないものにはなにもいれない
                    else
                    {
                        switch (count)
                        {
                        case 1:
                            Session.Remove("DVD1");
                            break;

                        case 2:
                            Session.Remove("DVD2");
                            break;

                        case 3:
                            Session.Remove("DVD3");
                            break;

                        case 4:
                            Session.Remove("DVD4");
                            break;

                        case 5:
                            Session.Remove("DVD5");
                            break;

                        case 6:
                            Session.Remove("DVD6");
                            break;

                        case 7:
                            Session.Remove("DVD7");
                            break;

                        case 8:
                            Session.Remove("DVD8");
                            break;

                        case 9:
                            Session.Remove("DVD9");
                            break;

                        case 10:
                            Session.Remove("DVD10");
                            break;

                        case 11:
                            Session.Remove("DVD11");
                            break;

                        case 12:
                            Session.Remove("DVD12");
                            break;
                        }
                    }

                    count++;
                }


                List <string> Dvdid = new List <string>();
                for (int i = 1; i <= 12; i++)
                {
                    if (Session["DVD" + i.ToString()] != null)
                    {
                        if (Session["DVD" + i.ToString()].ToString() != "")
                        {
                            Dvdid.Add(C_Sasaki_Common.Convert_DVD_Name_To_ID(Session["DVD" + i.ToString()].ToString()));
                        }
                    }
                }
                Session["dvdid"] = string.Join(",", Dvdid);

                List <string> Stock_UpdateDateTime;
                Stock_UpdateDateTime = C_Sasaki_Common.Get_Stock_Update_Date_Time_For_DVD_Id(Dvdid);
                Session["RentalForm_Stock_UpdateDateTime"] = string.Join(",", Stock_UpdateDateTime);

                if (Dvdid.Count != 0)
                {
                    Session["MemberID"] = MemberIDText;
                    Response.Redirect("RentalConfirm.aspx");
                }
                else
                {
                    Label3.ForeColor = Color.Red;
                }
            }
            else if (MemberIDText == "")
            {
                Label4.Text      = "会員IDが空欄です。入力してください。";
                Label2.ForeColor = Color.Red;
                Label4.ForeColor = Color.Red;
            }
            else if (ID_Check == false)
            {
                Label4.Text      = "入力された会員IDは見つかりませんでした。";
                Label2.ForeColor = Color.Red;
                Label4.ForeColor = Color.Red;
            }
        }