public override RetriveProfesionalesRes Execute(RetriveProfesionalesReq pServiceRequest) { RetriveProfesionalesRes wRes = new RetriveProfesionalesRes(); List <Profesional_FullViewBE> wProfesional_FullView_List = null; if (pServiceRequest.BusinessData.HealthInstId.HasValue) { ///Busca profecionales ya relacionados con una Institución //Si es padre if (HealthInstitutionDAC.IsParent(pServiceRequest.BusinessData.HealthInstId.Value)) { //Profesionales directamente relacionados wProfesional_FullView_List = ProfesionalesDAC.SearchBy_HealthInstRelated(pServiceRequest.BusinessData.HealthInstId.Value); //Lista de id de profesionales ya incluidos n la lista List <Int32> prof_ids_JustRetrived = (from s in wProfesional_FullView_List select s.IdProfesional).ToList <Int32>(); //Instituciones hijas List <Guid> inst_chids_ids = HealthInstitutionDAC.RetriveHealthInstitution_Childs_Ids(pServiceRequest.BusinessData.HealthInstId.Value); foreach (Guid id in inst_chids_ids) { var only_inthis_child_List = ProfesionalesDAC.SearchBy_HealthInstRelated(pServiceRequest.BusinessData.HealthInstId.Value, prof_ids_JustRetrived); wProfesional_FullView_List.AddRange(only_inthis_child_List); //Lista de id de profesionales ya incluidos en la lista wProfesional_FullView_List prof_ids_JustRetrived.AddRange((from s in wProfesional_FullView_List select s.IdProfesional).ToList <Int32>()); } } else // Si es Hijo { //Profecionales directamente relacionados wProfesional_FullView_List = ProfesionalesDAC.SearchBy_HealthInstRelated(pServiceRequest.BusinessData.HealthInstId.Value); } } else { ///Busca profecionales solo por nobre y apellido wProfesional_FullView_List = ProfesionalesDAC.SearchByParams(pServiceRequest.BusinessData.Nombre, pServiceRequest.BusinessData.Apellido); } wRes.BusinessData.AddRange(wProfesional_FullView_List); return(wRes); }