private void btnDeposit_Click(object sender, EventArgs e)       //예금 계좌 조회
        {
            dgvMember2.Columns.Clear();

            CommonUtil.AddGridTextColumn(dgvMember2, "계좌 번호", "DAccountNum", 120);
            CommonUtil.AddGridTextColumn(dgvMember2, "생성 날짜", "DateCreated", 120);
            CommonUtil.AddGridTextColumn(dgvMember2, "고객 번호", "CustomerNum");
            CommonUtil.AddGridTextColumn(dgvMember2, "고객 이름", "CustomerName");
            CommonUtil.AddGridTextColumn(dgvMember2, "계좌 종류", "KindOfAcc");
            CommonUtil.AddGridTextColumn(dgvMember2, "예금액", "AmountOfDeposit");
            CommonUtil.AddGridTextColumn(dgvMember2, "출금 계좌", "OutAccount");
            CommonUtil.AddGridTextColumn(dgvMember2, "출금 계좌 비밀번호", "OutAccountPwd", 150);
            CommonUtil.AddGridTextColumn(dgvMember2, "비밀번호", "NewPwd");
            CommonUtil.AddGridTextColumn(dgvMember2, "현재 잔액", "CurrentMoney");
            CommonUtil.AddGridTextColumn(dgvMember2, "가입 기간", "Duration");

            try
            {
                DepositAccountDB db = new DepositAccountDB();
                DataTable        dt = db.GetEveryData(CustomerNum);
                if (dt != null)
                {
                    dgvMember2.DataSource = dt;
                }
                db.Dispose();
            }
            catch (Exception)
            {
                MessageBox.Show("계좌 조회에 실패했습니다.");
            }
        }
        private void btndepositExtension_Click(object sender, EventArgs e)
        {
            //데이터그리드 뷰에서 연장할 예금을 꼭 클릭하게 하기
            if (dgvMemver.SelectedRows.Count < 1)
            {
                MessageBox.Show("반드시 위의 만기 예정 목록에서 하나를 더블클릭해주세요.");
                return;
            }
            //연장 기간을 꼭 선택하게 체크
            if (cbxduration.Text.Length < 1)
            {
                MessageBox.Show("연장할 기간은 꼭 선택해주셔야합니다.");
                return;
            }
            DepositAccountDB db = new DepositAccountDB();

            if (!db.Update(depositInfoForExtension))
            {
                MessageBox.Show("예금 연장에 실패하였습니다.");
                return;
            }
            MessageBox.Show("성공적으로 예금 기간을 연장하였습니다.");
            db.Dispose();
            this.Close();
        }
        private void frmMain_Activated(object sender, EventArgs e)      //메세지 띄우기, 적금이나 예금 만기 한 달 전일 떄 안내 메세지가 팝업 되게 하기
        {
            //적금이나 예금 만기 한 달 전일 떄 안내 메세지가 팝업 되게 하기
            //이 때 선택이 예 이면 각 계좌에서 일반 계좌로 돈을 쏘게 하고, 아니요이면 연장 시키기


            //예금 만기 한달 전일 때
            DepositAccountDB dp = new DepositAccountDB();

            dt = dp.GetExpireData(CustomerNum);



            if (dt != null)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //만기 한달 전인 예금을 현재 날짜와 비교하여 알려주기
                    if ((dt.Rows[i][1].ToString().Replace(" ", "")) ==
                        DateTime.Now.AddMonths(+1).ToString("yyyyMM").Replace(" ", ""))
                    {
                        if (wannaExtend)
                        {
                            if (MessageBox.Show("만기 예정인 예금이 있습니다. 연장하시겠습니까? \n 연장하지 않을 시 일반계좌로 금액이 반환됩니다.",
                                                "만기 안내", MessageBoxButtons.YesNo) == DialogResult.Yes)
                            {
                                //연장하려하는 예금 폼 띄우기
                                wannaExtend = true;
                                frmDepositExtension frm = new frmDepositExtension(dt, customerInfo);
                                frm.MdiParent = this;
                                frm.Show();
                                frm.Activate();
                            }
                            else    //연장을 원하지 않을 때 , 다음 로그인 때까지 안 뜨게하기
                            {
                                //날짜와 응답을 비교해서 일반계좌로 돈을 보내기
                                wannaExtend = false;
                                MessageBox.Show("만기 날짜가 되면 귀하의 일반 계좌로 만기 예금이 입금됩니다.");
                            }
                        }
                    }

                    //만기날짜가 되었을 때, 예금을 응답 여부에 따라서 일반계좌로 송금해주기
                    if (dt.Rows[i][2].ToString().Replace(" ", "") ==
                        DateTime.Now.ToString("yyyyMMdd").Replace(" ", ""))
                    {
                        if (wannaExtend == false)//응답이 예금을 연장하지 않을 때
                        {
                            //디비 열어서 예금에서 일반으로 송금
                            MessageBox.Show("예금이 만기가 되어 귀하의 일반 계좌로 만기 예금이 입금됩니다.");
                            NormalAccountDB n1 = new NormalAccountDB();
                            if (!n1.UpdateReceiver(dt.Rows[i][10].ToString(), dt.Rows[i][7].ToString()))
                            {
                                MessageBox.Show("일반 계좌로 만기 예금을 송금하는데 실패하였습니다.");
                            }

                            //돈을 송금하고 해당 예금은 삭제합니다.
                            DepositAccountDB db = new DepositAccountDB();
                            if (!db.Delete(CustomerNum, dt.Rows[i][0].ToString()))
                            {
                                MessageBox.Show("만기 예금을 삭제하는데 실패하였습니다.");
                            }
                        }
                        else //응답이 예금을 연장할 때
                        {
                            //그냥 넘어감~ 연장했으니 알림 없이 진행
                        }
                    }
                }
            }


            //만료 한달 전 안내
            SavingDB db2 = new SavingDB();

            dt2 = db2.GetExpireData(CustomerNum);



            if (dt2 != null)
            {
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    //만기 한달 전인 적금을 현재 날짜와 비교하여 알려주기
                    if (dt2.Rows[i][1].ToString().Replace(" ", "") ==
                        DateTime.Now.AddMonths(+1).ToString("yyyyMM").Replace(" ", ""))
                    {
                        if (wannaExtendS)
                        {
                            if (MessageBox.Show("만기 예정인 적금이 있습니다. 연장하시겠습니까? \n 연장하지 않을 시 일반계좌로 금액이 반환됩니다.",
                                                "만기 안내", MessageBoxButtons.YesNo) == DialogResult.Yes)
                            {
                                //연장하려하는 적금 폼 띄우기
                                wannaExtendS = true;
                                frmSavingExtension frm2 = new frmSavingExtension(dt2, customerInfo);
                                frm2.MdiParent = this;
                                frm2.Show();
                                frm2.Activate();
                            }
                            else    //연장을 원하지 않을 때
                            {
                                //날짜와 응답을 비교해서 일반계좌로 돈을 보내기

                                wannaExtendS = false;
                                MessageBox.Show("만기 날짜가 되면 귀하의 일반 계좌로 만기 적금이 입금됩니다.");
                            }
                        }
                    }

                    //만기날짜가 되었을 때, 적금을 응답 여부에 따라서 일반계좌로 송금해주기
                    if (dt2.Rows[i][2].ToString().Replace(" ", "") ==
                        DateTime.Now.ToString("yyyyMMdd").Replace(" ", ""))
                    {
                        if (wannaExtendS == false)//응답이 예금을 연장하지 않을 때
                        {
                            //디비 열어서 예금에서 일반으로 송금
                            MessageBox.Show("적금이 만기가 되어 귀하의 일반 계좌로 만기 적금이 입금됩니다.");
                            NormalAccountDB n1 = new NormalAccountDB();
                            if (!n1.UpdateReceiver(dt2.Rows[i][9].ToString(), dt2.Rows[i][6].ToString()))
                            {
                                MessageBox.Show("일반 계좌로 만기 적금을 송금하는데 실패하였습니다.");
                            }

                            //돈을 송금하고 해당 예금은 삭제합니다.
                            SavingDB db = new SavingDB();
                            if (!db.Delete(CustomerNum, dt2.Rows[i][0].ToString()))
                            {
                                MessageBox.Show("만기 적금을 삭제하는데 실패하였습니다.");
                            }
                        }
                        else //응답이 예금을 연장할 때
                        {
                            //그냥 넘어감~ 연장했으니 알림 없이 진행
                        }
                    }
                }
            }

            //적금 기입날 이어서 송금할 것인지 묻는 문자 보내기
            //만약 하루 내에 송금하지 않을 시 적금은 해지되어 일반 계좌로 보내지게 코딩
        }
        private void btnNewAccount_Click(object sender, EventArgs e)        //계좌 생성 버튼 클릭
        {
            //출금 계좌와 신규 계좌 비밀번호들이 4자리가 아닐 때

            if (cbxKindOfAccount.SelectedItem.ToString().Length < 1)        //계좌 종류 반드시 선택하게하기
            {
                MessageBox.Show("계좌의 종류는 반드시 선택해주셔야합니다.");
                return;
            }
            if (txtNewPwd.Text.Length < 1 || txtCheckNewPwd.Text.Length < 1)        //신규 계좌 정보 꼭 입력하게 하기
            {
                MessageBox.Show("신규 계좌 정보는 반드시 입력해주셔야합니다.");
                return;
            }
            if (cbxKindOfAccount.SelectedItem.ToString() == "일반 계좌")
            {
                if (txtNewPwd.Text.Length != 4)
                {
                    MessageBox.Show("계좌의 비밀번호들은 4자리여야만 합니다.");
                    return;
                }
            }
            else
            {
                if (txtOutPwd.TextLength != 4 || txtNewPwd.Text.Length != 4)
                {
                    MessageBox.Show("계좌의 비밀번호들은 4자리여야만 합니다.");
                    return;
                }
            }

            if (cbxKindOfAccount.SelectedItem.ToString() == "일반 계좌")
            {
                //일반 계좌에 연결
                NormalAccountDB db = new NormalAccountDB();

                if (!db.Insert(accountinfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else if (cbxKindOfAccount.SelectedItem.ToString() == "예금 계좌")
            {
                //가입기간, 출금계좌, 비번, 예치금 입력여부 체크
                if (cbxduration.Text.Length < 1 || txtOutAccount.Text.Length < 1 || txtOutPwd.Text.Length < 1 || txtAmountOfDeposit.Text.Length < 1)
                {
                    MessageBox.Show(@"예금 계좌의 경우 가입 기간, 출금계좌, 
                                     출금계좌의 비밀번호,예치금은 필수 입력입니다.");
                    return;
                }

                //출금 계좌와 비번이 맞는지 확인하는 함수 호출
                if (!CheckOutAccount())
                {
                    return;
                }

                //현재 일반 계좌에서 해당 에치금을 보낼 수 있는지 부터 체크
                NormalAccountDB n            = new NormalAccountDB();
                DataTable       dt           = n.GetCurrentMoney(txtOutAccount.Text);
                string          currentMoney = dt.Rows[0][0].ToString();                      //현재 일반계좌 잔액
                if (Convert.ToInt32(currentMoney) < Convert.ToInt32(txtAmountOfDeposit.Text)) //예치금이 잔액보다 크면 걸러내기
                {
                    MessageBox.Show("출금 계좌의 잔액보다 많은 금액은 예금할 수 없습니다.");
                    return;
                }
                if (!n.UpdateSender(txtAmountOfDeposit.Text, txtOutAccount.Text))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                }


                //내가 내 계좌내에 보낸 것도 이체 내역에 저장할까?? 고민중
                //예금 계좌에 연결
                DepositAccountDB db = new DepositAccountDB();
                if (!db.Insert(depositInfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else if (cbxKindOfAccount.SelectedItem.ToString() == "적금 계좌")
            {
                //가입기간, 매회 납입금액, 출금 계좌, 비번 체크
                if (cbxduration.Text.Length < 1 || txtpayPerMonth.Text.Length < 1 ||
                    txtOutAccount.Text.Length < 1 || txtOutPwd.Text.Length < 1)
                {
                    MessageBox.Show(@"적금 계좌의 경우 가입 기간, 매회 납입 금액, 출금계좌, 
                                     출금계좌의 비밀번호는 필수 입력입니다.");
                    return;
                }

                if (!CheckOutAccount())      //출금 계좌와 비번이 맞는지 확인하는 함수 호출
                {
                    return;
                }
                //적금 계좌에 연결
                SavingDB db = new SavingDB();

                if (!db.Insert(savingInfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else
            {
                MessageBox.Show("반드시 계좌 종류를 선택하셔야합니다.");
                return;
            }

            MessageBox.Show("계좌 생성이 완료되었습니다.");
            this.Close();
        }