// // GET: /ContractRedirect/Edit/5 /// <summary> /// /// </summary> /// <param name="id"></param> /// <param name="contractUriId"></param> /// <returns></returns> public ActionResult Edit(Guid id, Guid contractUriId) { ViewData["selectedTab"] = 0; var model = new UserContractRedirectModel(); //get parameters with possible values var parameters = db.RuleParameters.Select(row => new ContractRedirectParameterModel { RuleParameter = row }).ToList(); model.ParameterModel = parameters; foreach (var parameter in model.ParameterModel) { var list = db.RuleParameterValues.Where(row => row.RuleParameterId == parameter.RuleParameter.Id) .ToList() .Select(row => new SelectListItem {Text = row.Name, Value = row.Id.ToString()}).ToList(); list.Insert(0, new SelectListItem {Selected = true, Text = "...", Value = Guid.Empty.ToString()}); parameter.RuleParameterValues = list; } var redirects = db.RedirectTypes.Select(row => new ContractRedirectRedirectTypeModel { RedirectType = row }).ToList(); model.RedirectTypeModel = redirects; foreach (var redirect in model.RedirectTypeModel) { var list = db.RedirectTypeValues.Where(row => row.RedirectTypeId == redirect.RedirectType.Id) .ToList() .Select(row => new SelectListItem { Text = row.Name, Value = row.Id.ToString() }).ToList(); list.Insert(0, new SelectListItem { Selected = true, Text = "...", Value = Guid.Empty.ToString() }); redirect.RedirectTypeValues = list; } if (id != Guid.Empty) { model.UserContractRedirect = db.UserContractRedirects.FirstOrDefault(c => c.Id == id); if (model.UserContractRedirect != null) { //get the selectedvalues foreach (var ruleParameterValue in model.UserContractRedirect.RuleParameterValues) { var parameter = model.ParameterModel.FirstOrDefault( row => row.RuleParameter.Id == ruleParameterValue.RuleParameterId); if (parameter != null) { parameter.SelectedValue = ruleParameterValue; var singleOrDefault = parameter.RuleParameterValues.SingleOrDefault(row => row.Value == parameter.SelectedValue.Id.ToString()); if (singleOrDefault != null) singleOrDefault.Selected = true; } } //get the selectedvalues foreach (var redirectTypeValue in model.UserContractRedirect.RedirectTypeValues) { var redirect = model.RedirectTypeModel.FirstOrDefault( row => row.RedirectType.Id == redirectTypeValue.RedirectTypeId); if (redirect != null) { redirect.SelectedValue = redirectTypeValue; var singleOrDefault = redirect.RedirectTypeValues.SingleOrDefault(row => row.Value == redirect.SelectedValue.Id.ToString()); if (singleOrDefault != null) singleOrDefault.Selected = true; } } } } else { var contractUri = db.UserContractUris.FirstOrDefault(u => u.Id == contractUriId); model.UserContractRedirect = new UserContractRedirect(); model.UserContractRedirect.UserContractUri1 = contractUri; model.UserContractRedirect.Enabled = true; } return View(model); }
public ActionResult Edit(Guid id, Guid contractUriId, UserContractRedirectModel returnModel, FormCollection collection) { //Save Action //If id == null then insert try { ViewData["selectedTab"] = int.Parse(collection.GetValue("selectedTab").AttemptedValue); collection.Remove("selectedTab"); bool addNewUserContractRedirect = false; if (id == Guid.Empty) addNewUserContractRedirect = true; if (!addNewUserContractRedirect) { var model = db.UserContractRedirects.FirstOrDefault(u => u.Id == id); //model.Enabled = returnModel.UserContractRedirect.Enabled; //model.Name = returnModel.UserContractRedirect.Name; model.Enabled = returnModel.UserContractRedirect.Actief; model.Name = returnModel.UserContractRedirect.Name; //From Date if (collection.GetValue("UserContractRedirect.StartDatumActive").AttemptedValue.Contains("true")) { //We need to take the value of the date picker and store it in the model model.DateTimeValueStart = returnModel.UserContractRedirect.DateTimeValueStart; } else model.DateTimeValueStart = null; //To Date if (collection.GetValue("UserContractRedirect.StopDatumActive").AttemptedValue.Contains("true")) { model.DateTimeValueStop = returnModel.UserContractRedirect.DateTimeValueStop; } else model.DateTimeValueStop = null; //Weekday if (collection.GetValue("UserContractRedirect.WeekdayActive").AttemptedValue.Contains("true")) { string weekdayValue = collection.GetValue("ddlWeekday").AttemptedValue; if (!String.IsNullOrEmpty(weekdayValue) && !String.IsNullOrWhiteSpace(weekdayValue)) { int day = int.Parse(weekdayValue); if (day > 0 && day < 10) model.DayOfTheWeekValue = day; else model.DayOfTheWeekValue = null; } } else model.DayOfTheWeekValue = null; //Between from if (collection.GetValue("UserContractRedirect.BeginTimeActive").AttemptedValue.Contains("true")) { model.BeginTime = returnModel.UserContractRedirect.BeginTime; } else model.BeginTime = null; //Between To if (collection.GetValue("UserContractRedirect.EndTimeActive").AttemptedValue.Contains("true")) { model.EndTime = returnModel.UserContractRedirect.EndTime; } else model.EndTime = null; //Update var ruleValues = model.RuleParameterValues.ToList(); foreach (var ruleValue in ruleValues) { model.RuleParameterValues.Remove(ruleValue); } foreach (var parameter in returnModel.ParameterModel) { if (parameter.SelectedValue != null) { var guid = parameter.SelectedValue.Id; var selectedValue = db.RuleParameterValues.SingleOrDefault(row => row.Id == guid); if (selectedValue != null) { model.RuleParameterValues.Add(selectedValue); } } } var redirectValues = model.RedirectTypeValues.ToList(); foreach (var redirectValue in redirectValues) { model.RedirectTypeValues.Remove(redirectValue); } foreach (var redirect in returnModel.RedirectTypeModel) { if (redirect.SelectedValue != null) { var guid = redirect.SelectedValue.Id; var selectedValue = db.RedirectTypeValues.SingleOrDefault(row => row.Id == guid); if (selectedValue != null) { model.RedirectTypeValues.Add(selectedValue); } } } db.SaveChanges(); //return RedirectToAction("Edit", "ContractUri", new { id = model.UserContractUri, contractId = model.UserContractUri1.UserContractId }); return BreadCrum.RedirectToPreviousAction(Session, ControllerName); } else { //contractUriId = returnModel.UserContractRedirect.UserContractUri1.Id; var model = new UserContractRedirect(); model.Id = Guid.NewGuid(); model.UserContractUri = contractUriId; model.UserContractUri1 = db.UserContractUris.SingleOrDefault(row => row.Id == contractUriId); if (String.IsNullOrWhiteSpace(model.UserAgent)) { model.UserAgent = ""; } //model.Enabled = returnModel.UserContractRedirect.Enabled; //model.Name = returnModel.UserContractRedirect.Name; model.Enabled = collection.GetValue("UserContractRedirect.Actief").AttemptedValue.Contains("true"); model.Name = collection.GetValue("UserContractRedirect.Name").AttemptedValue; //From Date if (collection.GetValue("UserContractRedirect.StartDatumActive").AttemptedValue.Contains("true")) { //We need to take the value of the date picker and store it in the model model.DateTimeValueStart = returnModel.UserContractRedirect.DateTimeValueStart; } else model.DateTimeValueStart = null; //To Date if (collection.GetValue("UserContractRedirect.StopDatumActive").AttemptedValue.Contains("true")) { model.DateTimeValueStop = returnModel.UserContractRedirect.DateTimeValueStop; } else model.DateTimeValueStop = null; //Weekday if (collection.GetValue("UserContractRedirect.WeekdayActive").AttemptedValue.Contains("true")) { string weekdayValue = collection.GetValue("ddlWeekday").AttemptedValue; if (!String.IsNullOrEmpty(weekdayValue) && !String.IsNullOrWhiteSpace(weekdayValue)) { int day = int.Parse(weekdayValue); if (day > 0 && day < 10) model.DayOfTheWeekValue = day; else model.DayOfTheWeekValue = null; } } else model.DayOfTheWeekValue = null; //Between from if (collection.GetValue("UserContractRedirect.BeginTimeActive").AttemptedValue.Contains("true")) { model.BeginTime = returnModel.UserContractRedirect.BeginTime; } else model.BeginTime = null; //Between To if (collection.GetValue("UserContractRedirect.EndTimeActive").AttemptedValue.Contains("true")) { model.EndTime = returnModel.UserContractRedirect.EndTime; } else model.EndTime = null; var ruleValues = model.RuleParameterValues.ToList(); foreach (var ruleValue in ruleValues) { model.RuleParameterValues.Remove(ruleValue); } foreach (var parameter in returnModel.ParameterModel) { if (parameter.SelectedValue != null) { var guid = parameter.SelectedValue.Id; var selectedValue = db.RuleParameterValues.SingleOrDefault(row => row.Id == guid); if (selectedValue != null) { model.RuleParameterValues.Add(selectedValue); } } } var redirectValues = model.RedirectTypeValues.ToList(); foreach (var redirectValue in redirectValues) { model.RedirectTypeValues.Remove(redirectValue); } foreach (var redirect in returnModel.RedirectTypeModel) { if (redirect.SelectedValue != null) { var guid = redirect.SelectedValue.Id; var selectedValue = db.RedirectTypeValues.SingleOrDefault(row => row.Id == guid); if (selectedValue != null) { model.RedirectTypeValues.Add(selectedValue); } } } //Update db.UserContractRedirects.Add(model); db.SaveChanges(); //return RedirectToAction("Edit", "ContractUri", new { id = model.UserContractUri, contractId = model.UserContractUri1.UserContractId }); return BreadCrum.RedirectToPreviousAction(Session, ControllerName); } } catch (DbEntityValidationException ex) { //return RedirectToAction("Edit", new { id, contractUriId }); return BreadCrum.RedirectToPreviousAction(Session, ControllerName); } }