public ActionResult Add(long ADM_AccessGroupMasterId = 0, bool isActive = true)
        {
            try
            {
                long?TimeZone = currentUser.ADM_UserPreference.TimezoneLkup != null ? currentUser.ADM_UserPreference.TimezoneLkup : (long)DefaultTimeZone.CentralStandardTime;
                Session[ConstantTexts.AccessGroupSkillSessionKey]  = null;
                Session[ConstantTexts.AccessGroupReportSessionKey] = null;
                ViewBag.RoleList       = CacheUtility.GetAllLookupsFromCache((long)LookupTypes.Role);
                ViewBag.WorkBasketList = CacheUtility.GetAllLookupsFromCache((long)LookupTypes.WorkBasket);
                ViewBag.Reports        = ViewBag.Reports = CacheUtility.GetAllReportsFromCache(null, "");
                UIDOAccessGroup objUIDOAccessGroup = new UIDOAccessGroup();
                objUIDOAccessGroup.IsActive = true;
                objUIDOAccessGroup.lstDOADM_AccessGroupSkillsCorrelation = new List <DOADM_AccessGroupSkillsCorrelation>();
                objUIDOAccessGroup.lstDOADM_AccessGroupReportCorrelation = new List <DOADM_AccessGroupReportCorrelation>();

                if (ADM_AccessGroupMasterId != 0)
                {
                    DOADM_AccessGroupMaster objDOADM_AccessGroupMaster = new DOADM_AccessGroupMaster();
                    BLAccessGroup           objBLAccessGroup           = new BLAccessGroup();

                    objDOADM_AccessGroupMaster.ADM_AccessGroupMasterId = ADM_AccessGroupMasterId;
                    objDOADM_AccessGroupMaster.IsActive = isActive;
                    ExceptionTypes result = objBLAccessGroup.GetAccessGroupForEdit(objDOADM_AccessGroupMaster, out objUIDOAccessGroup);
                    Session[ConstantTexts.AccessGroupSkillSessionKey]  = objUIDOAccessGroup.lstDOADM_AccessGroupSkillsCorrelation;
                    Session[ConstantTexts.AccessGroupReportSessionKey] = objUIDOAccessGroup.lstDOADM_AccessGroupReportCorrelation;

                    DOADM_SkillsMaster        objDOADM_SkillsMaster = new DOADM_SkillsMaster();
                    List <DOADM_SkillsMaster> lstDOADM_SkillsMaster = new List <DOADM_SkillsMaster>();
                    BLSkills objBLSkills = new BLSkills();
                    objDOADM_SkillsMaster.IsActive       = true;
                    objDOADM_SkillsMaster.WorkBasketLkup = objUIDOAccessGroup.WorkBasketLkup;
                    objDOADM_SkillsMaster.RoleLkup       = objUIDOAccessGroup.RoleLkup;

                    ExceptionTypes result1 = objBLSkills.SearchSkills(TimeZone, objDOADM_SkillsMaster, out lstDOADM_SkillsMaster, out string errorMesssage);
                    ViewBag.Skills = lstDOADM_SkillsMaster.Where(x => x.IsActive == true).ToList();
                }
                return(View(objUIDOAccessGroup));
            }
            catch (Exception ex)
            {
                BLCommon.LogError(currentUser.ADM_UserMasterId, MethodBase.GetCurrentMethod().Name, (long)ErrorModuleName.ManageAccessGroups, (long)ExceptionTypes.Uncategorized, string.Empty, ex.ToString());
                return(RedirectToAction("Maintenance", "Error", new { Error = MethodBase.GetCurrentMethod().Name + " Action terminated and redirected to Maintenance. Error:" + ex.ToString() }));
            }
        }
        public ActionResult AddReportsToSession(DOADM_AccessGroupReportCorrelation objDOADM_AccessGroupReportCorrelation, long lPreviousReport = 0, int mode = 0)
        {
            long?TimeZone = currentUser.ADM_UserPreference.TimezoneLkup != null ? currentUser.ADM_UserPreference.TimezoneLkup : (long)DefaultTimeZone.CentralStandardTime;
            List <DOADM_AccessGroupReportCorrelation> lstDOADM_AccessGroupReportCorrelation = new List <DOADM_AccessGroupReportCorrelation>();

            try
            {
                if (Session[ConstantTexts.AccessGroupReportSessionKey] != null)
                {
                    lstDOADM_AccessGroupReportCorrelation = Session[ConstantTexts.AccessGroupReportSessionKey] as List <DOADM_AccessGroupReportCorrelation>;
                }
                switch (mode)
                {
                case 0:    //Add new Report to the list
                    if (lstDOADM_AccessGroupReportCorrelation.Where(xx => xx.RPT_ReportsMasterRef == objDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef).Count() == 0)
                    {
                        objDOADM_AccessGroupReportCorrelation.IsActive          = true;
                        objDOADM_AccessGroupReportCorrelation.CreatedByRef      = currentUser.ADM_UserMasterId;
                        objDOADM_AccessGroupReportCorrelation.UTCCreatedOn      = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                        objDOADM_AccessGroupReportCorrelation.CreatedByName     = currentUser.FullName;
                        objDOADM_AccessGroupReportCorrelation.LastUpdatedByRef  = currentUser.ADM_UserMasterId;
                        objDOADM_AccessGroupReportCorrelation.UTCLastUpdatedOn  = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                        objDOADM_AccessGroupReportCorrelation.LastUpdatedByName = currentUser.FullName;
                        lstDOADM_AccessGroupReportCorrelation.Add(objDOADM_AccessGroupReportCorrelation);
                    }
                    else
                    {
                        objDOADM_AccessGroupReportCorrelation = lstDOADM_AccessGroupReportCorrelation.Where(xx => xx.RPT_ReportsMasterRef == objDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef).FirstOrDefault();
                        objDOADM_AccessGroupReportCorrelation.LastUpdatedByRef  = currentUser.ADM_UserMasterId;
                        objDOADM_AccessGroupReportCorrelation.UTCLastUpdatedOn  = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                        objDOADM_AccessGroupReportCorrelation.LastUpdatedByName = currentUser.FullName;
                        objDOADM_AccessGroupReportCorrelation.IsActive          = true;
                    }
                    break;

                case 1:    //delete Report from added list
                    if (lstDOADM_AccessGroupReportCorrelation.Where(xx => xx.RPT_ReportsMasterRef == objDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef).Count() > 0)
                    {
                        objDOADM_AccessGroupReportCorrelation = lstDOADM_AccessGroupReportCorrelation.Where(xx => xx.RPT_ReportsMasterRef == objDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef).FirstOrDefault();
                        objDOADM_AccessGroupReportCorrelation.LastUpdatedByRef = currentUser.ADM_UserMasterId;
                        objDOADM_AccessGroupReportCorrelation.UTCLastUpdatedOn = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                        objDOADM_AccessGroupReportCorrelation.IsActive         = false;
                    }
                    break;

                case 2:                                                                                   //update existing Report
                    DOADM_AccessGroupReportCorrelation objOldDOADM_AccessGroupReportCorrelation = lstDOADM_AccessGroupReportCorrelation.Where(x => x.RPT_ReportsMasterRef == lPreviousReport).FirstOrDefault();
                    if (objOldDOADM_AccessGroupReportCorrelation.ADM_AccessGroupReportCorrelationId == 0) //updating a report for new record
                    {
                        objOldDOADM_AccessGroupReportCorrelation.CreatedByName = currentUser.FullName;
                        objOldDOADM_AccessGroupReportCorrelation.CreatedByRef  = currentUser.ADM_UserMasterId;
                    }
                    objOldDOADM_AccessGroupReportCorrelation.LastUpdatedByRef     = currentUser.ADM_UserMasterId;
                    objOldDOADM_AccessGroupReportCorrelation.UTCLastUpdatedOn     = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                    objDOADM_AccessGroupReportCorrelation.LastUpdatedByName       = currentUser.FullName;
                    objOldDOADM_AccessGroupReportCorrelation.IsActive             = true;
                    objOldDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef = objDOADM_AccessGroupReportCorrelation.RPT_ReportsMasterRef;
                    break;

                case 3:    //removing all the lists from Session
                    foreach (var item in lstDOADM_AccessGroupReportCorrelation)
                    {
                        item.LastUpdatedByRef = currentUser.ADM_UserMasterId;
                        item.UTCLastUpdatedOn = ZoneLookupUI.ConvertToTimeZone(DateTime.UtcNow, TimeZone);
                        item.IsActive         = false;
                    }
                    break;
                }

                ViewBag.Reports = ViewBag.Reports = CacheUtility.GetAllReportsFromCache(null, "");

                Session[ConstantTexts.AccessGroupReportSessionKey] = lstDOADM_AccessGroupReportCorrelation;
                return(PartialView("_Reports", lstDOADM_AccessGroupReportCorrelation.Where(xx => xx.IsActive == true).ToList()));
            }
            catch (Exception ex)
            {
                BLCommon.LogError(currentUser.ADM_UserMasterId, MethodBase.GetCurrentMethod().Name, (long)ErrorModuleName.ManageAccessGroups, (long)ExceptionTypes.Uncategorized, ex.ToString(), ex.ToString());
                return(RedirectToAction("Maintenance", "Error", routeValues: ex.ToString()));
            }
        }