public ActionResult AddAdvisorId(AdvisorInformationViewModel model) { model.ListAdvisorIds = model.ListAdvisorIds ?? new List <AdvisorIdClass>(); var isValid = AdvisorViewManager.ValidateAdvisorIds(model as AdvisorInformationViewModel, ModelState); if (isValid) { model.ListAdvisorIds.Add(new AdvisorIdClass { Status = ProfileItemStatus.Insert }); } return(PartialView("EditorTemplates/Admin.AdvisorInformation", model)); }
public ActionResult AdminEventBadgeUpdate(AdvisorInformationViewModel viewModel) { if (viewModel.Badge == null || !viewModel.Badge.DirtyFlag) //if nothing has changed don't need to go any further { return(new HttpStatusCodeResult(HttpStatusCode.OK)); } viewModel.LoadSecurity("advisors-admininformationupdate", viewModel); //ignore errors for non-badge related fields tcchc.ValidationHelper.IgnoreValidationExceptFor(ModelState, "Badge.Company", "Badge.Name", "Badge.NickName", "Badge.Location"); if (ModelState.IsValid) { var success = AdvisorInfoManager.SaveEventBadgeInfo(FederatedLoginClient.User.UserMasterEntityId, viewModel.AdvisorInformation); return(new HttpStatusCodeResult(success ? HttpStatusCode.OK : HttpStatusCode.InternalServerError)); } else { // Validation error(s) detected on the server side var partialView = PartialView("EditorTemplates/Admin.EventBadge", viewModel); Response.StatusCode = (int)HttpStatusCode.PartialContent; return(partialView); } }
public static bool ValidateAdvisorIds(AdvisorInformationViewModel model, ModelStateDictionary modelState) { if (model.ListAdvisorIds.IsNullOrEmpty()) { return(true); } for (var i = model.ListAdvisorIds.Count - 1; i >= 0; i--) { if (model.ListAdvisorIds[i].Id.Contains(",")) { var ids = model.ListAdvisorIds[i].Id.Split(','); foreach (var id in ids) { var advisorId = new AdvisorIdClass(); advisorId.Id = id.Trim(); advisorId.Status = ProfileItemStatus.Insert; model.ListAdvisorIds.Add(advisorId); } model.ListAdvisorIds.Remove(model.ListAdvisorIds[i]); } } for (int i = 0; i < model.ListAdvisorIds.Count; i++) { var validateName = string.Format("ListAdvisorIds[{0}].Id", i); var validateStatus = string.Format("ListAdvisorIds[{0}].Status", i); if (!modelState.ContainsKey(validateName)) { var state = new ModelState(); //state.Value = new ValueProviderResult(); modelState.Add(validateName, state); modelState.Add(validateStatus, state); } } var keys = modelState.Keys.Where(k => k.StartsWith("ListAdvisorIds")).ToList(); keys.ForEach(k => modelState[k].Value = null); var availableIds = model.ListAdvisorIds.Where(i => i.Status != ProfileItemStatus.Delete && i.Id.IsNotNullOrEmpty()).ToList(); if (availableIds.Count == 0) { return(true); } var last = availableIds.Last(); var exists = false; if (availableIds.Count > 1) { var others = availableIds.Take(availableIds.Count - 1); exists = others.Any(i => i.Id.Equals(last.Id, StringComparison.OrdinalIgnoreCase)); } if (exists) { for (var i = model.ListAdvisorIds.Count - 1; i >= 0; i--) { if (model.ListAdvisorIds[i].Id.IsNotNullOrEmpty() && model.ListAdvisorIds[i].Id.Equals(last.Id, StringComparison.OrdinalIgnoreCase)) { var validateName = string.Format("ListAdvisorIds[{0}].Id", i); modelState[validateName].Errors.Add("ID numbers must be unique within your agency"); return(false); } } } var isValid = true; if (!exists) { for (var i = model.ListAdvisorIds.Count - 1; i >= 0; i--) { var id = model.ListAdvisorIds[i].Id; var advisorId = availableIds.FirstOrDefault(a => a.Id.Equals(id, StringComparison.OrdinalIgnoreCase)); if (advisorId != null) { exists = Advisor.AdvisorIdExists(model.AdvisorParentCompanyMasterEntityId, model.AdvisorMasterEntityId, id); if (exists) { isValid = false; var validateName = string.Format("ListAdvisorIds[{0}].Id", i); modelState[validateName].Errors.Add("ID numbers must be unique within your agency"); } } } } return(isValid); }
public ActionResult AdminInformationUpdate(AdvisorInformationViewModel viewModel) { viewModel.LoadSecurity("advisors-admininformationupdate", viewModel); // no validation on DBA if not IC var editIdType = viewModel.CanView(SecurityConstants.Advisor.EditAdvisorIdType); if (viewModel.AdvisorType.TypeId != AdvisorInfoManager.IndependentContractorTypeId && ModelState.ContainsKey("AdvisorDoingBusinessAs")) { ModelState["AdvisorDoingBusinessAs"].Errors.Clear(); } // no validate on Type for self-edit if (!editIdType && ModelState.ContainsKey("AdvisorType.TypeId")) { ModelState["AdvisorType.TypeId"].Errors.Clear(); } // no validate AdvisorID for self-edit if (!editIdType && viewModel.ListAdvisorIds.IsNotNullOrEmpty()) { for (int i = 0; i < viewModel.ListAdvisorIds.Count; i++) { var name = string.Format("ListAdvisorIds[{0}].Id", i); if (ModelState.ContainsKey(name)) { ModelState[name].Errors.Clear(); } } } if (ModelState.ContainsKey("SellingTravelSince")) { ModelState["SellingTravelSince"].Errors.Clear(); } if (ModelState.ContainsKey("Badge.Company")) { ModelState["Badge.Company"].Errors.Clear(); } if (ModelState.ContainsKey("Badge.Name")) { ModelState["Badge.Name"].Errors.Clear(); } if (ModelState.ContainsKey("Badge.NickName")) { ModelState["Badge.NickName"].Errors.Clear(); } if (ModelState.ContainsKey("Badge.Location")) { ModelState["Badge.Location"].Errors.Clear(); } var isValid = ModelState.IsValid && AdvisorViewManager.ValidateAdvisorIds(viewModel, ModelState); if (isValid) { var userMasterEntityId = FederatedLoginClient.User.UserMasterEntityId; var success = AdvisorInfoManager.SaveAdminInfo(userMasterEntityId, viewModel.AdvisorInformation, editIdType); return(new HttpStatusCodeResult(success ? HttpStatusCode.OK : HttpStatusCode.InternalServerError)); } else { // Validation error(s) detected on the server side var partialView = PartialView("EditorTemplates/Admin.AdvisorInformation", viewModel); Response.StatusCode = (int)HttpStatusCode.PartialContent; return(partialView); } }