diff --git a/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas b/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas index 10de3e1e..988e420c 100644 --- a/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas +++ b/Source/ApplicationBase/Usuarios/Controller/uUsuariosController.pas @@ -48,7 +48,11 @@ type function HayUsuarioConPerfil(const AIDPerfil : integer): Boolean; + function BuscarUsuario(const AIDUser: Integer): IBizUsuario; + function BuscarTodosUsuarios: IBizUsuario; + function DarListaPerfilesUsuario: TStringList; + function DarListaUsuarios: TStringList; function ValidarPassword(const APassword : string; const ALogin : String; const ANombre: String; out AMsg : String): boolean; @@ -78,6 +82,7 @@ type TUsuariosController = class(TControllerBase, IUsuariosController) private function Eliminar(const AIDUser: integer): Boolean; + procedure FiltrarEmpresa(AUsuario: IBizUsuario); protected FDataModule : IDataModuleUsuarios; FUserControl: TUserControl; @@ -138,7 +143,12 @@ type function GuardarPerfil(APerfil : IBizPerfilUsuario): Boolean; function GuardarUsuario(AUser : IBizUsuario): Boolean; + function BuscarUsuario(const AIDUser: Integer): IBizUsuario; + function BuscarTodosUsuarios: IBizUsuario; + function DarListaPerfilesUsuario: TStringList; + function DarListaUsuarios: TStringList; + function HayUsuarioConPerfil(const AIDPerfil : integer): Boolean; function ValidarPassword(const APassword : string; const ALogin : String; const ANombre: String; out AMsg : String): boolean; @@ -263,6 +273,18 @@ begin FDataModule := TDataModuleUsuarios.Create(Nil); end; +function TUsuariosController.BuscarTodosUsuarios: IBizUsuario; +begin + Result := FDataModule.GetUsuarios; + FiltrarEmpresa(Result); +end; + +function TUsuariosController.BuscarUsuario(const AIDUser: Integer): IBizUsuario; +begin + Result := FDataModule.GetUsuario(AIDUser); + FiltrarEmpresa(Result); +end; + function TUsuariosController.CambiarPassword(const AIDUser: Integer; const ANewPassword: String): Boolean; begin @@ -301,12 +323,12 @@ end; function TUsuariosController.ComprobarUsuario(const User, Password: String): Boolean; begin - Result := FUserControl.VerificaLogin(User, Password); - if not Result then - begin - ComprobarUsuarioInicial; - Result := ComprobarUsuario(User, Password); - end; + Result := FUserControl.VerificaLogin(User, Password); + if not Result then + begin + ComprobarUsuarioInicial; + Result := ComprobarUsuario(User, Password); + end; end; procedure TUsuariosController.ComprobarUsuarioInicial; @@ -321,7 +343,6 @@ begin AsignarDataModule; FUserControl := TUserControl.Create(nil); InicializarUserControl; - // ComprobarUsuarioInicial; <- Desactivado porque casca cuando el servidor no está lanzado. Hay que arreglarlo. end; function TUsuariosController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; @@ -345,8 +366,6 @@ begin while not APerfilesUsuario.DataTable.EOF do begin Add(Format('%s=%d', [APerfilesUsuario.USERNAME, APerfilesUsuario.ID])); - {i := Add(APerfilesUsuario.USERNAME); - ValueFromIndex[i] := IntToStr(APerfilesUsuario.ID);} APerfilesUsuario.DataTable.Next; end; end; @@ -355,6 +374,30 @@ begin end; end; +function TUsuariosController.DarListaUsuarios: TStringList; +var + AUsuarios: IBizUsuario; + i : integer; +begin + AUsuarios := FDataModule.GetUsuarios; + AUsuarios.DataTable.Active := True; + + Result := TStringList.Create; + try + with Result do + begin + AUsuarios.DataTable.First; + while not AUsuarios.DataTable.EOF do + begin + Add(Format('%s=%d', [AUsuarios.USERNAME, AUsuarios.ID])); + AUsuarios.DataTable.Next; + end; + end; + finally + AUsuarios := NIL; + end; +end; + destructor TUsuariosController.Destroy; begin FreeAndNIL(FUserControl); @@ -831,4 +874,30 @@ begin end; end; +procedure TUsuariosController.FiltrarEmpresa(AUsuario: IBizUsuario); +var + Condicion: TDAWhereExpression; +begin + + // AQUI HAY QUE TENER EN CUENTA QUE UN USUARIO PUEDE QUE NO TENGA ACCESO + // EN UNA DETERMINADA EMPRESA + + +{ if AUsuario.DataTable.Active then + AUsuario.DataTable.Active := False; + + // Filtrar los contactos actuales por empresa + with AUsuario.DataTable.DynamicWhere do + begin + Condicion := NewBinaryExpression(NewField('', fld_U + ContactosID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end;} +end; + + end.