Example #1
0
        /// <summary>
        /// نوع های تردد را بر می گرداند
        /// </summary>
        /// <returns></returns>
        public IList <Precard> GetTrafficTypes()
        {
            try
            {
                EntityRepository <PrecardGroups> groupRep = new EntityRepository <PrecardGroups>(false);
                PrecardGroups  group = groupRep.GetByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new PrecardGroups().LookupKey), PrecardGroupsName.traffic.ToString())).FirstOrDefault();
                List <Precard> list  = new List <Precard>();
                if (group != null)
                {
                    list = group.PrecardList.Where(x => x.IsHourly && x.Active).ToList();
                    foreach (Precard p in list)
                    {
                        p.IsTraffic = true;
                    }
                }

                list = list.Where(x => x.AccessRoleList.Where(y => y.ID == BUser.CurrentUser.Role.ID).Count() > 0).ToList();
                return(list);
            }
            catch (Exception ex)
            {
                LogException(ex, "BTraffic", "GetTrafficTypes");
                throw ex;
            }
        }
Example #2
0
        public IList <Precard> GetAllByPrecardGroup(decimal precadGrpId)
        {
            IList <decimal> accessableIDs = accessPort.GetAccessiblePrecards();

            IList <Precard> list = new List <Precard>();

            if (accessableIDs.Count < this.operationBatchSizeValue && this.operationBatchSizeValue < 2100)
            {
                list = precardRep.GetByCriteria(new CriteriaStruct(Utility.GetPropertyName(() => new Precard().PrecardGroup), new PrecardGroups()
                {
                    ID = precadGrpId
                }),
                                                new CriteriaStruct(Utility.GetPropertyName(() => new Precard().ID), accessableIDs.ToArray(), CriteriaOperation.IN));
            }
            else
            {
                Precard                   precardAlias       = null;
                PrecardGroups             precardGroupsAlias = null;
                GTS.Clock.Model.Temp.Temp tempAlias          = null;
                string operationGUID = this.bTemp.InsertTempList(accessableIDs);
                list = NHSession.QueryOver(() => precardAlias)
                       .JoinAlias(() => precardAlias.TempList, () => tempAlias)
                       .JoinAlias(() => precardAlias.PrecardGroup, () => precardGroupsAlias)
                       .Where(() => tempAlias.OperationGUID == operationGUID && precardAlias.PrecardGroup.ID == precadGrpId)
                       .List <Precard>();

                this.bTemp.DeleteTempList(operationGUID);
            }
            return(list);
        }
        public decimal UpdateByProxy(decimal accessGroupId, string name, string description, IList <AccessGroupProxy> accessGroupList, bool updateAccessGroupDetail)
        {
            try
            {
                EntityRepository <PrecardGroups> groupRep = new EntityRepository <PrecardGroups>(false);
                IList <Precard>    removeList             = new List <Precard>();
                PrecardAccessGroup accessGroup            = new PrecardAccessGroup();
                accessGroup                      = base.GetByID(accessGroupId);
                accessGroup.Name                 = name;
                accessGroup.Description          = description;
                accessGroup.AccessGroupDetailOld = new Dictionary <decimal, decimal>();
                foreach (PrecardAccessGroupDetail accessGroupDetail in accessGroup.PrecardAccessGroupDetailList)
                {
                    accessGroup.AccessGroupDetailOld.Add(accessGroupDetail.Precard.ID, accessGroupDetail.ID);
                }
                if (updateAccessGroupDetail)
                {//اگر این لیست خالی باشد معنایش این است که آیتم های قبلی نباید دست بخورد
                    accessGroup.PrecardList.Clear();
                }

                foreach (AccessGroupProxy proxy in accessGroupList)
                {
                    IList <Precard> precardGroup = new List <Precard>();
                    if (proxy.IsParent)
                    {
                        PrecardGroups group = groupRep.GetById(proxy.ID, false);
                        foreach (Precard p in group.PrecardList)
                        {
                            accessGroup.PrecardList.Add(p);
                        }
                    }
                    else if (proxy.Checked)
                    {
                        accessGroup.PrecardList.Add(new Precard()
                        {
                            ID = proxy.ID
                        });
                    }
                    else
                    {
                        removeList.Add(new Precard()
                        {
                            ID = proxy.ID
                        });
                    }
                }
                foreach (Precard p in removeList)
                {
                    accessGroup.PrecardList.Remove(p);
                }
                SaveChanges(accessGroup, UIActionType.EDIT);
                return(accessGroup.ID);
            }
            catch (Exception ex)
            {
                LogException(ex, "BPrecardAccessGroup", "UpdateByProxy");
                throw ex;
            }
        }
