/// <summary> /// Получение отфильтрованного списка контрагентов /// </summary> /// <param name="state"></param> /// <param name="user"></param> /// <returns></returns> public IEnumerable <Contractor> GetContractorByUser(object state, User user) { List <string> types = new List <string>(); if (user.HasPermission(Permission.Provider_List_Details)) { types.Add(EnumUtils.ValueToString(ContractorType.Provider)); } if (user.HasPermission(Permission.Producer_List_Details)) { types.Add(EnumUtils.ValueToString(ContractorType.Producer)); } if (user.HasPermission(Permission.Client_List_Details)) { types.Add(EnumUtils.ValueToString(ContractorType.Client)); } if (types.Count == 0) //Прав нет ни на один тип { return(new List <Contractor>()); } var ps = new ParameterString(""); ps.Add("ContractorType", ParameterStringItem.OperationType.OneOf, types); return(contractorRepository.GetFilteredList(state, ps)); }
private void AddStorageParameter(User user, ParameterString param) { var list = user.Teams.SelectMany(x => x.Storages).Select(x => x.Id.ToString()).Distinct().ToList(); // если список пуст - то добавляем несуществующее значение if (!list.Any()) { list.Add("0"); } if (param.Keys.Contains("Storage")) { var storageValue = param["Storage"].Value as string; if (!String.IsNullOrEmpty(storageValue)) { if (!list.Contains(param["Storage"].Value as string)) { param["Storage"].Value = "0"; //т.к. указано МХ, на которое у пользователя нет прав } } else { param["Storage"].Value = list; } } else { param.Add("Storage", ParameterStringItem.OperationType.OneOf, list); } }
/* Метод пока не используется * public decimal ImportCurrencyRate(Currency currency) * { * //var serv = new DailyInfoSoapClient(); * //var dataSet = serv.GetCursOnDate(DateTime.Now); * decimal rate = 0; * * //foreach (DataRow row in dataSet.Tables[0].Rows) * //{ * // var a = row; * //} * * return rate; * }*/ public IList <CurrencyRate> GetCurrencyRateFilteredList(short currencyId, object state, bool ignoreDeletedRows = true) { var ps = new ParameterString(state.GetType().GetProperty("Filter").GetValue(state, null) as string); ps.Add("Currency.Id", ParameterStringItem.OperationType.Eq, currencyId.ToString()); return(currencyRepository.GetCurrencyRateFilteredList(state, ps, ignoreDeletedRows)); }
/// <summary> /// Получение отфильтрованного списка задач /// </summary> /// <param name="state">Состояние грида</param> /// <param name="parameterString">Параметры грида</param> /// <param name="user">Пользователь</param> /// <param name="ignoreDeletedRows">Флаг, нужно ли игнорировать удаленные задачи</param> /// <returns>Коллекция задач</returns> public IList <Task> GetFilteredList(object state, ParameterString parameterString, User user, bool ignoreDeletedRows = true) { // Права на просмотр var r1 = RestrictOnUserByPermission("CreatedBy", user, Permission.Task_CreatedBy_List_Details); var r2 = RestrictOnUserByPermission("ExecutedBy", user, Permission.Task_ExecutedBy_List_Details); parameterString.Add(ParameterStringItem.OperationType.Or, r1, r2); return(taskRepository.GetFilteredList(state, parameterString, ignoreDeletedRows)); }
private void AddSenderStorageParameter(User user, ParameterString param) { var list = user.Teams.SelectMany(x => x.Storages).Select(x => x.Id.ToString()).Distinct().ToList(); // если список пуст - то добавляем несуществующее значение if (!list.Any()) { list.Add("0"); } param.Add("SenderStorage", ParameterStringItem.OperationType.OneOf, list); }
public IEnumerable <Team> GetFilteredList(object state, ParameterString parameterString, User user, Permission permission) { if (parameterString == null) { parameterString = new ParameterString(""); } ParameterString param = new ParameterString(""); switch (user.GetPermissionDistributionType(permission)) { case PermissionDistributionType.None: return(new List <Team>()); case PermissionDistributionType.Teams: var list = GetList(user, permission).Select(x => x.Id.ToString()).ToList(); // если список пуст - то добавляем несуществующее значение if (!list.Any()) { list.Add("0"); } if (parameterString.Keys.Contains("Id")) { if (parameterString["Id"].Operation == ParameterStringItem.OperationType.NotOneOf) { foreach (var excludeId in parameterString["Id"].Value as List <String> ) { list.Remove(excludeId); } parameterString.Delete("Id"); } } param.Add("Id", ParameterStringItem.OperationType.OneOf, list); break; case PermissionDistributionType.All: break; } return(teamRepository.GetFilteredList(state, param)); }
public IList <AccountingPriceList> GetFilteredList(object state, ParameterString parameterString, User user) { Func <ISubCriteria <AccountingPriceList>, ISubCriteria <AccountingPriceList> > cond = null; short storageId = 0; if (parameterString.Keys.Contains("Storage")) { if (!String.IsNullOrEmpty(parameterString["Storage"].Value as string)) { storageId = Convert.ToInt16(parameterString["Storage"].Value); cond = crit => { crit.Select(x => x.Id).Restriction <Storage>(x => x.Storages).Where(x => x.Id == storageId); return(crit); }; } parameterString.Delete("Storage"); } switch (user.GetPermissionDistributionType(Permission.AccountingPriceList_List_Details)) { case PermissionDistributionType.None: return(new List <AccountingPriceList>()); case PermissionDistributionType.Personal: parameterString.Add("Curator", ParameterStringItem.OperationType.Eq, user.Id.ToString()); break; case PermissionDistributionType.Teams: var list = user.Teams.SelectMany(x => x.Storages).Distinct().ToList(); if (storageId > 0) { cond = crit => { crit.Select(x => x.Id).Restriction <Storage>(x => x.Storages).OneOf(x => x.Id, list.Select(x => x.Id)).Where(x => x.Id == storageId); return(crit); }; } else { cond = crit => { crit.Select(x => x.Id).Restriction <Storage>(x => x.Storages).OneOf(x => x.Id, list.Select(x => x.Id)); return(crit); }; } break; } return(accountingPriceListRepository.GetFilteredList(state, parameterString, cond: cond)); }
public IList <WriteoffWaybill> GetFilteredList(object state, User user, ParameterString ps) { switch (user.GetPermissionDistributionType(Permission.WriteoffWaybill_List_Details)) { case PermissionDistributionType.None: return(new List <WriteoffWaybill>()); case PermissionDistributionType.Personal: ps.Add("Curator", ParameterStringItem.OperationType.Eq, user.Id.ToString()); // если область распространения "Только свои", то делаем еще и ограничение по командам пользователя AddSenderStorageParameter(user, ps); break; case PermissionDistributionType.Teams: AddSenderStorageParameter(user, ps); break; case PermissionDistributionType.All: break; } return(writeoffWaybillRepository.GetFilteredList(state, ps)); }