예제 #1
0
        public async Task <DepartmentMember> AddExistingUserAsync(int departmentId, string userId, CancellationToken cancellationToken = default(CancellationToken))
        {
            var dms = await _departmentMembersRepository.GetAllDepartmentMemberByUserIdAsync(userId);

            var defaultDm     = dms.FirstOrDefault(x => x.IsDefault);
            var activeDm      = dms.FirstOrDefault(x => x.IsActive);
            var existingDepDm = dms.FirstOrDefault(x => x.DepartmentId == departmentId);

            if (existingDepDm != null)
            {
                return(null);                // User already is in department
            }
            DepartmentMember dm = new DepartmentMember();

            dm.DepartmentId = departmentId;
            dm.UserId       = userId;

            if (defaultDm == null || defaultDm.IsDeleted)
            {
                dm.IsDefault = true;
            }

            if (activeDm == null || activeDm.IsDeleted)
            {
                dm.IsActive = true;
            }

            dm.IsAdmin    = false;
            dm.IsDisabled = false;
            dm.IsHidden   = false;

            return(await _departmentMembersRepository.SaveOrUpdateAsync(dm, cancellationToken));
        }
예제 #2
0
        public DepartmentMember AddUserToDepartment(int departmentId, string userId)
        {
            var currentDm = GetDepartmentMember(userId, departmentId);

            if (currentDm == null)
            {
                var dm = new DepartmentMember();
                dm.DepartmentId = departmentId;
                dm.UserId       = userId;
                dm.IsAdmin      = false;
                dm.IsDisabled   = false;
                dm.IsHidden     = false;
                dm.IsDefault    = true;
                dm.IsActive     = true;

                _departmentMembersRepository.SaveOrUpdate(dm);
                _eventAggregator.SendMessage <DepartmentSettingsUpdateEvent>(new DepartmentSettingsUpdateEvent()
                {
                    DepartmentId = departmentId
                });

                InvalidateDepartmentUsersInCache(departmentId);

                return(dm);
            }

            return(null);
        }
예제 #3
0
        public void AddExistingUser(int departmentId, string userId)
        {
            var dms           = _departmentMembersRepository.GetAll().Where(x => x.UserId == userId).ToList();
            var defaultDm     = dms.FirstOrDefault(x => x.IsDefault);
            var activeDm      = dms.FirstOrDefault(x => x.IsActive);
            var existingDepDm = dms.FirstOrDefault(x => x.DepartmentId == departmentId);

            if (existingDepDm != null)
            {
                return;                 // User already is in department
            }
            DepartmentMember dm = new DepartmentMember();

            dm.DepartmentId = departmentId;
            dm.UserId       = userId;

            if (defaultDm == null || defaultDm.IsDeleted)
            {
                dm.IsDefault = true;
            }

            if (activeDm == null || activeDm.IsDeleted)
            {
                dm.IsActive = true;
            }

            dm.IsAdmin    = false;
            dm.IsDisabled = false;
            dm.IsHidden   = false;

            _departmentMembersRepository.SaveOrUpdate(dm);
        }
        protected void btnUpdateAccess_Click(object sender, EventArgs e)
        {
            foreach (var row in lviewMembers.Items)
            {
                if (row.ItemType == ListViewItemType.DataItem)
                {
                    CheckBox cboxCommittee = row.FindControl(STR_ChkAllowCommittee) as CheckBox;
                    CheckBox cboxFaculty   = row.FindControl(STR_ChkAllowFaculty) as CheckBox;
                    CheckBox cboxReview    = row.FindControl(STR_ChkAllowReview) as CheckBox;

                    //Get the departmental member associated with this row
                    int departmentMemberID  = (int)lviewMembers.DataKeys[row.DataItemIndex]["id"];
                    DepartmentMember member = DepartmentMemberBLL.GetByID(departmentMemberID);

                    using (var ts = new TransactionScope())
                    {
                        DepartmentMemberBLL.UpdateAccess(member, currentPosition, cboxCommittee.Checked, cboxFaculty.Checked, cboxReview.Checked);

                        ts.CommitTransaction();
                    }
                }
            }

            this.bindMembers();

            this.ShowUpdateAcessRegion();

            //Display an update successful message
            lblCommitteeUpdated.Text = "Committee Membership Successfully Updated";
        }
