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); }
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); }