Ejemplo n.º 1
0
        private void BtnContinue_Click(object sender, EventArgs e)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int           userId = int.Parse(config.AppSettings.Settings["UserId"].Value);

            if (!string.IsNullOrEmpty(TbAssets.Text) && !string.IsNullOrEmpty(TbClassification.Text) &&
                !string.IsNullOrEmpty(TbDate.Text) && !string.IsNullOrEmpty(TbMoney.Text) && !string.IsNullOrEmpty(TbContent.Text))
            {
                TbMoney.Text = TbMoney.Text.Replace(",", "").Remove(0, 1);
                if (int.Parse(TbMoney.Text) > 0 && !string.IsNullOrWhiteSpace(TbContent.Text))
                {
                    //家計簿ベースデータ新規登録
                    if (HouseholdABookBase.InsertHouseholdABookBase(isIncomeOrSpending ? 1 : 0,
                                                                    DateTime.Parse(TbDate.Text), TbAssets.Text, TbClassification.Text,
                                                                    int.Parse(TbMoney.Text), TbContent.Text, userId))
                    {
                        OriginMBox.MBoxInfoOK("新規データ登録完了");
                    }

                    //非表示してから再表示
                    Hide();
                    TbAssets.Text         = "";
                    TbClassification.Text = "";
                    TbMoney.Text          = "";
                    string[] timeList = { DateTime.Now.Year.ToString("0000"), DateTime.Now.Month.ToString("00"),
                                          DateTime.Now.Day.ToString("00"),    DateTime.Now.Hour.ToString("00"), DateTime.Now.Minute.ToString("00") };
                    TbDate.Text    = string.Format(AppConst.TIME_STR, timeList);
                    TbContent.Text = "";
                    Show();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 日付の指定によってベースDBからデータ取得
        /// </summary>
        /// <returns>家計簿ベースデータ</returns>
        private List <HouseholdABookBase.HouseholdABook> FindHouseholdABookList()
        {
            List <HouseholdABookBase.HouseholdABook> dataList = new List <HouseholdABookBase.HouseholdABook>();
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int           userId = int.Parse(config.AppSettings.Settings["UserId"].Value);

            if (!DTPickerBreakdown.Visible && !DTPickerBreakdown02.Visible)
            {
                return(null);
            }
            else if (DTPickerBreakdown.Visible && !DTPickerBreakdown02.Visible)
            {
                DateTime start = new DateTime();
                DateTime end   = new DateTime();
                //月間
                if (CbPeriod.SelectedIndex == (int)PeriodType.Monthly)
                {
                    start = new DateTime(DTPickerBreakdown.Value.Year, DTPickerBreakdown.Value.Month, 1);
                    if (start.Month >= 12)
                    {
                        end = new DateTime(DTPickerBreakdown.Value.AddYears(1).Year, DTPickerBreakdown.Value.AddMonths(1).Month, 1);
                    }
                    else
                    {
                        end = new DateTime(DTPickerBreakdown.Value.Year, DTPickerBreakdown.Value.AddMonths(1).Month, 1);
                    }
                }
                //年間
                else if (CbPeriod.SelectedIndex == (int)PeriodType.Year)
                {
                    start = new DateTime(DTPickerBreakdown.Value.Year, 1, 1);
                    end   = new DateTime(DTPickerBreakdown.Value.AddYears(1).Year, 1, 1);
                }

                dataList = HouseholdABookBase.SelectHouseholdABookBase(CbClassification.SelectedIndex, start, end, userId);
            }
            //期間指定
            else if (DTPickerBreakdown.Visible && DTPickerBreakdown02.Visible)
            {
                if (DTPickerBreakdown.Value > DTPickerBreakdown02.Value)
                {
                    OriginMBox.MBoxInfoOK(AppConst.STATISTICSDATE_MESSAGE);
                    DTPickerBreakdown.Value = DTPickerBreakdown02.Value;
                    return(null);
                }

                dataList = HouseholdABookBase.SelectHouseholdABookBase(CbClassification.SelectedIndex,
                                                                       DTPickerBreakdown.Value, DTPickerBreakdown02.Value, userId);
            }
            return(dataList);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 期間ごとの収入と支出と合計の設定
        /// </summary>
        /// <param name="start">スタート期間</param>
        /// <param name="end">エンド期間</param>
        /// <returns></returns>
        private void SetPropertyManagementList(DateTime start, DateTime end)
        {
            List <int>    list   = new List <int>();
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int           userId = int.Parse(config.AppSettings.Settings["UserId"].Value);

            //最小値の時は全データを取得する
            if (start == DateTime.MinValue && end == DateTime.MinValue)
            {
                list = HouseholdABookBase.SelectPropManageList(userId);
            }
            //そのほかは期間ごとに取得
            else
            {
                list = HouseholdABookBase.SelectPropManageList(start, end, userId);
            }

            if (list.Count <= 0)
            {
                OriginMBox.MBoxInfoOK("データが存在しません。"); return;
            }

            //リストクリア
            LbIncome.Items.Clear();
            LbSpending.Items.Clear();
            LbSettlement.Items.Clear();

            //TODO 金額の桁数によって位置を調整する
            //収入と支出と合計
            LbIncome.Items.Add("    " + AppConst.INCOME);
            LbIncome.Items.Add("      " + list[AppConst.INCOME_VALUE]);

            LbSpending.Items.Add("    " + AppConst.SPENDING);
            LbSpending.Items.Add("      " + list[AppConst.SPENDING_VALUE]);

            LbSettlement.Items.Add("    " + "合計");
            //合計がマイナスの値のとき
            if (list[AppConst.SUM_VALUE] < 0)
            {
                LbSettlement.ForeColor = System.Drawing.Color.Red;
                LbSettlement.Items.Add("      " + list[AppConst.SUM_VALUE]);
            }
            else
            {
                LbSettlement.Items.Add("      " + list[AppConst.SUM_VALUE]);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 1日ごとの項目作成
        /// </summary>
        private List <ListViewItem> OneDayCreateItems()
        {
            List <ListViewItem> viewItems = new List <ListViewItem>();

            List <HouseholdABookBase.HouseholdABook> householdsList = new List <HouseholdABookBase.HouseholdABook>();

            //データ取得
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int           userId = int.Parse(config.AppSettings.Settings["UserId"].Value);

            householdsList = HouseholdABookBase.SelectHouseholdABookBase(userId);

            for (int i = 0; i < householdsList.Count; i++)
            {
                string[] items = householdsList[i].GetHouseholdABookList();

                ListViewItem listView = new ListViewItem(items);
                //フォント設定使用出来るようにする
                listView.UseItemStyleForSubItems = false;

                //金額をタイプごとに色変更
                const int MONEY_NUM = 3;
                if (householdsList[i].idStr == AppConst.INCOME)
                {
                    listView.SubItems[MONEY_NUM].ForeColor = System.Drawing.Color.Blue;
                }
                else
                {
                    listView.SubItems[MONEY_NUM].ForeColor = System.Drawing.Color.Red;
                }

                viewItems.Add(listView);
            }

            return(viewItems);
        }
        /// <summary>
        /// ロードイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CustomCalender_Load(object sender, EventArgs e)
        {
            //TODO 残タスク:支出データの表示されない場合がある⇒原因を調査して修正
            DateTime      firstDate  = new DateTime(calenderDate.Year, calenderDate.Month, 1);
            int           first_time = firstDate.Day;
            int           lastdays   = DateTime.DaysInMonth(firstDate.Year, firstDate.Month); // その月の日数
            DateTime      lastDay    = new DateTime(firstDate.Year, firstDate.Month, lastdays);
            Configuration config     = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int           userId     = int.Parse(config.AppSettings.Settings["UserId"].Value);

            List <Control> dateList     = new List <Control>();
            List <Control> incomeList   = new List <Control>();
            List <Control> spendingList = new List <Control>();
            List <Control> panelList    = new List <Control>();

            for (int i = 0; i < lastdays; i++)
            {
                dateList.AddRange(Controls.Find("label" + (3 * i + 1), true));
                incomeList.AddRange(Controls.Find("label" + (3 * i + 2), true));
                spendingList.AddRange(Controls.Find("label" + (3 * i + 3), true));
                panelList.AddRange(Controls.Find("panel" + (i + 1), true));
            }

            //カレンダーDBからデータ取得してデータ存在した場合、そのデータを表示する
            //ない場合はベースDBから情報を取得して、カレンダーDBにデータ更新して画面表示
            List <Calender> calenderList = new List <Calender>();

            int[]    incomeDataList   = new int[lastdays];
            int[]    spendingDataList = new int[lastdays];
            DateTime registerDate     = new DateTime();

            calenderList = Calender.SelectCalender(firstDate, firstDate.AddMonths(1), out registerDate, userId);

            //そもそもデータが一件もない場合は新規データ作成
            if (calenderList == null)
            {
                if (!Calender.InsertInitCalender(lastdays, calenderDate, userId))
                {
                    return;
                }
            }
            //ベースDBからデータ取得
            List <int[]> dataList = HouseholdABookBase.SelectHouseholdABooks(firstDate, lastDay.AddDays(1), userId);

            //収入と支出がある場合はそのデータを取得
            if (calenderList != null)
            {
                //最新データか確認
                if (!Calender.IsNewCalenderData(calenderList, dataList))
                {
                    if (dataList == null)
                    {
                        return;
                    }
                    incomeDataList   = dataList[0];
                    spendingDataList = dataList[1];

                    //カレンダーDB更新or登録
                    calenderList = Calender.CreateCalenderList(lastdays, incomeDataList, spendingDataList, calenderDate, userId);
                    if (!Calender.UpdateCalender(calenderList, registerDate))
                    {
                        return;
                    }
                }

                //最新データはそのまま取得
                calenderList.ForEach(data =>
                {
                    incomeDataList[data.Id - 1]   = data.Income > 0 ? data.Income : 0;
                    spendingDataList[data.Id - 1] = data.Spending > 0 ? data.Spending : 0;
                });
            }
            //収入と支出がない場合ベースDBからデータ作成
            else if (dataList != null)
            {
                incomeDataList   = dataList[0];
                spendingDataList = dataList[1];

                //カレンダーDB更新or登録
                calenderList = Calender.CreateCalenderList(lastdays, incomeDataList, spendingDataList, calenderDate, userId);
                if (!Calender.UpdateCalender(calenderList, registerDate))
                {
                    return;
                }
            }

            for (int i = 0; i < lastdays; i++)
            {
                //日付制御
                if (dateList.Count() > 0 && panelList.Count() > 0)
                {
                    Control panel = panelList.Where(data => data.Name == "panel" + (i + 1))?.First();
                    panel.Visible = true;
                    Control label = dateList.Where(data => data.Name == "label" + (3 * i + AppConst.CALENDER_DAY))?.First();
                    label.Text    = (i + 1).ToString();
                    label.Font    = new Font(label.Font, FontStyle.Bold);
                    label.Visible = true;
                }

                //支出の制御
                if (incomeDataList.Length > 0)
                {
                    Control label = incomeList.Where(data => data.Name == "label" + (3 * i + AppConst.CALENDER_INCOME)).First();
                    label.Text      = incomeDataList[i].ToString();
                    label.ForeColor = System.Drawing.Color.Blue;
                }
                else
                {
                    if (i == 0)
                    {
                        Control label = incomeList.Where(data => data.Name == "label" + AppConst.CALENDER_INCOME).First();
                        label.Text      = incomeDataList[0].ToString();
                        label.ForeColor = System.Drawing.Color.Blue;
                    }
                    else
                    {
                        Control label = incomeList.Where(data => data.Name == "label" + (i * AppConst.CALENDER_INCOME)).First();
                        label.Text      = 0.ToString();
                        label.ForeColor = System.Drawing.Color.Blue;
                    }
                }

                //収入の制御
                if (spendingDataList.Length > 0)
                {
                    if (spendingList.Count() > 0)
                    {
                        Control label = spendingList.Where(data => data.Name == "label" + (3 * i + AppConst.CALENDER_SPENDING)).First();
                        label.Text      = spendingDataList[i].ToString();
                        label.ForeColor = System.Drawing.Color.Red;
                    }
                    else
                    {
                        Control label = incomeList.Where(data => data.Name == "label" + (3 * i + AppConst.CALENDER_SPENDING)).First();
                        label.Text      = 0.ToString();
                        label.ForeColor = System.Drawing.Color.Red;
                    }
                }
                else
                {
                    Control label = incomeList.Where(data => data.Name == "label" + (3 * i + AppConst.CALENDER_SPENDING)).First();
                    label.Text      = 0.ToString();
                    label.ForeColor = Color.Red;
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 月の項目作成
        /// </summary>
        /// <returns></returns>
        private List <ListViewItem> MonthCreateItems()
        {
            List <ListViewItem> viewItems = new List <ListViewItem>();

            // データ取得
            Configuration        config         = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int                  userId         = int.Parse(config.AppSettings.Settings["UserId"].Value);
            List <MonthDataList> monthDataLists = MonthDataList.SelectDisplayList(DTPickerBreakdown.Value.Year, userId);

            // 最初に見たとき
            if (monthDataLists == null)
            {
                DateTime start = new DateTime(DTPickerBreakdown.Value.Year, 1, 1);
                DateTime end   = new DateTime(DTPickerBreakdown.Value.Year, 12, DateTime.DaysInMonth(DTPickerBreakdown.Value.Year, 12));

                //月ごとのベースデータ取得
                List <int[]> dataLists = HouseholdABookBase.SelectMonthDatasCreate(start, end, userId);
                if (!(dataLists[0].Any(x => x > 0) || dataLists[1].Any(x => x > 0)))
                {
                    OriginMBox.MBoxInfoOK("当年のデータが作成されていません。データ作成画面でデータ作成してください。");
                    return(new List <ListViewItem>());
                }

                monthDataLists = MonthDataList.CreateMonthDataList(dataLists, DateTime.Now, userId);
                if (!MonthDataList.InsertMonthDataList(monthDataLists))
                {
                    OriginMBox.MBoxErrorOK("月ごとの収入と支出データ作成に失敗しました。");
                    return(new List <ListViewItem>());
                }
            }
            else
            {
                DateTime start = new DateTime(DTPickerBreakdown.Value.Year, 1, 1);
                DateTime end   = new DateTime(DTPickerBreakdown.Value.Year, 12, DateTime.DaysInMonth(DTPickerBreakdown.Value.Year, 12));

                //月ごとのベースデータ取得
                List <int[]> dataLists = HouseholdABookBase.SelectMonthDatasCreate(start, end, userId);
                if (!(dataLists[0].Any(x => x > 0) || dataLists[1].Any(x => x > 0)))
                {
                    OriginMBox.MBoxInfoOK("当年のデータが作成されていません。データ作成画面でデータ作成してください。");
                    return(new List <ListViewItem>());
                }

                // 二度目以降は最新データかによって処理分け
                if (!MonthDataList.IsNewMonthDataList(monthDataLists, dataLists))
                {
                    monthDataLists = MonthDataList.CreateMonthDataList(dataLists, monthDataLists.Select(x => x.CreateDate).FirstOrDefault(), userId);
                    if (!MonthDataList.UpdateMonthDataList(monthDataLists))
                    {
                        OriginMBox.MBoxErrorOK("月ごとの収入と支出データ更新に失敗しました。");
                        return(new List <ListViewItem>());
                    }
                }
            }

            List <string[]> dataStrList = MonthDataList.GetDisplayDataList(monthDataLists);

            for (int i = 0; i < dataStrList.Count; i++)
            {
                ListViewItem listView = new ListViewItem(dataStrList[i])
                {
                    //フォント設定使用出来るようにする
                    UseItemStyleForSubItems = false
                };

                //収入と支出データで色分け
                listView.SubItems[1].ForeColor = System.Drawing.Color.Blue;
                listView.SubItems[2].ForeColor = System.Drawing.Color.Red;

                viewItems.Add(listView);
            }

            return(viewItems);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 週の項目作成
        /// </summary>
        /// <returns></returns>
        private List <ListViewItem> WeekCreateItems()
        {
            List <ListViewItem> viewItems = new List <ListViewItem>();

            DateTime startDate = new DateTime(DTPickerBreakdown.Value.Year
                                              , DTPickerBreakdown.Value.Month, 1);
            DateTime endDate = new DateTime(DTPickerBreakdown.Value.Year
                                            , DTPickerBreakdown.Value.Month, DateTime.DaysInMonth(startDate.Year, startDate.Month));

            //データ取得
            Configuration       config        = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            int                 userId        = int.Parse(config.AppSettings.Settings["UserId"].Value);
            List <WeekDataList> weekDataLists = WeekDataList.SelectDisplayList(startDate, endDate.AddDays(1), userId);

            //データが存在しない場合、データ集計して週ごとの収入と支出データ作成
            if (weekDataLists == null)
            {
                //月始めから月終わりまでのベースデータ取得
                List <int[]> dataLists = HouseholdABookBase.SelectHouseholdABooks(startDate, endDate.AddDays(1), userId);
                if (dataLists == null)
                {
                    OriginMBox.MBoxInfoOK("当月のデータが作成されていません。データ作成画面でデータ作成してください。");
                    return(new List <ListViewItem>());
                }

                weekDataLists = WeekDataList.CreateWeekDataList(dataLists, WeekDataList.GetDateTimes(startDate, endDate), userId);
                if (!WeekDataList.InsertWeekDataList(weekDataLists))
                {
                    OriginMBox.MBoxErrorOK("週ごとの収入と支出データ作成に失敗しました。");
                    return(null);
                }
            }
            else
            {
                //月ごとのベースデータ取得
                List <int[]> dataLists = HouseholdABookBase.SelectHouseholdABooks(startDate, endDate.AddDays(1), userId);
                if (dataLists == null)
                {
                    OriginMBox.MBoxInfoOK("当月のデータが作成されていません。データ作成画面でデータ作成してください。");
                    return(new List <ListViewItem>());
                }

                // 二度目以降は最新データかによって処理分け
                weekDataLists = WeekDataList.CreateWeekDataList(dataLists, WeekDataList.GetDateTimes(startDate, endDate), userId);
                if (!WeekDataList.UpdateWeekDataList(weekDataLists))
                {
                    OriginMBox.MBoxErrorOK("週ごとの収入と支出データ更新に失敗しました。");
                    return(new List <ListViewItem>());
                }
            }

            List <string[]> dataStrList = WeekDataList.GetDisplayDataList(weekDataLists);

            for (int i = 0; i < dataStrList.Count; i++)
            {
                ListViewItem listView = new ListViewItem(dataStrList[i])
                {
                    //フォント設定使用出来るようにする
                    UseItemStyleForSubItems = false
                };

                //収入と支出データで色分け
                listView.SubItems[1].ForeColor = System.Drawing.Color.Blue;
                listView.SubItems[2].ForeColor = System.Drawing.Color.Red;

                viewItems.Add(listView);
            }

            return(viewItems);
        }