예제 #5
0
        public async Task <DepartmentMember> AddUserToDepartmentAsync(int departmentId, string userId, bool isAdmin = false, CancellationToken cancellationToken = default(CancellationToken))
        {
            var currentDm = await GetDepartmentMemberAsync(userId, departmentId, true);

            if (currentDm == null)
            {
                var dm = new DepartmentMember();
                dm.DepartmentId = departmentId;
                dm.UserId       = userId;
                dm.IsAdmin      = isAdmin;
                dm.IsDisabled   = false;
                dm.IsHidden     = false;
                dm.IsDefault    = true;
                dm.IsActive     = true;

                var saved = await _departmentMembersRepository.SaveOrUpdateAsync(dm, cancellationToken);

                _eventAggregator.SendMessage <DepartmentSettingsUpdateEvent>(new DepartmentSettingsUpdateEvent()
                {
                    DepartmentId = departmentId
                });

                InvalidateDepartmentUsersInCache(departmentId);

                return(saved);
            }

            return(null);
        }
예제 #6
0
        public async Task <DepartmentMember> SaveDepartmentMemberAsync(DepartmentMember departmentMember, CancellationToken cancellationToken = default(CancellationToken))
        {
            var saved = await _departmentMembersRepository.SaveOrUpdateAsync(departmentMember, cancellationToken);

            InvalidateDepartmentMemberInCache(departmentMember.UserId, departmentMember.DepartmentId);
            InvalidateDepartmentUserInCache(departmentMember.UserId, departmentMember.User);

            return(saved);
        }
예제 #7
0
        public DepartmentMember SaveDepartmentMember(DepartmentMember departmentMember)
        {
            _departmentMembersRepository.SaveOrUpdate(departmentMember);

            InvalidateDepartmentMemberInCache(departmentMember.UserId, departmentMember.DepartmentId);
            InvalidateDepartmentUserInCache(departmentMember.UserId, departmentMember.User);

            return(departmentMember);
        }
        protected void btnAddMember_Click(object sender, EventArgs e)
        {
            //Create the new department member
            DepartmentMember member = new DepartmentMember();

            member.DepartmentFIS       = STR_FRAC;
            member.FirstName           = txtFName.Text;
            member.LastName            = txtLName.Text;
            member.OtherDepartmentName = string.IsNullOrEmpty(txtDepartment.Text) ? "Other" : txtDepartment.Text;
            member.LoginID             = txtLoginID.Text.ToLower().Trim();

            //Create the membership object
            CommitteeMember committeeAccess = new CommitteeMember();

            committeeAccess.AssociatedPosition = currentPosition;
            committeeAccess.DepartmentMember   = member;

            switch (dlistMemberType.SelectedValue)
            {
            case "Committee":
                committeeAccess.MemberType = MemberTypeBLL.GetByID((int)MemberTypes.CommitteeMember);
                break;

            case "Faculty":
                committeeAccess.MemberType = MemberTypeBLL.GetByID((int)MemberTypes.FacultyMember);
                break;

            case "Review":
                committeeAccess.MemberType = MemberTypeBLL.GetByID((int)MemberTypes.Reviewer);
                break;
            }

            //save the department member and add to the position committee for this position
            using (var ts = new TransactionScope())
            {
                DepartmentMemberBLL.EnsurePersistent(member);

                committeeAccess.DepartmentMember = member;

                currentPosition.CommitteeMembers.Add(committeeAccess);

                Position position = currentPosition;

                PositionBLL.EnsurePersistent(position);

                ts.CommitTransaction();
            }

            //Display an update successful message
            lblCommitteeUpdated.Text = "Committee Membership Successfully Updated";

            //rebind the datagrid
            this.bindMembers();

            this.ShowUpdateAcessRegion();
        }
