Ejemplo n.º 1
0
        /// <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);
                    }
                    Guid guid = Guid.Parse(frmBase_TabForm.IndentityUserInfo.ProviderId.ToString());
                    //Validamos Profesional Vs HealthInstitution
                    AuthHealthInstitutionRes resAtuh = ServiceCalls.AuthHealthInstitution(HealthInst.HealthInstitutionId, null, guid);

                    if (resAtuh.BusinessData.Authenticated)
                    {
                        GetProfesionalRes resProf = ServiceCalls.GetProfesional(null, false, true, true, guid, HealthInst.HealthInstitutionId);
                        ServiceCalls.CurrentProfesional = resProf.BusinessData.profesional;
                        ServiceCalls.CurrentHealthInstitution_Profesional = resProf.BusinessData.HealthInstitution_Profesional;
                        ServiceCalls.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 Profesionales vinculados a Instituciones los roles se obtienen en base al Profesional 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);
            }
        }