Пример #1
0
        public static string GetFormFieldValue2String(this HttpRequestBase request, WebFormField webFormField)
        {
            string formFieldName = "Page.WebForm.item." + webFormField.Name + "_Value2";
            string stringValue2  = null;

            if (request.Unvalidated.Form.AllKeys.Contains(formFieldName))
            {
                stringValue2 = request.Unvalidated.Form.Get(formFieldName) ?? string.Empty;
            }
            if (stringValue2 == null)
            {
                formFieldName = "WebForm.item." + webFormField.Name + "_Value2";;
                if (request.Unvalidated.Form.AllKeys.Contains(formFieldName))
                {
                    stringValue2 = request.Unvalidated.Form.Get(formFieldName) ?? string.Empty;
                }
            }
            if (stringValue2 == null)
            {
                formFieldName = "item." + webFormField.Name + "_Value2";;
                if (request.Unvalidated.Form.AllKeys.Contains(formFieldName))
                {
                    stringValue2 = request.Unvalidated.Form.Get(formFieldName) ?? string.Empty;
                }
            }

            return(stringValue2);
        }
Пример #2
0
        public static void SetDefaultsForNew(this WebFormField webFormField, WebForm webForm)
        {
            if (webForm != null)
            {
                webFormField.WebForm   = webForm;
                webFormField.WebFormId = webForm.WebFormId;
                webFormField.ClientId  = webForm.ClientId;
                webFormField.Order     = webForm.WebFormFields.Count == 0 ? 100 : webForm.WebFormFields.Max(wf => wf.Order) + 10;
                webFormField.Name      = "New Field";
                bool nameIsDirty = webForm.WebFormFields.Any(wf => wf.Name.ToLower() == webFormField.Name.ToLower());
                int  counter     = 1;
                do
                {
                    counter++;
                    webFormField.Name = "New Field " + counter;
                    nameIsDirty       = webForm.WebFormFields.Any(wf => wf.Name.ToLower() == webFormField.Name.ToLower());
                } while (nameIsDirty);

                webFormField.LabelText   = webFormField.Name;
                webFormField.Description = webFormField.Name;
            }
            webFormField.Watermark        = webFormField.Name;
            webFormField.Description      = webFormField.Name;
            webFormField.DataType         = GStoreValueDataType.SingleLineText;
            webFormField.DataTypeString   = webFormField.DataType.ToDisplayName();
            webFormField.IsPending        = false;
            webFormField.EndDateTimeUtc   = DateTime.UtcNow.AddYears(100);
            webFormField.StartDateTimeUtc = DateTime.UtcNow.AddMinutes(-1);
        }
Пример #3
0
        private static string GetValueListItemName(this WebFormField field, string stringValue)
        {
            //convert id value to text
            int value;

            if (!int.TryParse(stringValue, out value))
            {
                return("invalid value (not int): '" + stringValue + "'");
            }
            if (value == 0)
            {
                return("invalid value: " + stringValue);
            }
            if (field.ValueList == null)
            {
                return("unknown value (no value list): '" + stringValue + "'");
            }
            ValueListItem listItem = field.ValueList.ValueListItems.AsQueryable().WhereIsActive().SingleOrDefault(vli => vli.ValueListItemId == value);

            if (listItem == null)
            {
                return("unknown value (not found): '" + stringValue + "'");
            }
            return("'" + listItem.Name + "'");
        }
Пример #4
0
        public ActionResult FieldEdit(WebFormField webFormField)
        {
            WebFormField webFormFieldOriginal = GStoreDb.WebFormFields.FindById(webFormField.WebFormFieldId);

            if (webFormFieldOriginal == null)
            {
                return(HttpBadRequest("webFormField not found by id: " + webFormField.WebFormFieldId));
            }

            string originalName = webFormFieldOriginal.Name;

            if (originalName != webFormField.Name)
            {
                //validate new name is not taken
                if (webFormFieldOriginal.WebForm.WebFormFields.Any(f => (f.WebFormFieldId != webFormField.WebFormFieldId) && (f.Name.ToLower() == (webFormField.Name ?? "").ToLower())))
                {
                    ModelState.AddModelError("Name", "A field with the name '" + webFormField.Name + "' already exists. Choose a new name or edit the original.");
                }
            }

            if (ModelState.IsValid)
            {
                webFormField.DataTypeString = webFormField.DataType.ToDisplayName();
                webFormField.UpdateAuditFields(CurrentUserProfileOrThrow);
                webFormField = GStoreDb.WebFormFields.Update(webFormField);
                GStoreDb.SaveChanges();
                AddUserMessage("Web Form Field Updated", "Changes saved successfully to Web Form Field '" + webFormField.Name.ToHtml() + "' [" + webFormField.WebFormFieldId + "]", UserMessageType.Success);
                return(RedirectToAction("FieldIndex", new { id = webFormField.WebFormId }));
            }
            webFormField.WebForm = GStoreDb.WebForms.Single(wf => wf.WebFormId == webFormField.WebFormId);

            this.BreadCrumbsFunc = htmlHelper => this.WebFormFieldBreadcrumb(htmlHelper, webFormField);
            return(View(webFormField));
        }