예제 #9
0
        protected void btnRemove_Click(object sender, EventArgs e)
        {
            LinkButton lbtn = (LinkButton)sender;

            int departmentMemberID  = int.Parse(lbtn.CommandArgument);
            DepartmentMember member = DepartmentMemberBLL.GetByID(departmentMemberID);

            using (var ts = new TransactionScope())
            {
                member.Inactive = true; //Mark the member as inactive

                DepartmentMemberBLL.EnsurePersistent(member);

                ts.CommitTransaction();
            }

            lviewApplications.DataBind();
        }
예제 #10
0
        protected void btnAddMember_Click(object sender, EventArgs e)
        {
            DepartmentMember member = new DepartmentMember();

            member.LoginID   = txtLoginID.Text.ToLower().Trim();
            member.FirstName = txtFName.Text;
            member.LastName  = txtLName.Text;

            member.DepartmentFIS = dlistDepartment.SelectedValue;

            using (var ts = new TransactionScope())
            {
                DepartmentMemberBLL.EnsurePersistent(member);

                ts.CommitTransaction();
            }

            //Now we have a new member, so rebind the grid
            lviewApplications.DataBind();
        }
예제 #11
0
        public async Task <DepartmentMember> JoinDepartmentAsync(int departmentId, string userId, CancellationToken cancellationToken = default(CancellationToken))
        {
            Department d = await GetDepartmentByIdAsync(departmentId);

            if (d != null)
            {
                // Check to see if we are already part of this department
                var currentDepartments = await GetAllDepartmentsForUserAsync(userId);

                foreach (var department in currentDepartments)
                {
                    if (department.DepartmentId == departmentId)
                    {
                        return(department);
                    }
                }

                var dm = new DepartmentMember();
                dm.DepartmentId = departmentId;
                dm.UserId       = userId;
                dm.IsAdmin      = false;
                dm.IsDisabled   = false;
                dm.IsHidden     = false;
                dm.IsActive     = false;
                dm.IsDefault    = false;

                var saved = await _departmentMembersRepository.SaveOrUpdateAsync(dm, cancellationToken);

                _eventAggregator.SendMessage <DepartmentSettingsUpdateEvent>(new DepartmentSettingsUpdateEvent()
                {
                    DepartmentId = d.DepartmentId
                });

                InvalidateDepartmentUsersInCache(d.DepartmentId);

                return(saved);
            }

            return(null);
        }
예제 #12
0
        public override void LoadData()
        {
            base.LoadData();

            DepartmentMember departmentMember = new DepartmentMember
            {
                DepartmentFIS       = StaticProperties.TestString,
                FirstName           = StaticProperties.TestString,
                LastName            = StaticProperties.TestString,
                LoginID             = StaticProperties.TestString,
                OtherDepartmentName = StaticProperties.TestString
            };

            using (var ts = new TransactionScope())
            {
                DepartmentMemberBLL.EnsurePersistent(departmentMember);

                for (int i = 0; i < 4; i++)
                {
                    var memberType = new MemberType {
                        Type = StaticProperties.TestString
                    };

                    var committeeMember = new CommitteeMember
                    {
                        AssociatedPosition =
                            PositionBLL.GetByID(StaticProperties.ExistingPositionID),
                        DepartmentMember = departmentMember,
                        MemberType       = memberType
                    };


                    MemberTypeBLL.EnsurePersistent(memberType);
                    CommitteeMemberBLL.EnsurePersistent(committeeMember);
                }

                ts.CommitTransaction();
            }
        }
