Skip to content

Instantly share code, notes, and snippets.

@jbogard
Created October 22, 2013 15:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jbogard/7102870 to your computer and use it in GitHub Desktop.
Save jbogard/7102870 to your computer and use it in GitHub Desktop.
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