2015-03-25 2 views
0

Я пытаюсь добавить условие к действию индекса только для получения определенных записей. История такая.фильтрация записей в действии индекса контроллера

  1. Зарегистрированный пользователь имеет тождество роль либо владелец или ServiceCompany
  2. Существует Собственник таблица и таблицы обслуживания компаний, каждый из них имеет RegUserID, который держит UserID из таблицы тождеств на основе роли, что пользователь.
  3. Существует таблица активов (которая должна быть проиндексирована), которая имеет поле OwnerID и поле Service CompanyID.
  4. На основании UserID зарегистрированного пользователя мне нужно идентифицировать роль пользователя, затем получить идентификатор OwnerID или Service CompanyID из соответствующей таблицы с помощью RegUserID, а затем на основе списка ролей активы с OwnerID или Service CompanyID

я дошел до ...

// GET: Assets 
public ActionResult Index() 
{ 
    if(Roles.GetRolesForUser().Contains("Owner") == true) 
    { 
     // Get OwnerID from Owners table where Owners.RegUserID == User.Identity.GetUserId(); 
     // Get list of assets from Asstes where Assets.OwnerID == OwnerID 
    } 
    else if(Roles.GetRolesForUser().Contains("Service Company") == true) 
    { 
     // Get ServiceCompanyID from Owners table where ServiceCompanies.RegUserID == User.Identity.GetUserId(); 
     // Get list if assets from Assets where Asstes.ServiceCompanyID == ServiceCompanyID 
    } 

    return View(assets); 
} 

Я полностью застрял на том, как получить OwnerId или ServiceCompanyID затем список активов, чтобы вернуться к просмотру.

ответ

0

Не уверен, что на вашей установке базы данных и т.д .. Но, основываясь на ваш вопрос, вы должны быть в состоянии на это, не волнуясь, что такое «Роль» пользователь находится в с Linq запроса аналогично следующему

var userId = User.Identity.GetUserId();  
var asset = from a in context.Assets 
    join o in context.Owners on a.OwnerId equals o.OwnerId into oa 
    from asst in oa.DefaultIfEmpty() 
    join s in context.ServiceCompanies on a.ServiceCompanyId equals s.ServiceCompanyId into sa 
    from service in sa.DefaultIfEmpty() 
    where asst.RegUserId == userId || service.RegUserId == userId 
    select a; 

return View(asset); 
+0

Спасибо , Я посмотрю позже сегодня и отчитаюсь. – Spionred

Смежные вопросы