Example #4
0
        public void GetPrecardTree_UpdateModeTest()
        {
            IList <PrecardGroups> list = busAccessGroup.GetPrecardTree(ADOaccessGroup1.ID);

            Assert.IsTrue(list.Count > 0);
            Assert.IsTrue(list.Where(x => x.ID == ADOGroup.ID).Count() > 0);
            Assert.IsTrue(list.Where(x => x.ID == ADOGroup.ID).Where(x => x.PrecardList.Contains(ADOPrecard1)).Count() > 0);
            PrecardGroups group = list.Where(x => x.ID == ADOGroup.ID).First();

            Assert.IsTrue(group.ContainInPrecardAccessGroup);
            Precard p = group.PrecardList.Where(x => x.ID == ADOPrecard2.ID && x.ContainInPrecardAccessGroup).FirstOrDefault();

            Assert.IsNotNull(p);
            Assert.AreEqual(ADOPrecard2.ID, p.ID);
        }
 /// <summary>
 /// دلیل استفاده از این سرویس این است که واسط کاربر باید درختی از پیشکارتها را نمایش دهد
 /// و بدلیل محدودیتها جاوا اسکریپت مجبوریم شمای درخت را در سرویس دریافت و آنرا تحلیل کنیم
 /// </summary>
 /// <param name="name">نام گروه دسترسی</param>
 /// <param name="description">توضیح</param>
 /// <param name="accessGroupList">لیست پیکارتها که از درخت استخراج شده است</param>
 public decimal InsertByProxy(string name, string description, IList <AccessGroupProxy> accessGroupList)
 {
     try
     {
         EntityRepository <PrecardGroups> groupRep = new EntityRepository <PrecardGroups>(false);
         IList <Precard>    removeList             = new List <Precard>();
         PrecardAccessGroup accessGroup            = new PrecardAccessGroup();
         accessGroup.Name        = name;
         accessGroup.Description = description;
         accessGroup.PrecardList = new List <Precard>();
         foreach (AccessGroupProxy proxy in accessGroupList)
         {
             if (proxy.IsParent)
             {
                 PrecardGroups group = groupRep.GetById(proxy.ID, false);
                 foreach (Precard p in group.PrecardList)
                 {
                     accessGroup.PrecardList.Add(p);
                 }
             }
             else if (proxy.Checked)
             {
                 accessGroup.PrecardList.Add(new Precard()
                 {
                     ID = proxy.ID
                 });
             }
             else
             {
                 removeList.Add(new Precard()
                 {
                     ID = proxy.ID
                 });
             }
         }
         foreach (Precard p in removeList)
         {
             accessGroup.PrecardList.Remove(p);
         }
         SaveChanges(accessGroup, UIActionType.ADD);
         return(accessGroup.ID);
     }
     catch (Exception ex)
     {
         LogException(ex, "BPrecardAccessGroup", "InsertByProxy");
         throw ex;
     }
 }