Пример #5
0
        public static bool ActivateWebFormField(this SystemAdminBaseController controller, int webFormFieldId)
        {
            WebFormField webFormField = controller.GStoreDb.WebFormFields.FindById(webFormFieldId);

            if (webFormField == null)
            {
                controller.AddUserMessage("Activate Web Form Field Failed!", "Web Form Field not found by id: " + webFormFieldId, AppHtmlHelpers.UserMessageType.Danger);
                return(false);
            }

            if (webFormField.IsActiveDirect())
            {
                controller.AddUserMessage("Web Form Field is already active.", "Web Form Field is already active. id: " + webFormFieldId, AppHtmlHelpers.UserMessageType.Info);
                return(false);
            }

            webFormField.IsPending        = false;
            webFormField.StartDateTimeUtc = DateTime.UtcNow.AddMinutes(-1);
            webFormField.EndDateTimeUtc   = DateTime.UtcNow.AddYears(100);
            controller.GStoreDb.WebFormFields.Update(webFormField);
            controller.GStoreDb.SaveChanges();
            controller.AddUserMessage("Activated Web Form Field", "Activated Web Form Field '" + webFormField.Name.ToHtml() + "' [" + webFormField.WebFormFieldId + "]" + " - Web Form '" + webFormField.WebForm.Name.ToHtml() + "' [" + webFormField.WebForm.WebFormId + "]", AppHtmlHelpers.UserMessageType.Info);

            return(true);
        }
Пример #6
0
        public ActionResult FieldDeleteConfirmed(int id)
        {
            try
            {
                WebFormField target = GStoreDb.WebFormFields.FindById(id);

                if (target == null)
                {
                    //webForm not found, already deleted? overpost?
                    throw new ApplicationException("Error deleting Web Form Field. Web Form Field not found. It may have been deleted by another user. Web Form Field Id: " + id);
                }

                bool deleted = GStoreDb.WebFormFields.DeleteById(id);
                GStoreDb.SaveChanges();
                if (deleted)
                {
                    AddUserMessage("Web Form Field Deleted", "Web Form Field [" + id + "] was deleted successfully.", UserMessageType.Success);
                }
                else
                {
                    AddUserMessage("Deleting Web Form Field Failed!", "Deleting Web Form Field Failed. Web Form Id: " + id, UserMessageType.Danger);
                }

                return(RedirectToAction("FieldIndex", new { id = target.WebFormId }));
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Error deleting Web Form Field.  See inner exception for errors.  Related child tables may still have data to be deleted. Web Form Field Id: " + id, ex);
            }
        }
Пример #7
0
        public ActionResult FieldCreate(WebFormField webFormField)
        {
            if (webFormField.WebFormId == default(int))
            {
                return(HttpBadRequest("Web Form id is 0"));
            }

            IGstoreDb db      = GStoreDb;
            WebForm   webForm = db.WebForms.FindById(webFormField.WebFormId);

            if (webForm == null)
            {
                return(HttpNotFound("Web Form not found. Web Form id: " + webFormField.WebFormId));
            }

            if (webForm.WebFormFields.Any(f => f.Name.ToLower() == (webFormField.Name ?? "").ToLower()))
            {
                ModelState.AddModelError("Name", "A field with the name '" + webFormField.Name + "' already exists. Choose a new name or edit the original.");
            }

            if (ModelState.IsValid)
            {
                webFormField.ClientId       = webForm.ClientId;
                webFormField.WebFormId      = webForm.WebFormId;
                webFormField.DataTypeString = webFormField.DataType.ToDisplayName();
                webFormField = GStoreDb.WebFormFields.Add(webFormField);
                GStoreDb.SaveChanges();
                AddUserMessage("Web Form Field Created", "Web Form Field '" + webFormField.Name.ToHtml() + "' [" + webFormField.WebFormFieldId + "] created successfully", UserMessageType.Success);
                return(RedirectToAction("FieldIndex", new { id = webFormField.WebFormId }));
            }

            webFormField.WebForm = webForm;
            this.BreadCrumbsFunc = htmlHelper => this.WebFormFieldBreadcrumb(htmlHelper, webFormField);
            return(View(webFormField));
        }
