public ActionResult SelectFolderoptionss(SelectFolderViewModel model)
        {
            TempData["SelectedMenu"] = "Manage";
            TempData["SelectedSubMenu"] = "ManageFolders";
            Account accountObj = (Account)Session["account"];
            int type = 1;
            CCFolder folderDetails = null;
            folderDetails = CCFolderRepository.FolderDetails(model.PrimarySourceId);
            if (folderDetails != null) { type = folderDetails.Type; }
            else { type = 1; }

            User userObj = (User)Session["user"];

            var connection = new CorporateContacts.Domain.Entities.CCConnection();
            connection.FolderID = model.PrimarySourceId;
            connection.FolderName = model.SelectedFolderName;
            connection.Owner = model.SelectedFolderOwnerInfo;
            if (type == 1) { connection.Type = "Contact"; }
            else { connection.Type = "Calendar"; }
            connection.CredentialsID = model.CredentialID;
            connection.AllowAdditions = false;
            connection.IgnoreExisting = model.IgnoreExisting;
            connection.SyncDirection = model.SyncDirection;
            connection.CategoryFilterUsed = model.CategoryFilterUsed;
            connection.CopyPhotos = model.CopyPhotos;
            connection.TurnOffReminders = model.TurnOffReminders;
            connection.SourceID = model.SelectedFolderId;
            connection.Frequency = 1440;
            connection.IsRunning = false;
            connection.IsPaused = false;
            connection.SecondaryAccount = Session["secondaryAccount"] as string;
            string accessTypes = string.Empty;
            if (Session["accessType"] != null) { accessTypes = Session["accessType"].ToString(); }
            if (string.IsNullOrEmpty(accessTypes)) { connection.AccessType = 0; }
            else { connection.AccessType = Int32.Parse(accessTypes); }
            string format = "yyyy-MM-dd HH:mm";
            connection.LastSyncTime = ((DateTime)(System.Data.SqlTypes.SqlDateTime.MinValue)).ToString(format);
            if (model.CategoryFilterUsed == false) { connection.CategoryFilterValues = string.Empty; }
            else { connection.CategoryFilterValues = model.CategoryFilterValues; }
            if (model.TagAllSubject == true) { connection.SubjectTag = model.SubjectTag; }
            else { connection.SubjectTag = string.Empty; }
            connection.tagSubject = model.TagAllSubject;
            connection.AccountGUID = accountObj.AccountGUID;
            connection = CCConnectinRepository.SaveSubscription(connection);

            if (connection != null)
            {
                var foldertag = new CorporateContacts.Domain.Entities.CCConnection();
                var tagname = connection.FolderName + "[" + connection.ConnectionID + "]";
                foldertag.Tag = tagname;
                foldertag.ConnectionID = connection.ConnectionID;

                CCConnectinRepository.SaveSubscriptionTag(foldertag);
            }

            var res = CCFieldMappingsRepository.SaveAllMappingFields(connection.FolderID, connection.ConnectionID, accountObj.AccountGUID);

            LimitationsViewModel limitationsObj = (LimitationsViewModel)Session["limitations"];
            HelperFunctions HF = new HelperFunctions();
            limitationsObj = HF.updateAccountLimitations(accountObj);
            Session["limitations"] = limitationsObj;

            return RedirectToAction("ViewConnections", "Folder", new { id = connection.FolderID });
        }
        public ActionResult SelectFolderoptions(SelectFolderViewModel objfolder)
        {
            TempData["SelectedMenu"] = "Manage";
            TempData["SelectedSubMenu"] = "ManageFolders";
            CCFolder folderObj = (CCFolder)Session["folderDetail"];
            if (folderObj != null) { objfolder.FolderType = folderObj.Type; }

            return View(objfolder);
        }
        public ActionResult SelectFolder(SelectFolderViewModel model)
        {
            TempData["SelectedMenu"] = "Manage";
            TempData["SelectedSubMenu"] = "ManageFolders";
            User userObj = (User)Session["user"];
            if (!string.IsNullOrEmpty(model.SelectedFolderId))
            {

                return RedirectToAction("SelectFolderoptions", "Folder", model);
            }
            return View(new List<TreeViewFolder>());
        }
        public ActionResult SelectFolder(string src = "", long primid = 1, long creid = 1)
        {
            int type = CCFolderRepository.CCFolders.FirstOrDefault(fid => fid.FolderID == primid).Type;
            Session["ExistingCreError"] = "";

            TempData["SelectedMenu"] = "Manage";
            TempData["SelectedSubMenu"] = "ManageFolders";
            ExchangeService ex = Session["srv"] as ExchangeService;
            bool addingPrimary = false;
            long primarySourceID = 0;
            long credentialsID = 0;
            try { primarySourceID = Convert.ToInt64(primid); }
            catch { }

            try { credentialsID = Convert.ToInt64(creid); }
            catch { }

            if (src == "prim")
            {
                addingPrimary = true;
            }

            bool addTopFolder = false;
            if (ex != null)
            {
                string accessTypes = "0";
                string secondaryAccount = Session["secondaryAccount"] as string;
                if (Session["accessType"] != null) { accessTypes = Session["accessType"].ToString(); }

                Folder f = null;
                Folder publicFolder = null;
                try
                {
                    if (accessTypes == "1")
                    {
                        if (type == 1)
                        {
                            f = Folder.Bind(ex, new FolderId(WellKnownFolderName.Contacts, secondaryAccount));
                            Session["differentMailboxError"] = "No";
                        }
                        else
                        {
                            f = Folder.Bind(ex, new FolderId(WellKnownFolderName.Calendar, secondaryAccount));
                            Session["differentMailboxError"] = "No";
                        }

                        addTopFolder = true;

                    }
                    else if (accessTypes == "2")
                    {
                        ex.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, secondaryAccount);
                        if (type == 1)
                        {
                            f = Folder.Bind(ex, new FolderId(WellKnownFolderName.Contacts, secondaryAccount));
                            Session["differentMailboxError"] = "No";
                        }
                        else
                        {
                            f = Folder.Bind(ex, new FolderId(WellKnownFolderName.Calendar, secondaryAccount));
                            Session["differentMailboxError"] = "No";
                        }

                        addTopFolder = true;
                    }
                    else
                    {
                        f = Folder.Bind(ex, WellKnownFolderName.MsgFolderRoot);
                        try
                        {
                            publicFolder = Folder.Bind(ex, WellKnownFolderName.PublicFoldersRoot);
                        }
                        catch (Exception)
                        {
                            publicFolder = null;
                        }
                        Session["differentMailboxError"] = "No";
                        addTopFolder = false;
                    }
                }
                catch (Exception e)
                {
                    string exMessage = e.Message;
                    if (exMessage == "The request failed. The remote server returned an error: (404) Not Found.") { Session["ExistingCreError"] = "Error: Server returned 'Unauthorized'."; }
                    else if (exMessage == "The request failed. The remote server returned an error: (401) Unauthorized.") { Session["ExistingCreError"] = "Error: Server returned 'Unauthorized'."; }
                    else { Session["differentMailboxError"] = "Yes"; }
                    return RedirectToAction("LogintoExchange", "Folder", new { src = "sec", fid = primid });

                }

                //var f = Folder.Bind(ex, WellKnownFolderName.MsgFolderRoot);
                List<TreeViewFolder> FolderLists = new List<TreeViewFolder>();
                TreeViewFolder mailBox = new TreeViewFolder();
                TreeViewFolder publicBox = new TreeViewFolder();

                if (f != null)
                {
                    var tree = LoadSubFolders(f, new TreeViewFolder(), addTopFolder);

                    mailBox.Name = "*Mail Folders";
                    mailBox.FolderClass = "All";

                    foreach (var it in tree.ChildFolders)
                    {
                        mailBox.ChildFolders.Add(it);
                    }
                    FolderLists.Add(mailBox);
                }

                if (publicFolder != null)
                {
                    var treepublic = LoadSubFolders(publicFolder, new TreeViewFolder(), addTopFolder);

                    publicBox.Name = "*Public Folders";
                    publicBox.FolderClass = "All";

                    foreach (var it in treepublic.ChildFolders)
                    {
                        publicBox.ChildFolders.Add(it);
                    }

                    FolderLists.Add(publicBox);
                }

                var model = new SelectFolderViewModel();
                // model.FolderList = tree.ChildFolders.ToList();
                model.FolderList = FolderLists;
                model.AddingPrimary = addingPrimary;
                model.PrimarySourceId = primarySourceID;
                model.CredentialID = credentialsID;
                model.UniqueId = f.Id.UniqueId;
                model.SelectedFolderOwnerInfo = Session["srvEmail"] as string;
                model.FolderType = type;
                return View(model);
            }
            else
            {
                var model = new SelectFolderViewModel();
                model.FolderList = new List<TreeViewFolder>();
                model.AddingPrimary = addingPrimary;
                model.PrimarySourceId = primarySourceID;
                model.CredentialID = credentialsID;
                model.FolderType = type;
                return View(model);
            }
        }
        public ActionResult SelectFolder(SelectFolderViewModel model)
        {
            User userObj = (User)Session["user"];
            if (!string.IsNullOrEmpty(model.SelectedFolderId))
            {
                var f = new CorporateContacts.Domain.Entities.Folder();
                f.AccountID = userObj.AccountID;
                f.SourceID = model.SelectedFolderId;
                f.IsMaster = true;
                f.SourceName = model.SelectedFolderOwnerInfo;
                f.SourceType = "Exchange";
                f.FolderName = model.SelectedFolderName;
                f.FolderType = "Contact";
                f.IsMaster = model.AddingPrimary;
                f = folderRepository.SaveFolder(f);

                if (!model.AddingPrimary)
                {
                    //add the subscription
                    var s = new Subscription();
                    s.AccountID = userObj.AccountID;
                    s.AllowAdditions = model.AllowAdditions;
                    s.IgnoreExisting = model.IgnoreExisting;
                    s.SubscriberID = f.ID;
                    s.PrimaryID = model.PrimarySourceId;
                    folderRepository.SaveSubscription(s);
                    //create the matching folderfields for the subsciption.
                    var folderFieldsForPrimary = ffRepository.FolderFields.Where(x => (x.AccountID == userObj.AccountID) && (x.FolderID == model.PrimarySourceId));
                    foreach (var ff in folderFieldsForPrimary.ToList())
                    {
                        var ffObj = FieldsConfigHelper.CreateFolderFieldFromName(ff.FName);
                        ffObj.FolderID = f.ID;
                        ffObj.AccountID = userObj.AccountID;
                        ffObj.MappedFieldID = ff.ID;
                        ffRepository.SaveFolderField(ffObj);
                    }
                    return RedirectToAction("SetupSync", "Admin", new { primarySourceID = model.PrimarySourceId });
                }
                Session["selectedFolderID"] = f.ID;
                return RedirectToAction("selectfields");
            }
            return View(new List<TreeViewFolder>());
        }
 public ActionResult SelectFolder(string src = "", string primid = "")
 {
     TempData["SelectedMenu"] = "SetupSync";
     ExchangeService ex = Session["srv"] as ExchangeService;
     bool addingPrimary = false;
     long primarySourceID = 0;
     try { primarySourceID = Convert.ToInt64(primid); }
     catch { }
     if (src == "prim")
     {
         addingPrimary = true;
     }
     if (ex != null)
     {
         var f = Folder.Bind(ex, WellKnownFolderName.MsgFolderRoot);
         var tree = LoadSubFolders(f, new TreeViewFolder());
         var model = new SelectFolderViewModel();
         model.FolderList = tree.ChildFolders.ToList();
         model.AddingPrimary = addingPrimary;
         model.PrimarySourceId = primarySourceID;
         model.SelectedFolderOwnerInfo = Session["srvEmail"] as string;
         return View(model);
     }
     else
     {
         var model = new SelectFolderViewModel();
         model.FolderList = new List<TreeViewFolder>();
         model.AddingPrimary = addingPrimary;
         model.PrimarySourceId = primarySourceID;
         return View(model);
     }
 }