// POST: api/UserSecurityRole
        public IHttpActionResult Post([FromBody] List <UserSecurityRole> userSecurityRoles)
        {
            UserSecurityRoleRepository userSecurityRoleRepository = new UserSecurityRoleRepository(Convert.ToInt32(Request.Headers.GetValues("CurrentUserID").First()));

            userSecurityRoleRepository.SaveUserSecurityRoles(userSecurityRoles);
            return(Json(new { count = userSecurityRoles.Count.ToString() }));
        }
        public IHttpActionResult Get()
        {
            UserSecurityRoleRepository userSecurityRoleRepository = new UserSecurityRoleRepository(Convert.ToInt32(Request.Headers.GetValues("CurrentUserID").First()));
            List <UserSecurityRole>    userSecurityRoleList       = userSecurityRoleRepository.GetUserSecurityRoles();

            return(Json(new { UserSecurityRoles = userSecurityRoleList }));
        }
        // POST: api/User
        public IHttpActionResult Post([FromBody] string text, string credential)
        {
            bool valid = false;

            string         identityName   = User.Identity.Name;
            UserCredential userCredential = SecurityHelper.GetUserCredential(credential);
            UserCredential webCredential  = SecurityHelper.GetUserCredential(identityName);

            if (userCredential.LoginName != webCredential.LoginName)
            {
                valid = false;
            }
            else if (SecurityHelper.IsValidLDAPUser(identityName, userCredential.Password))
            {
                valid = true;
            }

            if (valid)
            {
                int userID = Convert.ToInt32(Request.Headers.GetValues("CurrentUserID").First());
                UserSecurityRoleRepository usrRoleRepository = new UserSecurityRoleRepository(userID);
                return(Json(new { message = "ValidUser", userRoles = usrRoleRepository.GetUserSecurityRoles(userID) }));
            }
            else
            {
                return(Json(new { message = "InvalidUser", userRoles = new List <int>() }));
            }
        }
        public async Task <List <SecurityRole> > GetSecurityRoles(int userId)
        {
            var userLogin = await new UserLoginLogic(Context).GetUserLogin(userId);

            if (userLogin == null)
            {
                throw new CallerException("User does not have login");
            }

            using (var uow = new UnitOfWork(Context))
            {
                var repo = new UserSecurityRoleRepository(uow);

                var securityRoles = await repo.GetAll().Where(c => c.UserId == userId).ToListAsync();

                return(securityRoles.Select(c => c.SecurityRole).ToList());
            }
        }
        public async Task AddSecurityRole(int userId, SecurityRole role, string createdBy)
        {
            if (userId <= 0)
            {
                throw new CallerException("Invalid UserId");
            }

            if (role == 0)
            {
                throw new CallerException("Invalid Role");
            }

            if (string.IsNullOrEmpty(createdBy))
            {
                throw new CallerException("CreatedBy required.");
            }

            var userLogin = await new UserLoginLogic(Context).GetUserLogin(userId);

            if (userLogin == null)
            {
                throw new CallerException("User does not have login");
            }

            var currentRoles = await GetSecurityRoles(userId);

            if (currentRoles.Contains(role))
            {
                throw new CallerException("User already has role");
            }

            using (var uow = new UnitOfWork(Context))
            {
                var repo = new UserSecurityRoleRepository(uow);

                await repo.Create(new UserSecurityRole
                {
                    UserId       = userId,
                    SecurityRole = role,
                    CreatedBy    = createdBy
                });
            }
        }
        public async Task RemoveSecurityRole(int userId, SecurityRole role)
        {
            var userLogin = await new UserLoginLogic(Context).GetUserLogin(userId);

            if (userLogin == null)
            {
                throw new CallerException("User does not have login");
            }

            if (role == 0)
            {
                throw new CallerException("Invalid Role");
            }

            using (var uow = new UnitOfWork(Context))
            {
                var repo = new UserSecurityRoleRepository(uow);

                await repo.Delete(userId, role);
            }
        }