public ActionResult Index(int[] selectedIndex)
 {
     try
     {
         var preferences = new PanelPreferences();
         List<ManagePanelModel> contextInformationList = new List<ManagePanelModel>();
         preferences.ContextCollection = (ContextCollection)Session["ContextCollection"];
         preferences.CookieJar = (CookieJar)Session["CookieJar"];
         preferences.PanelAdminUrl = Session["PanelAdminUrl"].ToString();
         _automationService.MakeContextAvailable(preferences, selectedIndex);
         contextInformationList = _automationService.GetUnavailableContextItemsList(preferences);
         return View(contextInformationList);
     }
     catch (Exception e)
     {
         var errorModel = new ErrorModel { Exception = e };
         return View("Error", errorModel);
     }
 }
 public ActionResult Index(LoginPreferences loginPreferences, string a)
 {
     try
     {
         List<ManagePanelModel> contextInformationList = new List<ManagePanelModel>();
         var preferences = new PanelPreferences();
         preferences.PanelAdminEmail = loginPreferences.PanelAdminEmail;
         preferences.PanelAdminUrl = loginPreferences.PanelAdminUrl;
         preferences.PanelPassword = loginPreferences.PanelPassword;
         preferences.CookieJar = _automationService.GetCookieJar(preferences);
         preferences.ContextCollection = _automationService.GetContextCollection(preferences);
         var list = _automationService.GetUnavailableContextItemsList(preferences);
         contextInformationList = list;
         Session["ContextCollection"] = preferences.ContextCollection;
         Session["CookieJar"] = preferences.CookieJar;
         Session["PanelAdminUrl"] = loginPreferences.PanelAdminUrl;
         return View(contextInformationList);
     }
     catch (Exception e)
     {
         var errorModel = new ErrorModel { Exception = e };
         return View("Error", errorModel);
     }
 }
        public ActionResult SaveAndContinue(FormCollection formCollection, PreferencesModel model, string returnUrl, HttpPostedFileBase headerFile, HttpPostedFileBase logoFile, IEnumerable<HttpPostedFileBase> postedImages)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var preferences = new PanelPreferences
                                          {
                                              HdnSelectedLayout = model.HdnSelectedLayout,
                                              QuestionnaireName = model.QuestionnaireId,
                                              CompanyName = model.CompanyName,
                                              ContactEmail = model.ContactEmail,
                                              //---- Code commented by Optimus : Code was used for the static controls on the web page---
                                              /*
                                              PageBackgroundHexCode = model.PageBackgroundHexCode,
                                              ContentBackgroundHexCode = model.ContentBackgroundHexCode,
                                              PrimaryTextHexCode = model.PrimaryTextHexCode,
                                              SecondaryTextHexCode = model.SecondaryTextHexCode,
                                               */
                                              NewsletterVisible = model.NewsletterVisible,
                                              QuickPollVisible = model.QuickPollVisible,
                                              PanelAdminEmail = model.PanelAdminEmail,
                                              PanelAdminUrl = model.PanelAdminUrl,
                                              PanelPassword = model.PanelPassword,
                                              OfflineMode = model.OfflineMode,
                                              Language = model.Language
                                          };

                    // Populate PanelPreferences with the dynamic GUI control values
                    if (Session[Res.SessionTemplates] == null)
                    {
                        Session[Res.SessionTemplates] = TemplateManager.Instance.LoadTemplates();
                    }
                    var temps = (DynamicGuiTemplates)Session[Res.SessionTemplates];
                    var currentTemplate = temps.GuiTemplates[model.Counter];

                    // Set the current Template
                    preferences.CurrentGuiTemplate = currentTemplate;
                    preferences.DynamicGuiVariables = new Dictionary<string, string>();
                    foreach (GuiVariableGroup group in currentTemplate.VariableGroups)
                    {
                        foreach (GuiVariable guiVar in group.Variables)
                        {
                            if (group.GroupName.Equals(Res.ImagesGroup))
                            {
                                preferences.DynamicGuiVariables.Add(guiVar.ComponentName, formCollection["Hdn" + guiVar.ComponentName]);
                            }
                            else if (group.GroupName.Equals(Res.ChoiceGroup))
                            {
                                preferences.DynamicGuiVariables.Add(guiVar.ComponentName,Convert.ToBoolean(formCollection[guiVar.ComponentName]).ToString());
                            }
                            else
                            {
                                preferences.DynamicGuiVariables.Add(guiVar.ComponentName, formCollection[guiVar.ComponentName]);
                            }
                        }
                    }

                    // Added for moving all dynamic upload control images to 'Uploads' folder
                    foreach (HttpPostedFileBase imageFile in postedImages)
                    {
                        var path = Path.Combine(Server.MapPath(Res.UploadsDirectoryPath), Path.GetFileName(imageFile.FileName));
                        imageFile.SaveAs(path);
                    }

                    //---- Code commented by Optimus : Code was used for the static controls on the web page---
                    /*
                    if (null != headerFile && headerFile.ContentLength > 0)
                    {
                        preferences.HeaderFileName = Path.GetFileName(headerFile.FileName);
                        var path = Path.Combine(Server.MapPath(Res.UploadsDirectoryPath), preferences.HeaderFileName);
                        headerFile.SaveAs(path);
                    }

                    if (null != logoFile && logoFile.ContentLength > 0)
                    {
                        preferences.LogoFileName = Path.GetFileName(logoFile.FileName);
                        var path = Path.Combine(Server.MapPath(Res.UploadsDirectoryPath), preferences.LogoFileName);
                        logoFile.SaveAs(path);
                    }
                     */
                    LinkInfo linkInfo = _automationService.SetUpContext(preferences,
                                                                          Server.MapPath(Res.SkinsDirectoryPath));
                    OfflineLinks offlineLinks = _automationService.CreateSkin(preferences, Server.MapPath(Res.SkinsDirectoryPath),
                                                                              Server.MapPath(Res.DataDirectoryPath), linkInfo.FolderName);

                    var testLinkModel = new TestLinkModel
                                            {
                                                PortalLink = offlineLinks.portalLink,
                                                SurveyLink = offlineLinks.surveyLink
                                            };

                    // Code to be executed while in Advanced mode
                    if (!preferences.OfflineMode)
                    {
                        _automationService.UploadSkins(preferences, Server.MapPath(Res.SkinsDirectoryPath));
                        linkInfo.Surveylink = _automationService.CreateSurveyTestLink(preferences,
                                                                                      Server.MapPath(Res.PQsDirectoryPath));
                        ViewData["PreferencesModel.QuestionnaireId"] = new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)), "PxmlName", "PxmlName");

                        testLinkModel.PortalLink = HttpUtility.UrlDecode(linkInfo.PortalLink) +
                                                         HttpUtility.UrlDecode(linkInfo.FolderName);
                        testLinkModel.SurveyLink = linkInfo.Surveylink;
                    }
                    return View("Links", testLinkModel);
                }

                ViewData["PreferencesModel.QuestionnaireId"] =
                    new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)),
                                   "PxmlName", "PxmlName");

                return View("Index", model);
            }
            catch (Exception e)
            {
                var errorModel = new ErrorModel { Exception = e };
                return View("Error", errorModel);
            }
        }
        //Added for Dynamic Template List module
        public ActionResult Template(int id)
        {
            try
            {
                if (Session[Res.SessionTemplates] == null)
                {
                    Session[Res.SessionTemplates] = TemplateManager.Instance.LoadTemplates();
                }

                var temps = (DynamicGuiTemplates)Session[Res.SessionTemplates];
                return Json(temps.GuiTemplates[id], "application/json", JsonRequestBehavior.AllowGet);
            }
            catch (Exception e)
            {
                var errorModel = new ErrorModel { Exception = e };
                return View("Error", errorModel);
            }
        }
        public ActionResult SaveAndContinue(FormCollection formCollection, PreferencesModel model, IEnumerable<HttpPostedFileBase> postedFiles)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var preferences = new PanelPreferences
                                          {
                                              HdnSelectedLayout = model.HdnSelectedLayout,
                                              HdnSelectedLayoutName = model.HdnSelectedLayoutName, // Added by Khushbu For pahse2 task 'Allow the UI to load previously generated zip files in order to pre-populate the form'.
                                              QuestionnaireName = model.QuestionnaireId,
                                              CompanyName = model.CompanyName,
                                              ContactEmail = model.ContactEmail,
                                              PanelAdminEmail = model.PanelAdminEmail,
                                              PanelAdminUrl = model.PanelAdminUrl,
                                              PanelPassword = model.PanelPassword,
                                              OfflineMode = model.OfflineMode,
                                              Language = model.Language
                                          };

                    // Populate PanelPreferences with the dynamic GUI control values by Optimus
                    if (Session[Res.SessionTemplates] == null)
                    {
                        Session[Res.SessionTemplates] = TemplateManager.Instance.LoadTemplates();
                    }
                    var temps = (DynamicGuiTemplates)Session[Res.SessionTemplates];
                    var currentTemplate = temps.GuiTemplates[model.Counter];

                    // Set the current Template by Optimus
                    preferences.CurrentGuiTemplate = currentTemplate;
                    preferences.DynamicGuiVariables = new Dictionary<string, string>();
                    foreach (GuiVariableGroup group in currentTemplate.VariableGroups)
                    {
                        if (group.Variables == null) continue;
                        foreach (GuiVariable guiVar in group.Variables)
                        {
                            // Modified by K.G(07-12-2011) to support file upload controlS for all the groups.
                            switch (guiVar.UiComponent)
                            {
                                case Constants.FileComponent:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        formCollection["Hdn" + guiVar.ComponentName]);
                                    break;
                                case Constants.ChoiceComponent:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        Convert.ToBoolean(
                                                                            formCollection[guiVar.ComponentName]).
                                                                            ToString().ToLower()); // Made changes to resolve the defect as checkboxes didn’t retain  selections in case of load from zip.
                                    break;
                                default:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        formCollection[guiVar.ComponentName]);
                                    break;
                            }

                        }
                    }

                    // Added for moving all dynamic upload control images to 'Uploads' folder by Optimus
                    foreach (HttpPostedFileBase file in postedFiles)
                    {
                        var path = Path.Combine(Server.MapPath(Res.UploadsDirectoryPath), Path.GetFileName(file.FileName)); // Modified by Khushbu For pahse2 task 'Support upload/processing of non-image files (e.g. pdf)'.
                        file.SaveAs(path);
                    }

                    var linkInfo = _automationService.SetUpContext(preferences, Server.MapPath(Res.SkinsDirectoryPath));

                    //Code modified by Optimus
                    var SkinPackageLink = _automationService.CreateSkin(preferences, Server.MapPath(Res.SkinsDirectoryPath),
                                                                              Server.MapPath(Res.DataDirectoryPath), linkInfo.FolderName);

                    var testLinkModel = new TestLinkModel
                                            {
                                                SkinPackageLink = this.UrlForFile(SkinPackageLink) // Modified by Khushbu For pahse2 task 'Allow the UI to load previously generated zip files in order to pre-populate the form'.

                                            };

                    // Code to be executed while in Advanced mode by Optimus
                    if (!preferences.OfflineMode)
                    {

                        // Added by K.G(07/12/11) to upload email templates on Sparq
                        _automationService.UploadEmailTemplates(preferences, Server.MapPath(Res.SkinsDirectoryPath),
                                                                             Server.MapPath(Res.DataDirectoryPath), linkInfo.FolderName);
                        _automationService.UploadSkins(preferences, Server.MapPath(Res.SkinsDirectoryPath), linkInfo.FolderName);

                        linkInfo.Surveylink = _automationService.CreateSurveyTestLink(preferences,
                                                                                      Server.MapPath(Res.PQsDirectoryPath));
                        ViewData["PreferencesModel.QuestionnaireId"] = new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)), "PxmlName", "PxmlName");

                        testLinkModel.PortalLink = HttpUtility.UrlDecode(linkInfo.PortalLink) +
                                                         HttpUtility.UrlDecode(linkInfo.FolderName);
                        testLinkModel.SurveyLink = linkInfo.Surveylink;
                    }

                    // Added By K.G(25/11/2011) to delete extra zip files.
                    _automationService.DeleteUnusedZipFiles(Server.MapPath(Res.SkinsDirectoryPath));

                    return View("Links", testLinkModel);
                }

                ViewData["PreferencesModel.QuestionnaireId"] =
                    new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)),
                                   "PxmlName", "PxmlName");

                return View("Index", model);
            }
            catch (Exception e)
            {
                var errorModel = new ErrorModel { Exception = e };
                return View("Error", errorModel);
            }
        }
        public ActionResult SaveAndContinue(FormCollection formCollection, PreferencesModel model, string returnUrl, HttpPostedFileBase headerFile, HttpPostedFileBase logoFile, IEnumerable<HttpPostedFileBase> postedImages)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var preferences = new PanelPreferences
                                          {
                                              HdnSelectedLayout = model.HdnSelectedLayout,
                                              QuestionnaireName = model.QuestionnaireId,
                                              CompanyName = model.CompanyName,
                                              ContactEmail = model.ContactEmail,
                                              PanelAdminEmail = model.PanelAdminEmail,
                                              PanelAdminUrl = model.PanelAdminUrl,
                                              PanelPassword = model.PanelPassword,
                                              OfflineMode = model.OfflineMode,
                                              Language = model.Language
                                          };

                    // Populate PanelPreferences with the dynamic GUI control values by Optimus
                    if (Session[Res.SessionTemplates] == null)
                    {
                        Session[Res.SessionTemplates] = TemplateManager.Instance.LoadTemplates();
                    }
                    var temps = (DynamicGuiTemplates)Session[Res.SessionTemplates];
                    var currentTemplate = temps.GuiTemplates[model.Counter];

                    // Set the current Template by Optimus
                    preferences.CurrentGuiTemplate = currentTemplate;
                    preferences.DynamicGuiVariables = new Dictionary<string, string>();
                    foreach (GuiVariableGroup group in currentTemplate.VariableGroups)
                    {
                        if (group.Variables == null) continue;
                        foreach (GuiVariable guiVar in group.Variables)
                        {

                            switch (group.GroupName)
                            {
                                case Constants.ImagesGroup:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        formCollection["Hdn" + guiVar.ComponentName]);
                                    break;
                                case Constants.ChoiceGroup:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        Convert.ToBoolean(
                                                                            formCollection[guiVar.ComponentName]).
                                                                            ToString());
                                    break;
                                default:
                                    preferences.DynamicGuiVariables.Add(guiVar.ComponentName,
                                                                        formCollection[guiVar.ComponentName]);
                                    break;
                            }

                        }
                    }

                    // Added for moving all dynamic upload control images to 'Uploads' folder by Optimus
                    foreach (HttpPostedFileBase imageFile in postedImages)
                    {
                        var path = Path.Combine(Server.MapPath(Res.UploadsDirectoryPath), Path.GetFileName(imageFile.FileName));
                        imageFile.SaveAs(path);
                    }

                    var linkInfo = _automationService.SetUpContext(preferences, Server.MapPath(Res.SkinsDirectoryPath));

                    //Code modified by Optimus
                    var offlineLinks = _automationService.CreateSkin(preferences, Server.MapPath(Res.SkinsDirectoryPath),
                                                                              Server.MapPath(Res.DataDirectoryPath), linkInfo.FolderName);

                    var testLinkModel = new TestLinkModel
                                            {
                                                PortalLink = this.UrlForFile(offlineLinks.portalLink),
                                                SurveyLink = this.UrlForFile(offlineLinks.surveyLink)
                                            };

                    // Code to be executed while in Advanced mode by Optimus
                    if (!preferences.OfflineMode)
                    {
                        _automationService.UploadSkins(preferences, Server.MapPath(Res.SkinsDirectoryPath));
                        linkInfo.Surveylink = _automationService.CreateSurveyTestLink(preferences,
                                                                                      Server.MapPath(Res.PQsDirectoryPath));
                        ViewData["PreferencesModel.QuestionnaireId"] = new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)), "PxmlName", "PxmlName");

                        testLinkModel.PortalLink = HttpUtility.UrlDecode(linkInfo.PortalLink) +
                                                         HttpUtility.UrlDecode(linkInfo.FolderName);
                        testLinkModel.SurveyLink = linkInfo.Surveylink;
                    }
                    return View("Links", testLinkModel);
                }

                ViewData["PreferencesModel.QuestionnaireId"] =
                    new SelectList(_automationService.PxmlManager.GetPxmlList(Server.MapPath(Res.PQsDirectoryPath)),
                                   "PxmlName", "PxmlName");

                return View("Index", model);
            }
            catch (Exception e)
            {
                var errorModel = new ErrorModel { Exception = e };
                return View("Error", errorModel);
            }
        }