forked from mikehadlow/Suteki.TardisBank
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ScheduleController.cs
70 lines (58 loc) · 2.27 KB
/
ScheduleController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Web.Mvc;
using Suteki.TardisBank.Helpers;
using Suteki.TardisBank.Model;
using Suteki.TardisBank.Mvc;
using Suteki.TardisBank.Services;
using Suteki.TardisBank.ViewModel;
namespace Suteki.TardisBank.Controllers
{
public class ScheduleController : Controller
{
readonly IUserService userService;
public ScheduleController(IUserService userService)
{
this.userService = userService;
}
[HttpGet]
public ActionResult AddSchedule(string id)
{
// id is the child's username
var child = userService.GetUserByUserName(id) as Child;
if (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 View("AddSchedule", addScheduleViewModel);
}
[HttpPost, UnitOfWork]
public ActionResult AddSchedule(AddScheduleViewModel addScheduleViewModel)
{
if (!ModelState.IsValid) return View("AddSchedule", addScheduleViewModel);
var child = userService.GetUser(addScheduleViewModel.ChildId) as Child;
if (userService.IsNotChildOfCurrentUser(child)) return StatusCode.NotFound;
child.Account.AddPaymentSchedule(
addScheduleViewModel.StartDate,
addScheduleViewModel.Interval,
addScheduleViewModel.Amount,
addScheduleViewModel.Description
);
return View("AddScheduleConfirm", addScheduleViewModel);
}
[HttpGet, UnitOfWork]
public ActionResult RemoveSchedule(string id, int scheduleId)
{
// id is the child user name
var child = userService.GetUserByUserName(id) as Child;
if (userService.IsNotChildOfCurrentUser(child)) return StatusCode.NotFound;
child.Account.RemovePaymentSchedule(scheduleId);
return Redirect(Request.UrlReferrer.OriginalString);
}
}
}