public IActionResult New(int type) { var model = new NewCustomStateView(); model.Type = (CustomStateTypes)type; model.State = new CustomState(); model.State.Details = new Collection <CustomStateDetail>(); return(View(model)); }
public IActionResult New(NewCustomStateView model, IFormCollection form) { List <int> options = (from object key in form.Keys where key.ToString().StartsWith("buttonText_") select int.Parse(key.ToString().Replace("buttonText_", ""))).ToList(); if (options == null || !options.Any()) { ModelState.AddModelError("Detail", "You must supply options (which turn into the buttons) for personnel to act on before creating your custom statuses."); } if (ModelState.IsValid) { if (options.Count > 0) { model.State.Details = new Collection <CustomStateDetail>(); } model.State.DepartmentId = DepartmentId; model.State.Type = (int)model.Type; foreach (var i in options) { if (form.ContainsKey("buttonText_" + i)) { var text = form["buttonText_" + i]; var color = form["buttonColor_" + i]; var textColor = form["textColor_" + i]; var order = form["order_" + i]; bool gps = false; var gpsValue = form["requireGps_" + i]; if (gpsValue == "on") { gps = true; } var noteType = int.Parse(form["noteType_" + i]); var detailType = int.Parse(form["detailType_" + i]); var detail = new CustomStateDetail(); detail.ButtonText = text; detail.ButtonColor = color; detail.GpsRequired = gps; detail.NoteType = noteType; detail.DetailType = detailType; detail.TextColor = textColor; detail.Order = int.Parse(order); model.State.Details.Add(detail); } } _customStateService.Save(model.State); return(RedirectToAction("Index")); } return(View(model)); }