using HRM.BO; using Ease.Core; using Ease.Core.DataAccess; using Ease.Core.Model; using Ease.Core.Utility; using System; using System.Collections.Generic; using System.Data; using System.Linq; namespace HRM.DA { #region Role Service public class RoleService : ServiceTemplate, IRoleService { public RoleService() { } private void MapObject(Role oRole, DataReader oReader) { base.SetObjectID(oRole,oReader.GetInt32("RoleID").Value); oRole.Code = oReader.GetString("Code"); oRole.Name = oReader.GetString("name"); oRole.Description = oReader.GetString("description"); oRole.Sequence = oReader.GetInt32("Sequence").Value; // oRole.Status = (EnumStatus)oReader.GetInt32("Status").Value; oRole.CreatedBy = oReader.GetInt32("CreatedBy").Value; oRole.ModifiedBy = oReader.GetInt32("AUTHORIZEDBY"); oRole.ModifiedDate = oReader.GetDateTime("AUTHORIZEDDATE"); oRole.ApproveBy = oReader.GetInt32("ApproveBy"); oRole.ApproveDate = oReader.GetDateTime("ApproveDate"); oRole.CreatedDate = oReader.GetDateTime("CreatedDate").Value; oRole.RoleType = (EnumRoleType) oReader.GetInt32("RoleType"); oRole.RoleStatus = (EnumAuthStatus)(oReader.GetInt32("Status")); this.SetObjectState(oRole, Ease.Core.ObjectState.Saved); } #region Child Object Mapping private void MapObject(Role.RolePermission oRolePermission, DataReader oReader) { base.SetObjectID(oRolePermission, oReader.GetInt32("RolePermissionID").Value); oRolePermission.RoleID = oReader.GetInt32("roleID").Value; oRolePermission.CreatedBy = oReader.GetInt32("CreatedBy", 0); oRolePermission.CreatedDate = oReader.GetDateTime("CreatedDate").Value; //oRolePermission.RoleType =(EnumRoleType) oReader.GetInt32("RoleType"); oRolePermission.PermissionCode = oReader.GetString("PermissionCode"); oRolePermission.Name = oReader.GetString("Name"); oRolePermission.Link = oReader.GetString("Link"); //oRolePermission.Status =(EnumAuthStatus) oReader.GetInt32("Status").Value; int? statusValue = oReader.GetInt32("Status"); oRolePermission.Status = statusValue.HasValue ? (EnumAuthStatus)statusValue.Value : EnumAuthStatus.None; oRolePermission.parentID = oReader.GetInt32("ParentID"); oRolePermission.ApproveBy = oReader.GetInt32("ApprovedBy"); oRolePermission.ApproveDate = oReader.GetDateTime("ApprovedDate"); oRolePermission.isBookmarked = oReader.GetBoolean("bookmarked", true, false); this.SetObjectState(oRolePermission, Ease.Core.ObjectState.Saved); } private void MapObject(Role.RoleActionPermission oRolePermission, DataReader oReader) { base.SetObjectID(oRolePermission, oReader.GetInt32("RoleActionPermissionID", 0)); oRolePermission.RoleID = oReader.GetInt32("RoleID", 0); oRolePermission.RolePermissionID = oReader.GetInt32("RolePermissionID", 0); oRolePermission.CreatedBy = oReader.GetInt32("CreatedBy", 0); oRolePermission.CreatedDate = oReader.GetDateTime("CreatedDate").Value; oRolePermission.ActionCode = oReader.GetString("PermissionActionCode"); oRolePermission.Name = oReader.GetString("Name"); oRolePermission.Status = (EnumAuthStatus)oReader.GetInt32("Status"); oRolePermission.ApproveBy = oReader.GetInt32("ApprovedBy"); oRolePermission.ApproveDate = oReader.GetDateTime("ApprovedDate"); this.SetObjectState(oRolePermission, Ease.Core.ObjectState.Saved); } //private void MapObject(Role.RoleDesignation oRolePermission, DataReader oReader) //{ // base.SetObjectID(oRolePermission, oReader.GetInt32("RoleDesignationID", 0)); // oRolePermission.RoleID = oReader.GetInt32("RoleID", 0); // oRolePermission.DesignationID = oReader.GetInt32("DesignationID", 0); // oRolePermission.CreatedBy = oReader.GetInt32("CreatedBy", 0); // oRolePermission.CreatedDate = oReader.GetDateTime("CreatedDate").Value; // oRolePermission.RoleDesignationStatus = (EnumAuthStatus)oReader.GetInt32("RoleDesignationStatus"); // oRolePermission.ModifiedBy = oReader.GetInt32("ModifiedBy"); // oRolePermission.ModifiedDate = oReader.GetDateTime("ModifiedDate"); // this.SetObjectState(oRolePermission, Ease.Core.ObjectState.Saved); //} #endregion #region CreateObject protected override T CreateObject(DataReader oReader) { Role oRole = new Role(); MapObject(oRole, oReader); return oRole as T; } protected Role.RolePermission CreateRolePermissionObject(DataReader oReader) { Role.RolePermission oRole = new Role.RolePermission(); MapObject(oRole, oReader); return oRole; } protected Role.RoleActionPermission CreateRoleActionPermissionObject(DataReader oReader) { Role.RoleActionPermission oRole = new Role.RoleActionPermission(); MapObject(oRole, oReader); return oRole; } //protected Role.RoleDesignation CreateRoleDesignationObject(DataReader oReader) //{ // Role.RoleDesignation oRole = new Role.RoleDesignation(); // MapObject(oRole, oReader); // return oRole; //} #endregion #region Related Data //protected void GetRoleRelatedData(TransactionContext tc, Role oRole) //{ // oRole.RolePermissions = GetRolePermission(oRole.ID,true); // //oRole._RoleDesignation = GetRoleDesignation(oRole.ID); //} //protected void GetRolePermissionRelatedData(TransactionContext tc, Role.RolePermission oRole) //{ // oRole._RoleActionPermission = GetRoleActionPermissionByRolePermissionID(oRole.ID); //} #endregion #region Service implementation #region RoleService public List GetAllRole() { List roles = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RoleDA.GetAllRole(tc)); roles = 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 roles; } public Role Get(int id) { Role oRole = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RoleDA.Get(tc, id)); if (oreader.Read()) { oRole = this.CreateObject(oreader); } oreader.Close(); if(oRole !=null) { oreader = new DataReader(RoleDA.GetRolePermissionByRoleID(tc, id)); while (oreader.Read()) { Role.RolePermission ot = this.CreateRolePermissionObject(oreader); //ot.setState(ObjectState.Saved); oRole.RolePermissions.Add(ot); } oreader.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 oRole; } public DataSet GetRoleAudit(int type, DateTime fromDate, DateTime ToDate) { DataSet role = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); role = RoleDA.GetRoleAudit(tc, type, fromDate, ToDate); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return role; } public DataSet GetRolePermissionRoot(int nRoleID) { DataSet role = null; TransactionContext tc = null; try { tc = TransactionContext.Begin(); role = RoleDA.GetRoleRootPermissionName(tc, nRoleID); tc.End(); } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return role; } public List Get(EnumAuthStatus status) { List roles = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RoleDA.Get(tc, status)); roles = 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 roles; } public List GetRole() { List roles = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader dr = new DataReader(RoleDA.GetRole(tc)); roles = 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 roles; } public int Save(Role oRole) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); if (oRole.IsNew) { int id = tc.GenerateID("Role", "RoleID"); int seqNo = tc.GenerateID("Role", "Sequence"); oRole.Sequence = seqNo; base.SetObjectID(oRole, id); RoleDA.Insert(tc, oRole); } else { RoleDA.Update(tc, oRole); #region Delete Children RoleDA.Delete(tc, "RolePermission", "RoleID", oRole.ID); // RoleDA.Delete(tc, "Role.RoleActionPermission", "RoleID", oRole.ID); // RoleDA.Delete(tc, "RoleDesignation", "RoleID", oRole.ID); #endregion } if (oRole.RolePermissions != null & oRole.RolePermissions.Count > 0) { int maxID = oRole.RolePermissions.Max(x => x.ID); int tempid = oRole.RolePermissions[0].ID; int newid = RoleDA.GetNewID(tc, "RolePermission", "RolePermissionID"); newid = newid + 1; if (newid <= maxID) newid = maxID + 1; for (int i=0; i< oRole.RolePermissions.Count; i ++) { tempid = oRole.RolePermissions[i].ID; oRole.RolePermissions[i].ID = newid; oRole.RolePermissions.ForEach(x => { if (x.parentID == tempid) x.parentID = newid; }); newid = newid + 1; } foreach (Role.RolePermission rolePermission in oRole.RolePermissions) { rolePermission.RoleID = oRole.ID; rolePermission.CreatedBy = oRole.CreatedBy; rolePermission.CreatedDate = oRole.CreatedDate; //if (oRole.RoleStatus == EnumAuthStatus.Approved ) //{ // if (rolePermission.Status == EnumAuthStatus.DeletedNotYetApprove) // continue; // else rolePermission.Status = EnumAuthStatus.None; //} if (oRole.RoleStatus == EnumAuthStatus.Approved) { if (rolePermission.Status == EnumAuthStatus.DeletedNotYetApprove) continue; else if (rolePermission.Status == EnumAuthStatus.EditedNotYetApprove || rolePermission.Status == EnumAuthStatus.NewNotYetApprove || rolePermission.Status == EnumAuthStatus.Approved || rolePermission.Status == EnumAuthStatus.None) rolePermission.Status = EnumAuthStatus.Approved; else rolePermission.Status = EnumAuthStatus.None; } else { if (rolePermission.Status == EnumAuthStatus.Approved || rolePermission.Status == EnumAuthStatus.None) rolePermission.Status = EnumAuthStatus.Approved; } RoleDA.Insert(tc, rolePermission); foreach (Role.RoleActionPermission RoleActionPermission in rolePermission._RoleActionPermission) { RoleActionPermission.RoleID = oRole.ID; RoleActionPermission.RolePermissionID = rolePermission.ID; this.SetObjectID(RoleActionPermission, RoleDA.GetNewID(tc, "Role.RoleActionPermission", "RoleActionPermissionID")); RoleDA.Insert(tc, RoleActionPermission); } } } tc.End(); return oRole.ID; } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } } public void Delete(int id) { TransactionContext tc = null; try { tc = TransactionContext.Begin(true); #region Delete Children RoleDA.DeleteRoleActionPermission(tc, id); RoleDA.DeleteRolePermission(tc, id); RoleDA.DeleteRoleDesignation(tc, id); #endregion RoleDA.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 Child Service Implementation #region RolePermision public List GetRolePermission(int id) { List oRolePermission = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RoleDA.GetRolePermissionByRoleID(tc, id)); while (oreader.Read()) { Role.RolePermission ot = this.CreateRolePermissionObject(oreader); //ot.setState(ObjectState.Saved); oRolePermission.Add(ot); } oreader.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 oRolePermission; } public List GetRolePermissionbyUserID(int Userid) { List menus = new List(); UserService ouservice = new UserService(); User ouser = ouservice.Get(Userid); if (ouser == null) { throw new Exception("Invalid User ID"); } if (ouser.SISU == true) { WebMenu omenu = new WebMenu(); return omenu.AdminMenus; } TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RoleDA.GetRolePermissionByUserID(tc, Userid)); List perissins = new List(); while (oreader.Read()) { Role.RolePermission ot = this.CreateRolePermissionObject(oreader); perissins.Add(ot); } oreader.Close(); tc.End(); if (perissins.Count > 0) { var parents = perissins.FindAll(x => x.parentID == null); if (parents != null) { WebMenuHead hhead = new WebMenuHead("H01", ""); menus.Add(hhead); hhead.items = new List(); hhead.items.Add(new WebMenuGroup("H01.H01", "Dash-Board", "/")); foreach (Role.RolePermission item in parents) { WebMenuHead oheadItem = menus.FirstOrDefault(x => x.menuCode == item.PermissionCode); if (oheadItem == null) { oheadItem = new WebMenuHead(item.PermissionCode, item.Name); menus.Add(oheadItem); } var firstChilds = perissins.FindAll(x => x.parentID == item.ID); if (firstChilds == null) oheadItem.icon = "pi pi-fw pi-th-large"; foreach (Role.RolePermission fchild in firstChilds) { if (oheadItem.items == null) oheadItem.items = new List(); WebMenuGroup onewGroup = oheadItem.items.FirstOrDefault(x => x.menuCode == fchild.PermissionCode); if (onewGroup == null) { onewGroup = new WebMenuGroup(fchild.PermissionCode, fchild.Name, fchild.Link); oheadItem.items.Add(onewGroup); } var secondChilds = perissins.FindAll(x => x.parentID == fchild.ID); if (secondChilds==null) onewGroup.icon = "pi pi-fw pi-th-large"; foreach (Role.RolePermission sechild in secondChilds) { if (onewGroup.items == null) onewGroup.items = new List(); WebMenuItem thirdchild = onewGroup.items.FirstOrDefault(x => x.menuCode == sechild.PermissionCode); if (thirdchild == null) { thirdchild = new WebMenuItem(sechild.PermissionCode, sechild.Name, sechild.Link); onewGroup.items.Add(thirdchild); } var thirdChilds = perissins.FindAll(x => x.parentID == sechild.ID); if (thirdChilds == null) thirdchild.icon = "pi pi-fw pi-th-large"; foreach (Role.RolePermission fourthChild in thirdChilds) { if (thirdchild.items == null) thirdchild.items = new List(); WebMenuItemDetail menufourthItem = thirdchild.items.FirstOrDefault(x => x.menuCode == fourthChild.PermissionCode); if (menufourthItem == null) { menufourthItem = new WebMenuItemDetail(fourthChild.PermissionCode, fourthChild.Name, fourthChild.Link); thirdchild.items.Add(menufourthItem); } } } } } } } } catch (Exception e) { #region Handle Exception if (tc != null) tc.HandleError(); ExceptionLog.Write(e); throw new ServiceException(e.Message, e); #endregion } return menus; } //public List GetRolePermission(int id, bool IsRelatedDataNeeded) //{ // List oRolePermission = new List(); // TransactionContext tc = null; // try // { // tc = TransactionContext.Begin(); // DataReader oreader = new DataReader(RoleDA.GetRolePermissionByRoleID(tc, id)); // while (oreader.Read()) // { // Role.RolePermission ot = this.CreateRolePermissionObject(oreader); // if(IsRelatedDataNeeded) // GetRolePermissionRelatedData(tc, ot); // //ot.setState(ObjectState.Saved); // oRolePermission.Add(ot); // } // oreader.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 oRolePermission; //} #endregion #region RoleActionPermision public List GetRoleActionPermissionByRoleID(int id) { List oRolePermission = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RoleDA.GetRoleActionPermissionByRoleID(tc, id)); while (oreader.Read()) { Role.RoleActionPermission ot = this.CreateRoleActionPermissionObject(oreader); oRolePermission.Add(ot); } oreader.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 oRolePermission; } public List GetRoleActionPermissionByRolePermissionID(int id) { List oRolePermission = new List(); TransactionContext tc = null; try { tc = TransactionContext.Begin(); DataReader oreader = new DataReader(RoleDA.GetRoleActionPermissionByRolePermissionID(tc, id)); while (oreader.Read()) { Role.RoleActionPermission ot = this.CreateRoleActionPermissionObject(oreader); oRolePermission.Add(ot); } oreader.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 oRolePermission; } #endregion #endregion #endregion } #endregion }