public async Task <PagedResultOutput <HomeOwerUserDto> > GetHomeOwerUsers(GetHomeOwerUsersInput input)
        {
            using (CurrentUnitOfWork.EnableFilter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name))
            {
                using (CurrentUnitOfWork.SetFilterParameter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name, AbpZeroTemplateConsts.AdminCommunityFilterClass.ParameterName, await GetAdminCommunityIdList()))
                {
                    var query = _manager.FindHomeOwerUserList(input.Sorting);
                    query.Include("HomeOwer");
                    var totalCount = await query.CountAsync();

                    var items = await query.OrderByDescending(h => h.CreationTime).PageBy(input).ToListAsync();

                    return(new PagedResultOutput <HomeOwerUserDto>(
                               totalCount,
                               items.Select(
                                   item =>
                    {
                        var dto = item.MapTo <HomeOwerUserDto>();
                        return dto;
                    }
                                   ).ToList()
                               ));
                }
            }
        }
예제 #2
0
        public async Task <PagedResultOutput <AccessKeyDto> > GetAccessKeys(GetAccessKeysInput input)
        {
            using (CurrentUnitOfWork.EnableFilter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name))
            {
                using (CurrentUnitOfWork.SetFilterParameter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name, AbpZeroTemplateConsts.AdminCommunityFilterClass.ParameterName, await GetAdminCommunityIdList()))
                {
                    var query = _manager.FindAccessKeyList(input.Sorting);

                    var homeOwerDic = new Dictionary <long, string>();
                    var doorDic     = new Dictionary <long, string>();

                    var totalCount = await query.CountAsync();

                    var items = await query.PageBy(input).ToListAsync();

                    items.ForEach(i =>
                    {
                        if (!homeOwerDic.Keys.Contains(i.HomeOwer.Id))
                        {
                            homeOwerDic.Add(i.HomeOwer.Id, string.Empty);
                        }
                        if (!doorDic.Keys.Contains(i.Door.Id))
                        {
                            doorDic.Add(i.Door.Id, string.Empty);
                        }
                    });

                    var homeOwerNames = from h in _homeOwerManager.HomeOwerRepository.GetAll()
                                        where homeOwerDic.Keys.Contains(h.Id)
                                        select new { h.Id, h.Name };
                    await homeOwerNames.ForEachAsync(h =>
                    {
                        homeOwerDic[h.Id] = h.Name;
                    });

                    var doorNames = from d in _doorManager.DoorRepository.GetAll()
                                    where doorDic.Keys.Contains(d.Id)
                                    select new { d.Id, d.Name };
                    await doorNames.ForEachAsync(d =>
                    {
                        doorDic[d.Id] = d.Name;
                    });


                    return(new PagedResultOutput <AccessKeyDto>(
                               totalCount,
                               items.Select(
                                   item =>
                    {
                        var dto = item.MapTo <AccessKeyDto>();
                        dto.HomeOwerName = homeOwerDic[item.HomeOwer.Id];
                        dto.DoorName = doorDic[item.Door.Id];
                        return dto;
                    }
                                   ).ToList()
                               ));
                }
            }
        }
