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()); } }
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()); } } }
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()); } }
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); } } } }
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 })); } }
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); } }
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); } }
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); } } } }
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))); } }
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 })); } }