예제 #13
0
        public DepartmentMember JoinDepartment(int departmentId, string userId)
        {
            Department d = GetDepartmentById(departmentId);

            if (d != null)
            {
                // Check to see if we are already part of this department
                var currentDepartments = GetAllDepartmentsForUser(userId);
                foreach (var department in currentDepartments)
                {
                    if (department.DepartmentId == departmentId)
                    {
                        return(department);
                    }
                }

                var dm = new DepartmentMember();
                dm.DepartmentId = departmentId;
                dm.UserId       = userId;
                dm.IsAdmin      = false;
                dm.IsDisabled   = false;
                dm.IsHidden     = false;
                dm.IsActive     = false;
                dm.IsDefault    = false;

                _departmentMembersRepository.SaveOrUpdate(dm);
                _eventAggregator.SendMessage <DepartmentSettingsUpdateEvent>(new DepartmentSettingsUpdateEvent()
                {
                    DepartmentId = d.DepartmentId
                });

                InvalidateDepartmentUsersInCache(d.DepartmentId);

                return(dm);
            }

            return(null);
        }
        /// <summary>
        /// 부서에 직원 소속 정보를 생성합니다.
        /// </summary>
        /// <param name="department">부서</param>
        /// <param name="user">사용자</param>
        /// <param name="employeeTitle">직책 정보</param>
        /// <returns></returns>
        public DepartmentMember CreateDepartmentMember(Department department, User user, EmployeeTitle employeeTitle)
        {
            department.ShouldNotBeNull("department");
            user.ShouldNotBeNull("user");

            DepartmentMember member;

            // 1. 이미 부서에 소속되어 있다면, 정보 갱신만 하고, 반환한다.
            if(IsDepartmentMember(department, user))
            {
                if(log.IsInfoEnabled)
                    log.Info("이미 부서에 소속된 직원이므로, 새로 생성하지 않고 기존 정보를 읽어 반환합니다. department={0}, user={1}", department, user);

                member = department.Members.FirstOrDefault(m => m.User.Equals(user));
                // member = department.Members.Where(m => m.User.Equals(user)).FirstOrDefault();

                if(member != null && member.EmployeeTitle != employeeTitle)
                {
                    member.EmployeeTitle = employeeTitle;
                    Repository<DepartmentMember>.SaveOrUpdate(member);
                }

                return member;
            }

            // 2. 새로운 부서 소속 정보를 생성하고, 저장한 후 반환한다.
            if(IsDebugEnabled)
                log.Debug(@"부서에 새로운 직원을 소속시킵니다. department={0}, user={1}, employeeTitle={2}",
                          department.Id, user.Id, employeeTitle);

            var company = department.Company;
            Guard.Assert(company != null, @"해당 Company 정보를 찾을 수 없습니다. department=[{0}]", department);

            member = new DepartmentMember(department, user)
                     {
                         EmployeeTitle = employeeTitle
                     };

            return Repository<DepartmentMember>.SaveOrUpdate(member);
        }
예제 #15
0
        protected static void BuildUserEntities()
        {
            //
            // Company
            //
            var company = new Company
            {
                Name = "리얼웹",
                Code = CompanyCode
            };

            Repository <Company> .SaveOrUpdate(company);

            UnitOfWork.Current.TransactionalFlush();

            //
            // Department
            //
            Department parent = null;

            foreach (var code in GetCodes("Dept", 5))
            {
                var dept = new Department(company, code)
                {
                    Name = "부서." + code
                };

                if (parent != null)
                {
                    dept.SetParent(parent);
                }

                Repository <Department> .SaveOrUpdate(dept);

                parent = dept;
            }
            UnitOfWork.Current.TransactionalFlush();

            //
            // User
            //
            var i = 0;

            foreach (var code in GetCodes("User", 25))
            {
                var user = new User(company, code, code)
                {
                    Password = Password
                };

                company.AddUser(user);

                user.Data = "동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리나라 만세".Replicate(10);
                user.Blob = Encoding.UTF8.GetBytes(user.Data);

                user.ActivePeriod = (i++ % 2 == 0)
                                        ? new TimeRange(DateTime.Now.AddDays(-1), null)
                                        : new TimeRange(null, DateTime.Now.AddDays(1));

                user.ActiveYearWeek = new YearAndWeek(2009, 1);

                user.PeriodTime = new PeriodTime
                {
                    Period = new MonthRange(DateTime.Now),
                    //DateTime.Now.GetRelativeMonthRange(1),
                    YearWeek = new YearAndWeek(2009, 50)
                };

                Repository <User> .SaveOrUpdate(user);
            }

            UnitOfWork.Current.TransactionalFlush();

            //
            // DepartmentMember
            //
            var depts = Repository <Department> .FindAll();

            var users = Repository <User> .FindAll();

            foreach (var dept in depts)
            {
                foreach (var user in users)
                {
                    var deptMember = new DepartmentMember(dept, user)
                    {
                        IsActive = true
                    };
                    Repository <DepartmentMember> .SaveOrUpdate(deptMember);
                }
            }
            UnitOfWork.Current.TransactionalFlush();
        }