예제 #3
0
        public async Task CreateTenant(CreateTenantInputDto inputDto)
        {
            if ((await _tenantManager.FindByTenancyNameAsync(inputDto.TenancyName)).IsNotNull())
            {
                throw new HozaruException(string.Format("Toko Id {0} tidak bisa digunakan. Silahkan gunakan Toko Id lain.", inputDto.TenancyName));
            }

            var district = _districtRepository.Get(inputDto.DistrictId);

            Validate.Found(district, "Kecamatan");

            var tenant         = new Tenant(inputDto.TenancyName, inputDto.Name, inputDto.WhatsappNumber, inputDto.Address, inputDto.Phone, district);
            var defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName);

            if (defaultEdition != null)
            {
                tenant.EditionId = defaultEdition.Id;
            }

            var createTenantResult = await _tenantManager.CreateAsync(tenant);

            createTenantResult.CheckErrors();
            await CurrentUnitOfWork.SaveChangesAsync(); //To get new tenant's id.

            CurrentUnitOfWork.DisableFilter(HozaruDataFilters.MayHaveTenant);
            CurrentUnitOfWork.DisableFilter(HozaruDataFilters.MustHaveTenant);
            CurrentUnitOfWork.EnableFilter(HozaruDataFilters.MayHaveTenant);
            using (CurrentUnitOfWork.SetFilterParameter(HozaruDataFilters.MayHaveTenant, HozaruDataFilters.Parameters.TenantId, tenant.Id))
            {
                IList <Role> createdRoles = await _roleAppService.CreateDefaultRoles(tenant.Id);

                foreach (var role in createdRoles)
                {
                    await _roleManager.GrantAllPermissionsAsync(role);
                }

                await CurrentUnitOfWork.SaveChangesAsync();

                //Create admin user for the tenant
                var adminUser        = User.CreateTenantAdminUser(tenant, inputDto.AdminEmailAddress, inputDto.Password, inputDto.FirstName, inputDto.LastName);
                var createUserResult = await _userManager.CreateAsync(adminUser);

                createUserResult.CheckErrors();
                await CurrentUnitOfWork.SaveChangesAsync(); //To get admin user's id

                var adminRole = _roleManager.Roles.Single(r => r.Name == "Admin");
                //Assign admin user to role!
                var addRoleResult = await _userManager.AddToRoleAsync(adminUser.Id, adminRole.Name);

                addRoleResult.CheckErrors();

                //await _tenantConfigurationAppService.CreateNew(tenant);

                await CurrentUnitOfWork.SaveChangesAsync();
            }

            _apiKeyService.CreateApiKey(tenant.Id);
        }
예제 #4
0
 public async Task <PagedResultOutput <DeliveryDto> > GetDeliverys(GetDeliverysInput input)
 {
     using (CurrentUnitOfWork.EnableFilter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name))
     {
         using (CurrentUnitOfWork.SetFilterParameter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name, AbpZeroTemplateConsts.AdminCommunityFilterClass.ParameterName, await GetAdminCommunityIdList()))
         {
             return(await ProcessGet(input));
         }
     }
 }
예제 #5
0
 public IEnumerable <Caja> GetAllList(int AgenciaId)
 {
     if (!CurrentUnitOfWork.IsFilterEnabled(DataFilters.MustHaveAgency))
     {
         CurrentUnitOfWork.EnableFilter(DataFilters.MustHaveAgency);
     }
     using (CurrentUnitOfWork.SetFilterParameter(DataFilters.MustHaveAgency,
                                                 DataFilters.MustHaveAgencyParam, AgenciaId)) {
         return(_Repository.GetAll());
     }
 }
예제 #6
0
        public async Task <PagedResultOutput <DoorDto> > GetDoors(GetDoorsInput input)
        {
            using (CurrentUnitOfWork.EnableFilter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name))
            {
                using (CurrentUnitOfWork.SetFilterParameter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name, AbpZeroTemplateConsts.AdminCommunityFilterClass.ParameterName, await GetAdminCommunityIdList()))
                {
                    var query = _manager.FindDoorList(input.Sorting);

                    if (input.CommunityId.HasValue)
                    {
                        query = query.Where(d => d.CommunityId == input.CommunityId.Value);
                    }

                    if (input.HomeOwerId.HasValue)
                    {
                        var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(input.HomeOwerId.Value);

                        var ds   = homeOwer.Doors.ToList();
                        var dIds = new List <long>();
                        ds.ForEach(d =>
                        {
                            dIds.Add(d.Id);
                        });

                        query = from d in query
                                where dIds.Contains(d.Id)
                                select d;
                    }

                    var totalCount = await query.CountAsync();

                    var items = await query.OrderByDescending(d => d.CreationTime).PageBy(input).ToListAsync();

                    return(new PagedResultOutput <DoorDto>(
                               totalCount,
                               items.Select(
                                   item =>
                    {
                        var dto = item.MapTo <DoorDto>();
                        return dto;
                    }
                                   ).ToList()
                               ));
                }
            }
        }
