public ActionResult Create(int collectionId) { var viewModel = new ExpenseViewModel { Expense = new Expense() { TripId = collectionId, RecordDate = DateTime.Now, Receivers = new List<Person>() } }; this.CompleteViewModel(viewModel); return View(viewModel); }
public ActionResult Create(int collectionId, Expense expense, FormCollection formCollection) { //throw new NotImplementedException(); /*ar people = db.People.ToList(); ViewBag.People = people; var selectedUsedBy = formCollection["usedBy"].Split(',').Select(x => int.Parse(x)).ToList(); ViewBag.UsedByCheckList = people.ToDictionary(p => p, p => selectedUsedBy.Contains(p.PersonId)); if (ModelState.IsValid) { ((Dictionary<int, bool>)ViewBag.UsedByCheckList).Where(x => x.Value) .Select(x => db.People.Find(x.Key)).ToList().ForEach(x => expense.Receivers.Add(x)); db.Expenses.Add(expense); db.SaveChanges(); return RedirectToAction("Index", new { expense.CollectionId }); }*/ expense.Receivers = new List<Person>( ParseCheckBoxes( formCollection["PossibleUsers.kvp.Item1.PersonId"], formCollection["PossibleUsers.kvp.Item2"]).Where(t => t.Item2).Select(t => db.People.Find(t.Item1))); expense.TripId = collectionId; if (ModelState.IsValid) { db.Expenses.Add(expense); db.SaveChanges(); return RedirectToAction("Index", new { CollectionId = expense.TripId }); } var viewModel = new ExpenseViewModel { Expense = expense }; this.CompleteViewModel(viewModel); return View(viewModel); }
// // GET: /Expense/Create private void CompleteViewModel(ExpenseViewModel viewModel) { viewModel.PossiblePayers = db.People.ToList(); viewModel.PossibleUsers = db.People.ToList().Select(p => Tuple.Create(p, viewModel.Expense == null || viewModel.Expense.Receivers == null ? false : viewModel.Expense.Receivers.Any(u => u == p))).ToList(); }