예제 #16
0
            public List <CommitteeMember> GetMemberAssociationsByPosition(Position associatedPosition, DepartmentMember member)
            {
                ICriteria criteria = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof(CommitteeMember))
                                     .Add(Expression.Eq("AssociatedPosition", associatedPosition))
                                     .Add(Expression.Eq("DepartmentMember", member));

                return(criteria.List <CommitteeMember>() as List <CommitteeMember>);
            }
예제 #17
0
 public static List <CommitteeMember> GetByAssociationsPosition(Position associatedPosition, DepartmentMember member)
 {
     return(daoFactory.GetCommitteeMemberDao().GetMemberAssociationsByPosition(associatedPosition, member));
 }
        protected static void BuildUserEntities() {
            //
            // Company
            //
            var company = new Company
                          {
                              Name = "리얼웹",
                              Code = CompanyCode
                          };

            Repository<Company>.SaveOrUpdate(company);
            UnitOfWork.Current.TransactionalFlush();

            //
            // Department
            //
            Department parent = null;
            foreach(var code in GetCodes("Dept", 5)) {
                var dept = new Department(company, code)
                           {
                               Name = "부서." + code
                           };

                if(parent != null)
                    dept.SetParent(parent);

                Repository<Department>.SaveOrUpdate(dept);

                parent = dept;
            }
            UnitOfWork.Current.TransactionalFlush();

            //
            // User 
            //
            var i = 0;
            foreach(var code in GetCodes("User", 25)) {
                var user = new User(company, code, code)
                           {
                               Password = Password
                           };

                company.AddUser(user);

                user.Data = "동해물과 백두산이 마르고 닳도록, 하느님이 보우하사 우리나라 만세".Replicate(10);
                user.Blob = Encoding.UTF8.GetBytes(user.Data);

                user.ActivePeriod = (i++ % 2 == 0)
                                        ? new TimeRange(DateTime.Now.AddDays(-1), null)
                                        : new TimeRange(null, DateTime.Now.AddDays(1));

                user.ActiveYearWeek = new YearAndWeek(2009, 1);

                user.PeriodTime = new PeriodTime
                                  {
                                      Period = new MonthRange(DateTime.Now),
                                      //DateTime.Now.GetRelativeMonthRange(1),
                                      YearWeek = new YearAndWeek(2009, 50)
                                  };

                Repository<User>.SaveOrUpdate(user);
            }

            UnitOfWork.Current.TransactionalFlush();

            //
            // DepartmentMember
            //
            var depts = Repository<Department>.FindAll();
            var users = Repository<User>.FindAll();

            foreach(var dept in depts) {
                foreach(var user in users) {
                    var deptMember = new DepartmentMember(dept, user) { IsActive = true };
                    Repository<DepartmentMember>.SaveOrUpdate(deptMember);
                }
            }
            UnitOfWork.Current.TransactionalFlush();
        }
        /// <summary>
        /// 부서-직원 소속 정보를 제거합니다.
        /// </summary>
        /// <param name="member"></param>
        /// <returns></returns>
        public bool DeleteDepartmentMember(DepartmentMember member)
        {
            member.ShouldNotBeNull("member");

            if(log.IsDebugEnabled)
                log.Debug(@"부서-직원 소속 정보를 제거합니다. departmentMember=" + member);

            var department = member.Department;
            if(department != null)
            {
                department.Members.Remove(member);
                Session.SaveOrUpdate(department);
            }

            DeleteEntityTransactional(member);

            return true;
        }