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