using System; using Ease.Core.Model; using Ease.Core.DataAccess; using Ease.Core.Utility; using System.Collections.Generic; using HRM.BO; using System.Data; using Ease.Core; using System.Linq; namespace HRM.DA { public class WFSetupService : ServiceTemplate, IWFSetupService { #region Constructor public WFSetupService() { } #endregion #region WFSetup #region WFSetup Mapping private void MapObject(WFSetup wfSetup, DataReader oReader) { base.SetObjectID(wfSetup, (oReader.GetInt32("WFSETUPID").Value)); wfSetup.WFTypeId = oReader.GetInt32("WFTYPEID", 0); wfSetup.CreatedBy = oReader.GetInt32("CREATEDBY", 0); wfSetup.CreatedDate = oReader.GetDateTime("CREATEDDATE").Value; wfSetup.ModifiedBy = oReader.GetInt32("MODIFIEDBY", 0); wfSetup.ModifiedDate = oReader.GetDateTime("MODIFIEDDATE"); wfSetup.Sequence = oReader.GetInt32("SEQUENCENO").Value; this.SetObjectState(wfSetup, Ease.Core.ObjectState.Saved); } protected override T CreateObject(DataReader oReader) { WFSetup wfSetup = new WFSetup(); MapObject(wfSetup, oReader); return wfSetup as T; } protected WFSetup CreateObject(DataReader oReader) { WFSetup wfSetup = new WFSetup(); MapObject(wfSetup, oReader); return wfSetup; } #endregion #region Service Implementation #region Insert public int Save(WFSetup wfSetup) { TransactionContext tc = null; try { List oSetupRules = null; if (wfSetup.IsNew == false) oSetupRules = this.Get4WFSetupRule(wfSetup.ID); tc = TransactionContext.Begin(true); int id = 0; if (wfSetup.IsNew) { id = tc.GenerateID("WFSETUP", "WFSETUPID"); base.SetObjectID(wfSetup, (id)); WFSetupDA.Insert(tc, wfSetup); } else { WFSetupDA.Update(tc, wfSetup); WFSetupDA.DeleteWFRuleDetailDesignation(tc, wfSetup.ID); WFSetupDA.DeleteWFRuleDetailOS(tc, wfSetup.ID); WFSetupDA.DeleteWFRuleDetailNode(tc, wfSetup.ID); WFSetupDA.DeleteWFRuleDetailManual(tc, wfSetup.ID); if (oSetupRules != null && oSetupRules.Count > 0) { foreach (WFSetupRule oRule in oSetupRules) { WFSetupRule odeletedRule = null; // wfSetup.WFSetupRules.GetItem(oRule.ID); if (odeletedRule == null) WFSetupDA.DeleteWFSetupRulebyRuleID(tc, oRule.ID); } } } foreach (WFSetupRule wfSetupRule in wfSetup.WFSetupRules) { if (wfSetupRule.IsNew) { id = tc.GenerateID("WFSETUPRULE", "WFSETUPRULEID"); wfSetupRule.WFSetupId = wfSetup.ID; base.SetObjectID(wfSetupRule, (id)); WFSetupDA.InsertWFSetupRule(tc, wfSetupRule); } else { WFSetupDA.UpdateWFSetupRule(tc, wfSetupRule); } if (wfSetupRule.WFRuleType == EnumWFRuleType.Designation) { foreach (WFRuleDetailDesignation wfDetailDesig in wfSetupRule.WFRuleDeatilDesignations) { id = tc.GenerateID("WFRDDESIGNATION", "WFRULEDETAILID"); wfDetailDesig.WfSetupId = wfSetup.ID; wfDetailDesig.WfSetupRuleId = wfSetupRule.ID; base.SetObjectID(wfDetailDesig, (id)); WFSetupDA.InsertWFRuleDetailDesignation(tc, wfDetailDesig); } } if (wfSetupRule.WFRuleType == EnumWFRuleType.OrganizationStructure) { foreach (WFRuleDetailOS wfRuleDOS in wfSetupRule.WFRuleDeatilOSs) { id = tc.GenerateID("WFRDETAILOS", "WFRULEDETAILID"); wfRuleDOS.WfSetupId = wfSetup.ID; wfRuleDOS.WfSetupRuleId = wfSetupRule.ID; base.SetObjectID(wfRuleDOS, (id)); WFSetupDA.InsertRuleDetailOS(tc, wfRuleDOS); } } if (wfSetupRule.WFRuleType == EnumWFRuleType.FixedOGNode) { foreach (WFRuleDetailNode wfRuleNode in wfSetupRule.WFRuleDetailNodes) { id = tc.GenerateID("WFRULEDNODE", "WFRULEDNODEID"); wfRuleNode.WfSetupId = wfSetup.ID; wfRuleNode.WfSetupRuleId = wfSetupRule.ID; base.SetObjectID(wfRuleNode, (id)); WFSetupDA.InsertRuleDetailNode(tc, wfRuleNode); } } if (wfSetupRule.WFRuleType == EnumWFRuleType.Manual) { foreach (WFRuleDetailManual wfRulemn in wfSetupRule.WFRuleDetailManual) { id = tc.GenerateID("WFRuleManual", "WFRULEDETAILID"); wfRulemn.WfSetupId = wfSetup.ID; wfRulemn.WfSetupRuleId = wfSetupRule.ID; base.SetObjectID(wfRulemn, (id)); WFSetupDA.InsertRuleManual(tc, wfRulemn); } } } tc.End(); return wfSetup.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } #endregion #region Delete public void Delete(int id) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); WFSetupDA.Delete(tc, id); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } #endregion #region Get public WFSetup Get(int id) { WFSetup oWFSetup = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(WFSetupDA.Get(tc, id)); if (oreader.Read()) { oWFSetup = this.CreateObject(oreader); } oreader.Close(); if (oWFSetup != null && oWFSetup.IsNew == false) { DataReader dr = new DataReader(WFSetupDA.Get4WFSetupRule(tc, id)); oWFSetup.WFSetupRules = this.CreateWFSetupRuleObject(dr); dr.Close(); foreach (WFSetupRule oRule in oWFSetup.WFSetupRules) { DataReader drd = new DataReader(WFSetupDA.Get4WFRuleDD(tc, oRule.ID)); oRule.WFRuleDeatilDesignations = this.CreateWFRuleDDObject(drd); drd.Close(); DataReader drdnode = new DataReader(WFSetupDA.Get4WFRuleNode(tc, oRule.ID)); oRule.WFRuleDetailNodes = this.CreateWFRuleNodeObject(drdnode); drdnode.Close(); DataReader drdnos = new DataReader(WFSetupDA.Get4WFRuleDetailOS(tc, oRule.WFSetupId, oRule.ID)); oRule.WFRuleDeatilOSs = this.CreateWFRuleDetailOSObject(drdnos); drdnos.Close(); DataReader drmanual = new DataReader(WFSetupDA.Get4WFRuleDetailManual(tc, oRule.WFSetupId, oRule.ID)); oRule.WFRuleDetailManual = this.CreateWFRuleDetailManualObject(drmanual); drmanual.Close(); } } tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return oWFSetup; } public WFSetup GetByWFTypeID(int nType) { WFSetup oWFSetup = null; #region WF Setup TransactionContext tc = null; try { DataReader oReader = null; tc = TransactionContext.Begin(); oReader = new DataReader(WFSetupDA.Get(tc, nType)); if (oReader.Read()) oWFSetup = CreateObject(oReader); oReader.Close(); if (oWFSetup != null) { oReader = new DataReader(WFSetupDA.Get4WFSetupRule(tc, oWFSetup.ID)); oWFSetup.WFSetupRules = CreateWFSetupRuleObject(oReader); oReader.Close(); if (oWFSetup.WFSetupRules != null) { foreach (WFSetupRule oItem in oWFSetup.WFSetupRules) { oReader = new DataReader(WFSetupDA.Get4WFRuleDD(tc, oItem.ID)); oItem.WFRuleDeatilDesignations = CreateWFRuleDDObject(oReader); oReader.Close(); oReader = new DataReader(WFSetupDA.Get4WFRuleDetailOS(tc, oWFSetup.ID, oItem.ID)); oItem.WFRuleDeatilOSs = CreateWFRuleDetailOSObject(oReader); oReader.Close(); oReader = new DataReader(WFSetupDA.Get4WFRuleNode(tc, oItem.ID)); oItem.WFRuleDetailNodes = CreateWFRuleNodeObject(oReader); oReader.Close(); } } } tc.End(); } catch (ServiceException ex) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(ex); throw new ServiceException("Failed to Get Work Flow Setup"); #endregion } #endregion return oWFSetup; } public List Get() { List wfSetups = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get(tc)); wfSetups = this.CreateObjects(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfSetups; } public List Get4WFRuleDD(int id) { List wfRuleDDs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get4WFRuleDD(tc, id)); wfRuleDDs = this.CreateWFRuleDDObject(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfRuleDDs; } public List Get4WFRuleNode(int id) { List wfRuleDns = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get4WFRuleNode(tc, id)); wfRuleDns = this.CreateWFRuleNodeObject(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfRuleDns; } public List Get4WFSetupRule(int id) { List wfSetupRs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get4WFSetupRule(tc, id)); wfSetupRs = this.CreateWFSetupRuleObject(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfSetupRs; } public List Get4WFRuleDetailOS(int id) { List wfRDOSs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get4WFRuleDetailOS(tc, id)); wfRDOSs = this.CreateWFRuleDetailOSObject(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfRDOSs; } public List Get4WFRuleDetailManual(int id) { List wfRDOSs = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(WFSetupDA.Get4WFRuleDetailManual(tc, id)); wfRDOSs = this.CreateWFRuleDetailManualObject(dr); dr.Close(); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return wfRDOSs; } #endregion #endregion #endregion #region WFSetupRule Mapping private void MapWFSetupRuleObject(WFSetupRule wfSetupRule, DataReader oReader) { base.SetObjectID(wfSetupRule, (oReader.GetInt32("WFSETUPRULEID").Value)); //wfSetupRule.Name = oReader.GetString("Name"); wfSetupRule.WFSetupId = oReader.GetInt32("WFSETUPID", 0); wfSetupRule.StAuthorityLevel = oReader.GetInt32("STAUTHORITYLEVEL").Value; wfSetupRule.Priority = oReader.GetInt32("PRIORITY").Value; wfSetupRule.WFRuleType = (EnumWFRuleType)oReader.GetInt32("WFRULETYPE"); wfSetupRule.LevelDepth = oReader.GetInt32("LEVELDEPTH").Value; wfSetupRule.ReqAppAll = oReader.GetBoolean("REQAPPALL").Value; wfSetupRule.AutoNotificationNode = oReader.GetInt32("AUTONOTIFICATIONNODE", 0); wfSetupRule.FinalDestinationNode = oReader.GetInt32("FINALDESTINATIONNODE", 0); wfSetupRule.IsRAuthority = (bool)oReader.GetBoolean("RAUTHORITY"); //wfSetupRule.CreatedBy = oReader.GetID("CREATEDBY"); //wfSetupRule.CreatedDate = oReader.GetDateTime("CREATEDDATE").Value; //wfSetupRule.ModifiedBy = oReader.GetID("MODIFIEDBY"); //wfSetupRule.ModifiedDate = oReader.GetDateTime("MODIFIEDDATE"); this.SetObjectState(wfSetupRule, Ease.Core.ObjectState.Saved); } protected List CreateWFSetupRuleObject(DataReader oReader) { List wfSetupRules = new List(); while (oReader.Read()) { WFSetupRule wfSetupRule = new WFSetupRule(); MapWFSetupRuleObject(wfSetupRule, oReader); wfSetupRules.Add(wfSetupRule); } return wfSetupRules; } #endregion #region WFRuleDetailDesignation Mapping private void MapWFRuleDDObject(WFRuleDetailDesignation wfDetailDesig, DataReader oReader) { base.SetObjectID(wfDetailDesig, (oReader.GetInt32("WFRULEDETAILID").Value)); wfDetailDesig.DesignationId = oReader.GetInt32("DESIGNATIONID", 0); wfDetailDesig.WfSetupId = oReader.GetInt32("WFSETUPID", 0); wfDetailDesig.WfSetupRuleId = oReader.GetInt32("WFSETUPRULEID", 0); wfDetailDesig.SequenceId = oReader.GetInt32("SEQUENCEID").Value; this.SetObjectState(wfDetailDesig, Ease.Core.ObjectState.Saved); } protected List CreateWFRuleDDObject(DataReader oReader) { List wfDetailDesigs = new List(); while (oReader.Read()) { WFRuleDetailDesignation wfDetailDesig = new WFRuleDetailDesignation(); MapWFRuleDDObject(wfDetailDesig, oReader); wfDetailDesigs.Add(wfDetailDesig); } return wfDetailDesigs; } #endregion #region WFRuleDetailNode Mapping private void MapWFRuleDetailNodeObject(WFRuleDetailNode wfRuleNode, DataReader oReader) { base.SetObjectID(wfRuleNode, (oReader.GetInt32("WFRULEDNODEID").Value)); wfRuleNode.NodeId = oReader.GetInt32("NODEID", 0); wfRuleNode.WfSetupId = oReader.GetInt32("WFSETUPID", 0); wfRuleNode.WfSetupRuleId = oReader.GetInt32("WFSETUPRULEID", 0); wfRuleNode.SequenceId = oReader.GetInt32("SEQUENCEID").Value; this.SetObjectState(wfRuleNode, Ease.Core.ObjectState.Saved); } protected List CreateWFRuleNodeObject(DataReader oReader) { List wfRuleNodes = new List(); while (oReader.Read()) { WFRuleDetailNode wfRuleNode = new WFRuleDetailNode(); MapWFRuleDetailNodeObject(wfRuleNode, oReader); wfRuleNodes.Add(wfRuleNode); } return wfRuleNodes; } #endregion #region WFRuleDetailOS Mapping private void MapWFRuleDetailOSObject(WFRuleDetailOS wfRuleDOS, DataReader oReader) { base.SetObjectID(wfRuleDOS, (oReader.GetInt32("WFRULEDETAILID").Value)); wfRuleDOS.OsID = oReader.GetInt32("OSID", 0); wfRuleDOS.WfSetupId = oReader.GetInt32("WFSETUPID", 0); wfRuleDOS.WfSetupRuleId = oReader.GetInt32("WFSETUPRULEID", 0); wfRuleDOS.SequenceId = oReader.GetInt32("SEQUENCEID").Value; this.SetObjectState(wfRuleDOS, Ease.Core.ObjectState.Saved); } protected List CreateWFRuleDetailOSObject(DataReader oReader) { List wfRuleDOSs = new List(); while (oReader.Read()) { WFRuleDetailOS wfRuleDOS = new WFRuleDetailOS(); MapWFRuleDetailOSObject(wfRuleDOS, oReader); wfRuleDOSs.Add(wfRuleDOS); } return wfRuleDOSs; } #endregion #region WFRuleDetailOS Mapping private void MapWFRuleDetailManual(WFRuleDetailManual wfRuleManual, DataReader oReader) { base.SetObjectID(wfRuleManual, (oReader.GetInt32("WFRULEDETAILID").Value)); wfRuleManual.ObjectID = oReader.GetInt32("ObjectId").Value; wfRuleManual.RuleType = (enumWFRuleManual)oReader.GetInt32("RuleType"); wfRuleManual.WfSetupId = oReader.GetInt32("WFSETUPID", 0); wfRuleManual.WfSetupRuleId = oReader.GetInt32("WFSETUPRULEID", 0); wfRuleManual.SequenceId = oReader.GetInt32("SEQUENCEID").Value; this.SetObjectState(wfRuleManual, Ease.Core.ObjectState.Saved); } protected List CreateWFRuleDetailManualObject(DataReader oReader) { List wfRuleDOSs = new List(); while (oReader.Read()) { WFRuleDetailManual wfRuleDOS = new WFRuleDetailManual(); MapWFRuleDetailManual(wfRuleDOS, oReader); wfRuleDOSs.Add(wfRuleDOS); } return wfRuleDOSs; } #endregion } }