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); }
/// <summary> /// Metodo que solo genera una solicitud de registro .- Esta solicitud debe ser aprovada despues .- /// </summary> /// <param name="username"></param> /// <param name="nombre"></param> /// <param name="apellido"></param> /// <param name="nroDocumento"></param> /// <param name="matricula"></param> /// <param name="password"></param> /// <param name="email"></param> /// <param name="passwordQuestion"></param> /// <param name="passwordAnswer"></param> public void RegistrationRequest(RegistrationRequest registrationRequest) { var Profesional_FullView = ProfesionalesDAC.Get_ByParams(registrationRequest.NroDocumento, registrationRequest.Matricula); if (Profesional_FullView != null) { throw new Fwk.Exceptions.TechnicalException( string.Format("Ya existe registrado un profecional con Nro Documento: {0} .-", registrationRequest.NroDocumento)); } string registrationCode = Common.getMd5Hash(string.Concat(registrationRequest.UserName, registrationRequest.mail)); //RegistrationRequest registrationRequest = new RegistrationRequest(); //registrationRequest.Nombre = txtNombre.Text.Trim(); //registrationRequest.Apellido = txtApellido.Text.Trim(); //registrationRequest.UserName = txtUserName.Text; //registrationRequest.NroDocumento = txtNrodocumento.Text.Trim(); //registrationRequest.Matricula = txtMatricula.Text.Trim(); //registrationRequest.mail = txtEmail.Text.Trim(); registrationRequest.RegistrationCode = registrationCode; WebRegistrationDAC.CreateRegistrationRequest(registrationRequest); }
public override CrearProfesionalRes Execute(CrearProfesionalReq pServiceRequest) { CrearProfesionalRes wRes = new CrearProfesionalRes(); pServiceRequest.BusinessData.profesional.LastAccessUserId = Guid.Parse(pServiceRequest.ContextInformation.UserId); pServiceRequest.BusinessData.profesional.Persona.LastAccessUserId = Guid.Parse(pServiceRequest.ContextInformation.UserId); bool personaExiste = PersonasDAC.Exist(pServiceRequest.BusinessData.profesional.Persona.NroDocumento); //Lo primero es crear el inicio de sesion UserBC wUserBC = new UserBC(pServiceRequest.ContextInformation.AppId, pServiceRequest.SecurityProviderName); wUserBC.Create(pServiceRequest.BusinessData.User); wRes.BusinessData.UserId = Guid.Parse(pServiceRequest.BusinessData.User.ProviderId.ToString()); if (personaExiste) { if (ProfesionalesDAC.Persona_EstaAsociada(pServiceRequest.BusinessData.profesional.Persona.NroDocumento)) { throw new Fwk.Exceptions.FunctionalException(String.Format("El Nro documento {0} ya pertenece a otro profesional registrado", pServiceRequest.BusinessData.profesional.Persona.NroDocumento)); } ProfesionalesDAC.Asociar(pServiceRequest.BusinessData.profesional); } else { pServiceRequest.BusinessData.profesional.Persona.UserId = wRes.BusinessData.UserId; ProfesionalesDAC.Create(pServiceRequest.BusinessData.profesional); } wRes.BusinessData.IdProfesional = pServiceRequest.BusinessData.profesional.IdProfesional; wRes.BusinessData.UserId = wRes.BusinessData.UserId; return(wRes); }
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); }
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); }