Example #6
0
        /// <summary>
        /// پیشکارتهای یک جانشین را ثبت میکند
        /// اگر پارانتر آخر تهی باشد بدین معنی است که جریان حذف شود یعنی تمام پیشکارتهایش خالی شود
        /// </summary>
        /// <param name="substituteId"></param>
        /// <param name="flowId"></param>
        /// <param name="accessGroupList"></param>
        /// <returns></returns>
        public bool UpdateByProxy(decimal substituteId, decimal flowId, IList <AccessGroupProxy> accessGroupList)
        {
            try
            {
                if (substituteId == 0 || flowId == 0)
                {
                    UIValidationExceptions exception = new UIValidationExceptions();
                    exception.Add(new ValidationException(ExceptionResourceKeys.SubstituteUpdateFlowAndSubstituteIdRequeiered, "کد جریان و جانشین نامشخص است", ExceptionSrc));
                }
                bool  substituteContainsFlow = false;//تیک جریان کاری در گرید مربوطه
                BFlow flow = new BFlow();
                PrecardAccessGroup precardAccessGroup     = flow.GetByID(flowId).AccessGroup;
                EntityRepository <PrecardGroups> groupRep = new EntityRepository <PrecardGroups>(false);
                IList <Precard> removeList = new List <Precard>();
                Substitute      substitute = this.GetByID(substituteId);
                substitute.PrecardAccessIsSet = true;
                substitute.TheFromDate        = Utility.ToPersianDate(substitute.FromDate);
                substitute.TheToDate          = Utility.ToPersianDate(substitute.ToDate);
                //ابتدا همگی حذف و سپس ایجاد میگردد
                substitute.PrecardList = new List <Precard>();

                if (accessGroupList != null)
                {
                    foreach (AccessGroupProxy proxy in accessGroupList)
                    {
                        if (proxy.IsParent)
                        {
                            PrecardGroups group = groupRep.GetById(proxy.ID, false);
                            foreach (Precard p in group.PrecardList)
                            {
                                substituteContainsFlow = true;
                                substitute.PrecardList.Add(p);
                            }
                        }
                        else if (proxy.Checked)
                        {
                            substituteContainsFlow = true;
                            substitute.PrecardList.Add(new Precard()
                            {
                                ID = proxy.ID
                            });
                        }
                        else
                        {
                            removeList.Add(new Precard()
                            {
                                ID = proxy.ID
                            });
                        }
                    }
                    foreach (Precard p in removeList)
                    {
                        substitute.PrecardList.Remove(p);
                    }
                }
                SaveChanges(substitute, UIActionType.EDIT);
                return(substituteContainsFlow);
            }
            catch (Exception ex)
            {
                LogException(ex, "BSubstitute", "UpdateByProxy");
                throw ex;
            }
        }
