public async Task <IActionResult> Index(UsersAdminCustomerSearchViewModel searchModel)
        {
            ViewBag.organizations = await _userOrganizationRepository.GetOrganizationFullByUserId(this.UserId);

            var model = await _userRepository.LoadAsyncForAdminCustomerCount(
                this.UserId,
                this.CurrentPage,
                this.PageSize,
                searchModel);

            this.TotalNumber = model.Item1;

            ViewBag.SearchModel = searchModel;

            return(View(model.Item2));
        }
Пример #2
0
        public async Task <Tuple <int, List <UsersAdminCustomerDTO> > > LoadAsyncForAdminCustomerCount(
            int userId,
            int skip = -1,
            int take = -1,
            UsersAdminCustomerSearchViewModel model = null)
        {
            /// لیست سازمان‌هایی که این کاربر به آنها دسترسی دارد
            List <int> organizationIds = await _userOrganizationRepository.GetOrganizationByUserId(userId);

            // درصورتی که این کاربر در هیچ سازمانی عضو نشده باشد
            // چیزی نداریم که به کاربر نمایش بدهیم
            if (organizationIds == null || organizationIds.Count == 0)
            {
                return(new Tuple <int, List <UsersAdminCustomerDTO> >(0, new List <UsersAdminCustomerDTO>()));
            }

            var query = (from user in DbContext.Users
                         where user.Id != userId

                         join userOrganization in DbContext.UserOrganization on user.Id equals userOrganization.UserId
                         where organizationIds.Contains(userOrganization.OrganizationId)

                         join organization in DbContext.Organization on userOrganization.OrganizationId equals organization.Id

                         select new UsersAdminCustomerDTO
            {
                Id = user.Id,
                UserName = user.UserName,
                FirstName = user.FirstName + " " + user.LastName,
                LastName = user.LastName,
                CreateDate = user.CreateDate,
                Email = user.Email,
                IsActive = user.IsActive,
                IsModerator = user.IsModerator,
                OrganizationId = organization.Id,
                PhoneNumber = user.PhoneNumber,
                OrganizationTitle = organization.OrganizationTitle
            });

            // نام کاربری
            if (!string.IsNullOrEmpty(model.UserName))
            {
                query = query.Where(x => x.UserName.Contains(model.UserName));
            }

            // ایمیل
            if (!string.IsNullOrEmpty(model.Email))
            {
                query = query.Where(x => x.Email.Contains(model.Email));
            }

            // شماره موبایل
            if (!string.IsNullOrEmpty(model.PhoneNumber))
            {
                query = query.Where(x => x.PhoneNumber.Contains(model.PhoneNumber));
            }


            // نام
            if (!string.IsNullOrEmpty(model.FirstName))
            {
                query = query.Where(x => x.FirstName.Contains(model.FirstName) || x.LastName.Contains(model.FirstName));
            }


            // فعال / غیرفعال
            if (model.IsActive != null)
            {
                query = query.Where(x => x.IsActive == model.IsActive);
            }

            if (model.IsModerator != null)
            {
                query = query.Where(x => x.IsModerator == model.IsModerator);
            }

            int Count = query.Count();

            query = query.OrderByDescending(x => x.Id);


            if (skip != -1)
            {
                query = query.Skip((skip - 1) * take);
            }

            if (take != -1)
            {
                query = query.Take(take);
            }


            return(new Tuple <int, List <UsersAdminCustomerDTO> >(Count, await query.ToListAsync()));
        }