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

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

                if (type == PermissionDistributionType.All)
                {
                    return(waybill);
                }
                else
                {
                    bool contains = user.Teams.SelectMany(x => x.Storages).Contains(waybill.Storage);

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

                return(null);
            }
        }