CWMAILA	;INDPLS/PLS- DELPHI VISTA MAIL SERVER CONT'D ;02-Jul-1999 14:45;PS
	;;2.1;CWMA GuiMail;;Jan 06, 1999
	;MODIFIED FOR XM*7.1*50
	Q   ;ROUTINE CAN'T BE CALLED DIRECTLY
%READ(CWDATA,CWINPUT)	;
	;CWINPUT FORMAT - DELIMITER ';'
	;       1st  - IEN of message
	;       4th  - New message (value >0 indicates new messages only)
	K CWDATA
	N CWMSGN,CWNMFLG
	S CWMSGN=$P(CWINPUT,";")
	S CWNMFLG=+$P(CWINPUT,";",4)
	D:CWMSGN PROCMS^CWMAIL0(.CWDATA,CWMSGN,CWNMFLG)
	Q
%LIST(CWDATA,CWINPUT)	;
	;CWINPUT - MAIL TYPE OR MAILBOX NUMBER - DELIMITER ';'
	;     2nd - IEN of MailBasket or non-numeric for new mail
	;CWARY format:  piece   value
	;                 1     message basket
	;                 2     message ien
	;                 3     message subject
	;                 4     message date sent
	;                 5     not used
	;                 6     message type
	;                 7     confirmation flag
	;                 8     closed flag
	;                 9     info flag
	;                10     confidential flag
	;                11     sender ien
	;                12     broadcast flag
	;                13     sender name
	;                14     total # of recipients
	;                15     total # of replies
	;                16     priority flag
	;                17     last response read
	;                18     message basket sequence number
	;                19     new message flag
	;                20     answer message flag
	;
	S CWDATA(1)="0^AN ERROR HAS OCCURRED"
	N CWVAL,CWMSG,CWMSGSUB,CWMSGDT,CWDCNT,CWMAIB,CWMSGBX,CWMSGLP
	N CWARY
	S CWVAL=$P(CWINPUT,";",2)
	S CWMSG=0,CWDCNT=2,CWMSGLP=0
	S CWMAIB=CWVAL
	;CALL API TO RETRIEVE MESSAGES
	I CWVAL=+CWVAL D
	. D LISTMSGS^XMXAPIB(XMDUZ,+CWMAIB,"BSKT;SUBJ;DATE;SEQN;NEW")  ; data put in ^TMP("XMLIST",$J
	. Q:'+$P($G(^TMP("XMLIST",$J,0)),U,1)  ;NO DATA FOUND
	. D BLDLST^CWMAILF(.CWDATA,$NA(^TMP("XMLIST",$J)),.CWDCNT)
	E  D  ;PROCESS NEW MESSAGE REQUEST
	. D LISTMSGS^XMXAPIB(XMDUZ,"*","BSKT;SUBJ;DATE;NEW","N")   ;SEQN;NEW","N")
	. Q:'+$P($G(^TMP("XMLIST",$J,0)),U,1)  ;NO DATA FOUND
	. D BLDLST^CWMAILF(.CWDATA,$NA(^TMP("XMLIST",$J)),.CWDCNT)
	I $O(CWDATA(1)) S CWDATA(1)="1^^DATA HAS BEEN FOUND"
	E  S CWDATA(1)=$S(+CWVAL:"1^^No Messages Found in Specified Mail Box",1:"1^^"_"You have no NEW Messages")
	S $P(CWDATA(1),U,2)=CWDCNT-2
	Q
	;
%DELETE(CWDATA,CWINPUT)	;
	;CWINPUT - DELIMITER ';'
	;   1st  - IEN of message
	;   2nd  - IEN of mail basket
	N XMZ,XMDUZ,XMK,XMKZA,XMMSG
	S XMZ=$P(CWINPUT,";")
	S XMDUZ=DUZ
	S XMK=$P(CWINPUT,";",2)
	S XMKZA(XMZ)=""
	D DELMSG^XMXAPI(XMDUZ,"",.XMKZA,.XMMSG)
	I +$G(XMMSG) D
	. S CWDATA(1)="1^0^Message Deleted"
	E  S CWDATA(1)="0^0^Unable to delete message"
	Q
%SAVE(CWDATA,CWINPUT)	;
	;CWINPUT - DELIMITER ';'
	;   1st  - IEN of message
	;   2nd  - IEN of mail basket
	;   3rd  - IEN of new mail basket
	N XMZ,XMK,XMKM,XMMSG,XMKZA
	S XMZ=$P(CWINPUT,";"),XMK=$P(CWINPUT,";",2)
	S XMKZA(XMZ)=""
	S XMKM=$P(CWINPUT,";",3)
	D MOVEMSG^XMXAPI(XMDUZ,"",.XMKZA,XMKM,.XMMSG)
	S CWDATA(1)=+$G(XMMSG)  ;Return Status
	Q
%MAKNEW(CWDATA,CWINPUT)	;
	;CWINPUT - DELIMITER ';'
	;   1st  - IEN of message
	;   2nd  - IEN of mail basket
	N XMZ,XMK,XMKZA,XMMSG
	S CWDATA(1)=0
	S XMZ=$P(CWINPUT,";")
	S XMK=+$P(CWINPUT,";",2)
	D MAKENEW^XMXUTIL(XMDUZ,XMK,XMZ,1)
	I XMK<.6 D  ;MUST MOVE MESSAGE FROM WASTE BASKET TO IN BASKET
	. S XMKZA(XMZ)=""
	. D MOVEMSG^XMXAPI(XMDUZ,"",.XMKZA,1,.XMMSG)
	S CWDATA(1)="1^1"   ;FORCE TO SUCCESS
	Q
%NEWBSK(CWDATA,CWINPUT)	;CREATE A NEW MAIL BASKET
	;CWINPUT - DELIMITER ';'
	;   1st Piece  - New basket name
	N CWBASKET,CWBSKN,CWMSG
	S CWBASKET=$$UP^XLFSTR($P(CWINPUT,";"))  ;FORCE TO UPPER CASE
	D CRE8BSKT^XMXAPIB(XMDUZ,CWBASKET,.CWBSKN)
	I +$G(CWBSKN)>0 D
	. D QBSKT^XMXAPIB(XMDUZ,+CWBSKN,.CWMSG)
	. S CWDATA(1)="1"_U_CWBSKN_U_$P($G(CWMSG),U,2)
	E  S CWDATA(1)=0_U_"Error-unable to create basket."
	Q
%RESEQ(CWDATA,CWINPUT)	;RESEQUENCE A VISTA MAIL BASKET
	;CWINPUT - DELIMITER ';'
	;   2nd  - IEN of mail basket
	N CWBASKET,CWDATT
	S CWBASKET=$P(CWINPUT,";",2)
	G:'CWBASKET RESEQE
	D RSEQBSKT^XMXAPIB(XMDUZ,CWBASKET,.CWDATT)
	I $L(CWDATT) S CWDATA(1)="1^1"
	E  S CWDATA(1)="0^0^Error-unable to resequence messages."
RESEQE	Q
	;
%MSGSRC(CWDATA,CWINPUT,CWTEXT)	;MESSAGE SEARCH
	;INPUT - CWINPUT AND CWTEXT ARRAY HOLD CRITERIA
	;OUTPUT - REFER TO %LIST
	S CWDATA(1)="0^AN ERROR HAS OCCURRED"
	N CWVAL,CWMSG,CWMSGSUB,CWMSGDT,CWDCNT,CWMAIB,CWMSGBX,CWMSGLP
	N CWARY,CWFLAGS
	S CWFLAGS=$P(CWINPUT,";")  ;Processing Flags
	S CWMAIB=$P(CWINPUT,";",2)  ;MailBasket
	S CWMSG=0,CWDCNT=2,CWMSGLP=0
	S CWMAIB=$S($L(CWMAIB):CWMAIB,1:"*")
	;Convert External dates to FM Dates
	I $G(CWTEXT("FDATE")) D
	. S CWTEXT("FDATE")=$$CONVERT^XMXUTIL1(CWTEXT("FDATE"))
	I $G(CWTEXT("TDATE")) D
	. S CWTEXT("TDATE")=$$CONVERT^XMXUTIL1(CWTEXT("TDATE"))
	;CALL API TO RETRIEVE MESSAGES
	D LISTMSGS^XMXAPIB(XMDUZ,CWMAIB,"BSKT;SUBJ;DATE;NEW",CWFLAGS,,,.CWTEXT)  ; data put in ^TMP("XMLIST",$J
	I +$P($G(^TMP("XMLIST",$J,0)),U,1) D   ;
	. D BLDLST^CWMAILF(.CWDATA,$NA(^TMP("XMLIST",$J)),.CWDCNT)
	I $O(CWDATA(1)) S CWDATA(1)="1^^DATA HAS BEEN FOUND"
	E  S CWDATA(1)="1^^No Messages Found In Search"
	S $P(CWDATA(1),U,2)=CWDCNT-2
MSGSRCE	Q
