unit uEditorEmpleados;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  uEditorContactos, Menus, DB, uDADataTable, JvAppStorage,
  JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
  StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls,
  TB2ExtItems,  SpTBXItem, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls,
  JvExControls, JvComponent, JvNavigationPane, uViewGridBase, uViewGrid,
  uViewContactos, uViewEmpleados, uIEditorEmpleados, pngimage, 
  JvExComCtrls, JvStatusBar, JSDialog, uContactosController, uDAInterfaces,
  StdCtrls, TntStdCtrls, SpTBXEditors;

type
  TfEditorEmpleados = class(TfEditorContactos, IEditorEmpleados)
    frViewEmpleados1: TfrViewEmpleados;
    JsPrevisualizarDialog: TJSDialog;
    JsImprimirDialog: TJSDialog;
    JsListaContactosNoEliminados: TJSDialog;
    
  protected
    procedure EliminarInterno; override;
    procedure ImprimirInterno; override;
    procedure PrevisualizarInterno; override;

  public
    constructor Create(AOwner: TComponent); override;
    procedure PonerTitulos(const ATitulo: string = ''); override;
  end;

implementation

uses
  uGridStatusUtils, uEditorGridBase, uDataModuleUsuarios, uDialogUtils, uBizContactos,
  uEmpleadosController, uDBSelectionListUtils, uFactuGES_App;

{$R *.dfm}

constructor TfEditorEmpleados.Create(AOwner: TComponent);
begin
  inherited;
  ViewGrid := frViewEmpleados1;
end;

procedure TfEditorEmpleados.EliminarInterno;
var
  AContactos: IBizContacto;
  AllItems: Boolean;
begin
  AContactos := Nil;
  AllItems := False;

  if MultiSelect and Assigned(ViewGrid) then
     AllItems :=  (ViewGrid.NumSeleccionados > 1);

  if AllItems then
  begin
    if (Application.MessageBox('¿Desea borrar los empleados seleccionados?', 'Atención', MB_YESNO) = IDYES) then
    begin
      SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords);
      AContactos := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizContacto;
    end
  end
  else begin
    if (Application.MessageBox('¿Desea borrar el empleado seleccionado?', 'Atención', MB_YESNO) = IDYES) then
        AContactos := Contactos;
  end;

  if Assigned(AContactos) then
  begin
    (FController as IEmpleadosController).Eliminar(AContactos, AllItems);
    if AllItems then
    begin
      if (AContactos.DataTable.RecordCount > 0) then
      begin
        with  AContactos.DataTable do
        begin
          First;
          while not EOF do
          begin
            JsListaContactosNoEliminados.Content.Add('Empleado: ' + AContactos.NOMBRE);
            Next;
          end;
        end;
        JsListaContactosNoEliminados.Execute;
      end;
      actRefrescar.Execute;
    end;
  end;

  ViewGrid.GotoFirst;
end;

procedure TfEditorEmpleados.ImprimirInterno;
var
  Respuesta : Integer;
  AFichas: IBizEmpleado;
  AllItems: Boolean;
begin
  AFichas := Nil;
  AllItems := False;

  if MultiSelect and Assigned(ViewGrid) then
     AllItems :=  (ViewGrid.NumSeleccionados > 1);

  //Si esta agrupado solo podré imprimir la lista de elementos visibles
  if not ViewGrid.esSeleccionCeldaDatos then
     inherited
  else
  begin
    Respuesta := JsPrevisualizarDialog.Execute;
    if Respuesta <> IDCANCEL then
    begin
      case JsPrevisualizarDialog.CustomButtonResult of
        200   : begin   // Lista de elementos visibles
                  inherited;
                end;
        100   : begin   // Elemento Seleccionado
                  if AllItems then
                  begin
                    SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords);
                    AFichas := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizEmpleado;
                  end
                  else
                    AFichas := (Contactos as IBizEmpleado);

                  if Assigned(AFichas) then
                     (FController as IEmpleadosController).Print(AFichas, AllItems);
                end;
      end;
    end;
  end;
end;

procedure TfEditorEmpleados.PonerTitulos(const ATitulo: string);
var
  FTitulo : String;
begin
  FTitulo := 'Lista de empleados - ' + AppFactuGES.EmpresaActiva.NOMBRE;
  inherited PonerTitulos(FTitulo);
end;

procedure TfEditorEmpleados.PrevisualizarInterno;
var
  Respuesta : Integer;
  AFichas: IBizEmpleado;
  AllItems: Boolean;
begin
  AFichas := Nil;
  AllItems := False;

  if MultiSelect and Assigned(ViewGrid) then
     AllItems :=  (ViewGrid.NumSeleccionados > 1);

  //Si esta agrupado solo podré imprimir la lista de elementos visibles
  if not ViewGrid.esSeleccionCeldaDatos then
     inherited
  else
  begin
    Respuesta := JsPrevisualizarDialog.Execute;
    if Respuesta <> IDCANCEL then
    begin
      case JsPrevisualizarDialog.CustomButtonResult of
        200   : begin   // Lista de elementos visibles
                  inherited;
                end;
        100   : begin   // Elemento Seleccionado
                  if AllItems then
                  begin
                    SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords);
                    AFichas := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizEmpleado;
                  end
                  else
                    AFichas := (Contactos as IBizEmpleado);

                  if Assigned(AFichas) then
                     (FController as IEmpleadosController).Preview(AFichas, AllItems);
                end;
      end;
    end;
  end;
end;

end.
