Esempio n. 1
0
        public async virtual Task <IHttpActionResult> CreateKeyHolding(string userName, string token, [FromBody] CreateKeyHoldingModel createKeyHoldingModel)
        {
            var tenantId        = createKeyHoldingModel.TenantId;
            var homeOwerId      = createKeyHoldingModel.HomeOwerId;
            var communityId     = createKeyHoldingModel.CommunityId;
            var visitorName     = createKeyHoldingModel.VisitorName;
            var visiteStartTime = createKeyHoldingModel.VisiteStartTime;
            var visiteEndTime   = createKeyHoldingModel.VisiteEndTime;
            var password        = createKeyHoldingModel.Password;
            var keyTypes        = createKeyHoldingModel.KeyTypes;

            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(homeOwerId);

                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                foreach (var keyType in keyTypes)
                {
                    var keyHolding = new KeyHolding(tenantId, visitorName, visiteStartTime, visiteEndTime, password, keyType, homeOwerId, communityId);
                    await _keyHoldingManager.CreateAsync(keyHolding);
                }

                return(Ok());
            }
        }
Esempio n. 2
0
        public virtual async Task <IHttpActionResult> ApplyAccessKey(string userName, string token, [FromBody] ApplyAccessKeyModel applyAccessKeyModel)
        {
            var tenantId    = applyAccessKeyModel.TenantId;
            var homeOwerId  = applyAccessKeyModel.HomeOwerId;
            var communityId = applyAccessKeyModel.CommunityId;
            var doorType    = applyAccessKeyModel.DoorType;
            var vilidity    = applyAccessKeyModel.Vilidity;

            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var doors = from d in _doorManager.DoorRepository.GetAll()
                            where d.DoorType == doorType.ToString() && d.IsAuth
                            select d;
                var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(homeOwerId);

                if (homeOwer.Doors.Count == 0)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerDoorNotExists);
                }
                else
                {
                    foreach (var door in homeOwer.Doors)
                    {
                        var accessKey = new AccessKey(tenantId, door, homeOwer, vilidity, communityId);
                        await _accessKeyManager.CreateAsync(accessKey);
                    }
                    return(Ok());
                }
            }
        }
Esempio n. 3
0
        public async virtual Task <IHttpActionResult> GatherDelivery(string userName, string token, [FromBody] GatherDeliveryModel gatherDeliveryModel)
        {
            var tenantId   = gatherDeliveryModel.TenantId;
            var homeOwerId = gatherDeliveryModel.HomeOwerId;

            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(homeOwerId);

                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }

                var deliverys = await _deliveryManager.DeliveryRepository.GetAllListAsync(d => d.IsGather == false && d.HomeOwerId == homeOwerId);

                foreach (var delivery in deliverys)
                {
                    delivery.IsGather   = true;
                    delivery.GatherTime = Clock.Now;
                    delivery.Token      = string.Empty;
                    await _deliveryManager.UpdateAsync(delivery);
                }

                return(Ok());
            }
        }
Esempio n. 4
0
        public async virtual Task <IHttpActionResult> AuthUserValidateCode(string userName, string token, [FromBody] AuthUserValidateCodeModel authUserValidateCodeModel)
        {
            var tenantId    = authUserValidateCodeModel.TenantId;
            var phone       = authUserValidateCodeModel.Phone;
            var communityId = authUserValidateCodeModel.CommunityId;
            var code        = authUserValidateCodeModel.Code;

            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwerUser = await _homeOwerUserManager.GetHomeOwerUserByUserName(userName);

                var homeOwer = await _homeOwerManager.GetHomeOwerByNameAndPhoneAndCommunityId(communityId, phone);

                if (homeOwerUser == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserNotExists);
                }
                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                else if (homeOwer.Status == EHomeOwerStatusType.Done)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserIsExists);
                }
                else
                {
                    //验证验证码是否正确
                    SMSClient smsClient = new SMSClient();
                    var       response  = smsClient.Verify(homeOwer.ValidateCode, code);
                    if (response.Status == "0")
                    {
                        homeOwerUser.HomeOwerId  = homeOwer.Id;
                        homeOwerUser.CommunityId = homeOwer.CommunityId;
                        homeOwerUser.TenantId    = tenantId;
                        homeOwer.ValidateCode    = string.Empty;
                        homeOwer.Status          = EHomeOwerStatusType.Waiting;
                        await _homeOwerUserManager.UpdateAsync(homeOwerUser);

                        await _homeOwerManager.UpdateAsync(homeOwer);

                        return(Ok(new { HomeOwer = AutoMapper.Mapper.Map <HomeOwerDto>(homeOwer), Community = AutoMapper.Mapper.Map <CommunityDto>(homeOwer.FlatNumbers.First().Building.Community) }));
                    }
                    else
                    {
                        throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.ValidateCodeError);
                    }
                }
            }
        }
