public ActionResult AddSchedule(string id)
        {
            // id is the child's username
            var child = this.userService.GetUser(id) as Child;
            if (this.userService.IsNotChildOfCurrentUser(child)) return StatusCode.NotFound;

            // give the user some defaults
            var addScheduleViewModel = new AddScheduleViewModel
            {
                ChildId = child.Id,
                Amount = 1.0M,
                Description = "Pocket Money",
                Interval = Interval.Week,
                StartDate = DateTime.Now
            };

            return this.View("AddSchedule", addScheduleViewModel);
        }
        public ActionResult AddSchedule(AddScheduleViewModel addScheduleViewModel)
        {
            if (!this.ModelState.IsValid) return this.View("AddSchedule", addScheduleViewModel);

            if (addScheduleViewModel.StartDate < DateTime.Now.Date)
            {
                this.ModelState.AddModelError("StartDate", "The start date can not be in the past.");
                return this.View("AddSchedule", addScheduleViewModel);
            }

            var child = this.userService.GetUser(addScheduleViewModel.ChildId) as Child;
            if (this.userService.IsNotChildOfCurrentUser(child)) return StatusCode.NotFound;

            child.Account.AddPaymentSchedule(
                addScheduleViewModel.StartDate,
                addScheduleViewModel.Interval,
                addScheduleViewModel.Amount,
                addScheduleViewModel.Description
                );

            return this.View("AddScheduleConfirm", addScheduleViewModel);
        }