Esempio n. 1
0
        /// <summary>
        /// Retorna profesional por id o userGuid
        /// </summary>
        /// <param name="idProfesional"></param>
        /// <param name="includeScheduler"></param>
        /// <param name="userGuid">Si no posee el guid se puede buscar por userGuid</param>
        /// <returns></returns>
        public static GetProfesionalRes GetProfesional(int?idProfesional, bool includeScheduler, bool includeSecurityInfo, bool includeAllInstitutions, Guid?userGuid = null, Guid?healthInstitutionId = null)
        {
            GetProfesionalReq req = new GetProfesionalReq();

            req.BusinessData.IdProfesional          = idProfesional;
            req.BusinessData.IncludeScheduler       = includeScheduler;
            req.BusinessData.IncludeSecurityInfo    = includeSecurityInfo;
            req.BusinessData.UserGuid               = userGuid;
            req.BusinessData.HealthInstitutionId    = healthInstitutionId;
            req.BusinessData.IncludeSecurityInfo    = includeSecurityInfo;
            req.BusinessData.IncludeAllInstitutions = includeAllInstitutions;

            req.ContextInformation.UserId = frmBase_TabForm.IndentityUserInfo.ProviderId.ToString();
            if (Controller.CurrentHealthInstitution != null)
            {
                req.ContextInformation.AppId = Controller.CurrentHealthInstitution.HealthInstitutionId.ToString();
            }

            GetProfesionalRes res = req.ExecuteService <GetProfesionalReq, GetProfesionalRes>(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);
            }
        }
        /// <summary>
        /// Se produce despues de Load (uc_Profesionales_Card_Load) y
        /// Antes del load del formujlario
        /// </summary>
        /// <param name="idProfesional"></param>
        /// <param name="state"></param>
        internal void Populate(int idProfesional, EntityUpdateEnum state)
        {
            //El prof puede modificar sus propios datos
            if (idProfesional.Equals(ServiceCalls.CurrentProfesional.IdProfesional))
            {
                uc_MedioContacto1.Enabled = panelControl2.Enabled = uc_Persona1.Enabled = true;
            }

            this.State = state;
            if (State == Fwk.Bases.EntityUpdateEnum.NEW)
            {
                profesionalBE         = new ProfesionalBE();
                profesionalBE.Persona = new PersonaBE();
                this.lblTitle.Text    = "Alta de profesional";
            }

            if (State == Fwk.Bases.EntityUpdateEnum.UPDATED || State == Fwk.Bases.EntityUpdateEnum.NONE)
            {
                btnCheckUserName.Enabled        = false;
                txtUsername.Properties.ReadOnly = true;
                GetProfesionalRes res = ServiceCalls.GetProfesional(idProfesional, true, true, false, null, ServiceCalls.CurrentHealthInstitution.HealthInstitutionId);

                profesionalBE          = res.BusinessData.profesional;
                resourceSchedulingList = res.BusinessData.ResourceSchedulerList;
                profesionalRolList     = res.BusinessData.User.Roles;

                this.lblTitle.Text = String.Concat("Targeta del profesional", "  ", profesionalBE.Persona.ApellidoNombre);
            }

            uc_Persona1.Populate(profesionalBE.Persona, State);
            txtUsername.Text  = profesionalBE.UserName;
            txtMatricula.Text = profesionalBE.Matricula;
            schedulerShiftBindingSource.DataSource = resourceSchedulingList;
            gridView1.RefreshData();


            //cmbEspecialidad.Properties.DataSource = _EspecialidadList.Where(p => p.IdParametroRef.Equals(profesionalBE.IdProfesion));

            int index = 0;

            index = cmbEspecialidad.Properties.GetDataSourceRowIndex("IdParametro", (int)CommonValuesEnum.Ninguno);
            if (State == Fwk.Bases.EntityUpdateEnum.NEW)
            {
                cmbEspecialidad.ItemIndex = index;
                cmbProfecion.ItemIndex    = 0;
            }
            else
            {
                if (profesionalBE.IdEspecialidad.HasValue)
                {
                    index = cmbEspecialidad.Properties.GetDataSourceRowIndex("IdParametro", profesionalBE.IdEspecialidad);
                }
                cmbEspecialidad.ItemIndex = index;

                index = cmbProfecion.Properties.GetDataSourceRowIndex("IdParametro", profesionalBE.IdProfesion);
                cmbProfecion.ItemIndex = index;
            }

            cmbEspecialidad.Refresh();
            cmbProfecion.Refresh();

            MachRolesGrid(profesionalRolList);



            uc_MedioContacto1.Persona = profesionalBE.Persona;
            uc_Persona1.Refresh();
            uc_MedioContacto1.Init();
            this.cmbProfecion.EditValueChanged += new System.EventHandler(this.cmbProfecion_EditValueChanged);
        }