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