public void FillFieldsFromViewModel(WebForm webFormToUpdate, WebFormFieldEditAdminViewModel[] webFormFields)
 {
     this.WebForm = webFormToUpdate;
     this.WebFormFields = webFormToUpdate.WebFormFields;
     this.webFormFieldPostData = webFormFields;
     this._webFormFieldViewModels = null;
 }
        public static WebFormField UpdateWebFormField(this IGstoreDb db, WebFormFieldEditAdminViewModel viewModel, StoreFront storeFront, UserProfile userProfile)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }

            if (viewModel.WebFormId == 0)
            {
                throw new ArgumentNullException("viewModel.WebFormId", "viewModel.WebFormId cannot be 0. Make sure it's set in the form");
            }

            if (viewModel.WebFormFieldId == 0)
            {
                throw new ArgumentNullException("viewModel.WebFormFieldId", "viewModel.WebFormFieldId cannot be 0. Make sure it's set in the form");
            }

            if (storeFront == null)
            {
                throw new ArgumentNullException("storeFront");
            }
            if (userProfile == null)
            {
                throw new ArgumentNullException("userProfile");
            }

            //find existing record, update it
            WebFormField webFormFieldToUpdate = db.WebFormFields.Where(wf => wf.ClientId == storeFront.ClientId && (wf.WebFormId == viewModel.WebFormId) && (wf.WebFormFieldId == viewModel.WebFormFieldId)).SingleOrDefault();
            if (webFormFieldToUpdate == null)
            {
                throw new ApplicationException("Web Form Field not found in client web form fields. Web Form Field Id: " + viewModel.WebFormFieldId + " Web Form Id: " + viewModel.WebFormId + " Client '" + storeFront.Client.Name + " [" + storeFront.ClientId + "]");
            }

            webFormFieldToUpdate.DataType = viewModel.DataType;
            webFormFieldToUpdate.DataTypeString = viewModel.DataType.ToDisplayName();
            webFormFieldToUpdate.Description = viewModel.Description;
            webFormFieldToUpdate.EndDateTimeUtc = viewModel.EndDateTimeUtc;
            webFormFieldToUpdate.HelpLabelBottomText = viewModel.HelpLabelBottomText;
            webFormFieldToUpdate.HelpLabelTopText = viewModel.HelpLabelTopText;
            webFormFieldToUpdate.IsPending = viewModel.IsPending;
            webFormFieldToUpdate.IsRequired = viewModel.IsRequired;
            webFormFieldToUpdate.LabelText = viewModel.LabelText;
            webFormFieldToUpdate.Watermark = viewModel.Watermark;
            webFormFieldToUpdate.Name = viewModel.Name;
            webFormFieldToUpdate.Order = viewModel.Order;
            webFormFieldToUpdate.StartDateTimeUtc = viewModel.StartDateTimeUtc;
            webFormFieldToUpdate.TextAreaColumns = viewModel.TextAreaColumns;
            webFormFieldToUpdate.TextAreaRows = viewModel.TextAreaRows;
            webFormFieldToUpdate.UpdateDateTimeUtc = DateTime.UtcNow;
            webFormFieldToUpdate.UpdatedBy = userProfile;
            webFormFieldToUpdate.UpdatedBy_UserProfileId = userProfile.UserProfileId;
            webFormFieldToUpdate.ValueListId = viewModel.ValueListId;

            webFormFieldToUpdate.UpdateAuditFields(userProfile);
            try
            {
                webFormFieldToUpdate = db.WebFormFields.Update(webFormFieldToUpdate);
                db.SaveChanges();
                return webFormFieldToUpdate;
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Database update failed", ex);
            }
        }