unit fConsultAlertTo;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
  Buttons, ORCtrls, ORfn, ExtCtrls;

type
  TfrmConsultAlertsTo = class(TForm)
    cmdOK: TButton;
    cmdCancel: TButton;
    cboSrcList: TORComboBox;
    DstList: TORListBox;
    SrcLabel: TLabel;
    DstLabel: TLabel;
    pnlBase: TORAutoPanel;
    procedure cboSrcListNeedData(Sender: TObject; const StartFrom: String;
      Direction, InsertAt: Integer);
    procedure cmdOKClick(Sender: TObject);
    procedure cmdCancelClick(Sender: TObject);
    //procedure cboSrcListdblClick(Sender: TObject);
    procedure cboSrcListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure DstListClick(Sender: TObject);
    procedure cboSrcListMouseClick(Sender: TObject);
  private
    FActionType: integer;
    FRecipients: string ;
    FChanged: Boolean;
  end;

TRecipientList = record
    Changed: Boolean;
    Recipients: string ;
  end;

procedure SelectRecipients(FontSize: Integer; ActionType: integer; var RecipientList: TRecipientList) ;

implementation

{$R *.DFM}

uses rConsults, rCore, uCore, uConsults, fConsults;

const
  TX_RCPT_TEXT = 'Select recipients or press Cancel.';
  TX_RCPT_CAP = 'No Recipients Selected';
  TX_REQ_TEXT = 'The requesting provider is always included in this type of alert';
  TX_REQ_CAP = 'Cannot Remove Recipient';

procedure SelectRecipients(FontSize: Integer; ActionType: integer; var RecipientList: TRecipientList) ;
{ displays recipients select form for consults and returns a record of the selection }
var
  frmConsultAlertsTo: TfrmConsultAlertsTo;
begin
  frmConsultAlertsTo := TfrmConsultAlertsTo.Create(Application);
  try
    ResizeAnchoredFormToFont(frmConsultAlertsTo);
    with frmConsultAlertsTo do
    begin
      FActionType := ActionType;
      FChanged := False;
      cboSrcList.InitLongList('');
(*      cboSrcList.InitLongList(ConsultRec.SendingProviderName);
      cboSrcList.SelectByIEN(ConsultRec.SendingProvider);
      cboSrcListMouseClick(cboSrcList) ;*)
      ShowModal;
      with RecipientList do
        begin
          Recipients := Recipients + FRecipients ;
          Changed := FChanged ;
        end ;
    end; {with frmConsultAlertsTo}
  finally
    frmConsultAlertsTo.Release;
  end;
end;

procedure TfrmConsultAlertsTo.cboSrcListNeedData(Sender: TObject;
  const StartFrom: String; Direction, InsertAt: Integer);
begin
  (Sender as TORComboBox).ForDataUse(SubSetOfPersons(StartFrom, Direction));
end;

procedure TfrmConsultAlertsTo.cmdCancelClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmConsultAlertsTo.cmdOKClick(Sender: TObject);
var
  i: integer ;
begin
  if DstList.Items.Count = 0 then
  begin
    InfoBox(TX_RCPT_TEXT, TX_RCPT_CAP, MB_OK or MB_ICONWARNING);
    FChanged := False ;
    Exit;
  end;
  FChanged := True;
  for i := 0 to DstList.Items.Count-1 do
      FRecipients := Piece(DstList.Items[i],u,1) + ';' + FRecipients;
  Close;
end;

(*procedure TfrmConsultAlertsTo.cboSrcListdblClick(Sender: TObject);
begin
     if cboSrcList.ItemIndex = -1 then exit ;
     if DstList.SelectByID(cboSrcList.ItemID) = -1 then
       DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]) ;
end;*)

procedure TfrmConsultAlertsTo.DstListClick(Sender: TObject);
begin
     if DstList.ItemIndex = -1 then exit ;
(*     if (DstList.ItemIEN = ConsultRec.SendingProvider) and
        ((FActionType = CN_ACT_SIGFIND) or (FActionType = CN_ACT_ADMIN_COMPLETE)) then
       begin
         InfoBox(TX_REQ_TEXT, TX_REQ_CAP, MB_OK or MB_ICONWARNING);
         exit ;
       end ;*)
     DstList.Items.Delete(DstList.ItemIndex) ;
end;

procedure TfrmConsultAlertsTo.cboSrcListKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then cboSrcListMouseClick(Self);
end;

procedure TfrmConsultAlertsTo.cboSrcListMouseClick(Sender: TObject);
begin
     if cboSrcList.ItemIndex = -1 then exit ;
     if DstList.SelectByID(cboSrcList.ItemID) = -1 then
       DstList.Items.Add(cboSrcList.Items[cboSrcList.Itemindex]) ;
end;

end.
