コード例 #1
0
        private PayDayModel GetSelectedIncome(ListView view)
        {
            // guard clause - no selection
            ListView.SelectedListViewItemCollection selectedItems = view.SelectedItems;
            if (selectedItems.Count == 0)
            {
                return(null);
            }

            // guard clause - invalid state
            ListViewItem selectedLvi = selectedItems[0];

            if (selectedLvi == null)
            {
                return(null);
            }

            // guard clause - unexpected type
            PayDayModel selectedRow = selectedLvi.Tag as PayDayModel;

            if (selectedRow == null)
            {
                return(null);
            }

            return(selectedRow);
        }
コード例 #2
0
 private void Initialize(PayDayModel model)
 {
     Initialize();
     Model = model;
     textBoxDateDue.Text = Model.Date.ToShortDateString();
     textBoxAmount.Text  = decimal.Round(model.Amount, 2, MidpointRounding.AwayFromZero).ToString(CultureInfo.InvariantCulture);
 }
コード例 #3
0
        private PayDayModel CreateModel(IPayDay payday)
        {
            PayDayModel model = new PayDayModel();

            model.CopyFrom(payday);
            return(model);
        }
コード例 #4
0
        public void UpdatePayDay(PayDayModel model)
        {
            IPayDay payDay = Service.GetPayDay(model.RecordId);

            payDay.Date   = model.Date;
            payDay.Amount = model.Amount;
            Service.UpdatePayDay(payDay);
        }
コード例 #5
0
        public PayDayModel GetPayDay(int recordId)
        {
            PayDayModel model  = new PayDayModel();
            IPayDay     payDay = Service.GetPayDay(recordId);

            model.CopyFrom(payDay);
            return(model);
        }
コード例 #6
0
 private void Initialize()
 {
     InitializeComponent();
     textBoxAmount.BackColor  = Color.Tomato;
     textBoxDateDue.BackColor = Color.Tomato;
     Model     = new PayDayModel();
     Presenter = new PayDayPresenter();
 }
コード例 #7
0
        private PayDayModel CreatePayDayModel()
        {
            PayDayModel model = new PayDayModel();

            model.Date     = new DateTime(2017, 05, 05);
            model.Amount   = 1000m;
            model.RecordId = 0;
            return(model);
        }
コード例 #8
0
        private void confirmDeleteToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            PayDayModel model = GetSelectedIncome(listViewIncome);

            Presenter.DeleteIncome(model.RecordId);
            listViewIncome.Items.Clear();
            listViewBudget.Items.Clear();
            labelTotalIncome.Text = "";
            ShowIncome();
        }
コード例 #9
0
        private void buttonEditIncome_Click(object sender, EventArgs e)
        {
            PayDayModel model = GetSelectedIncome(listViewConfigIncome);

            if (model == null)
            {
                return;
            }

            IncomeWindow window = new IncomeWindow(model);

            window.FormClosing += Action_FormClosing;
            ShowWindow(window);
        }
コード例 #10
0
        private void CreateIncomeRow(PayDayModel model)
        {
            string combinedRowContent = string.Format("{0}, {1}", DollarFormat(model.Amount), model.Date);

            string[]     splitRowContent = combinedRowContent.Split(',');
            ListViewItem item            = new ListViewItem(splitRowContent);

            item.Tag = model;
            ListViewItem clonedItem = (ListViewItem)item.Clone();

            listViewIncome.Items.Add(item);
            listViewConfigIncome.Items.Add(clonedItem);
            TotalIncome += model.Amount;
        }
コード例 #11
0
        public void TestBlueSky_GetPayDaysInMonth()
        {
            //set-up
            CreatePayDayData();
            PayDayModel[] models = new PayDayModel[0];

            //pre-conditions
            Assert.AreEqual(0, models.Length);

            //exercise
            models = Presenter.GetPayDaysInMonth(new DateTime(2017, 05, 05));

            //post-conditions
            Assert.AreEqual(1, models.Length);
        }
コード例 #12
0
        public void SavePayDay(PayDayModel model)
        {
            IPayDay          payDayExists = Service.GetPayDay(model.RecordId);
            PayDaySaveFacade facade       = new PayDaySaveFacade();

            if (payDayExists == null)
            {
                IPayDay payDay = facade.Apply(model);
                Service.AddPayDay(payDay);
                return;
            }

            payDayExists = facade.Apply(model, payDayExists);
            Service.UpdatePayDay(payDayExists);
        }
コード例 #13
0
        public void TestBlueSky_GetPayDay()
        {
            //set-up
            Model = CreatePayDayModel();
            Presenter.SavePayDay(Model);
            Model = null;

            //pre-condition
            Assert.IsNull(Model);

            //exercise
            Model = Presenter.GetPayDay(1);

            //post-condition
            Assert.IsNotNull(Model);
        }
コード例 #14
0
        public void TestBlueSky_GetPayDaysInMonth()
        {
            //set-up
            Model = CreatePayDayModel();
            Presenter.SavePayDay(Model);
            PayDayModel[] models = null;

            //pre-condition
            Assert.IsNull(models);

            //exercise
            models = Presenter.GetPayDaysInMonth(new DateTime(2017, 05, 05));

            //post-condition
            Assert.IsNotNull(models);
        }
コード例 #15
0
        public void TestBlueSky_AddPayDay()
        {
            //set-up
            Model = CreatePayDayModel();
            IPayDay payDayShouldNotBeInDb = Service.GetPayDay(Model.RecordId);

            //Pre-condition
            Assert.IsNull(payDayShouldNotBeInDb);

            //exercise
            Presenter.SavePayDay(Model);
            IPayDay payDayShouldBeInDb = Service.GetPayDay(1);

            //post-condition
            Assert.IsNotNull(payDayShouldBeInDb);
        }
コード例 #16
0
        private void ShowIncome()
        {
            PayDayModel[] models = Presenter.GetPayDaysInMonth(DisplayedDate);

            if (models.Length < 1)
            {
                PayDayModel payDayModel = new PayDayModel();
                payDayModel.Date     = new DateTime(DisplayedDate.Year, DisplayedDate.Month, 1);
                payDayModel.RecordId = 0;
                payDayModel.Amount   = 0;
                Presenter.AddPayDay(payDayModel);
                models = Presenter.GetPayDaysInMonth(DisplayedDate);
            }

            models.OrderBy(pdm => pdm.Date).Where(pdm => pdm.Date.Month == DisplayedDate.Month && pdm.Date.Year == DisplayedDate.Year).ToList().ForEach(CreateIncomeRow);
            labelTotalIncome.Text = decimal.Round(TotalIncome, 2, MidpointRounding.AwayFromZero).ToString(CultureInfo.InvariantCulture);
        }
コード例 #17
0
        public void TestBlueSky_UpdatePayDay()
        {
            //set-up
            Model = CreatePayDayModel();
            Presenter.SavePayDay(Model);
            PayDayModel newModel = Presenter.GetPayDay(1);

            newModel.Date   = Model.Date.AddDays(1);
            newModel.Amount = Model.Amount + 1m;

            //pre-condition
            Assert.AreNotEqual(Model.Date, newModel.Date);
            Assert.AreNotEqual(Model.Amount, newModel.Amount);

            //exercise
            Presenter.UpdatePayDay(newModel);
            Model = Presenter.GetPayDay(newModel.RecordId);

            //post-condition
            Assert.AreEqual(Model.Date, newModel.Date);
            Assert.AreEqual(Model.Amount, newModel.Amount);
        }
コード例 #18
0
 public IncomeWindow(PayDayModel model)
 {
     Initialize(model);
 }