Пример #8
0
        protected MvcHtmlString WebFormFieldBreadcrumb(HtmlHelper htmlHelper, WebFormField webFormField, bool ShowAsLink = false)
        {
            RouteValueDictionary routeData = null;
            string name     = "(unknown)";
            bool   showLink = false;

            if (webFormField != null)
            {
                if (webFormField.WebFormFieldId == 0)
                {
                    name = "New";
                }
                else
                {
                    showLink  = ShowAsLink;
                    routeData = new RouteValueDictionary(new { id = webFormField.WebFormFieldId });
                    name      = "'" + webFormField.Name + "' [" + webFormField.WebFormFieldId + "]";
                }
            }
            return(new MvcHtmlString(
                       WebFormFieldsBreadcrumb(htmlHelper, webFormField.WebForm, true).ToHtmlString()
                       + " -> "
                       + (showLink ? htmlHelper.ActionLink(name, "FieldDetails", "WebFormSysAdmin", routeData, null).ToHtmlString() : name)
                       ));
        }
Пример #9
0
        /// <summary>
        /// Returns true if store front and client (parent record) are both active
        /// </summary>
        /// <param name="storeFront"></param>
        /// <returns></returns>
        public static bool IsActiveBubble(this WebFormField webFormField)
        {
            if (webFormField == null)
            {
                throw new ArgumentNullException("webFormField");
            }

            return(webFormField.IsActiveDirect() && webFormField.WebForm.IsActiveBubble());
        }
Пример #10
0
        private static string GetValueListItemNameList(this WebFormField field, string valueIdList)
        {
            //convert id values to text
            string[] stringValues = valueIdList.Split(',');
            string   returnString = string.Empty;

            foreach (string value in stringValues)
            {
                if (!string.IsNullOrEmpty(returnString))
                {
                    returnString += ",";
                }
                returnString += field.GetValueListItemName(value);
            }
            return(returnString);
        }
Пример #11
0
        public ActionResult FieldDelete(int?id)
        {
            if (!id.HasValue)
            {
                return(HttpBadRequest("Web Form Field id is null"));
            }
            IGstoreDb    db           = GStoreDb;
            WebFormField webFormField = db.WebFormFields.FindById(id.Value);

            if (webFormField == null)
            {
                return(HttpNotFound("Web Form Field not found. Web Form Field id: " + id));
            }

            this.BreadCrumbsFunc = htmlHelper => this.WebFormFieldBreadcrumb(htmlHelper, webFormField);
            return(View(webFormField));
        }
Пример #12
0
        public ActionResult FieldCreate(int?id)
        {
            if (!id.HasValue)
            {
                return(HttpBadRequest("Web Form id is null"));
            }
            IGstoreDb db      = GStoreDb;
            WebForm   webForm = db.WebForms.FindById(id.Value);

            if (webForm == null)
            {
                return(HttpNotFound("Web Form not found. Web Form id: " + id));
            }

            WebFormField model = GStoreDb.WebFormFields.Create();

            model.SetDefaultsForNew(webForm);

            this.BreadCrumbsFunc = htmlHelper => this.WebFormFieldBreadcrumb(htmlHelper, model);
            return(View(model));
        }