예제 #7
0
        public async Task <PagedResultOutput <GetDealRecordListDto> > GetDealRecordListPagedAsync(GetDealRecordListPagedInput input)
        {
            if (input.TenantId.HasValue)
            {
                CurrentUnitOfWork.EnableFilter(AbpDataFilters.MustHaveTenant);
                CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MustHaveTenant, AbpDataFilters.Parameters.TenantId, input.TenantId);
            }

            var query = _dealRecordRepository.GetAll()
                        .Include(p => p.Tenant)
                        .WhereIf(!input.SearchText.IsNullOrEmpty(), p => p.Name.Contains(input.SearchText) || p.No.Contains(input.SearchText) || p.OutNo.Contains(input.SearchText))
                        .WhereIf(input.Type.HasValue, p => p.Type == input.Type.Value)
                        .WhereIfDynamic(input.StartTime.HasValue, input.SearchTime + ">", input.StartTime)
                        .WhereIfDynamic(input.EndTime.HasValue, input.SearchTime + "<", input.EndTime);
            var count = await query.CountAsync();

            var list = await query.OrderBy(input).PageBy(input).ToListAsync();

            return(new PagedResultOutput <GetDealRecordListDto>(count, list.MapTo <List <GetDealRecordListDto> >()));
        }
예제 #8
0
        /// <summary>
        /// 查询业主
        /// ===============================
        /// 1. 查询条件:CommunityId, CommunityName, BuildingId, BuildingName, HomeOwerName, FlatNo, UserGroup, Status
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <PagedResultOutput <HomeOwerDto> > GetHomeOwers(GetHomeOwersInput input)
        {
            using (CurrentUnitOfWork.EnableFilter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name))
            {
                using (CurrentUnitOfWork.SetFilterParameter(AbpZeroTemplateConsts.AdminCommunityFilterClass.Name, AbpZeroTemplateConsts.AdminCommunityFilterClass.ParameterName, await GetAdminCommunityIdList()))
                {
                    // var query = _manager.FindHomeOwerList(input.Sorting);

                    var query = from h in _manager.HomeOwerRepository.GetAll()
                                from f in h.FlatNumbers.DefaultIfEmpty()
                                where h.IsLock == false && h.CommunityId == input.CommunityId
                                select new
                    {
                        h.Id,
                        h.CommunityName,
                        h.CommunityId,
                        f.Building.BuildingName,
                        BuildingId = f.BuildingId,
                        FlatNoId   = f.Id,
                        f.FlatNo,
                        HomeOwerName = h.Name,
                        h.Forename,
                        h.Surname,
                        h.Status,
                        h.Phone,
                        h.Email,
                        h.Title,
                        h.CreationTime,
                        h.UserGroup,
                        AccessStatus    = h.Status == EHomeOwerStatusType.Done ? "Active" : "N/A",
                        CreationTimeStr = h.CreationTime.ToString()
                    };


                    //业主状态
                    if (input.Status.HasValue)
                    {
                        query = query.Where(h => h.Status == input.Status.Value);
                    }
                    //单元楼
                    if (input.BuildingId.HasValue)
                    {
                        query = query.Where(h => h.BuildingId == input.BuildingId.Value);
                    }
                    //小区,单元楼,门牌号,业主名称
                    if (!string.IsNullOrEmpty(input.Keywords))
                    {
                        query = query.Where(h =>
                                            h.CommunityName.Contains(input.Keywords) ||
                                            h.Forename.Contains(input.Keywords) ||
                                            h.Surname.Contains(input.Keywords) ||
                                            h.BuildingName.Contains(input.Keywords) ||
                                            h.FlatNo.Contains(input.Keywords));
                    }
                    //业主类型
                    if (!string.IsNullOrEmpty(input.UserGroup))
                    {
                        query = query.Where(h => h.UserGroup.ToString() == input.UserGroup);
                    }

                    var totalCount = await query.CountAsync();

                    var items = await query.OrderByDescending(h => h.CreationTime).PageBy(input).ToListAsync();

                    return(new PagedResultOutput <HomeOwerDto>(
                               totalCount,
                               items.Select(
                                   item =>
                    {
                        return Mapper.DynamicMap <HomeOwerDto>(item);
                        //var dto = item.MapTo<HomeOwerDto>();
                        //return dto;
                    }
                                   ).ToList()
                               ));
                }
            }
        }
