//returning lawsuits only for currently logged in user/lawyer public IEnumerable <Lawsuit> getForLawyer(string id, string sortOrder, string searchString) { List <LawsuitLawyer> lawyerLawsuits = (from l in context.LawsuitLawyers where l.userId == id select l).ToList(); List <Lawsuit> lawsuits = new List <Lawsuit>(); Lawsuit lawsuit; foreach (LawsuitLawyer ll in lawyerLawsuits) { lawsuit = context.Lawsuits.Find(ll.lawsuitId); context.Entry(lawsuit).Reference(r => r.judge).Load(); context.Entry(lawsuit).Reference(r => r.location).Load(); context.Entry(lawsuit).Reference(r => r.prosecutor).Load(); context.Entry(lawsuit).Reference(r => r.defendant).Load(); context.Entry(lawsuit).Reference(r => r.typeOfProcess).Load(); lawsuit.lawyers = null; lawsuits.Add(lawsuit); } if (!String.IsNullOrEmpty(searchString)) { lawsuits = lawsuits.Where(l => l.judge.name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.location.cityName.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || ((TipSuda)l.courtType).ToString().IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.processId.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.courtroomNumber.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.prosecutor.name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.defendant.name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.note.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0 || l.typeOfProcess.name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) >= 0) .ToList(); } switch (sortOrder) { case "judgeName_desc": return(lawsuits.OrderByDescending(s => s.judge.name).ToList()); case "courtTypeName_desc": return(lawsuits.OrderByDescending(s => s.typeOfProcess.name).ToList()); case "prosecutorName_desc": return(lawsuits.OrderByDescending(s => s.prosecutor.name).ToList()); case "defendantTypeName_desc": return(lawsuits.OrderByDescending(s => s.defendant.name).ToList()); case "dateTime_desc": return(lawsuits.OrderByDescending(s => s.dateTimeOfEvent).ToList()); default: return(lawsuits.OrderByDescending(s => s.courtType).ToList()); } }