public override GetHealthInstitutionByIdRes Execute(GetHealthInstitutionByIdReq pServiceRequest)
        {
            GetHealthInstitutionByIdRes wRes = new GetHealthInstitutionByIdRes();

            wRes.BusinessData = HealthInstitutionDAC.GetById(pServiceRequest.BusinessData.HealthInstId, null);


            return(wRes);
        }
        public override RetriveHealthInstitutionRes Execute(RetriveHealthInstitutionReq pServiceRequest)
        {
            RetriveHealthInstitutionRes wRes = new RetriveHealthInstitutionRes();

            wRes.BusinessData = HealthInstitutionDAC.RetriveHealthInstitutionByParams(pServiceRequest.BusinessData.TextToSearch);


            return(wRes);
        }
        public override AuthHealthInstitutionRes Execute(AuthHealthInstitutionReq pServiceRequest)
        {
            AuthHealthInstitutionRes wRes = new AuthHealthInstitutionRes();

            wRes.BusinessData.Authenticated = HealthInstitutionDAC.AuthenticateUser(pServiceRequest.BusinessData.HealthInstId, pServiceRequest.BusinessData.ProfesionalId, pServiceRequest.BusinessData.UserId);
            //wRes.BusinessData.HealthInstitution_ProfesionalBE = HealthInstitutionDAC.Get_HealthInstitution_Profesional((pServiceRequest.BusinessData.HealthInstId, pServiceRequest.BusinessData.ProfesionalId));

            if (wRes.BusinessData.Authenticated == false)
            {
                wRes.BusinessData.Message = "No es un usuario autorizado para ingresar en la institución seleccionada";
            }

            //string cultura = Fwk.ServiceManagement.ServiceMetadata.ProviderSection.GetProvider(pServiceRequest.ContextInformation.ProviderName).DefaultCulture;
            //string cultura2 = pServiceRequest.ContextInformation.DefaultCulture;
            return(wRes);
        }
        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);
        }
예제 #5
0
        public override GetProfesionalRes Execute(GetProfesionalReq pServiceRequest)
        {
            GetProfesionalRes res = new GetProfesionalRes();

            if (pServiceRequest.BusinessData.IncludeScheduler && !pServiceRequest.BusinessData.IdProfesional.HasValue)
            {
                throw new FunctionalException("El servicio GetProfesional requiere el  IdProfesional para incluir la programacion del profesional");
            }

            if (pServiceRequest.BusinessData.IdProfesional.HasValue)
            {
                res.BusinessData.profesional = ProfesionalesDAC.GetById(pServiceRequest.BusinessData.IdProfesional.Value);
            }

            if (pServiceRequest.BusinessData.UserGuid.HasValue)
            {
                res.BusinessData.profesional = ProfesionalesDAC.GetByUserGuid(pServiceRequest.BusinessData.UserGuid.Value);
            }

            if (res.BusinessData.profesional == null)
            {
                throw new FunctionalException("El usuario no esta asociado a un profesional valido o habilitado en el sistema");
            }

            if (pServiceRequest.BusinessData.IncludeScheduler && pServiceRequest.BusinessData.IdProfesional.HasValue)
            {
                res.BusinessData.ResourceSchedulerList = SchedulingDAC.RetriveBy_ResourceId(pServiceRequest.BusinessData.IdProfesional.Value, pServiceRequest.BusinessData.HealthInstitutionId.Value);
            }

            Fwk.Security.BC.UserBC      userBc  = new Fwk.Security.BC.UserBC(pServiceRequest.ContextInformation.AppId, pServiceRequest.SecurityProviderName);
            Fwk.Security.Common.User    user    = new Fwk.Security.Common.User();
            Fwk.Security.Common.RolList rolList = null;

            if (pServiceRequest.BusinessData.IncludeSecurityInfo)
            {
                if (!string.IsNullOrEmpty(res.BusinessData.profesional.UserName))
                {
                    userBc.GetUserByParams(res.BusinessData.profesional.UserName, out user, out rolList);
                    var roles = from r in rolList select r.RolName;
                    user.Roles = roles.ToArray <string>();
                }
                res.BusinessData.User = user;

                ///Si != nul indica q se trata de un usuario profesional relacionado a una instoitución
                if (pServiceRequest.BusinessData.HealthInstitutionId.HasValue)
                {
                    HealthInstitution_ProfesionalBE wHealthInstitution_ProfesionalBE = HealthInstitutionDAC.Get_HealthInstitution_Profesional(pServiceRequest.BusinessData.HealthInstitutionId.Value, res.BusinessData.profesional.IdProfesional, null);

                    res.BusinessData.User.Roles = res.BusinessData.User.Roles.Union(wHealthInstitution_ProfesionalBE.Roles).ToArray <String>();

                    res.BusinessData.HealthInstitution_Profesional = wHealthInstitution_ProfesionalBE;
                }
            }

            if (pServiceRequest.BusinessData.IncludeAllInstitutions)
            {
                res.BusinessData.HealthInstitution_ProfesionalList =
                    ProfesionalesDAC.Retrive_HealthInstitution_Relationships(
                        res.BusinessData.profesional.IdProfesional);
            }
            return(res);
        }
예제 #6
0
        public override UpdateProfesionalRes Execute(UpdateProfesionalReq pServiceRequest)
        {
            RolList lst = null;
            UpdateProfesionalRes wRes = new UpdateProfesionalRes();

            pServiceRequest.BusinessData.profesional.LastAccessUserId         = Guid.Parse(pServiceRequest.ContextInformation.UserId);
            pServiceRequest.BusinessData.profesional.Persona.LastAccessUserId = Guid.Parse(pServiceRequest.ContextInformation.UserId);
            ProfesionalesDAC.Update(pServiceRequest.BusinessData.profesional);
            ///Ejemplo
            //A = 1,2,3, existent_roles
            //B = 2,3,5,  vienen del servicio q son los que quedan
            //B-A = 5, roles a agregar
            //A-B = 1, roles a eliminar
            #region ROLES A NIVEL DE SF
            if (pServiceRequest.BusinessData.User != null)
            {
                //Elimino todos los roles del usuario
                Fwk.Security.Common.RolList rolList_sf_A = FwkMembership.GetRolesForUser(pServiceRequest.BusinessData.User.UserName, pServiceRequest.SecurityProviderName);
                var roles_sf_A_ids = from r in rolList_sf_A select r.RolName;
                var roles_sf_B_ids = from r in pServiceRequest.BusinessData.User.GetRolList() where r.RolName.StartsWith("sf_") select r.RolName;

                //A-B roles a eliminar
                var roles_To_Delette_ids = roles_sf_A_ids.Except <string>(roles_sf_B_ids);

                if (roles_To_Delette_ids.Count() != 0)
                {
                    lst = new RolList();

                    var to_remove = rolList_sf_A.Where(r => roles_To_Delette_ids.Contains(r.RolName.Trim()));
                    lst.AddRange(to_remove);
                    FwkMembership.RemoveUserFromRoles(pServiceRequest.BusinessData.User.UserName, lst, pServiceRequest.SecurityProviderName);
                }

                //A-B roles a eliminar
                var roles_To_Add_ids = roles_sf_B_ids.Except <string>(roles_sf_A_ids);


                //B-A  roles a agregar
                if (roles_To_Add_ids.Count() != 0)
                {
                    lst = new RolList();
                    foreach (string rolName in roles_To_Add_ids)
                    {
                        lst.Add(new Rol(rolName));
                    }
                    //Asigno los nuevos roles del usuario
                    FwkMembership.CreateRolesToUser(lst, pServiceRequest.BusinessData.User.UserName, pServiceRequest.SecurityProviderName);
                }
                #endregion

                #region ROLES A NIVEL INSTITUCIONAL
                if (pServiceRequest.BusinessData.HealthInstitutionId.HasValue)
                {
                    Guid userId = new Guid(pServiceRequest.BusinessData.User.ProviderId.ToString());
                    ///Obtener los roles asignados previamente
                    string[] existent_roles_A = ProfesionalesDAC.Get_HealtInstitute_UsersInRoles(userId, pServiceRequest.BusinessData.HealthInstitutionId.Value);
                    //vienen del servicio q son los que quedan
                    var roles_B = from r in pServiceRequest.BusinessData.User.GetRolList() where r.RolName.StartsWith("inst_") select r.RolName;
                    //Agregar
                    foreach (string rolName in roles_B.Except(existent_roles_A))
                    {
                        HealthInstitutionDAC.Profesional_UsersInRoles_Assign(
                            pServiceRequest.BusinessData.HealthInstitutionId.Value,
                            pServiceRequest.BusinessData.profesional.IdProfesional,
                            userId,
                            rolName);
                    }
                    //Quitar roles
                    foreach (string rolName in existent_roles_A.Except(roles_B))
                    {
                        HealthInstitutionDAC.Profesional_RemoveRol(
                            pServiceRequest.BusinessData.HealthInstitutionId.Value,
                            pServiceRequest.BusinessData.profesional.IdProfesional,
                            userId, rolName);
                    }
                }
            }
            return(wRes);
        }