public ActionResult EditFolder(CCFolder folderObj)
        {
            User userObj = (User)Session["user"];
            Account accountObj = (Account)Session["account"];
            CCFolder folderResponse;
            int folderType = folderObj.Type;

            if (ModelState.IsValid && accountObj != null)
            {
                folderObj.AccountGUID = accountObj.AccountGUID;
                folderObj.IsPaused = false;
                folderObj.isOverFlow = false;
                if (folderObj.Type == 3)
                    folderObj.isCrimeDiary = true;
                //Save Folder
                folderResponse = CCFolderRepository.SaveFolder(folderObj);

                var folders = CCFolderRepository.CCFolders.Where(guid => guid.AccountGUID == accountObj.AccountGUID).ToList();
                TempData["SelectedMenu"] = "Manage";
                TempData["SelectedSubMenu"] = "ManageFolders";

                if (folderObj.FolderID > 0)
                {
                    var fields = CCFieldRepository.CCFolderFields.Where(u => u.FolderID == folderObj.FolderID & u.AccountGUID == accountObj.AccountGUID).ToList();
                    if (fields.Count == 0)
                    {
                        //Save default field
                        List<string> needtosave = new List<string>();
                        List<CCFolderField> savedobj = new List<CCFolderField>();

                        if (folderType == 1) {
                            if (accountObj.PlanID == 1)
                            {
                                needtosave = FieldsConfigHelper.GetFieldForContactSimple();
                            }
                            else if (accountObj.PlanID == 2)
                            {
                                needtosave = FieldsConfigHelper.GetFieldForContactBusiness();
                            }
                            else
                            {
                                needtosave = FieldsConfigHelper.GetFieldForContactFull();
                            }
                        }
                        else if (folderType == 2) { needtosave = FieldsConfigHelper.GetFieldForAppointmentSimple(); }
                        else if (folderType == 3) { needtosave = FieldsConfigHelper.GetFieldForCrimeDiaryAppointment(); }
                        else { }

                        foreach (var field in needtosave)
                        {
                            CCFolderField folderField = new CCFolderField();
                            folderField.FieldName = FieldsConfigHelper.GetRealName(field);
                            folderField.FieldType = FieldsConfigHelper.GetVariableType(field);
                            folderField.FolderID = folderObj.FolderID;
                            folderField.FieldCaption = field;
                            folderField.Restriction = "none";
                            folderField.AccountGUID = accountObj.AccountGUID;
                            folderField.isActive = true;
                            savedobj.Add(folderField);
                        }

                        var resp = CCFieldRepository.SaveFolderFieldsObj(savedobj);

                    }

                    // create note into grops
                    var alreadyExist = CCGroupRepository.CCGroups.Where(fid => fid.FolderID == folderResponse.FolderID & fid.GroupName == "Note" & fid.AccountGUID == accountObj.AccountGUID).ToList();

                    if (alreadyExist.Count == 0)
                    {
                        CCGroup objGroup = new CCGroup();
                        objGroup.GroupName = "Note";
                        objGroup.FolderID = folderResponse.FolderID;
                        objGroup.AccountGUID = accountObj.AccountGUID;
                        var user = CCGroupRepository.SaveGroup(objGroup);
                    }

                    // create default group
                    var isDefaultGrpExist = CCGroupRepository.CCGroups.Where(fid => fid.FolderID == folderResponse.FolderID & fid.GroupName == "Default" & fid.AccountGUID == accountObj.AccountGUID).ToList();

                    if (isDefaultGrpExist.Count == 0)
                    {
                        // add default group
                        CCGroup objGroup = new CCGroup();
                        objGroup.GroupName = "Default";
                        objGroup.FolderID = folderResponse.FolderID;
                        objGroup.AccountGUID = accountObj.AccountGUID;
                        var grp = CCGroupRepository.SaveGroup(objGroup);

                        if (grp.GroupID != 0)
                        {
                            // added all default field
                            var defaultfields = CCFieldRepository.CCFolderFields.Where(u => u.FolderID == folderObj.FolderID & u.AccountGUID == accountObj.AccountGUID).ToList();
                            int i = 1;
                            foreach (var fieldItem in defaultfields)
                            {
                                CCGroupField objgrpfield = new CCGroupField();
                                objgrpfield.FieldID = fieldItem.FieldID;
                                objgrpfield.FieldOrder = i++;
                                objgrpfield.FolderID = grp.FolderID;
                                objgrpfield.GroupID = grp.GroupID;
                                objgrpfield.AccountGUID = accountObj.AccountGUID;
                                var aa = CCGroupFieldRepository.SaveGroupField(objgrpfield);
                            }
                        }
                    }

                    // create default layout
                    var isDefaultLayoutExist = CCLayoutRepository.CCLayouts.Where(fid => fid.FolderID == folderResponse.FolderID & fid.LayoutName == "Default" & fid.AccountGUID == accountObj.AccountGUID).ToList();

                    if (isDefaultLayoutExist.Count == 0)
                    {
                        // add default layout
                        CCLayout layout = new CCLayout();
                        layout.LayoutName = "Default";
                        layout.FolderID = folderObj.FolderID;
                        layout.AccountGUID = accountObj.AccountGUID;
                        var resLayout = CCLayoutRepository.Savelayout(layout);

                        // add default group into default layout
                        var defaultExistGrp = CCGroupRepository.CCGroups.Where(fid => fid.FolderID == folderResponse.FolderID & fid.GroupName == "Default" & fid.AccountGUID == accountObj.AccountGUID).FirstOrDefault();
                        if (defaultExistGrp != null)
                        {
                            CCLayoutGroup objLayoutGroup = new CCLayoutGroup();
                            objLayoutGroup.GroupID = defaultExistGrp.GroupID;
                            objLayoutGroup.GroupOrder = 1;
                            objLayoutGroup.FolderID = resLayout.FolderID;
                            objLayoutGroup.LayoutID = resLayout.LayoutID;
                            objLayoutGroup.AccountGUID = accountObj.AccountGUID;
                            var aa = CCLayoutGroupRepository.SavelayoutGroup(objLayoutGroup);
                        }
                    }

                }

                var folderList = CCFolderRepository.CCFolders.Where(guid => guid.AccountGUID == accountObj.AccountGUID).ToList();
                Session["folderss"] = folderList;

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

                return RedirectToAction("ManageFolders", "Folder");
            }
            else
            {
                var folderList = CCFolderRepository.CCFolders.Where(guid => guid.AccountGUID == accountObj.AccountGUID).ToList();
                Session["folderss"] = folderList;

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

                return View(folderObj);
            }
        }
        public ActionResult ViewConnections(long id)
        {
            TempData["SelectedMenu"] = "Manage";
            TempData["SelectedSubMenu"] = "ManageFolders";
            Account accountObj = (Account)Session["account"];
            LimitationsViewModel limitationsObj = (LimitationsViewModel)Session["limitations"];
            SubscriptionsViewModel subscriptionsView = new SubscriptionsViewModel();
            subscriptionsView.limitationsObj = limitationsObj;
            if (Session["newConnections"] != null)
            {
                subscriptionsView.conSummary = (ConnectionImportListSummaryModel) Session["newConnections"];

                Session["newConnections"] = null;
            }

            var folderDetails = CCFolderRepository.CCFolders.Where(fid => fid.FolderID == id & fid.AccountGUID == accountObj.AccountGUID).FirstOrDefault();
            var subscriptions = CCConnectinRepository.CCSubscriptions.Where(fid => fid.FolderID == id & fid.AccountGUID == accountObj.AccountGUID);

            // get Credentials name
            List<string> credName = new List<string>();
            var allCredentials = CCCredentialRepository.Credentials.Where(aguid => aguid.AccountGUID == accountObj.AccountGUID).ToList();
            foreach (var conn in subscriptions)
            {
                var findCredential = allCredentials.Where(cid => cid.ID == conn.CredentialsID).FirstOrDefault();
                if (findCredential != null) { credName.Add(findCredential.Name); }
                else { credName.Add(""); }
            }
            subscriptionsView.CredentialName = credName;

            subscriptionsView.FolderName = folderDetails.Name;
            subscriptionsView.FolderType = folderDetails.Type;
            subscriptionsView.SubscriptionDetails = subscriptions;
            subscriptionsView.FolderID = id;

            //assign folder details
            CCFolder folderDetail = new CCFolder();
            folderDetail = CCFolderRepository.FolderDetails(id);
            Session["folderDetail"] = folderDetail;

            return View(subscriptionsView);
        }
        public ActionResult AppointmentListView(long ID)
        {
            Account accountObj = (Account)Session["account"];
            AppointmentViewModel AppointmentViewModel = new AppointmentViewModel();
            bool IsCrimeDiaryFields = false;

            TempData["SelectedMenu"] = "Folder";
            TempData["SelectedSubMenuFolder"] = ID;

            CCFolder folderDetail = new CCFolder();
            folderDetail = CCFolderRepository.FolderDetails(ID);
            AppointmentViewModel.FolderDetails = folderDetail;

            Session["folderDetail"] = folderDetail;
            LimitationsViewModel limitationsObj = (LimitationsViewModel)Session["limitations"];
            AppointmentViewModel.limitationsObj = limitationsObj;

            //get folderfileds
            List<CCFolderField> folderfields = new List<CCFolderField>();
            folderfields = CCFieldRepository.CCFolderFields.Where(id => id.FolderID == ID & id.AccountGUID == accountObj.AccountGUID).ToList();
            var isExisting = folderfields.Where(cap => cap.FieldName == "LawyerName" & cap.AccountGUID == accountObj.AccountGUID).FirstOrDefault();
            if (isExisting != null) { IsCrimeDiaryFields = true; }
            else { IsCrimeDiaryFields = false; }
            AppointmentViewModel.IsCrimeDiaryFields = IsCrimeDiaryFields;

            AppointmentViewModel.AppointmentListObjs = new List<customAppointmentView>();

            var ItemListForFolder = CCItemRepository.CCContacts.Where(i => i.FolderID == ID & i.isDeleted == false).ToList();

            foreach (var item in ItemListForFolder)
            {
                customAppointmentView C = new customAppointmentView();
                C.ItemID = item.ItemID;
                var FolderFieldID = folderfields.Where(ff => ff.FieldCaption == "Subject").First().FieldID;
                C.subject = CCFieldValueRepository.CCFieldValues.Where(fv => fv.ItemID == item.ItemID && fv.FieldID == FolderFieldID).First().Value;
                FolderFieldID = folderfields.Where(ff => ff.FieldCaption == "Start Time").First().FieldID;
                var itemStartDate = CCFieldValueRepository.CCFieldValues.Where(fv => fv.ItemID == item.ItemID && fv.FieldID == FolderFieldID).First().Value;

                //DateTime itemStartDateMain = DateTime.Parse(itemStartDate);

                DateTime timeUtc = DateTime.Parse(itemStartDate);
                DateTime cstTime = new DateTime();
                try
                {
                    TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById(accountObj.TimeZone.ToString());
                    cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
                    Console.WriteLine("The date and time are {0} {1}.",
                                      cstTime,
                                      cstZone.IsDaylightSavingTime(cstTime) ?
                                              cstZone.DaylightName : cstZone.StandardName);
                }
                catch (TimeZoneNotFoundException)
                {
                    Console.WriteLine("Timezone conversion error");
                }
                catch (InvalidTimeZoneException)
                {
                    Console.WriteLine("conn.LastSyncTime");
                }

                DateTime itemStartDateMain = DateTime.Parse(cstTime.ToString());

                C.startYear = itemStartDateMain.Year;
                C.startMonth = itemStartDateMain.Month;
                C.startDay = itemStartDateMain.Day;
                C.startHrs = itemStartDateMain.Hour;
                C.startMins = itemStartDateMain.Minute;

                FolderFieldID = folderfields.Where(ff => ff.FieldCaption == "End Time").First().FieldID;
                var itemEndDate = CCFieldValueRepository.CCFieldValues.Where(fv => fv.ItemID == item.ItemID && fv.FieldID == FolderFieldID).First().Value;

                //DateTime itemEndDateMain = DateTime.Parse(itemEndDate);

                timeUtc = DateTime.Parse(itemEndDate);
                cstTime = new DateTime();
                try
                {
                    TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById(accountObj.TimeZone.ToString());
                    cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
                    Console.WriteLine("The date and time are {0} {1}.",
                                      cstTime,
                                      cstZone.IsDaylightSavingTime(cstTime) ?
                                              cstZone.DaylightName : cstZone.StandardName);
                }
                catch (TimeZoneNotFoundException)
                {
                    Console.WriteLine("Timezone conversion error");
                }
                catch (InvalidTimeZoneException)
                {
                    Console.WriteLine("conn.LastSyncTime");
                }

                DateTime itemEndDateMain = DateTime.Parse(cstTime.ToString());

                C.endYear = itemEndDateMain.Year;
                C.endMonth = itemEndDateMain.Month;
                C.endDay = itemEndDateMain.Day;
                C.endHrs = itemEndDateMain.Hour;
                C.endMins = itemEndDateMain.Minute;

                AppointmentViewModel.AppointmentListObjs.Add(C);
            }

            return View(AppointmentViewModel);
        }
 public ActionResult ItemView(long id)
 {
     CCFolder folderDetail = new CCFolder();
     folderDetail = CCFolderRepository.FolderDetails(id);
     return View(folderDetail);
 }
        public ActionResult Items(long ID)
        {
            Account accountObj = (Account)Session["account"];
            ItemsViewModel itemsViewModel = new ItemsViewModel();
            bool IsCrimeDiaryFields = false;

            TempData["SelectedMenu"] = "Folder";
            TempData["SelectedSubMenuFolder"] = ID;
            CCFolder folderDetail = new CCFolder();
            folderDetail = CCFolderRepository.FolderDetails(ID);

            if (folderDetail.Type == 1)
            {
                itemsViewModel.FolderDetails = folderDetail;
                Session["folderDetail"] = folderDetail;
                LimitationsViewModel limitationsObj = (LimitationsViewModel)Session["limitations"];
                itemsViewModel.limitationsObj = limitationsObj;

                int FolderItemCount = CCItemRepository.CCContacts.Where(i => i.FolderID == ID).Count();
                if ((FolderItemCount > limitationsObj.maxItemCountPerFolder) & (folderDetail.isOverFlow == false))
                {
                    folderDetail.isOverFlow = true;
                    CCFolderRepository.SaveFolder(folderDetail);
                }

                if ((FolderItemCount <= limitationsObj.maxItemCountPerFolder) & (folderDetail.isOverFlow == true))
                {
                    folderDetail.isOverFlow = false;
                    CCFolderRepository.SaveFolder(folderDetail);
                }

                //get folderfileds
                List<CCFolderField> folderfields = new List<CCFolderField>();
                folderfields = CCFieldRepository.CCFolderFields.Where(id => id.FolderID == ID & id.AccountGUID == accountObj.AccountGUID).ToList();
                var isExisting = folderfields.Where(cap => cap.FieldName == "LawyerName" & cap.AccountGUID == accountObj.AccountGUID).FirstOrDefault();
                if (isExisting != null) { IsCrimeDiaryFields = true; }
                else { IsCrimeDiaryFields = false; }
                itemsViewModel.IsCrimeDiaryFields = IsCrimeDiaryFields;

                return View(itemsViewModel);
            }
            else
            {
                return RedirectToAction("viewAppointments", "Folder", new { ID = ID });
            }
        }
        public CCFolder SaveFolder(CCFolder folderObj)
        {
            var xx = folderObj.Name;

            if (folderObj.FolderID == 0)
            {
                if (folderObj.Type == 3)
                    folderObj.Type = 2;

                context.CCFolders.Add(folderObj);
                context.SaveChanges();
            }
            else
            {

                CCFolder dbEntry = context.CCFolders.Find(folderObj.FolderID);
                if (dbEntry != null)
                {
                    dbEntry.Name = folderObj.Name;
                    context.SaveChanges();
                }
            }

            return folderObj;
        }
 public bool UpdatePauseSync(CCFolder folderObj)
 {
     CCFolder dbEntry = context.CCFolders.Find(folderObj.FolderID);
     if (dbEntry != null)
     {
         if (folderObj.IsPaused != null)
         {
             dbEntry.IsPaused = folderObj.IsPaused;
         }
         context.SaveChanges();
     }
     return true;
 }
        public ActionResult ChangeSyncState(string ActionType, string ID, string Value)
        {
            User userObj = (User)Session["user"];
            Account accountObj = (Account)Session["account"];

            if (ModelState.IsValid && accountObj != null)
            {
                if (ActionType == "Folder")
                {
                    CCFolder folderObj = new CCFolder();
                    folderObj.FolderID = long.Parse(ID);

                    if (Value == "1")
                        folderObj.IsPaused = false;
                    else
                        folderObj.IsPaused = true;

                    bool folderUpdate = CCFolderRepository.UpdatePauseSync(folderObj);

                    //Change state of IsPaused in Connections as well..
                    var connectionListOfFolder = CCConnectionRepository.CCSubscriptions.Where(fid => fid.FolderID == folderObj.FolderID).ToList();

                    foreach (var conn in connectionListOfFolder)
                    {
                        CCConnection connectionObj = new CCConnection();
                        connectionObj.ConnectionID = conn.ConnectionID;

                        if (Value == "1")
                            connectionObj.IsPaused = false;
                        else
                            connectionObj.IsPaused = true;

                        bool connectionUpdate = CCConnectionRepository.UpdatePauseSync(connectionObj);
                    }
                }
                else if (ActionType == "Connection")
                {
                    CCConnection connectionObj = new CCConnection();
                    connectionObj.ConnectionID = long.Parse(ID);

                    if (Value == "1")
                        connectionObj.IsPaused = false;
                    else
                        connectionObj.IsPaused = true;

                    bool connectionUpdate = CCConnectionRepository.UpdatePauseSync(connectionObj);
                }
            }
            return RedirectToAction("Index", "Admin");
        }