Пример #13
0
        public ActionResult FieldFastAdd(int webFormId, string stringValue)
        {
            if (string.IsNullOrEmpty(stringValue))
            {
                AddUserMessage("Field not added", "You must enter text to add a Web Form Field", UserMessageType.Danger);
                return(RedirectToAction("FieldIndex", new { id = webFormId }));
            }

            WebForm webForm = GStoreDb.WebForms.FindById(webFormId);

            if (webForm == null)
            {
                return(HttpBadRequest("Web Form not found by id: " + webFormId));
            }

            if (webForm.WebFormFields.Any(vl => vl.Name.ToLower() == stringValue.ToLower()))
            {
                AddUserMessage("Field not added", "Field with name '" + stringValue.ToHtml() + "' already exists in this Web Form. Use a different Field Name or remove the old Field first.", UserMessageType.Danger);
                return(RedirectToAction("FieldIndex", new { id = webFormId }));
            }

            WebFormField webFormField = GStoreDb.WebFormFields.Create();

            webFormField.SetDefaultsForNew(webForm);
            webFormField.Name                = stringValue;
            webFormField.Description         = stringValue;
            webFormField.LabelText           = stringValue;
            webFormField.Watermark           = "Enter a " + stringValue;
            webFormField.HelpLabelTopText    = string.Empty;
            webFormField.HelpLabelBottomText = string.Empty;

            GStoreDb.WebFormFields.Add(webFormField);
            GStoreDb.SaveChanges();

            AddUserMessage("Field added to Web Form", "Field '" + stringValue.ToHtml() + "' [" + webFormField.WebFormFieldId + "] was successfully added to the Web Form", UserMessageType.Success);
            return(RedirectToAction("FieldIndex", new { id = webFormId }));
        }
        public WebFormFieldEditAdminViewModel(WebFormEditAdminViewModel WebFormEditAdminViewModel, WebFormField webFormField, int index)
        {
            if (WebFormEditAdminViewModel == null)
            {
                throw new ArgumentNullException("WebFormEditAdminViewModel");
            }

            if (WebFormEditAdminViewModel.WebForm == null)
            {
                throw new ArgumentNullException("WebFormEditAdminViewModel.WebForm", "WebFormEditAdminViewModel.WebForm cannot be null. make sure page edit sets this after post");
            }

            this.Index = index;

            this.WebFormEditAdminViewModel = WebFormEditAdminViewModel;
            this.WebForm          = WebFormEditAdminViewModel.WebForm;
            this.WebFormId        = WebFormEditAdminViewModel.WebForm.WebFormId;
            this.IsStoreAdminEdit = WebFormEditAdminViewModel.IsStoreAdminEdit;
            this.IsReadOnly       = WebFormEditAdminViewModel.IsReadOnly;
            this.IsDeletePage     = WebFormEditAdminViewModel.IsDeletePage;
            this.IsCreatePage     = WebFormEditAdminViewModel.IsCreatePage;
            this.ActiveTab        = WebFormEditAdminViewModel.ActiveTab;

            SetDefaults(WebFormEditAdminViewModel);
            if (webFormField != null)
            {
                this.Name                  = webFormField.Name;
                this.DataType              = webFormField.DataType;
                this.DataTypeString        = webFormField.DataTypeString;
                this.Description           = webFormField.Description;
                this.EndDateTimeUtc        = webFormField.EndDateTimeUtc;
                this.HelpLabelBottomText   = webFormField.HelpLabelBottomText;
                this.HelpLabelTopText      = webFormField.HelpLabelTopText;
                this.IsPending             = webFormField.IsPending;
                this.IsRequired            = webFormField.IsRequired;
                this.LabelText             = webFormField.LabelText;
                this.Watermark             = webFormField.Watermark;
                this.Order                 = webFormField.Order;
                this.StartDateTimeUtc      = webFormField.StartDateTimeUtc;
                this.TextAreaColumns       = webFormField.TextAreaColumns;
                this.TextAreaRows          = webFormField.TextAreaRows;
                this.ValueList             = webFormField.ValueList;
                this.ValueListId           = webFormField.ValueListId;
                this.WebFormFieldId        = webFormField.WebFormFieldId;
                this.WebFormFieldResponses = webFormField.WebFormFieldResponses;

                this.IsActiveDirect = webFormField.IsActiveDirect();
                this.IsActiveBubble = webFormField.IsActiveBubble();

                FillListsIfEmpty(webFormField.Client);
            }
        }
