Esempio n. 1
0
        public async Task <(OutPagingData, List <OutGetAddressByUserIdForManage>)> GetAddressByUserIdForManageAsync(string UserId, string LangId, string Search, int PageNum, int Take)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(UserId))
                {
                    throw new ArgumentInvalidException($"'{nameof(UserId)}' cannot be null or whitespace.");
                }

                if (string.IsNullOrWhiteSpace(LangId))
                {
                    throw new ArgumentInvalidException($"'{nameof(LangId)}' cannot be null or whitespace.");
                }

                var qData = _AddressRepository.Get
                            .Where(a => a.UserId == Guid.Parse(UserId))
                            .Select(a => new OutGetAddressByUserIdForManage
                {
                    Id      = a.Id.ToString(),
                    Address = a.tblCountries.tblCountries_Translates.Where(b => b.LangId == Guid.Parse(LangId)).Select(b => b.Title).Single() + "- " +
                              a.tblProvinces.tblProvinces_Translate.Where(b => b.LangId == Guid.Parse(LangId)).Select(b => b.Title).Single() + "- " +
                              a.tblCities.tblCities_Translates.Where(b => b.LangId == Guid.Parse(LangId)).Select(b => b.Title).Single() + "- " +
                              a.District + "- " +
                              _Localizer["Plaque"] + " " + a.Plaque + "- " +
                              _Localizer["Unit"] + " " + a.Unit + "- " +
                              a.FirstName + " " + a.LastName,
                    CountBills = 0,
                    Date       = a.Date
                })
                            .Where(a => Search != null ? a.Address.Contains(Search) : true)
                            .OrderByDescending(a => a.Date);

                // صفحه بندی داده ها
                var qPagingData = PagingData.Calc(await qData.LongCountAsync(), PageNum, Take);

                return(qPagingData, await qData.Skip((int)qPagingData.Skip).Take(qPagingData.Take).ToListAsync());
            }
            catch (ArgumentInvalidException)
            {
                return(null, null);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                return(null, null);
            }
        }
