Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 3
0
        /* Метод пока не используется
         * 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));
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 8
0
        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));
        }