Esempio n. 5
0
        public virtual async Task <IHttpActionResult> GetAccessKeys(long id, string userName, string token, int?tenantId = null)
        {
            base.AuthUser();
            //var tenant = await _tenantManager.FindByTenancyNameAsync(tenancyName);
            //int? tenantId = tenant == null ? (int?)null : tenant.Id;
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = _homeOwerManager.HomeOwerRepository.FirstOrDefault(h => h.Id == id);
                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                var homeOwerUser = await _homeOwerUserManager.HomeOwerUserRepository.FirstOrDefaultAsync(hu => hu.HomeOwerId == homeOwer.Id);

                if (homeOwerUser == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserNotExists);
                }
                if (homeOwer.Status == EHomeOwerStatusType.Waiting)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserIsAuthing);
                }
                var list = (from a in _accessKeyManager.AccessKeyRepository.GetAll()
                            join d in _doorManager.DoorRepository.GetAll() on a.Door equals d
                            where a.HomeOwer.Id == homeOwer.Id && d.IsAuth
                            select new { KeyId = a.LockId, KeyValidity = a.Validity, CommunityId = d.DepartId, KeyName = d.Name, KeyType = d.DoorType, IsAuth = a.IsAuth }
                            ).ToList();

                var result = new ArrayList();
                list.ForEach(i =>
                {
                    result.Add(new
                    {
                        i.KeyId,
                        i.KeyValidity,
                        i.CommunityId,
                        i.KeyName,
                        KeyType = EDoorTypeUtils.GetEnum(i.KeyType),
                        i.IsAuth
                    });
                });

                return(Ok(new
                {
                    AppKey = _doorSystemSdk.Params["app_key"],
                    UserId = homeOwer.Phone,
                    AccessKeys = result
                }));
            }
        }
Esempio n. 6
0
        public virtual IHttpActionResult ValidateCode(string requestId, string code)
        {
            SMSClient smsClient = new SMSClient();
            var       response  = smsClient.Verify(requestId, code);

            if (response.Status == "0")
            {
                return(Ok());
            }
            else
            {
                throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.SMSSendCodeError, response.ErrorText);
            }
        }
Esempio n. 7
0
        public virtual IHttpActionResult SendValidateCode(string from, string countryCode, string to)
        {
            SMSClient smsClient = new SMSClient();
            var       response  = smsClient.SendVerify(from, countryCode + to);

            if (response.Status == "0")
            {
                return(Ok(new { requestId = response.RequestId }));
            }
            else
            {
                throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.SMSSendCodeError, response.ErrorText);
            }
        }