Esempio n. 2
0
        public async Task <(OutPagingData, List <OutGetListForAdminPage>)> GetListForAdminPageAsync(string Title, int PageNum, int Take)
        {
            try
            {
                if (PageNum < 1)
                {
                    throw new ArgumentInvalidException("PageNum < 1");
                }

                if (Take < 1)
                {
                    throw new ArgumentInvalidException("Take < 1");
                }

                Title = string.IsNullOrWhiteSpace(Title) ? null : Title;

                // آماده سازی اولیه ی کویری
                var qData = _AccessLevelRepository.Get.Select(a => new OutGetListForAdminPage
                {
                    Id        = a.Id.ToString(),
                    Name      = a.Name,
                    CountUser = a.tblUsers.Count()
                })
                            .Where(a => Title != null ? a.Name.Contains(Title) : true)
                            .OrderBy(a => a.Name);

                // صفحه بندی داده ها
                var qPagingData = PagingData.Calc(await qData.LongCountAsync(), PageNum, Take);

                return(qPagingData, await qData.Skip((int)qPagingData.Skip).Take(qPagingData.Take).ToListAsync());
            }
            catch (ArgumentInvalidException ex)
            {
                return(null, null);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                return(null, null);
            }
        }
        GetListForAdminPageAsync(string title, int pageNum, int take)
        {
            try
            {
                if (pageNum < 1)
                {
                    throw new Exception("PageNum < 1");
                }

                if (take < 1)
                {
                    throw new Exception("Take < 1");
                }

                title = string.IsNullOrWhiteSpace(title) ? null : title;

                // آماده سازی اولیه ی کویری
                var qData = _accessLevelRepository.Get.Select(a => new OutGetListForAdminPage
                {
                    Id        = a.Id.ToString(),
                    Name      = a.Name,
                    CountUser = a.TblUsers.Count()
                })
                            //.Where(a => title != null ? a.Name.Contains(title) : true) //بهینه شده این خط در خط پایین هست
                            .Where(a => title == null || a.Name.Contains(title))
                            .OrderBy(a => a.Name);

                // صفحه بندی داده ها
                var qPagingData = PagingData.Calc(await qData.LongCountAsync(), pageNum, take);

                return(qPagingData, await qData.Skip((int)qPagingData.Skip).Take(qPagingData.Take).ToListAsync());
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(null, null);
            }
        }
        public async Task <(OutPagingData, List <OutGetListForAdminPage>)> GetListForAdminPageAsync(string Email, string PhoneNumber, string FullName, string Sort, int PageNum, int Take)
        {
            try
            {
                if (PageNum < 1)
                {
                    throw new ArgumentInvalidException("PageNum < 1");
                }

                if (Take < 1)
                {
                    throw new ArgumentInvalidException("Take < 1");
                }

                Email       = string.IsNullOrWhiteSpace(Email) ? null : Email;
                PhoneNumber = string.IsNullOrWhiteSpace(PhoneNumber) ? null : PhoneNumber;
                FullName    = string.IsNullOrWhiteSpace(FullName) ? null : FullName;

                // آماده سازی اولیه ی کویری
                var qData = _UserRepository.Get
                            .Select(a => new OutGetListForAdminPage
                {
                    Id                     = a.Id.ToString(),
                    AccessLevelId          = a.AccessLevelId.ToString(),
                    FullName               = a.FirstName + " " + a.LastName,
                    Email                  = a.Email,
                    PhoneNumber            = a.PhoneNumber,
                    AccessLevelName        = a.tblAccessLevels.Name,
                    Date                   = a.Date,
                    IsActive               = a.IsActive,
                    IsEmailConfirmed       = a.EmailConfirmed,
                    IsPhoneNumberConfirmed = a.PhoneNumberConfirmed
                })
                            .Where(a => FullName != null ? a.FullName.Contains(FullName) : true)
                            .Where(a => Email != null ? a.Email.Contains(Email) : true)
                            .Where(a => PhoneNumber != null ? a.PhoneNumber.Contains(PhoneNumber) : true)
                            .OrderByDescending(a => a.Date);

                #region مرتب سازی
                if (Sort != null)
                {
                    switch (Sort.ToLower())
                    {
                    case "fullnamedes":
                    {
                        qData = qData.OrderByDescending(a => a.FullName);
                        break;
                    }

                    case "fullnameaes":
                    {
                        qData = qData.OrderBy(a => a.FullName);
                        break;
                    }

                    case "emaildes":
                    {
                        qData = qData.OrderByDescending(a => a.Email);
                        break;
                    }

                    case "emailaes":
                    {
                        qData = qData.OrderBy(a => a.Email);
                        break;
                    }

                    case "isactivedes":
                    {
                        qData = qData.OrderByDescending(a => a.IsActive);
                        break;
                    }

                    case "isactiveaes":
                    {
                        qData = qData.OrderBy(a => a.IsActive);
                        break;
                    }

                    case "dateaes":
                    {
                        qData = qData.OrderByDescending(a => a.Date);
                        break;
                    }

                    case "datedes":
                    {
                        qData = qData.OrderBy(a => a.Date);
                        break;
                    }

                    case "confirmaccountdes":
                    {
                        qData = qData.OrderByDescending(a => a.IsEmailConfirmed);
                        break;
                    }

                    case "confirmaccountaes":
                    {
                        qData = qData.OrderBy(a => a.IsEmailConfirmed);
                        break;
                    }

                    case "confirmphonenumberdes":
                    {
                        qData = qData.OrderByDescending(a => a.IsPhoneNumberConfirmed);
                        break;
                    }

                    case "confirmphonenumberAes":
                    {
                        qData = qData.OrderBy(a => a.IsPhoneNumberConfirmed);
                        break;
                    }

                    default:
                    {
                        qData = qData.OrderByDescending(a => a.Date);
                        break;
                    }
                    }
                }
                #endregion

                // صفحه بندی داده ها
                var qPagingData = PagingData.Calc(await qData.LongCountAsync(), PageNum, Take);

                return(qPagingData, await qData.Skip((int)qPagingData.Skip).Take(qPagingData.Take).ToListAsync());
            }
            catch (ArgumentInvalidException)
            {
                return(null, null);
            }
            catch (Exception ex)
            {
                _Logger.Error(ex);
                return(null, null);
            }
        }