Example #7
0
        public string[] UpdatePreCard_PreCardPage(string state, string SelectedPreCardID, string IsActive, string PreCardCode, string PreCardOrder, string PreCardName, string PreCardTypeID, string IsDaily, string IsHourly, string IsMonthly, string IsJustification)
        {
            this.InitializeCulture();

            string[] retMessage = new string[4];

            try
            {
                AttackDefender.CSRFDefender(this.Page);
                decimal PreCardID         = 0;
                decimal selectedPreCardID = decimal.Parse(this.StringBuilder.CreateString(SelectedPreCardID), CultureInfo.InvariantCulture);
                bool    isActive          = bool.Parse(this.StringBuilder.CreateString(IsActive));
                PreCardCode  = this.StringBuilder.CreateString(PreCardCode);
                PreCardOrder = this.StringBuilder.CreateString(PreCardOrder);
                PreCardName  = this.StringBuilder.CreateString(PreCardName);
                decimal      preCardTypeID   = decimal.Parse(this.StringBuilder.CreateString(PreCardTypeID), CultureInfo.InvariantCulture);
                bool         isDaily         = bool.Parse(this.StringBuilder.CreateString(IsDaily));
                bool         isHourly        = bool.Parse(this.StringBuilder.CreateString(IsHourly));
                bool         isMonthly       = bool.Parse(this.StringBuilder.CreateString(IsMonthly));
                bool         isJustification = bool.Parse(this.StringBuilder.CreateString(IsJustification));
                UIActionType uam             = (UIActionType)Enum.Parse(typeof(UIActionType), this.StringBuilder.CreateString(state).ToUpper());

                Precard precard = new Precard();
                precard.ID = selectedPreCardID;
                if (uam != UIActionType.DELETE)
                {
                    precard.Active = isActive;
                    precard.Code   = PreCardCode;
                    precard.Order  = PreCardOrder;
                    precard.Name   = PreCardName;
                    PrecardGroups precardType = new PrecardGroups();
                    precardType.ID       = preCardTypeID;
                    precard.PrecardGroup = precardType;
                    precard.IsDaily      = isDaily;
                    precard.IsHourly     = isHourly;
                    precard.IsMonthly    = isMonthly;
                    precard.IsPermit     = isJustification;
                }

                switch (uam)
                {
                case UIActionType.ADD:
                    PreCardID = this.PrecardBusiness.InsertPrecard(precard, uam);
                    break;

                case UIActionType.EDIT:
                    if (selectedPreCardID == 0)
                    {
                        retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIValidationExceptions, new Exception(GetLocalResourceObject("NoPreCardSelectedforEdit").ToString()), retMessage);
                        return(retMessage);
                    }
                    PreCardID = this.PrecardBusiness.UpdatePrecard(precard, uam);
                    break;

                case UIActionType.DELETE:
                    if (selectedPreCardID == 0)
                    {
                        retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIValidationExceptions, new Exception(GetLocalResourceObject("NoPreCardSelectedforDelete").ToString()), retMessage);
                        return(retMessage);
                    }
                    PreCardID = this.PrecardBusiness.DeletePrecard(precard, uam);
                    break;
                }

                retMessage[0] = GetLocalResourceObject("RetSuccessType").ToString();
                string SuccessMessageBody = string.Empty;
                switch (uam)
                {
                case UIActionType.ADD:
                    SuccessMessageBody = GetLocalResourceObject("AddComplete").ToString();
                    break;

                case UIActionType.EDIT:
                    SuccessMessageBody = GetLocalResourceObject("EditComplete").ToString();
                    break;

                case UIActionType.DELETE:
                    SuccessMessageBody = GetLocalResourceObject("DeleteComplete").ToString();
                    break;

                default:
                    break;
                }
                retMessage[1] = SuccessMessageBody;
                retMessage[2] = "success";
                retMessage[3] = PreCardID.ToString();
                return(retMessage);
            }
            catch (UIValidationExceptions ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIValidationExceptions, ex, retMessage);
                return(retMessage);
            }
            catch (UIBaseException ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.UIBaseException, ex, retMessage);
                return(retMessage);
            }
            catch (Exception ex)
            {
                retMessage = this.exceptionHandler.HandleException(this.Page, ExceptionTypes.Exception, ex, retMessage);
                return(retMessage);
            }
        }
        public IList <ManagerFlowConditionProxy> GetAllManagerFlowConditionsByPrecardGroup(decimal flowID, decimal managerFlowID, decimal precardGroupID, Dictionary <ConditionOperators, string> conditionOperatorsDic)
        {
            try
            {
                Precard                           precardAlias                  = null;
                PrecardGroups                     precardGroupsAlias            = null;
                PrecardAccessGroupDetail          precardAccessGroupDetailAlias = null;
                ManagerFlow                       managerFlowAlias              = null;
                ManagerFlowCondition              managerFlowConditionAlias     = null;
                IList <ManagerFlowConditionProxy> ManagerFlowConditionProxyList = new List <ManagerFlowConditionProxy>();

                IList <ManagerFlowCondition> existingManagerFlowConditionsList = NHSession.QueryOver <ManagerFlowCondition>(() => managerFlowConditionAlias)
                                                                                 .JoinAlias(() => managerFlowConditionAlias.PrecardAccessGroupDetail, () => precardAccessGroupDetailAlias)
                                                                                 .JoinAlias(() => precardAccessGroupDetailAlias.Precard, () => precardAlias)
                                                                                 .JoinAlias(() => precardAlias.PrecardGroup, () => precardGroupsAlias)
                                                                                 .JoinAlias(() => managerFlowConditionAlias.ManagerFlow, () => managerFlowAlias)
                                                                                 .Where(() => managerFlowAlias.ID == managerFlowID &&
                                                                                        precardGroupsAlias.ID == precardGroupID &&
                                                                                        precardAlias.Active
                                                                                        )
                                                                                 .List <ManagerFlowCondition>();


                foreach (ManagerFlowCondition managerFlowConditionItem in existingManagerFlowConditionsList)
                {
                    ManagerFlowConditionProxy managerFlowConditionProxy = new ManagerFlowConditionProxy();
                    managerFlowConditionProxy.State = "View";
                    managerFlowConditionProxy.ID    = managerFlowConditionItem.ID;
                    managerFlowConditionProxy.PrecardAccessGroupDetailID = managerFlowConditionItem.PrecardAccessGroupDetail.ID;
                    managerFlowConditionProxy.PrecardID     = managerFlowConditionItem.PrecardAccessGroupDetail.Precard.ID;
                    managerFlowConditionProxy.PrecardName   = managerFlowConditionItem.PrecardAccessGroupDetail.Precard.Name;
                    managerFlowConditionProxy.PrecardCode   = managerFlowConditionItem.PrecardAccessGroupDetail.Precard.Code;
                    managerFlowConditionProxy.EndFlow       = managerFlowConditionItem.EndFlow;
                    managerFlowConditionProxy.Access        = true;
                    managerFlowConditionProxy.OperatorKey   = ((ConditionOperators)managerFlowConditionItem.Operator).ToString();
                    managerFlowConditionProxy.OperatorTitle = conditionOperatorsDic[(ConditionOperators)managerFlowConditionItem.Operator];
                    managerFlowConditionProxy.Value         = managerFlowConditionItem.Value;
                    managerFlowConditionProxy.ValueType     = this.SetManagerFlowConditionValueType(managerFlowConditionItem.PrecardAccessGroupDetail.Precard);
                    managerFlowConditionProxy.Description   = managerFlowConditionItem.Description;
                    ManagerFlowConditionProxyList.Add(managerFlowConditionProxy);
                }

                Flow flow = this.bFlow.GetByID(flowID);
                IList <PrecardAccessGroupDetail> precardAccessGroupDetailList = flow.AccessGroup.PrecardAccessGroupDetailList.Where(x => x.Precard.PrecardGroup.ID == precardGroupID).ToList <PrecardAccessGroupDetail>();
                IList <Precard> flowPrecardGroupPrecards = precardAccessGroupDetailList.Select(x => x.Precard).Where(x => x.Active).ToList <Precard>();
                foreach (Precard precardItem in flowPrecardGroupPrecards.Where(x => !ManagerFlowConditionProxyList.Select(y => y.PrecardID).ToList().Contains(x.ID)))
                {
                    ManagerFlowConditionProxy managerFlowConditionProxy = new ManagerFlowConditionProxy();
                    managerFlowConditionProxy.State = "View";
                    managerFlowConditionProxy.ID    = 0;
                    managerFlowConditionProxy.PrecardAccessGroupDetailID = precardAccessGroupDetailList.Where(x => x.Precard.ID == precardItem.ID).First().ID;
                    managerFlowConditionProxy.PrecardID     = precardItem.ID;
                    managerFlowConditionProxy.PrecardName   = precardItem.Name;
                    managerFlowConditionProxy.PrecardCode   = precardItem.Code;
                    managerFlowConditionProxy.EndFlow       = false;
                    managerFlowConditionProxy.Access        = true;
                    managerFlowConditionProxy.OperatorKey   = string.Empty;
                    managerFlowConditionProxy.OperatorTitle = string.Empty;
                    managerFlowConditionProxy.Value         = string.Empty;
                    managerFlowConditionProxy.ValueType     = this.SetManagerFlowConditionValueType(precardItem);
                    managerFlowConditionProxy.Description   = string.Empty;
                    ManagerFlowConditionProxyList.Add(managerFlowConditionProxy);
                }

                return(ManagerFlowConditionProxyList);
            }
            catch (Exception ex)
            {
                LogException(ex, "BManagerFlowCondition", "GetAllManagerFlowConditionsByPrecardGroup");
                throw;
            }
        }