コード例 #1
0
        /// <summary>
        /// Получение накладной по коду с учетом прав пользователя
        /// </summary>
        /// <param name="id">Код накладной</param>
        /// <param name="user">Пользователь</param>
        private ReturnFromClientWaybill GetById(Guid id, User user)
        {
            var type = user.GetPermissionDistributionType(Permission.ReturnFromClientWaybill_List_Details);

            // если права нет - то сразу возвращаем null
            if (type == PermissionDistributionType.None)
            {
                return(null);
            }
            else
            {
                var waybill = returnFromClientWaybillRepository.GetById(id);

                if (waybill == null)
                {
                    return(null);
                }

                bool contains = user.Teams.SelectMany(x => x.Deals).Contains(waybill.Deal);

                if ((type == PermissionDistributionType.Personal && waybill.Deal.Curator == user && contains) || // все равно фильтруем еще и по командам
                    (type == PermissionDistributionType.Teams && contains) ||
                    type == PermissionDistributionType.All)
                {
                    return(waybill);
                }

                return(null);
            }
        }