protected void ctlConfirm_Click(object sender, EventArgs e)
        {
            //Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();
            try
            {
                SuUser user = new SuUser();
                user.UserName = ctlUserName.Text;
                string realPassword = SuUserService.Forgetpassword(ctlUserName.Text);
                user = SuUserService.FindByUserName(ctlUserName.Text).First <SuUser>();

                if (user != null)
                {
                    UserEngine.SyncUpdateUserData(user.UserName);
                }

                SCGEmailService.SendEmailEM12(user.Userid, realPassword.ToString());

                //Alert(GetMessage("ForgetPasswordIsComplete"));
                this.ModalPopupMsg.Show();
                HidePopup();
            }
            catch (ServiceValidationException ex)
            {
                ValidationErrors.MergeErrors(ex.ValidationErrors);
            }
        }
        public void SendEmailToOverDueDate()
        {
            IList <FixedAdvanceOverDue> voList = ScgeAccountingQueryProvider.SCGDocumentQuery.GetFixedAdvanceOverdueList();

            foreach (FixedAdvanceOverDue item in voList)
            {
                SCGEmailService.SendEmailEM15(item.CacheWorkflowID, item.RequesterID);
            }
        }
Esempio n. 3
0
        public void SendEmailToOverDueDate()
        {
            IList <VOAdvanceOverDueReport> voList = ScgeAccountingQueryProvider.SCGDocumentQuery.GetAdvanceOverdueList();

            foreach (VOAdvanceOverDueReport item in voList)
            {
                SCGDocument document = SCGDocumentService.FindByIdentity(item.DocumentID);
                SCGEmailService.SendEmailEM10(item.AdvanceID, document.RequesterID.Userid, document.ApproverID.Email, "This is e-mail for autoreminder advancedocument system.", true);
            }
        }
        /*เพิ่มแจ้งเตือนก่อนครบกำหนด fixedadvance*/
        public void SendEmailToBeforeDueDate()
        {
            /*Criteria ก่อน7วัน กับก่อน30วัน ค่าจากใน dbparameter*/
            IList <FixedAdvanceBeforeDue> mailLogList = ScgeAccountingQueryProvider.SCGDocumentQuery.GetFixedAdvanceBeforedueList();

            foreach (FixedAdvanceBeforeDue item in mailLogList)
            {
                SCGEmailService.SendEmailEM16(item.DocumentId);
            }
        }
        public void SendEmailToOverDueDate()
        {
            IList <SCGDocumentEmail> scgDocumentList = ScgeAccountingQueryProvider.SCGDocumentQuery.FindDocumentWaitApprove();

            foreach (SCGDocumentEmail item in scgDocumentList)
            {
                //SCGDocument document = FindByIdentity(item.DocumentID);
                string tokenCode = SaveResponseTokenEmail(item.CacheWorkflowID, item.UserID);
                SCGEmailService.SendEmailEM14(item.CacheWorkflowID, item.UserID, tokenCode);
            }
        }
        protected void ctlResetPassword_Click(object sender, EventArgs e)
        {
            try
            {
                SuUser user = new SuUser();
                user = SuUserService.FindByIdentity(UserID);
                if (user != null)
                {
                    string realPassword = SuUserService.Forgetpassword(user.UserName);

                    SCGEmailService.SendEmailEM12(user.Userid, realPassword.ToString());
                    ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), string.Empty, string.Format("alert('{0}');", GetProgramMessage("ResetPasswordSuccess")), true);
                }
            }
            catch (ServiceValidationException ex)
            {
                ValidationErrors.MergeErrors(ex.ValidationErrors);
            }
        }
