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(); } } }
/// <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); }
/// <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]); } }
/// <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; } } }
/// <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); }
/// <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); }