public void GetAllContactFields_ReturnAllContactFields_Succeed()
        {
            mockFormRepository.Setup(c => c.GetAllContactFields()).Verifiable();
            GetAllContactFieldsRequest  request  = new GetAllContactFieldsRequest();
            GetAllContactFieldsResponse response = formService.GetAllContactFields(request);

            mockRepository.VerifyAll();
            Assert.AreEqual(null, response.Exception);
        }
        public ActionResult SaveFormAs(int formId)
        {
            GetAllContactFieldsRequest  fieldsRequest  = new GetAllContactFieldsRequest();
            GetAllContactFieldsResponse fieldsResponse = formService.GetAllContactFields(fieldsRequest);
            GetFormResponse             response       = formService.GetForm(new GetFormRequest(formId)
            {
                AccountId   = this.Identity.ToAccountID(),
                RequestedBy = this.Identity.ToUserID(),
                RoleId      = this.Identity.ToRoleID()
            });

            response.FormViewModel.Fields = fieldsResponse.ContactFields.Where(c => c.FieldId != (int)ContactFields.PartnerTypeField && c.FieldId != (int)ContactFields.LifecycleStageField && c.FieldId != (int)ContactFields.LeadScore && c.FieldId != (int)ContactFields.DonotEmail && c.FieldId != (int)ContactFields.Owner).ToList();
            GetAllCustomFieldsRequest  customFieldRequest  = new GetAllCustomFieldsRequest(this.Identity.ToAccountID());
            GetAllCustomFieldsResponse customFieldResponse = customFieldService.GetAllCustomFieldsForForms(customFieldRequest);

            response.FormViewModel.CustomFields = customFieldResponse.CustomFields.Where(c => c.StatusId == FieldStatus.Active).ToList();
            var customFieldIds = response.FormViewModel.CustomFields.Select(f => f.FieldId).ToList();
            var communityField = response.FormViewModel.Fields.Where(c => c.FieldId == (int)ContactFields.Community).FirstOrDefault();

            communityField.FieldInputTypeId = FieldType.dropdown;
            var communityFormField = response.FormViewModel.FormFields.Where(c => c.FieldId == (int)ContactFields.Community).FirstOrDefault();

            if (communityFormField != null)
            {
                communityFormField.FieldInputTypeId = FieldType.dropdown;
            }
            var contactFieldIds = Enum.GetValues(typeof(ContactFields)).Cast <ContactFields>().ToList();

            response.FormViewModel.FormFields = response.FormViewModel.FormFields.Where(f => customFieldIds.Contains(f.FieldId) || contactFieldIds.Contains((ContactFields)f.FieldId)).OrderBy(f => f.SortId).ToList();
            foreach (FormFieldViewModel formField in response.FormViewModel.FormFields)
            {
                FieldViewModel fieldViewModel = response.FormViewModel.CustomFields.Where(c => c.FieldId == formField.FieldId).FirstOrDefault();
                if (fieldViewModel != null && fieldViewModel.ValueOptions.IsAny())
                {
                    formField.ValueOptions = fieldViewModel.ValueOptions;
                }
            }
            response.FormViewModel.FormId            = 0;
            response.FormViewModel.Status            = Entities.FormStatus.Active;
            response.FormViewModel.Name              = "";
            response.FormViewModel.CreatedDate       = DateTime.Now.ToUniversalTime();
            response.FormViewModel.AllSubmissions    = 0;
            response.FormViewModel.Submissions       = 0;
            response.FormViewModel.UniqueSubmissions = 0;
            var dateFormat = this.Identity.ToDateFormat();

            response.FormViewModel.DateFormat = dateFormat;
            ViewBag.SaveAs    = true;
            ViewBag.AccountID = UserExtensions.ToAccountID(this.Identity);
            return(View("AddForm", response.FormViewModel));
        }
        public ActionResult EditForm(int formId)
        {
            int             accountId = this.Identity.ToAccountID();
            GetFormResponse response  = formService.GetForm(new GetFormRequest(formId)
            {
                AccountId   = accountId,
                RequestedBy = this.Identity.ToUserID(),
                RoleId      = this.Identity.ToRoleID()
            });
            GetAllContactFieldsRequest  fieldsRequest  = new GetAllContactFieldsRequest();
            GetAllContactFieldsResponse fieldsResponse = formService.GetAllContactFields(fieldsRequest);

            response.FormViewModel.Fields = fieldsResponse.ContactFields.ToList();
            GetAllCustomFieldsRequest  customFieldRequest  = new GetAllCustomFieldsRequest(this.Identity.ToAccountID());
            GetAllCustomFieldsResponse customFieldResponse = customFieldService.GetAllCustomFieldsForForms(customFieldRequest);

            response.FormViewModel.CustomFields = customFieldResponse.CustomFields.Where(c => c.StatusId == FieldStatus.Active).ToList();
            var communityField = response.FormViewModel.Fields.Where(c => c.FieldId == (int)ContactFields.Community).FirstOrDefault();

            communityField.FieldInputTypeId = FieldType.dropdown;
            var communityFormField = response.FormViewModel.FormFields.Where(c => c.FieldId == (int)ContactFields.Community).FirstOrDefault();

            if (communityFormField != null)
            {
                communityFormField.FieldInputTypeId = FieldType.dropdown;
            }
            var customFieldIds  = response.FormViewModel.CustomFields.Where(c => c.StatusId == FieldStatus.Active).Select(f => f.FieldId).ToList();
            var contactFieldIds = Enum.GetValues(typeof(ContactFields)).Cast <ContactFields>().ToList();

            response.FormViewModel.FormFields = response.FormViewModel.FormFields.Where(f => customFieldIds.Contains(f.FieldId) || contactFieldIds.Contains((ContactFields)f.FieldId)).OrderBy(f => f.SortId).ToList();
            foreach (FormFieldViewModel formField in response.FormViewModel.FormFields)
            {
                FieldViewModel fieldViewModel = response.FormViewModel.CustomFields.Where(c => c.FieldId == formField.FieldId).FirstOrDefault();
                if (fieldViewModel != null && fieldViewModel.ValueOptions.IsAny())
                {
                    formField.ValueOptions = fieldViewModel.ValueOptions;
                }
            }
            ViewBag.SaveAs    = false;
            ViewBag.AccountID = UserExtensions.ToAccountID(this.Identity);
            var timeZone = this.Identity.ToTimeZone();
            var value    = TimeZoneInfo.FindSystemTimeZoneById(timeZone);
            var newDate  = TimeZoneInfo.ConvertTime(response.FormViewModel.CreatedDate, value);

            response.FormViewModel.LastModifiedOn = newDate;
            var dateFormat = this.Identity.ToDateFormat();

            response.FormViewModel.DateFormat = dateFormat;
            ViewBag.TagPopup = true;
            return(View("AddForm", response.FormViewModel));
        }
        public ActionResult AddForm()
        {
            ViewBag.AccountId = this.Identity.ToAccountID();
            GetAllContactFieldsRequest  request  = new GetAllContactFieldsRequest();
            GetAllContactFieldsResponse response = formService.GetAllContactFields(request);
            var fieldsToBeRemoved = new List <int>();

            fieldsToBeRemoved.Add((int)ContactFields.PartnerTypeField);
            fieldsToBeRemoved.Add((int)ContactFields.DonotEmail);
            fieldsToBeRemoved.Add((int)ContactFields.LifecycleStageField);
            fieldsToBeRemoved.Add((int)ContactFields.LeadScore);
            fieldsToBeRemoved.Add((int)ContactFields.Owner);
            fieldsToBeRemoved.Add((int)ContactFields.WebPage);
            fieldsToBeRemoved.Add((int)ContactFields.WebPageDuration);
            fieldsToBeRemoved.Add((int)ContactFields.ContactTag);
            fieldsToBeRemoved.Add((int)ContactFields.FormName);
            fieldsToBeRemoved.Add((int)ContactFields.FormsubmittedOn);
            fieldsToBeRemoved.Add((int)ContactFields.FirstSourceType);
            fieldsToBeRemoved.Add((int)ContactFields.NoteSummary);
            fieldsToBeRemoved.Add((int)ContactFields.LastNoteDate);
            FormViewModel formViewModel = new FormViewModel();

            formViewModel.Fields     = response.ContactFields.Where(c => !fieldsToBeRemoved.Contains(c.FieldId)).ToList();
            formViewModel.FormFields = new List <FormFieldViewModel>();
            FieldViewModel firstNameField    = formViewModel.Fields.Where(f => f.FieldId == (int)ContactFields.FirstNameField).FirstOrDefault();
            FieldViewModel lastNameField     = formViewModel.Fields.Where(f => f.FieldId == (int)ContactFields.LastNameField).FirstOrDefault();
            FieldViewModel primaryEmailField = formViewModel.Fields.Where(f => f.FieldId == (int)ContactFields.PrimaryEmail).FirstOrDefault();
            FieldViewModel mobilePhoneField  = formViewModel.Fields.Where(f => f.FieldId == (int)ContactFields.MobilePhoneField).FirstOrDefault();
            FieldViewModel leadSourceField   = formViewModel.Fields.Where(f => f.FieldId == (int)ContactFields.LeadSource).FirstOrDefault();
            var            communityField    = formViewModel.Fields.Where(c => c.FieldId == (int)ContactFields.Community).FirstOrDefault();

            communityField.FieldInputTypeId = FieldType.dropdown;
            formViewModel.FormFields.Add(new FormFieldViewModel()
            {
                DisplayName      = firstNameField.Title,
                FieldId          = firstNameField.FieldId,
                FieldInputTypeId = firstNameField.FieldInputTypeId,
                IsMandatory      = firstNameField.IsMandatory,
                StatusId         = firstNameField.StatusId,
                Title            = firstNameField.Title,
                Value            = firstNameField.Value,
                ValueOptions     = firstNameField.ValueOptions
            });
            formViewModel.FormFields.Add(new FormFieldViewModel()
            {
                DisplayName      = lastNameField.Title,
                FieldId          = lastNameField.FieldId,
                FieldInputTypeId = lastNameField.FieldInputTypeId,
                IsMandatory      = lastNameField.IsMandatory,
                StatusId         = lastNameField.StatusId,
                Title            = lastNameField.Title,
                Value            = lastNameField.Value,
                ValueOptions     = lastNameField.ValueOptions
            });
            formViewModel.FormFields.Add(new FormFieldViewModel()
            {
                DisplayName      = primaryEmailField.Title,
                FieldId          = primaryEmailField.FieldId,
                FieldInputTypeId = primaryEmailField.FieldInputTypeId,
                IsMandatory      = true,
                StatusId         = primaryEmailField.StatusId,
                Title            = primaryEmailField.Title,
                Value            = primaryEmailField.Value,
                ValueOptions     = primaryEmailField.ValueOptions
            });
            formViewModel.FormFields.Add(new FormFieldViewModel()
            {
                DisplayName      = mobilePhoneField.Title,
                FieldId          = mobilePhoneField.FieldId,
                FieldInputTypeId = mobilePhoneField.FieldInputTypeId,
                IsMandatory      = false,
                StatusId         = mobilePhoneField.StatusId,
                Title            = mobilePhoneField.Title,
                Value            = mobilePhoneField.Value,
                ValueOptions     = mobilePhoneField.ValueOptions
            });
            formViewModel.FormFields.Add(new FormFieldViewModel()
            {
                DisplayName      = leadSourceField.Title,
                FieldId          = leadSourceField.FieldId,
                FieldInputTypeId = leadSourceField.FieldInputTypeId,
                IsMandatory      = true,
                StatusId         = leadSourceField.StatusId,
                Title            = leadSourceField.Title,
                Value            = leadSourceField.Value
            });
            //formViewModel.FormFields.Add(new FormFieldViewModel()
            //{
            //    DisplayName = "",
            //    FieldId = (int)ContactFields.FormURLField,
            //    FieldInputTypeId = FieldType.text,
            //    IsMandatory = false,
            //    StatusId = FieldStatus.Active,
            //    Title = "redirect-override",
            //    Value = null
            //});
            GetAllCustomFieldsRequest  customFieldRequest  = new GetAllCustomFieldsRequest(this.Identity.ToAccountID());
            GetAllCustomFieldsResponse customFieldResponse = customFieldService.GetAllCustomFieldsForForms(customFieldRequest);

            formViewModel.CustomFields        = customFieldResponse.CustomFields.Where(c => c.StatusId == FieldStatus.Active).ToList();
            formViewModel.FormId              = 0;
            formViewModel.Name                = "";
            formViewModel.Status              = Entities.FormStatus.Active;
            formViewModel.AcknowledgementType = Entities.AcknowledgementType.Url;
            formViewModel.CreatedBy           = this.Identity.ToUserID();
            formViewModel.LastModifiedBy      = this.Identity.ToUserID();
            formViewModel.AccountId           = this.Identity.ToAccountID();
            ViewBag.TagPopup = true;
            return(View("AddForm", formViewModel));
        }