예제 #9
0
        public virtual async Task <ActionResult> Register(TenantRegistrationViewModel model)
        {
            try
            {
                CheckTenantRegistrationIsEnabled();

                CheckModelState();

                if (UseCaptchaOnRegistration())
                {
                    var recaptchaHelper = this.GetRecaptchaVerificationHelper();
                    if (recaptchaHelper.Response.IsNullOrEmpty())
                    {
                        throw new UserFriendlyException(L("CaptchaCanNotBeEmpty"));
                    }

                    if (recaptchaHelper.VerifyRecaptchaResponse() != RecaptchaVerificationResult.Success)
                    {
                        throw new UserFriendlyException(L("IncorrectCaptchaAnswer"));
                    }
                }

                //Getting host-specific settings
                var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault);

                var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin);

                var defaultEditionIdValue = await SettingManager.GetSettingValueForApplicationAsync(AppSettings.TenantManagement.DefaultEdition);

                int?defaultEditionId = null;

                if (!string.IsNullOrEmpty(defaultEditionIdValue) && (await _editionManager.FindByIdAsync(Convert.ToInt32(defaultEditionIdValue)) != null))
                {
                    defaultEditionId = Convert.ToInt32(defaultEditionIdValue);
                }

                var tenantId = await _tenantManager.CreateWithAdminUserAsync(
                    model.TenancyName,
                    model.Name,
                    model.AdminPassword,
                    model.AdminEmailAddress,
                    isNewRegisteredTenantActiveByDefault,
                    defaultEditionId,
                    false,
                    isEmailConfirmationRequiredForLogin);

                ViewBag.UseCaptcha = UseCaptchaOnRegistration();

                var tenant = await _tenantManager.GetByIdAsync(tenantId);

                await _appNotifier.NewTenantRegisteredAsync(tenant);

                CurrentUnitOfWork.EnableFilter(AbpDataFilters.MayHaveTenant);
                CurrentUnitOfWork.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, tenant.Id);

                var user = await _userManager.FindByNameAsync(Authorization.Users.User.AdminUserName);

                //Directly login if possible
                if (user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin))
                {
                    var loginResult = await GetLoginResultAsync(user.UserName, model.AdminPassword, tenant.TenancyName);

                    if (loginResult.Result == AbpLoginResultType.Success)
                    {
                        await SignInAsync(loginResult.User, loginResult.Identity);

                        return(Redirect(Url.Action("Index", "Application")));
                    }

                    Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result);
                }

                return(View("RegisterResult", new TenantRegisterResultViewModel
                {
                    TenancyName = model.TenancyName,
                    Name = model.Name,
                    UserName = Authorization.Users.User.AdminUserName,
                    EmailAddress = model.AdminEmailAddress,
                    IsActive = isNewRegisteredTenantActiveByDefault,
                    IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin
                }));
            }
            catch (UserFriendlyException ex)
            {
                ViewBag.UseCaptcha   = UseCaptchaOnRegistration();
                ViewBag.ErrorMessage = ex.Message;

                return(View("Index", model));
            }
        }
예제 #10
0
 protected void EnableFamilyDataFilter()
 {
     CurrentUnitOfWork.EnableFilter(ChimaDataFilter.FamillyDataFilter);
 }