public string OnCancelComplete(long workFlowID, object eventData)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            /*TODO validate , save event data to workflow*/
            WorkFlowResponse response = new WorkFlowResponse();

            try
            {
                SubmitResponse submitResponse = eventData as SubmitResponse;
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(submitResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                response.Active             = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                if (string.IsNullOrEmpty(scgDocument.DocumentNo))
                {
                    //TODO : Generate Document No and Save it

                    int year = DateTime.Now.Year;

                    scgDocument.DocumentNo   = DbDocumentRunningService.RetrieveNextDocumentRunningNo(year, scgDocument.DocumentType.DocumentTypeID, scgDocument.CompanyID.CompanyID);
                    scgDocument.DocumentDate = DateTime.Now;
                    ScgeAccountingDaoProvider.SCGDocumentDao.Update(scgDocument);
                }
            }
            catch (Exception)
            {
                throw;
            }

            /*  TODO generate signal string
             *  Case 1 : MPA Document has initiator => SendDraftToWaitInitator
             *  Case 2 : MPA Document has no initiator => SendDraftToWaitApprove
             */


            string signal = "";

            MPADocument mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(workFlow.Document.DocumentID);

            //IList<DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetNotResponseInitiatorByDocumentID(workFlow.Document.DocumentID);
            signal = "WithdrawCompleteToCancel";
            if (ParameterServices.EnableEmail02Creator || ParameterServices.EnableEmail02Requester || ParameterServices.EnableEmail02Initiator)
            {
                long         sendToUserID = 0;
                IList <long> ccList       = new List <long>();

                if (ParameterServices.EnableEmail02Creator)
                {
                    sendToUserID = scgDocument.CreatorID.Userid;
                }

                if (ParameterServices.EnableEmail02Requester)
                {
                    if (sendToUserID == 0)
                    {
                        sendToUserID = scgDocument.RequesterID.Userid;
                    }
                    else if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                    {
                        ccList.Add(scgDocument.RequesterID.Userid);
                    }

                    //Send mail02 to all travellers that doesnot requester
                    IList <MPAItem> items = ScgeAccountingQueryProvider.MPAItemQuery.FindMPAItemByMPADocumentID(mpaDocument.MPADocumentID);
                    foreach (MPAItem item in items)
                    {
                        if (sendToUserID == 0)
                        {
                            sendToUserID = item.UserID.Userid;
                        }
                        else if (item.UserID.Userid != sendToUserID && !ccList.Contains(item.UserID.Userid))
                        {
                            ccList.Add(item.UserID.Userid);
                        }
                    }
                }
                if (ParameterServices.EnableEmail02Initiator)
                {
                    IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetDocumentInitiatorByDocumentID(workFlow.Document.DocumentID);
                    foreach (DocumentInitiator initiator in initiators)
                    {
                        if (sendToUserID == 0)
                        {
                            sendToUserID = initiator.UserID.Userid;
                        }
                        else if (initiator.UserID.Userid != sendToUserID && !ccList.Contains(initiator.UserID.Userid))
                        {
                            ccList.Add(initiator.UserID.Userid);
                        }
                    }
                }

                SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, sendToUserID, ccList);
            }
            return(signal);
        }
Пример #2
0
        public override string OnSendDraft(long workFlowID, object eventData)
        {
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            /*TODO validate , save event data to workflow*/
            WorkFlowResponse response = new WorkFlowResponse();

            try
            {
                SubmitResponse submitResponse = eventData as SubmitResponse;
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(submitResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                response.Active             = true;
                response.CreBy   = UserAccount.UserID;
                response.CreDate = DateTime.Now;
                response.UpdBy   = UserAccount.UserID;
                response.UpdDate = DateTime.Now;
                response.UpdPgm  = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                if (string.IsNullOrEmpty(scgDocument.DocumentNo))
                {
                    //TODO : Generate Document No and Save it

                    int year = DateTime.Now.Year;

                    scgDocument.DocumentNo   = DbDocumentRunningService.RetrieveNextDocumentRunningNo(year, scgDocument.DocumentType.DocumentTypeID, scgDocument.CompanyID.CompanyID);
                    scgDocument.DocumentDate = DateTime.Now;
                    ScgeAccountingDaoProvider.SCGDocumentDao.Update(scgDocument);
                }
            }
            catch (Exception)
            {
                throw;
            }

            /*  TODO generate signal string
             *  Case 1 : CA Document has initiator => SendDraftToWaitInitator
             *  Case 2 : CA Document has no initiator => SendDraftToWaitApprove
             */


            string signal = "";

            //CADocument caDocument = ScgeAccountingQueryProvider.CADocumentQuery.GetCADocumentByDocumentID(workFlow.Document.DocumentID);

            IList <DocumentInitiator> initiators = ScgeAccountingQueryProvider.DocumentInitiatorQuery.GetNotResponseInitiatorByDocumentID(workFlow.Document.DocumentID);

            if (initiators.Count > 0)
            {
                signal = "SendDraftToWaitInitial";
            }
            else
            {
                signal = "SendDraftToWaitApprove";
            }

            if (ParameterServices.EnableEmail02Requester)
            {
                if (scgDocument.CreatorID.Userid != scgDocument.RequesterID.Userid)
                {
                    SCGEmailService.SendEmailEM02(response.WorkFlowResponseID, scgDocument.RequesterID.Userid, null);
                }
            }

            return(signal);
        }