/// <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; } }
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; } }
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; } }
/// <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; } }
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; } }