Esempio n. 8
0
        public async virtual Task <IHttpActionResult> AuthUserSendCode(string userName, string token, [FromBody] AuthUserSendCodeModel authUserSendCodeModel)
        {
            var tenantId    = authUserSendCodeModel.TenantId;
            var communityId = authUserSendCodeModel.CommunityId;
            var phone       = authUserSendCodeModel.Phone;

            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwerUser = await _homeOwerUserManager.GetHomeOwerUserByUserName(userName);

                var homeOwer = await _homeOwerManager.GetHomeOwerByNameAndPhoneAndCommunityId(communityId, phone);

                //if (homeOwerUser == null)
                //{
                //    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserNotExists);
                //}
                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                if (homeOwer.Status == EHomeOwerStatusType.Done)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserIsExists);
                }
                else
                {
                    //发送验证码
                    SMSClient smsClient        = new SMSClient();
                    var       phoneCountryCode = await SettingManager.GetSettingValueAsync(AppSettings.UserManagement.PhoneCountryCode);

                    var response = smsClient.SendVerify("Localink", phoneCountryCode + homeOwer.Phone);
                    if (response.Status == "0")
                    {
                        homeOwer.ValidateCode = response.RequestId;
                        await _homeOwerManager.UpdateAsync(homeOwer);

                        return(Ok());
                    }
                    else
                    {
                        throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.SMSSendCodeError, response.ErrorText);
                    }
                }
            }
        }
Esempio n. 9
0
        public async virtual Task <IHttpActionResult> ReplaceGatherDelivery(string userName, string token, long homeOwerId, long deliveryId, string code, int?tenantId = null)
        {
            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(homeOwerId);

                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                var delivery = await _deliveryManager.DeliveryRepository.FirstOrDefaultAsync(deliveryId);

                if (delivery.IsGather)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.DeliveryIsGathered);
                }
                if (delivery.HomeOwerId != homeOwerId)
                {
                    if (delivery.Token == code)
                    {
                        delivery.IsGather          = true;
                        delivery.GatherTime        = Clock.Now;
                        delivery.IsReplace         = true;
                        delivery.ReplaceHomeOwerId = homeOwerId;
                        delivery.Token             = string.Empty;
                        await _deliveryManager.UpdateAsync(delivery);

                        return(Ok());
                    }
                    else
                    {
                        throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.ValidateCodeError);
                    }
                }
                throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.UnknowError);
            }
        }
        public async virtual Task <IHttpActionResult> GetMessages(string userName, string token, int skipCount, int maxResultCount, string sorting = null, int?tenantId = null)
        {
            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwerUser = await _homeOwerUserManager.GetHomeOwerUserByUserName(userName);

                if (homeOwerUser.HomeOwerId == 0)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                var input = new GetMessagesInput();
                input.HomeOwerId     = homeOwerUser.HomeOwerId;
                input.MaxResultCount = maxResultCount;
                input.SkipCount      = skipCount;
                if (!string.IsNullOrEmpty(sorting))
                {
                    input.Sorting = sorting;
                }

                return(Ok(await _messageService.GetAllMessages(input)));
            }
        }
