-
Notifications
You must be signed in to change notification settings - Fork 1
/
HomeContainer.cs
66 lines (55 loc) · 3.07 KB
/
HomeContainer.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
using Castle.Core;
using Tasks.Core.Model;
using Tasks.Core.Controllers;
using Tasks.UI.ViewModels.Home;
using MvcExtensions.Services;
using MvcExtensions.Services.Impl;
using MvcExtensions.Web.Helpers;
using System.Web.Mvc;
using MvcExtensions.Web.Services;
namespace Tasks.Core.Controllers
{
public class HomeContainer : MvcContainer, IMvcCustomContainer<HomeController>
{
public HomeContainer()
{
AddComponentLifeStyle<IMapper,MyMapper>(LifestyleType.Singleton);
}
class MyMapper : MvcMapper
{
HomeController cHome=null;
public override void Initialize()
{
// all mappings are explicit to avoid bugs in case of refactoring
// if you do not require this you can delete the name & description mappings
// because they are using the conventions
// map viewmodels
MapperCfg.CreateMap<Task, VMIndex.Task>()
.ForMember(v => v.Name, m => m.MapFrom(t => cHome.AL(t.Name, a => a.Edit(t.Id))))
.ForMember(v => v.AL_Status, m => m.MapFrom(t => cHome.AL(t.Done ? "Done" : "Todo", a => a.SwitchStatus(t.Id))))
.ForMember(v => v.AL_Delete, m => m.MapFrom(t => cHome.AL("Delete", a => a.Delete(t.Id))));
MapperCfg.CreateMap<Task[], VMIndex>()
.ForMember(v => v.AllTasks, m => m.MapFrom(t => t))
.ForMember(v => v.HasNoTasks, m => m.MapFrom(t => t.Length == 0))
.ForMember(v => v.AL_AddTask, m => m.MapFrom(t => cHome.AL("Add new task", c => c.Index(null))));
MapperCfg.CreateMap<HomeController, VMIndex>()
.ForMember(v => v.FlashMessage, m => m.MapFrom(c => c.FlashMessage))
.ForMember(v => v.FlashError, m => m.MapFrom(c => c.FlashError));
MapperCfg.CreateMap<ModelStateDictionary, VMIndex>()
.ForMember(v => v.Name, m => m.MapFrom(c => c["Name"].Value.RawValue))
.ForMember(v => v.Contact, m => m.MapFrom(c => c["Contact"].Value.RawValue))
.ForMember(v => v.Description, m => m.MapFrom(c => c["Description"].Value.RawValue));
MapperCfg.CreateMap<HomeController, VMEdit>()
.ForMember(v => v.FlashMessage, m => m.MapFrom(c => c.FlashMessage))
.ForMember(v => v.FlashError, m => m.MapFrom(c => c.FlashError));
MapperCfg.CreateMap<Task, VMEdit>()
.ForMember(v => v.AL_CancelEdit, m => m.MapFrom(t => cHome.AL("Cancel changes", c => c.Index())))
.ForMember(v => v.AL_PostEdit, m => m.MapFrom(t => cHome.AL("Save changes", c => c.Edit(t.Id,null))));
MapperCfg.CreateMap<HomeController.IMTask, Task>()
.ForMember(v => v.Name, m => m.MapFrom(t => t.Name))
.ForMember(v => v.Contact, m => m.MapFrom(t=>t.Contact))
.ForMember(v => v.Description, m => m.MapFrom(t => t.Description));
}
}
}
}