Пример #15
0
        public virtual PartialViewResult UpdateWebFormAjax(int?id, WebFormEditAdminViewModel WebFormEditAdminViewModel, WebFormFieldEditAdminViewModel[] WebFormFields, string FastAddField)
        {
            if (!id.HasValue)
            {
                return(HttpBadRequestPartial("id is null"));
            }

            if (WebFormEditAdminViewModel.WebFormId == 0)
            {
                return(HttpBadRequestPartial("Web Form Id in view model is 0"));
            }

            if (WebFormEditAdminViewModel.WebFormId != id.Value)
            {
                return(HttpBadRequestPartial("Web Form Id mismatch. Parameter value: '" + id.Value + "' != view model value: " + WebFormEditAdminViewModel.WebFormId));
            }

            StoreFront storeFront      = CurrentStoreFrontOrThrow;
            WebForm    webFormToUpdate = storeFront.Client.WebForms.SingleOrDefault(wf => wf.WebFormId == WebFormEditAdminViewModel.WebFormId);

            if (webFormToUpdate == null)
            {
                throw new ApplicationException("Web Form not found in client web forms. WebFormId: " + WebFormEditAdminViewModel.WebFormId + " Client '" + storeFront.Client.Name + "' [" + storeFront.ClientId + "]");
            }

            bool nameIsValid    = GStoreDb.ValidateWebFormName(this, WebFormEditAdminViewModel.Name, storeFront.ClientId, WebFormEditAdminViewModel.WebFormId);
            bool fastAddIsValid = false;

            if (!string.IsNullOrWhiteSpace(FastAddField))
            {
                fastAddIsValid = GStoreDb.ValidateWebFormFieldName(this, FastAddField, storeFront.ClientId, WebFormEditAdminViewModel.WebFormId, null);
            }

            if (nameIsValid && ModelState.IsValid)
            {
                WebForm webForm = null;
                try
                {
                    webForm = GStoreDb.UpdateWebForm(WebFormEditAdminViewModel, storeFront, CurrentUserProfileOrThrow);
                    WebFormEditAdminViewModel.UpdateWebForm(webForm);

                    if (WebFormFields != null && WebFormFields.Count() > 0)
                    {
                        foreach (WebFormFieldEditAdminViewModel field in WebFormFields)
                        {
                            GStoreDb.UpdateWebFormField(field, storeFront, CurrentUserProfileOrThrow);
                        }
                    }

                    if (fastAddIsValid)
                    {
                        WebFormField newField = GStoreDb.CreateWebFormFieldFastAdd(WebFormEditAdminViewModel, FastAddField, storeFront, CurrentUserProfileOrThrow);
                        AddUserMessage("Field Created!", "Field '" + newField.Name.ToHtml() + "' [" + newField.WebFormFieldId + "] created successfully.", UserMessageType.Success);
                        ModelState.Remove("FastAddField");
                    }

                    AddUserMessage("Web Form Changes Saved!", "Web Form '" + webForm.Name.ToHtml() + "' [" + webForm.WebFormId + "] saved successfully for Client '" + storeFront.Client.Name.ToHtml() + "' [" + storeFront.ClientId + "]", UserMessageType.Success);
                    this.ModelState.Clear();
                    WebFormEditAdminViewModel = new WebFormEditAdminViewModel(CurrentStoreFrontOrThrow, CurrentUserProfileOrThrow, webForm, isStoreAdminEdit: true, activeTab: WebFormEditAdminViewModel.ActiveTab, sortBy: WebFormEditAdminViewModel.SortBy, sortAscending: WebFormEditAdminViewModel.SortAscending);
                    return(PartialView("_WebFormEditPartial", WebFormEditAdminViewModel));
                }
                catch (Exception ex)
                {
                    string errorMessage = "An error occurred while saving your changes to Web Form '" + WebFormEditAdminViewModel.Name + "' [" + WebFormEditAdminViewModel.WebFormId + "] for Client: '" + storeFront.Client.Name + "' [" + storeFront.ClientId + "] \nError: '" + ex.GetType().FullName + "'";

                    if (CurrentUserProfileOrThrow.AspNetIdentityUserIsInRoleSystemAdmin())
                    {
                        errorMessage += " \nException.ToString(): '" + ex.ToString() + "'";
                    }
                    AddUserMessage("Error Saving Web Form!", errorMessage.ToHtmlLines(), UserMessageType.Danger);
                    ModelState.AddModelError("Ajax", errorMessage);
                }
            }
            else
            {
                AddUserMessage("Web Form Edit Error", "There was an error with your entry for Web Form " + WebFormEditAdminViewModel.Name.ToHtml() + " [" + WebFormEditAdminViewModel.WebFormId + "] for Client '" + storeFront.Client.Name.ToHtml() + "' [" + storeFront.ClientId + "]. Please correct it.", UserMessageType.Danger);
            }

            foreach (string key in this.ModelState.Keys.Where(k => k.StartsWith("WebFormFields[")).ToList())
            {
                string temp = key.Remove(0, ("WebFormFields[").Length);
                temp = temp.Remove(temp.IndexOf(']'));
                int index = int.Parse(temp);

                System.Web.Mvc.ModelState value = null;
                this.ModelState.TryGetValue(key, out value);
                if (value.Errors.Count == 0)
                {
                    this.ModelState.Remove(key);
                }
                else
                {
                    this.ModelState.AddModelError("", "There was an error with field #" + (index + 1) + ". Please correct it and save again.");
                }
            }


            WebFormEditAdminViewModel.FillFieldsFromViewModel(webFormToUpdate, WebFormFields);
            WebFormEditAdminViewModel.IsStoreAdminEdit = true;
            return(PartialView("_WebFormEditPartial", WebFormEditAdminViewModel));
        }