Created
October 22, 2013 15:34
-
-
Save jbogard/7102870 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ConferenceController : Controller | |
{ | |
private readonly ISession _session; | |
public ConferenceController(ISession session) | |
{ | |
_session = session; | |
} | |
public ActionResult Index(int? minSessions) | |
{ | |
minSessions = minSessions ?? 0; | |
var list = (from conf in _session.Query<Conference>() | |
where conf.SessionCount >= minSessions | |
select new ConferenceListModel | |
{ | |
Id = conf.Id, | |
Name = conf.Name, | |
SessionCount = conf.SessionCount, | |
AttendeeCount = conf.AttendeeCount | |
}).ToArray(); | |
return View(list); | |
} | |
public ViewResult Show(string eventName) | |
{ | |
var conf = _session | |
.Query<Conference>() | |
.SingleOrDefault(c => c.Name == eventName); | |
var model = new ConferenceShowModel | |
{ | |
Name = conf.Name, | |
Sessions = conf.GetSessions() | |
.Select(s => new ConferenceShowModel.SessionModel | |
{ | |
Title = s.Title, | |
SpeakerFirstName = s.Speaker.FirstName, | |
SpeakerLastName = s.Speaker.LastName, | |
}).ToArray() | |
}; | |
return View(model); | |
} | |
public ActionResult Edit(string eventName) | |
{ | |
var conf = _session | |
.Query<Conference>() | |
.SingleOrDefault(c => c.Name == eventName); | |
var model = new ConferenceEditModel | |
{ | |
Id = conf.Id, | |
Name = conf.Name, | |
Attendees = conf.GetAttendees() | |
.Select(a => new ConferenceEditModel.AttendeeEditModel | |
{ | |
Id = a.Id, | |
FirstName = a.FirstName, | |
LastName = a.LastName, | |
Email = a.Email, | |
}).ToArray() | |
}; | |
return View(model); | |
} | |
[HttpPost] | |
public ActionResult Edit(ConferenceEditModel form) | |
{ | |
if (!ModelState.IsValid) | |
{ | |
return View(form); | |
} | |
var conf = _session.Get<Conference>(form.Id); | |
conf.ChangeName(form.Name); | |
foreach (var attendeeEditModel in form.Attendees) | |
{ | |
var attendee = conf.GetAttendee(attendeeEditModel.Id); | |
attendee.ChangeName(attendeeEditModel.FirstName, attendeeEditModel.LastName); | |
attendee.Email = attendeeEditModel.Email; | |
} | |
return this.RedirectToAction(c => c.Index(null), "Default"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment