Example #1
0
        /// <summary>
        /// Retrorna HealthInstitution_ProfesionalBE HealthInstitution por parametros
        /// </summary>
        /// <returns></returns>
        public static AuthHealthInstitutionRes AuthHealthInstitution(Guid pHealthInstitutionId, Int32?pProfesionalId, Guid?userId)
        {
            AuthHealthInstitutionReq req = new AuthHealthInstitutionReq();

            req.BusinessData.HealthInstId  = pHealthInstitutionId;
            req.BusinessData.ProfesionalId = pProfesionalId;
            req.BusinessData.UserId        = userId;
            if (frmBase_TabForm.IndentityUserInfo != null)
            {
                req.ContextInformation.UserId = frmBase_TabForm.IndentityUserInfo.ProviderId.ToString();
            }
            AuthHealthInstitutionRes res = req.ExecuteService <AuthHealthInstitutionReq, AuthHealthInstitutionRes>(req);


            if (res.Error != null)
            {
                throw Fwk.Exceptions.ExceptionHelper.ProcessException(res.Error);
            }

            return(res);
        }
        /// <summary>
        /// Método que se va a ejecutar al hacer click en el botón "Aceptar" o en "Cambiar Clave"
        /// </summary>
        /// <param name="pChangePassword">Parámetro que determina si se hizo click o no en Cambiar clave</param>
        /// <returns></returns>
        private bool AcceptForm(bool pChangePassword)
        {
            try
            {
                //Validamos si los ErrorProviders tienen error
                if (!dxErrorProvider1.HasErrors && ValidateValues())
                {
                    //Autenticamos el usuario
                    AuthenticateUser();


                    //Validamos si el usuario Debe cambiar el password o si presionó el botón "Cambiar Clave"
                    if (!ValidateChangePassword(pChangePassword))
                    {
                        return(false);
                    }

                    if (HealthInst == null)
                    {
                        MessageBox.Show("Selecione una institución donde iniciar sesión");
                        return(false);
                    }

                    //Validamos Profesional Vs HealthInstitution
                    AuthHealthInstitutionRes resAtuh = Controller.AuthHealthInstitution(HealthInst.HealthInstitutionId, null, (Guid)frmBase_TabForm.IndentityUserInfo.ProviderId);

                    if (resAtuh.BusinessData.Authenticated)
                    {
                        GetProfesionalRes resProf = Controller.GetProfesional(null, false, true, true, (Guid)frmBase_TabForm.IndentityUserInfo.ProviderId, HealthInst.HealthInstitutionId);
                        Controller.CurrentProfesional = resProf.BusinessData.profesional;
                        Controller.CurrentHealthInstitution_Profesional = resProf.BusinessData.HealthInstitution_Profesional;
                        Controller.CurrentHealthInstitution             = HealthInst;
                        FormBase.IndentityUserInfo.Roles = resProf.BusinessData.User.Roles;
                    }
                    else
                    {
                        this.MessageViewer.Title = "Mensaje de seguridad";
                        this.MessageViewer.Show(resAtuh.BusinessData.Message);
                        return(false);
                    }

                    //Validamos si el usuario posee Roles y el InitAuthorizationFactory
                    //Esta validacion se realiza aqui por que si se trata de usuarios Profecionales vinculados a Instituciones los roles se obtienen en base al profecional y usuario
                    // No solo con el User de ASPNET
                    if (!ValidateRoles() || !FormBaseInitAuthorizationFactory())
                    {
                        return(false);
                    }


                    //Si pasa todas las validaciones establecemos el DialogResult en OK y devolvemos true
                    this.DialogResult = DialogResult.OK;
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Fwk.Exceptions.FunctionalException funcionalEx)
            {
                this.MessageViewer.Title = "Mensaje de seguridad";
                this.MessageViewer.Show(funcionalEx);
                return(false);
            }
            catch (Exception ex)
            {
                this.MessageViewer.Title = "Mensaje de seguridad";
                this.ExceptionViewer.Show(ex);
                return(false);
            }
        }