Esempio n. 11
0
        public virtual async Task <IHttpActionResult> FreshAccessKeys(long id, string userName, string token, int?tenantId = null)
        {
            base.AuthUser();
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = _homeOwerManager.HomeOwerRepository.FirstOrDefault(h => h.Id == id);
                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                var homeOwerUser = await _homeOwerUserManager.HomeOwerUserRepository.FirstOrDefaultAsync(hu => hu.HomeOwerId == homeOwer.Id);

                if (homeOwerUser == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserNotExists);
                }
                if (homeOwer.Status == EHomeOwerStatusType.Waiting)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerUserIsAuthing);
                }
                //获取业主门禁,判断是否已经添加钥匙,是否已经认证
                foreach (var door in homeOwer.Doors)
                {
                    var key = await _accessKeyManager.AccessKeyRepository.FirstOrDefaultAsync(k => k.Door == door && k.HomeOwer.Id == homeOwer.Id);

                    if (key == null)
                    {
                        key = new AccessKey(CurrentUnitOfWork.GetTenantId(), door, homeOwer, DateTime.Now.AddYears(50), homeOwer.CommunityId);

                        try
                        {
                            await _accessKeyManager.CreateAsync(key);
                        }
                        catch (UserFriendlyException ex)
                        {
                            if (ex.Message == "10")
                            {
                                ErrorCodeTypeUtils.ThrowError(ErrorCodeType.CreatedAccessKeyIsExistsButIsNotAuth);
                            }
                            else if (ex.Message == "11")
                            {
                                ErrorCodeTypeUtils.ThrowError(ErrorCodeType.CreatedAccessKeyIsExists);
                            }
                        }
                        key.GetKey(door.PId, homeOwer.Phone, key.Validity);
                    }
                    else if (!key.IsAuth)
                    {
                        key.GetKey(door.PId, homeOwer.Phone, key.Validity);
                    }
                }

                var list = (from a in _accessKeyManager.AccessKeyRepository.GetAll()
                            join d in _doorManager.DoorRepository.GetAll() on a.Door equals d
                            where a.HomeOwer.Id == homeOwer.Id && d.IsAuth
                            select new { KeyId = a.LockId, KeyValidity = a.Validity, CommunityId = d.DepartId, KeyName = d.Name, KeyType = d.DoorType, IsAuth = a.IsAuth }
                            ).ToList();

                var result = new ArrayList();
                list.ForEach(i =>
                {
                    result.Add(new
                    {
                        i.KeyId,
                        i.KeyValidity,
                        i.CommunityId,
                        i.KeyName,
                        KeyType = EDoorTypeUtils.GetEnum(i.KeyType),
                        i.IsAuth
                    });
                });

                return(Ok(new
                {
                    AppKey = _doorSystemSdk.Params["app_key"],
                    UserId = homeOwer.Phone,
                    AccessKeys = result
                }));
            }
        }
        public async virtual Task <IHttpActionResult> UploadFiles(string userName, string token, [SwaggerFileUpload] string reportFile = null)
        {
            base.AuthUser();
            //验证是否是 multipart/form-data
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
            }

            var tenantId    = base.User.TenantId;
            var homeOwerId  = base.User.HomeOwerId;
            var communityId = base.User.CommunityId;

            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var homeOwer = await _homeOwerManager.HomeOwerRepository.FirstOrDefaultAsync(homeOwerId.Value);

                if (homeOwer == null)
                {
                    throw ErrorCodeTypeUtils.ThrowError(ErrorCodeType.HomeOwerNotExists);
                }
                Community community = null;
                App       app       = null;

                community = await _communityManager.CommunityRepository.FirstOrDefaultAsync(communityId.Value);

                if (app == null && community != null)
                {
                    app = await _appManager.AppRepository.FirstOrDefaultAsync(community.AppId);
                }

                List <string> fileArray = new List <string>();
                var           files     = HttpContext.Current.Request.Files;


                //保存reportFile, key = reportFile_file
                //var file = files["reportFile_file"];
                //var fileName = reportFile;
                //if (string.IsNullOrEmpty(fileName))
                //    reportFile = DateTime.Now.Ticks.ToString();
                //fileName = fileName + Path.GetExtension(file.FileName);
                //var filePath = PathUtils.Combine(EFileUploadTypeUtils.GetFileUploadPath(EFileUploadType.AppCommon.ToString(), _appFolders, app), fileName);
                //var relateFileUrl = filePath.Replace(System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd(new char[] { '\\' }), string.Empty);
                //DirectoryUtils.CreateDirectoryIfNotExists(filePath);
                //file.SaveAs(filePath);
                //fileArray.Add(relateFileUrl);

                for (int i = 0; i < files.Count; i++)
                {
                    var file     = files[i];
                    var fileName = reportFile;
                    if (string.IsNullOrEmpty(fileName))
                    {
                        fileName = DateTime.Now.Ticks.ToString();
                    }
                    fileName = fileName + Path.GetExtension(file.FileName);
                    var filePath      = PathUtils.Combine(EFileUploadTypeUtils.GetFileUploadPath(EFileUploadType.AppCommon.ToString(), _appFolders, app), fileName);
                    var relateFileUrl = filePath.Replace(System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd(new char[] { '\\' }), string.Empty);
                    DirectoryUtils.CreateDirectoryIfNotExists(filePath);
                    file.SaveAs(filePath);
                    fileArray.Add(relateFileUrl);
                }

                return(Ok(new { BaseUrl = Request.RequestUri.Host, Files = fileArray }));
            }
        }