Esempio n. 7
0
        protected void ctlSend_Click(object sender, ImageClickEventArgs e)
        {
            //เรียก service สำหรับส่ง email
            SS.Standard.WorkFlow.DTO.WorkFlow workFlow = new SS.Standard.WorkFlow.DTO.WorkFlow();
            long workFlowID = 0;

            if (this.RequesterID != 0)
            {
                workFlow = WorkFlowQueryProvider.WorkFlowQuery.GetWorkFlowByDocumentID(this.DocumentID);
                if (workFlow != null)
                {
                    try
                    {
                        workFlowID = workFlow.WorkFlowID;
                        if (this.EmailType.Equals("EM09"))
                        {
                            SCGEmailService.SendEmailEM09(workFlow.Document.DocumentID, ctlCC.Text, ctlRemark.Text, string.Empty);
                        }
                        else if (this.EmailType.Equals("EM10"))
                        {
                            SCGEmailService.SendEmailEM10(this.AdvanceDocumentID, UIHelper.ParseLong(ctlUserID.Text), ctlCC.Text, ctlRemark.Text, false);
                        }
                        else if (this.EmailType.Equals("EM15"))
                        {
                            SCGEmailService.SendEmailEM15(workFlowID, UIHelper.ParseLong(ctlUserID.Text));
                        }

                        ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), "SendEmailSuccess", "alert('" + GetMessage("Send Complete") + "');", true);
                        Hide();
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }
        protected void ctlInsert_Click1(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (Mode == FlagEnum.NewFlag)
                {
                    #region Insert
                    user                               = new SuUser();
                    user.UserName                      = ctlUserProfileId.Text;
                    user.PeopleID                      = ctlUserProfilePeopleId.Text;
                    user.SetFailTime                   = UIHelper.ParseShort(ctlSetFailTime.Text);
                    user.EmployeeCode                  = ctlUserProfileEmployeeCode.Text;
                    user.EmployeeName                  = ctlUserProfileEmployeeName.Text;
                    user.SMSApproveOrReject            = ctlApproveRecject.Checked;
                    user.SMSReadyToReceive             = ctlToReceive.Checked;
                    user.MobilePhoneNo                 = ctlUserProfileMobilePhoneNo.Text;
                    user.SectionName                   = ctlUserProfileSectionName.Text;
                    user.PersonalLevel                 = ctlUserProfilePersonalLevel.Text;
                    user.PersonalDescription           = ctlUserProfilePersonalLevelDescription.Text;
                    user.PersonalGroup                 = ctlUserProfilePersonalGroup.Text;
                    user.PersonalLevelGroupDescription = ctlUserProfilePersonalGroupDescription.Text;
                    user.PositionName                  = ctlUserProfilePositionName.Text;
                    user.PhoneNo                       = ctlUserProfilePhoneNo.Text;
                    user.Email                         = ctlUserProfileEmail.Text;
                    user.ApprovalFlag                  = ctlUserProfileApprovalFlag.Checked;
                    user.Active                        = ctlUserProfileActive.Checked;
                    user.Language                      = new SS.DB.DTO.DbLanguage(UIHelper.ParseShort(ctlCmbLanguage.SelectedValue));
                    user.ChangePassword                = ctlChangePassword.Checked;
                    user.IsAdUser                      = ctlIsAdUser.Checked;
                    user.VendorCode                    = ctlVendorCode.Text;
                    user.EmailActive                   = ctlEmailActive.Checked;

                    DbCompany com = ScgDbQueryProvider.DbCompanyQuery.FindByIdentity(UIHelper.ParseLong(ctlCompanyField.CompanyID));
                    if (com != null)
                    {
                        user.CompanyCode = com.CompanyCode;
                        user.Company     = com;
                    }
                    if (ctlLocationField.LocationID != null)
                    {
                        DbLocation location = ScgDbQueryProvider.DbLocationQuery.FindProxyByIdentity(ctlLocationField.LocationID.Value);
                        if (location != null)
                        {
                            user.LocationCode = location.LocationCode;
                            user.Location     = location;
                        }
                    }
                    DbCostCenter cost = ScgDbQueryProvider.DbCostCenterQuery.FindByIdentity(UIHelper.ParseLong(ctlCostCenterField.CostCenterId));
                    if (cost != null)
                    {
                        user.CostCenter     = cost;
                        user.CostCenterCode = cost.CostCenterCode;
                    }
                    if (ctlSupervisor.UserID != null)
                    {
                        SuUser su = QueryProvider.SuUserQuery.FindProxyByIdentity(ctlSupervisor.UserID.Value);
                        if (su != null)
                        {
                            user.Supervisor = su.Userid;
                        }
                    }
                    user.UpdBy   = UserAccount.UserID;
                    user.UpdDate = DateTime.Now;
                    user.CreBy   = UserAccount.UserID;
                    user.CreDate = DateTime.Now;
                    user.UpdPgm  = UserAccount.CurrentProgramCode;

                    // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========
                    if (!string.IsNullOrEmpty(ctlUserPassword.Text))
                    {
                        user.Password = Encryption.Md5Hash(ctlUserPassword.Text);
                    }
                    user.AllowPasswordChangeDate = DateTime.Now.AddDays(ParameterServices.MinPasswordAge);
                    user.PasswordExpiryDate      = DateTime.Now.AddDays(ParameterServices.MaxPasswordAge);

                    if (ctlLockUser.Checked)
                    {
                        user.FailTime = user.SetFailTime;
                    }
                    else
                    {
                        user.FailTime = 0;
                    }

                    // ======== End add code for control password same as Password Policy by Anuwat S on 23/04/2009 ========

                    SuUserService.SaveUserProfile(user);

                    // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========
                    SCGEmailService.SendEmailEM08(user.Userid, ctlUserPassword.Text);
                    #endregion Insert
                }
                else if (Mode == FlagEnum.EditFlag)
                {
                    #region Edit
                    user                               = QueryProvider.SuUserQuery.FindByIdentity(UserID);
                    user.UserName                      = ctlUserProfileId.Text;
                    user.PeopleID                      = ctlUserProfilePeopleId.Text;
                    user.SetFailTime                   = UIHelper.ParseShort(ctlSetFailTime.Text);
                    user.EmployeeCode                  = ctlUserProfileEmployeeCode.Text;
                    user.EmployeeName                  = ctlUserProfileEmployeeName.Text;
                    user.SMSApproveOrReject            = ctlApproveRecject.Checked;
                    user.SMSReadyToReceive             = ctlToReceive.Checked;
                    user.MobilePhoneNo                 = ctlUserProfileMobilePhoneNo.Text;
                    user.SectionName                   = ctlUserProfileSectionName.Text;
                    user.PersonalLevel                 = ctlUserProfilePersonalLevel.Text;
                    user.PersonalDescription           = ctlUserProfilePersonalLevelDescription.Text;
                    user.PersonalGroup                 = ctlUserProfilePersonalGroup.Text;
                    user.PersonalLevelGroupDescription = ctlUserProfilePersonalGroupDescription.Text;
                    user.PositionName                  = ctlUserProfilePositionName.Text;
                    user.PhoneNo                       = ctlUserProfilePhoneNo.Text;
                    user.Email                         = ctlUserProfileEmail.Text;
                    user.ApprovalFlag                  = ctlUserProfileApprovalFlag.Checked;
                    user.Active                        = ctlUserProfileActive.Checked;
                    user.Language                      = new SS.DB.DTO.DbLanguage(UIHelper.ParseShort(ctlCmbLanguage.SelectedValue));
                    user.ChangePassword                = ctlChangePassword.Checked;
                    user.IsAdUser                      = ctlIsAdUser.Checked;
                    user.VendorCode                    = ctlVendorCode.Text;
                    user.EmailActive                   = ctlEmailActive.Checked;

                    DbCompany com = ScgDbQueryProvider.DbCompanyQuery.FindByIdentity(UIHelper.ParseLong(ctlCompanyField.CompanyID));
                    if (com != null)
                    {
                        user.CompanyCode = com.CompanyCode;
                        user.Company     = com;
                    }
                    if (ctlLocationField.LocationID != null)
                    {
                        DbLocation location = ScgDbQueryProvider.DbLocationQuery.FindProxyByIdentity(ctlLocationField.LocationID.Value);
                        if (location != null)
                        {
                            user.LocationCode = location.LocationCode;
                            user.Location     = location;
                        }
                    }
                    DbCostCenter cost = ScgDbQueryProvider.DbCostCenterQuery.FindByIdentity(UIHelper.ParseLong(ctlCostCenterField.CostCenterId));
                    if (cost != null)
                    {
                        user.CostCenter     = cost;
                        user.CostCenterCode = cost.CostCenterCode;
                    }
                    if (ctlSupervisor.UserID != null)
                    {
                        SuUser su = QueryProvider.SuUserQuery.FindProxyByIdentity(ctlSupervisor.UserID.Value);
                        if (su != null)
                        {
                            user.Supervisor = su.Userid;
                        }
                    }
                    user.UpdBy   = UserAccount.UserID;
                    user.UpdDate = DateTime.Now;
                    user.CreBy   = UserAccount.UserID;
                    user.CreDate = DateTime.Now;

                    user.UpdPgm = UserAccount.CurrentProgramCode;

                    // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========
                    if ((int.Parse(ctlOriginFailTime.Value) <= (user.FailTime) && !ctlLockUser.Checked) ||
                        !user.SetFailTime.Equals(short.Parse(ctlOriginFailTime.Value)))
                    {
                        user.FailTime = 0;  // Unlock user
                    }
                    else if (ctlLockUser.Checked)
                    {
                        user.FailTime = user.SetFailTime;   // Still lock user
                    }
                    // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========

                    //SuUserService.SaveOrUpdate(user);
                    SuUserService.UpdateUserProfile(user);

                    #endregion Edit
                }



                // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========
                IList <SuPasswordHistory> passwordHistoryList = QueryProvider.SuPasswordHistoryQuery.FindActiveByUserId(user.Userid);
                foreach (SuPasswordHistory passwordHist in passwordHistoryList)
                {
                    passwordHist.Active  = false;
                    passwordHist.UpdBy   = UserAccount.UserID;
                    passwordHist.UpdDate = DateTime.Now;
                    passwordHist.UpdPgm  = ProgramCode;
                    SuPasswordHistoryService.SaveOrUpdate(passwordHist);
                }
                // ========== Add code for control password same as Password Policy by Anuwat S on 23/04/2009 ==========
                if (Notify_Ok != null)
                {
                    Notify_Ok(sender, e);
                }

                Alert(GetMessage("SaveSuccessFully"));
            }
            catch (ServiceValidationException ex)
            {
                ValidationErrors.MergeErrors(ex.ValidationErrors);
                ctlUpdatePanelUserProfileForm.Update();
            }
        }
        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 OnRejectWaitApprove(long workFlowID, object eventData)
        {
            /*TODO validate , save event data to workflow*/
            WorkFlow             workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument          scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);
            MPADocument          mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(scgDocument.DocumentID);
            RejectDetailResponse rejectDetailResponse;

            try
            {
                if (eventData is SubmitResponse)
                {
                    rejectDetailResponse = DefaultRejectDetailResponse((eventData as SubmitResponse).WorkFlowStateEventID, (eventData as SubmitResponse).ResponseMethod);
                }
                else
                {
                    rejectDetailResponse = eventData as RejectDetailResponse;
                }

                WorkFlowResponse response = new WorkFlowResponse();
                response.WorkFlow           = workFlow;
                response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(rejectDetailResponse.WorkFlowStateEventID);
                response.ResponseBy         = UserAccount.UserID;
                response.ResponseDate       = DateTime.Now;
                if (rejectDetailResponse.ResponseMethod != null)
                {
                    response.ResponseMethod = rejectDetailResponse.ResponseMethod.GetHashCode().ToString();
                }
                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);

                WorkFlowRejectResponse rejectResponse = new WorkFlowRejectResponse();
                rejectResponse.WorkFlowResponse = response;
                rejectResponse.Reason           = ScgDbQueryProvider.DbRejectReasonQuery.FindProxyByIdentity(rejectDetailResponse.ReasonID);
                rejectResponse.Remark           = rejectDetailResponse.Remark;
                rejectResponse.Active           = true;
                rejectResponse.CreBy            = UserAccount.UserID;
                rejectResponse.CreDate          = DateTime.Now;
                rejectResponse.UpdBy            = UserAccount.UserID;
                rejectResponse.UpdDate          = DateTime.Now;
                rejectResponse.UpdPgm           = "WorkFlow";
                WorkFlowDaoProvider.WorkFlowRejectResponseDao.Save(rejectResponse);

                SCGEmailService.SendEmailEM04(response.WorkFlowResponseID, scgDocument.CreatorID.Userid);

                if (ParameterServices.EnableEmail02Requester || ParameterServices.EnableEmail02Initiator)
                {
                    long         sendToUserID = 0;
                    IList <long> ccList       = new List <long>();

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

                        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(scgDocument.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);
                }
            }
            catch (Exception)
            {
                throw;
            }

            // Use state WaitInitial to add into table WorkflowResponse
            string             eventName  = "Reject";
            WorkFlowStateEvent stateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.GetByWorkFlowStateID_EventName(AdvanceStateID.WaitApprove, eventName);

            rejectDetailResponse.WorkFlowStateEventID = stateEvent.WorkFlowStateEventID;
            /*TODO generate signal string*/
            return("RejectWaitApproveToDraft");
        }
        public override string OnApproveWaitApprove(long workFlowID, object eventData)
        {
            /*TODO validate , save event data to workflow*/
            WorkFlow    workFlow    = WorkFlowQueryProvider.WorkFlowQuery.FindByIdentity(workFlowID);
            SCGDocument scgDocument = ScgeAccountingQueryProvider.SCGDocumentQuery.GetSCGDocumentByDocumentID(workFlow.Document.DocumentID);

            Spring.Validation.ValidationErrors errors = new Spring.Validation.ValidationErrors();
            MPADocument mpaDocument = ScgeAccountingQueryProvider.MPADocumentQuery.GetMPADocumentByDocumentID(workFlow.Document.DocumentID);

            if (!errors.IsEmpty)
            {
                throw new SS.Standard.Utilities.ServiceValidationException(errors);
            }

            try
            {
                ////SubmitResponse submitResponse = eventData as SubmitResponse;
                WorkFlowResponse response = new WorkFlowResponse();
                int workFlowStateEventId;
                response.WorkFlow = workFlow;

                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  = UserAccount.CurrentProgramCode;


                if (eventData is RejectDetailResponse)
                {
                    RejectDetailResponse rejectDetailResponse = eventData as RejectDetailResponse;
                    workFlowStateEventId = rejectDetailResponse.WorkFlowStateEventID;
                    WorkFlowRejectResponse rejectResponse = new WorkFlowRejectResponse();
                    rejectResponse.WorkFlowResponse = response;
                    if (rejectDetailResponse.ReasonID != 0)
                    {
                        rejectResponse.Reason = ScgDbQueryProvider.DbRejectReasonQuery.FindProxyByIdentity(rejectDetailResponse.ReasonID);
                    }
                    rejectResponse.Remark  = rejectDetailResponse.Remark;
                    rejectResponse.Active  = true;
                    rejectResponse.CreBy   = UserAccount.UserID;
                    rejectResponse.CreDate = DateTime.Now;
                    rejectResponse.UpdBy   = UserAccount.UserID;
                    rejectResponse.UpdDate = DateTime.Now;
                    rejectResponse.UpdPgm  = UserAccount.CurrentProgramCode;

                    if (rejectDetailResponse.ResponseMethod != null)
                    {
                        response.ResponseMethod = rejectDetailResponse.ResponseMethod.GetHashCode().ToString();
                    }
                    response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(workFlowStateEventId);
                    WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);

                    if (rejectDetailResponse.ReasonID != 0 || !string.IsNullOrEmpty(rejectDetailResponse.Remark))
                    {
                        WorkFlowDaoProvider.WorkFlowRejectResponseDao.Save(rejectResponse);
                    }
                }
                else
                {
                    SubmitResponse submitResponse = eventData as SubmitResponse;
                    workFlowStateEventId = submitResponse.WorkFlowStateEventID;
                    if (submitResponse.ResponseMethod != null)
                    {
                        response.ResponseMethod = submitResponse.ResponseMethod.GetHashCode().ToString();
                    }

                    response.WorkFlowStateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.FindByIdentity(workFlowStateEventId);
                    WorkFlowDaoProvider.WorkFlowResponseDao.Save(response);
                }
                scgDocument.ApproveDate = DateTime.Now;
                scgDocument.UpdBy       = UserAccount.UserID;
                scgDocument.UpdDate     = DateTime.Now;
                scgDocument.UpdPgm      = UserAccount.CurrentProgramCode;
                SCGDocumentService.SaveOrUpdate(scgDocument);

                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);
                }
            }
            catch (Exception)
            {
                throw;
            }


            // ====================== For Approve all advance that link to TA ======================
            // Use state WaitApprove to add into table WorkflowResponse
            string             eventName  = "Approve";
            WorkFlowStateEvent stateEvent = WorkFlowQueryProvider.WorkFlowStateEventQuery.GetByWorkFlowStateID_EventName(AdvanceStateID.WaitApprove, eventName);

            return("ApproveWaitApproveToComplete");
        }
Esempio n. 12
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);
        }