public async Task DongDau(VanThuXuLy99InputDto input) { var vanThuId = _session.UserId; try { var hoSo = await _hoSoRepos.FirstOrDefaultAsync(x => x.Id == input.HoSoId); var hosoxl = await _hoSoXuLyRepos.FirstOrDefaultAsync(input.HoSoXuLyId); if (hosoxl != null && hoSo != null && hosoxl.Id > 0) { if (hosoxl.HoSoIsDat == true) { hoSo.TrangThaiHoSo = (int)CommonENum.TRANG_THAI_HO_SO.DA_HOAN_TAT; hoSo.NgayTraKetQua = DateTime.Now; } else { hoSo.TrangThaiHoSo = (int)CommonENum.TRANG_THAI_HO_SO.SUA_DOI_BO_SUNG; hoSo.IsHoSoBS = true; } hosoxl.DonViXuLy = (int)CommonENum.DON_VI_XU_LY.DOANH_NGHIEP; hosoxl.DonViGui = (int)CommonENum.DON_VI_XU_LY.VAN_THU; hosoxl.NguoiGuiId = _session.UserId; hosoxl.NguoiXuLyId = hoSo.CreatorUserId; hosoxl.NgayGui = DateTime.Now; hosoxl.VanThuDaDuyet = true; hosoxl.VanThuId = vanThuId; hosoxl.VanThuIsCA = true; hosoxl.VanThuNgayDongDau = DateTime.Now; hosoxl.DuongDanTepCA = input.DuongDanTepCA; hosoxl.GiayTiepNhanCA = input.GiayTiepNhanCA; if (hosoxl.HoSoIsDat == true) { hoSo.GiayTiepNhan = input.GiayTiepNhanCA; hoSo.GiayTiepNhanFull = input.GiayTiepNhanCA; } else { hoSo.GiayTiepNhan = null; hoSo.GiayTiepNhanFull = null; } hosoxl.YKienGui = null; await _hoSoRepos.UpdateAsync(hoSo); await _hoSoXuLyRepos.UpdateAsync(hosoxl); if (hosoxl.HoSoIsDat != true) { #region HoSo_Clone var hoSoClone = new XHoSoDto(); hoSo.MapTo(hoSoClone); hoSoClone.PId = hoSo.PId != null ? hoSo.PId : hoSo.Id; var insertInput = hoSoClone.MapTo <XHoSo>(); long idClone = await _hoSoRepos.InsertAndGetIdAsync(insertInput); CurrentUnitOfWork.SaveChanges(); var teps = _hoSoTepDinhKemRepos.GetAll() .Where(x => x.HoSoId == input.HoSoId); foreach (var tep in teps) { var tepNew = new XHoSoTepDinhKem { HoSoId = insertInput.Id, IsActive = tep.IsActive, DuongDanTep = tep.DuongDanTep, IsCA = tep.IsCA, DaTaiLen = tep.DaTaiLen, LoaiTepDinhKem = tep.LoaiTepDinhKem, MoTaTep = tep.MoTaTep, TenTep = tep.TenTep }; await _hoSoTepDinhKemRepos.InsertAsync(tepNew); } #endregion } #region Lưu lịch sử var _history = new XHoSoXuLyHistory(); _history.ThuTucId = hosoxl.ThuTucId; _history.HoSoXuLyId = hosoxl.Id; _history.HoSoId = hosoxl.HoSoId; _history.IsHoSoBS = hosoxl.IsHoSoBS; _history.NguoiXuLyId = _session.UserId; _history.NoiDungYKien = null; _history.TrangThaiCV = hosoxl.TrangThaiCV; _history.DonViXuLy = (int)CommonENum.DON_VI_XU_LY.VAN_THU; _history.ActionEnum = (int)CommonENum.FORM_FUNCTION.VAN_THU_DONG_DAU; _history.HoSoIsDat = hosoxl.HoSoIsDat; _history.HoSoIsDat_Pre = hosoxl.HoSoIsDat; await _hoSoXuLyHistoryRepos.InsertAndGetIdAsync(_history); #endregion } } catch (Exception ex) { Logger.Fatal(ex.Message); } }
/// <summary> /// 租户注册 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <RegisterTenantOutput> RegisterTenant(RegisterTenantInput input) { using (CurrentUnitOfWork.SetTenantId(null)) { CheckTenantRegistrationIsEnabled(); //if (UseCaptchaOnRegistration())//使用手机验证码作为验证 //{ // await _captchaValidator.ValidateAsync(input.CaptchaResponse); //} switch (input.Type) { case RegisterType.Telephone: { if (input.PhoneNumber.IsNullOrWhiteSpace()) { throw new UserFriendlyException(L("Identity.RequiredPhoneNumber")); } await _verificationCodeManager.CheckRegistrationVerificationCode(input.PhoneNumber, input.RegisterCode); break; } case RegisterType.Email: { if (input.EmailAddress.IsNullOrWhiteSpace()) { throw new UserFriendlyException(L("Identity.RequiredEmail")); } await _verificationCodeManager.CheckRegistrationVerificationCode(input.EmailAddress, input.RegisterCode); break; } default: break; } //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( input.TenancyName, input.TenancyName, input.Password, input.EmailAddress ?? string.Empty, input.PhoneNumber, null, isNewRegisteredTenantActiveByDefault, defaultEditionId, false, true, null, false, _appUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); var tenant = await TenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); return(new RegisterTenantOutput { TenantId = tenant.Id, TenancyName = input.TenancyName, Name = input.TenancyName, UserName = input.TenancyName, IsActive = tenant.IsActive, EmailAddress = input.EmailAddress, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin, IsTenantActive = tenant.IsActive }); } }
public async Task <RegisterTenantOutput> RegisterTenant(RegisterTenantInput input) { if (input.EditionId.HasValue) { await CheckEditionSubscriptionAsync(input.EditionId.Value, input.SubscriptionStartType, input.Gateway, input.PaymentId); } else { await CheckRegistrationWithoutEdition(); } using (CurrentUnitOfWork.SetTenantId(null)) { CheckTenantRegistrationIsEnabled(); if (UseCaptchaOnRegistration()) { await _recaptchaValidator.ValidateAsync(input.CaptchaResponse); } //Getting host-specific settings var isNewRegisteredTenantActiveByDefault = await SettingManager.GetSettingValueForApplicationAsync <bool>(AppSettings.TenantManagement.IsNewRegisteredTenantActiveByDefault); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForApplicationAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin); DateTime?subscriptionEndDate = null; var isInTrialPeriod = false; if (input.EditionId.HasValue) { isInTrialPeriod = input.SubscriptionStartType == SubscriptionStartType.Trial; if (isInTrialPeriod) { var edition = (SubscribableEdition)await _editionManager.GetByIdAsync(input.EditionId.Value); subscriptionEndDate = Clock.Now.AddDays(edition.TrialDayCount ?? 0); } } var tenantId = await _tenantManager.CreateWithAdminUserAsync( input.TenancyName, input.Name, input.AdminPassword, input.AdminEmailAddress, null, isNewRegisteredTenantActiveByDefault, input.EditionId, false, true, subscriptionEndDate, isInTrialPeriod, AppUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); Tenant tenant; if (input.SubscriptionStartType == SubscriptionStartType.Paid) { if (!input.Gateway.HasValue) { throw new Exception("Gateway is missing!"); } var payment = await _subscriptionPaymentRepository.GetByGatewayAndPaymentIdAsync( input.Gateway.Value, input.PaymentId ); tenant = await _tenantManager.UpdateTenantAsync( tenantId, true, false, payment.PaymentPeriodType, payment.EditionId, EditionPaymentType.NewRegistration); await _subscriptionPaymentRepository.UpdateByGatewayAndPaymentIdAsync(input.Gateway.Value, input.PaymentId, tenantId, SubscriptionPaymentStatus.Completed); } else { tenant = await TenantManager.GetByIdAsync(tenantId); } await _appNotifier.NewTenantRegisteredAsync(tenant); if (input.EditionId.HasValue && input.Gateway.HasValue && !input.PaymentId.IsNullOrEmpty()) { _paymentCache.RemoveCacheItem(input.Gateway.Value, input.PaymentId); } return(new RegisterTenantOutput { TenantId = tenant.Id, TenancyName = input.TenancyName, Name = input.Name, UserName = AbpUserBase.AdminUserName, EmailAddress = input.AdminEmailAddress, IsActive = tenant.IsActive, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin, IsTenantActive = tenant.IsActive }); } }
/// <summary> /// 创建一个实例 /// </summary> /// <returns></returns> public virtual async Task <int> CreateInstance(FlowInstanceCreateDto flowInstanceCreateDto) { var manager = Manager as FlowInstanceManager; var user = await GetCurrentUserAsync(); var flowInstance = flowInstanceCreateDto.MapTo <FlowInstance>(); flowInstance.Code = Common.Fun.ConvertToTimeStamp(DateTime.Now).ToString(); FlowForm form = null; //1.如果流程提交数据没有FlowSchemeId,表示此流程直接由表单创建,提交即代表完成 if (flowInstanceCreateDto.FlowSchemeId == null || flowInstanceCreateDto.FlowSchemeId.Value == 0) { if (flowInstanceCreateDto.FlowFormId == null || flowInstanceCreateDto.FlowFormId.Value == 0) { throw new UserFriendlyException(L("参数错误,必须提供FlowFormId参数")); } form = await FlowFormManager.GetByIdFromCacheAsync(flowInstanceCreateDto.FlowFormId.Value); //如果表单没有内容,默认从内置表单中获取 if (string.IsNullOrWhiteSpace(form.FormContent)) { form.FormContent = Configuration.Modules.Core().DefaultForms.SingleOrDefault(o => o.FormKey == form.FormKey)?.FormContent; } flowInstance.FlowSchemeId = null; flowInstance.FormContent = form.FormContent; flowInstance.FormType = form.FormType; flowInstance.InstanceName = form.FormName; flowInstance.InstanceStatus = InstanceStatus.Finish;//直接为完成状态 await manager.CreateInstance(flowInstance); await CurrentUnitOfWork.SaveChangesAsync(); await manager.FinishInstance(flowInstance);//调用流程结束事件 return(flowInstance.Id); } //2.从流程定义中复制表单id及流程内容 var flowScheme = await FlowSchemeManager.GetAll().Include(o => o.FlowForm).Where(o => o.Id == flowInstanceCreateDto.FlowSchemeId).SingleAsync(); form = await FlowFormManager.GetByIdFromCacheAsync(flowScheme.FlowFormId); flowInstance.FlowFormId = flowScheme.FlowFormId; flowInstance.FormContent = form.FormContent; flowInstance.FormType = flowScheme.FlowForm.FormType; flowInstance.SchemeContent = flowScheme.SchemeContent; flowInstance.InstanceName = flowScheme.SchemeName; //创建运行实例 var wfruntime = new FlowRuntime(flowInstance); #region 根据运行实例改变当前节点状态 flowInstance.ActivityId = wfruntime.nextNodeId; flowInstance.ActivityType = wfruntime.GetNextNodeType(); flowInstance.ActivityName = wfruntime.nextNode.name; flowInstance.PreviousId = wfruntime.currentNodeId; flowInstance.MakerList = (wfruntime.GetNextNodeType() != 4 ? GetNextMakers(wfruntime) : ""); flowInstance.InstanceStatus = (wfruntime.GetNextNodeType() == 4 ? InstanceStatus.Finish : InstanceStatus.Processing); await manager.CreateInstance(flowInstance); //await CurrentUnitOfWork.SaveChangesAsync(); if (flowInstance.InstanceStatus == InstanceStatus.Finish) { await manager.FinishInstance(flowInstance);//调用流程结束事件 } wfruntime.flowInstanceId = flowInstance.Id; #endregion 根据运行实例改变当前节点状态 #region 流程操作记录 FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory { FlowInstanceId = flowInstance.Id, Content = "【创建】" + user.Name + "创建了一个流程进程【" + flowInstance.Code + "/" + flowInstance.InstanceName + "】" }; await FlowInstanceOperationHistoryRepository.InsertAsync(processOperationHistoryEntity); #endregion 流程操作记录 await AddTransHistory(wfruntime); return(flowInstance.Id); }
public async Task <KetQuaLienThong> LienThongHoSo(List <XCallApiInput> input, int chiCucId, string strTinh = "") { KetQuaLienThong KetQua = new KetQuaLienThong(); try { var objToken = await _callApiAppService.AutoGetToKen(chiCucId); if (objToken == null) { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.CHUA_CO_TAI_KHOAN; return(KetQua); } if (input != null && input.Count > 0) { var _list = new List <DangKyQuangCaoRequest>(); int countTongHoSo = 0; foreach (var item in input) { var _vfaHoSo = await _vfaHoSoRepos.GetAsync(item.Id); if (_vfaHoSo.TrangThaiLienThong == (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_THANH_CONG) { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_CO_HO_SO_HOAC_DA_LIEN_THONG; continue; } var _request = new DangKyQuangCaoRequest(); #region DoanhNgiep _request.DoanhNghiep = item.MapTo <DoanhNghiepModel>(); var tinh = await _tinhRepos.FirstOrDefaultAsync(item.TinhId.Value); if (tinh != null) { _request.DoanhNghiep.TinhId = tinh.NiisId; } var huyen = await _huyenRepos.FirstOrDefaultAsync(item.HuyenId.Value); if (huyen != null) { _request.DoanhNghiep.HuyenId = (int)huyen.NiisId; } var xa = await _xaRepos.FirstOrDefaultAsync(item.XaId.Value); if (xa != null) { _request.DoanhNghiep.XaId = (int)xa.NiisId; } #endregion #region DangKyQuangCao _request.DangKyQuangCao.GiayXacNhanToBase64String = FileToBase64String(item.GiayTiepNhan); _request.DangKyQuangCao.NgayCapChungNhan = item.NgayTraKetQua.Value.ToString("yyyy-MM-dd HH:mm:ss"); //Hình thức quảng cáo if (!string.IsNullOrEmpty(item.LoaiQuangCaoJson)) { //var quangCaos = JsonConvert.DeserializeObject<List<JsonHinhThucQuangCao03Dto>>(item.LoaiQuangCaoJson); //foreach (var quangCao in quangCaos) //{ // var loaiQuangCao = await _loaiQuangCaoRepos.FirstOrDefaultAsync(quangCao.Id); // if (loaiQuangCao != null) // { // _request.DangKyQuangCao.LoaiHinhQuangCaos.Add(loaiQuangCao.NiisId.Value); // } //} } if (!string.IsNullOrEmpty(item.LoaiQuangCaoKhacJson)) { _request.DangKyQuangCao.LoaiHinhQuangCaoKhacs = item.LoaiQuangCaoKhacJson; } //Sản phẩm if (!string.IsNullOrEmpty(item.JsonSanPham)) { //var sanPhams = JsonConvert.DeserializeObject<List<HoSoSanPhamChiTiet03Dto>>(item.JsonSanPham); //foreach (var sanPham in sanPhams) //{ // var sanPhamRequest = new SanPhamQuangCao() // { // STT = sanPham.Stt.ToString(), // TenThucPham = sanPham.TenThucPham, // SoGiayCongBo = sanPham.SoGiayCongBo // }; // _request.DangKyQuangCao.SanPhams.Add(sanPhamRequest); //} } #endregion #region Update TrangThaiLienThong _vfaHoSo.TrangThaiLienThong = (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_KHONG_THANH_CONG; _vfaHoSo.NgayLienThong = DateTime.Now; //Guid if (string.IsNullOrEmpty(_vfaHoSo.Guid)) { string guid = ""; if (string.IsNullOrEmpty(strTinh)) { guid = CreateGuid(_vfaHoSo.Id, RemoveUnicodeTinh(chiCucId)); } else { guid = CreateGuid(_vfaHoSo.Id, strTinh); } _request.DangKyQuangCao.Guid = guid; _vfaHoSo.Guid = guid; } else { _request.DangKyQuangCao.Guid = _vfaHoSo.Guid; } await _vfaHoSoRepos.UpdateAsync(_vfaHoSo); CurrentUnitOfWork.SaveChanges(); #endregion _list.Add(_request); countTongHoSo++; } KetQua.TongSoHoSo = countTongHoSo; string dataJson = JsonConvert.SerializeObject(_list); string api = "api/services/app/dangKyQuangCaoApi/Insert"; var objResult = await _callApiAppService.CallApi(chiCucId, dataJson, api, objToken.Result.ToString()); if (objResult.Result != null && objResult.Result.ListResult.Count > 0 && objResult.Success == true) { int countHoSoThatBai = 0; int countHoSoThanhCong = 0; foreach (var result in objResult.Result.ListResult) { var _vfaHoSoUpdate = await _vfaHoSoRepos.FirstOrDefaultAsync(p => p.Guid == result.Guid); if (_vfaHoSoUpdate != null && (result.Code == MessageErorr.Er100.Code || result.Code == MessageErorr.Er03.Code)) { _vfaHoSoUpdate.TrangThaiLienThong = (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_THANH_CONG; _vfaHoSoUpdate.NgayLienThongThanhCong = DateTime.Now; _vfaHoSoUpdate.LienThongId = result.LienThongId; await _vfaHoSoRepos.UpdateAsync(_vfaHoSoUpdate); countHoSoThanhCong++; } else { countHoSoThatBai++; } } KetQua.HoSoThanhCong = countHoSoThanhCong; KetQua.HoSoThatBai = countHoSoThatBai; KetQua.ListResult = objResult.Result.ListResult; KetQua.TrangThaiLienThongRequest = KetQua.HoSoThanhCong == 0 ? KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_THANH_CONG : (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.THANH_CONG; } else { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.CHUA_CO_TAI_KHOAN; } } return(KetQua); } catch (Exception ex) { _logger.Fatal(ex.Message); KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_THANH_CONG; return(KetQua); } }
public virtual async Task <ActionResult> Register(TenantRegistrationViewModel model) { try { CheckTenantRegistrationIsEnabled(); 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); } CurrentUnitOfWork.SetTenantId(null); var tenantId = await _tenantManager.CreateWithAdminUserAsync( model.TenancyName, model.Name, model.AdminPassword, model.AdminEmailAddress, null, isNewRegisteredTenantActiveByDefault, defaultEditionId, false, isEmailConfirmationRequiredForLogin); ViewBag.UseCaptcha = UseCaptchaOnRegistration(); var tenant = await _tenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); CurrentUnitOfWork.SetTenantId(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)); } }
public virtual async Task <ActionResult> Register(RegisterViewModel model) { try { CheckSelfRegistrationIsEnabled(); if (!model.IsExternalLogin && UseCaptchaOnRegistration()) { var recaptchaHelper = this.GetRecaptchaVerificationHelper(); if (recaptchaHelper.Response.IsNullOrEmpty()) { throw new UserFriendlyException(L("CaptchaCanNotBeEmpty")); } if (recaptchaHelper.VerifyRecaptchaResponse() != RecaptchaVerificationResult.Success) { throw new UserFriendlyException(L("IncorrectCaptchaAnswer")); } } if (!_multiTenancyConfig.IsEnabled) { model.TenancyName = Tenant.DefaultTenantName; } else if (model.TenancyName.IsNullOrEmpty()) { throw new UserFriendlyException(L("TenantNameCanNotBeEmpty")); } CurrentUnitOfWork.SetTenantId(null); var tenant = await GetActiveTenantAsync(model.TenancyName); CurrentUnitOfWork.SetTenantId(tenant.Id); if (!await SettingManager.GetSettingValueForTenantAsync <bool>(AppSettings.UserManagement.AllowSelfRegistration, tenant.Id)) { throw new UserFriendlyException(L("SelfUserRegistrationIsDisabledMessage_Detail")); } //Getting tenant-specific settings var isNewRegisteredUserActiveByDefault = await SettingManager.GetSettingValueForTenantAsync <bool>(AppSettings.UserManagement.IsNewRegisteredUserActiveByDefault, tenant.Id); var isEmailConfirmationRequiredForLogin = await SettingManager.GetSettingValueForTenantAsync <bool>(AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin, tenant.Id); var user = new User { TenantId = tenant.Id, Name = model.Name, Surname = model.Surname, EmailAddress = model.EmailAddress, IsActive = isNewRegisteredUserActiveByDefault }; ExternalLoginInfo externalLoginInfo = null; if (model.IsExternalLogin) { externalLoginInfo = await _authenticationManager.GetExternalLoginInfoAsync(); if (externalLoginInfo == null) { throw new ApplicationException("Can not external login!"); } user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalLoginInfo.Login.LoginProvider, ProviderKey = externalLoginInfo.Login.ProviderKey, TenantId = tenant.Id } }; model.UserName = model.EmailAddress; model.Password = Authorization.Users.User.CreateRandomPassword(); if (string.Equals(externalLoginInfo.Email, model.EmailAddress, StringComparison.InvariantCultureIgnoreCase)) { user.IsEmailConfirmed = true; } } else { if (model.UserName.IsNullOrEmpty() || model.Password.IsNullOrEmpty()) { throw new UserFriendlyException(L("FormIsNotValidMessage")); } } user.UserName = model.UserName; user.Password = new PasswordHasher().HashPassword(model.Password); user.Roles = new List <UserRole>(); foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync()) { user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id)); } CheckErrors(await _userManager.CreateAsync(user)); await _unitOfWorkManager.Current.SaveChangesAsync(); if (!user.IsEmailConfirmed) { user.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync(user); } //Notifications await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier()); await _appNotifier.WelcomeToTheApplicationAsync(user); await _appNotifier.NewUserRegisteredAsync(user); //Directly login if possible if (user.IsActive && (user.IsEmailConfirmed || !isEmailConfirmationRequiredForLogin)) { AbpLoginResult <Tenant, User> loginResult; if (externalLoginInfo != null) { loginResult = await _logInManager.LoginAsync(externalLoginInfo.Login, tenant.TenancyName); } else { loginResult = await GetLoginResultAsync(user.UserName, model.Password, 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 RegisterResultViewModel { TenancyName = tenant.TenancyName, NameAndSurname = user.Name + " " + user.Surname, UserName = user.UserName, EmailAddress = user.EmailAddress, IsActive = user.IsActive, IsEmailConfirmationRequired = isEmailConfirmationRequiredForLogin })); } catch (UserFriendlyException ex) { ViewBag.IsMultiTenancyEnabled = _multiTenancyConfig.IsEnabled; ViewBag.UseCaptcha = !model.IsExternalLogin && UseCaptchaOnRegistration(); ViewBag.ErrorMessage = ex.Message; return(View("Register", model)); } }
private async Task BuildForInternalAsync(Tenant tenant) { //Create Organization Units var organizationUnits = new List <OrganizationUnit>(); var producing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Producing"); var researchAndDevelopment = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Research & Development", producing); var ivrProducts = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "IVR Related Products", researchAndDevelopment); var voiceTech = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Voice Technologies", researchAndDevelopment); var inhouseProjects = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Inhouse Projects", researchAndDevelopment); var qualityManagement = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Quality Management", producing); var testing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Testing", producing); var selling = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Selling"); var marketing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Marketing", selling); var sales = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Sales", selling); var custRelations = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Customer Relations", selling); var supporting = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Supporting"); var buying = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Buying", supporting); var humanResources = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Human Resources", supporting); //Create users var users = _randomUserGenerator.GetRandomUsers(RandomHelper.GetRandom(12, 26), tenant.Id); foreach (var user in users) { //Create the user await _userManager.CreateAsync(user); await CurrentUnitOfWork.SaveChangesAsync(); //Add to roles _userManager.AddToRole(user.Id, StaticRoleNames.Tenants.User); //Add to OUs var randomOus = MyRandomHelper.GenerateRandomizedList(organizationUnits).Take(RandomHelper.GetRandom(0, 3)); foreach (var ou in randomOus) { await _userManager.AddToOrganizationUnitAsync(user, ou); } //Set profile picture if (RandomHelper.GetRandom(100) < 70) //A user will have a profile picture in 70% probability. { await SetRandomProfilePictureAsync(user); } } //Set a picture to admin! var admin = _userManager.FindByName(User.AdminUserName); await SetRandomProfilePictureAsync(admin); }
public async Task <KetQuaLienThong> LienThongHoSo(List <XCallApiInput> input, int chiCucId, string strTinh = "") { KetQuaLienThong KetQua = new KetQuaLienThong(); try { var objToken = await _callApiAppService.AutoGetToKen(chiCucId); if (objToken == null) { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.CHUA_CO_TAI_KHOAN; return(KetQua); } if (input != null && input.Count > 0) { var _list = new List <TuCongBoRequest>(); int countTongHoSo = 0; foreach (var item in input) { var _vfaHoSo = await _vfaHoSoRepos.GetAsync(item.Id); if (_vfaHoSo.TrangThaiLienThong == (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_THANH_CONG) { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_CO_HO_SO_HOAC_DA_LIEN_THONG; continue; } var _request = new TuCongBoRequest(); #region DoanhNgiep _request.DoanhNghiep = item.MapTo <DoanhNghiepModel>(); var tinh = await _tinhRepos.FirstOrDefaultAsync(item.TinhId.Value); if (tinh != null) { _request.DoanhNghiep.TinhId = tinh.NiisId; } var huyen = await _huyenRepos.FirstOrDefaultAsync(item.HuyenId.Value); if (huyen != null) { _request.DoanhNghiep.HuyenId = (int)huyen.NiisId; } var xa = await _xaRepos.FirstOrDefaultAsync(item.XaId.Value); if (xa != null) { _request.DoanhNghiep.XaId = (int)xa.NiisId; } #endregion #region TuCongBo _request.TuCongBo = item.MapTo <TuCongBoModel>(); _request.TuCongBo.GiayXacNhanToBase64String = FileToBase64String(item.DuongDanTepCA); _request.TuCongBo.NgayTuCongBo = item.NgayTuCongBo.Value.ToString("yyyy-MM-dd HH:mm:ss"); _request.TuCongBo.ChatLieuBaoBiVaQuyCachDongGoi = item.ChatLieuBaoBi + " " + item.QuyCachDongGoi; _request.TuCongBo.TenVaDiaChiCoSoSanXuat = item.TenCoSoSanXuat + " " + item.DiaChiCoSoSanXuat; //Nhóm san pham NiisId var nhomSanPham = await _nhomSanPhamRepos.FirstOrDefaultAsync(item.NhomSanPhamId.Value); if (nhomSanPham != null) { _request.TuCongBo.NhomSanPhamTCBId = nhomSanPham.NiisId; } //QuocGia nhap khu if (item.QuocGiaNhapKhauId != null) { var quocGia = await _quocGiaRepos.FirstOrDefaultAsync(item.QuocGiaNhapKhauId.Value); if (quocGia != null) { _request.TuCongBo.QuocGiaNhapKhauId = quocGia.NiisId; } } #endregion #region Update TrangThaiLienThong _vfaHoSo.TrangThaiLienThong = (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_KHONG_THANH_CONG; _vfaHoSo.NgayLienThong = DateTime.Now; //Guid if (string.IsNullOrEmpty(_vfaHoSo.Guid)) { string guid = ""; if (string.IsNullOrEmpty(strTinh)) { guid = CreateGuid(_vfaHoSo.Id, RemoveUnicodeTinh(chiCucId)); } else { guid = CreateGuid(_vfaHoSo.Id, strTinh); } _request.TuCongBo.Guid = guid; _vfaHoSo.Guid = guid; } else { _request.TuCongBo.Guid = _vfaHoSo.Guid; } await _vfaHoSoRepos.UpdateAsync(_vfaHoSo); CurrentUnitOfWork.SaveChanges(); #endregion _list.Add(_request); countTongHoSo++; } KetQua.TongSoHoSo = countTongHoSo; string dataJson = JsonConvert.SerializeObject(_list); string api = "api/services/app/tuCongBoApi/Insert"; var objResult = await _callApiAppService.CallApi(chiCucId, dataJson, api, objToken.Result.ToString()); if (objResult.Result != null && objResult.Result.ListResult.Count > 0 && objResult.Success == true) { int countHoSoThatBai = 0; int countHoSoThanhCong = 0; foreach (var result in objResult.Result.ListResult) { var _vfaHoSoUpdate = await _vfaHoSoRepos.FirstOrDefaultAsync(p => p.Guid == result.Guid); if (_vfaHoSoUpdate != null && (result.Code == MessageErorr.Er100.Code || result.Code == MessageErorr.Er03.Code)) { _vfaHoSoUpdate.TrangThaiLienThong = (int)CommonENum.TRANG_THAI_LIEN_THONG.DA_LIEN_THONG_THANH_CONG; _vfaHoSoUpdate.NgayLienThongThanhCong = DateTime.Now; _vfaHoSoUpdate.LienThongId = result.LienThongId; await _vfaHoSoRepos.UpdateAsync(_vfaHoSoUpdate); CurrentUnitOfWork.SaveChanges(); countHoSoThanhCong++; } else { countHoSoThatBai++; } } KetQua.HoSoThanhCong = countHoSoThanhCong; KetQua.HoSoThatBai = countHoSoThatBai; KetQua.ListResult = objResult.Result.ListResult; KetQua.TrangThaiLienThongRequest = KetQua.HoSoThanhCong == 0 ? KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_THANH_CONG : (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.THANH_CONG; } else { KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_THANH_CONG; } } return(KetQua); } catch (Exception ex) { _logger.Fatal(ex.Message); KetQua.TrangThaiLienThongRequest = (int)CommonENum.TRANG_THAI_LIEN_THONG_REQUEST.KHONG_THANH_CONG; return(KetQua); } }
public async Task <ReceiveSyncResultDto> SyncSingleUser(ReceiveSyncUserDto input) { var current_tenantid = 2; var action = input.ActionName.ToLower(); using (CurrentUnitOfWork.SetTenantId(current_tenantid)) { try { var user = await this.GetUserByWorkWeinxinId(input.WXId); if (action == "create_user") { if (user != null) { return(new ReceiveSyncResultDto(10, "用户已存在")); } user = ObjectMapper.Map <User>(input.Data); user.SetNormalizedNames(); user.TenantId = current_tenantid; user.Password = _passwordHasher.HashPassword(user, "000000"); user.IsEmailConfirmed = true; await UserManager.CreateAsync(user); CurrentUnitOfWork.SaveChanges(); var user_id = user.Id; await _userLoginRepository.InsertAsync(new UserLogin { UserId = user_id, LoginProvider = "Wechat", ProviderKey = input.WXId, TenantId = current_tenantid }); await _baseUserRepository.InsertAsync(new BaseUserEmp { AbpUserId = user_id, EmpOrderNo = user_id.ToString(), EmpStationId = "", EmpStatus = "1", EmpUserGuid = Guid.NewGuid().ToString("N"), IsLeader = "", EmpUserId = input.WXId }); } else if (action == "modify_user") { if (user == null) { return(new ReceiveSyncResultDto(11, "用户不存在")); } user.EmailAddress = input.Data.EmailAddress; user.Surname = input.Data.Surname; user.Avatar = input.Data.Avatar; user.Position = input.Data.Position; user.Name = input.Data.Name; user.Sex = input.Data.Sex; user.SelectDistrict = input.Data.SelectDistrict; user.IsActive = input.Data.IsActive; user.PhoneNumber = input.Data.PhoneNumber; await UserManager.UpdateAsync(user); } else if (action == "delete_user") { if (user == null) { return(new ReceiveSyncResultDto(11, "用户不存在")); } await _userRepository.DeleteAsync(user); } else { return(new ReceiveSyncResultDto(2, "无法识别Action")); } return(new ReceiveSyncResultDto(0, "success")); } catch (Exception ex) { return(new ReceiveSyncResultDto(99, ex.Message)); } } }
public async Task <ReceiveSyncResultDto> SyncSingleOrganizationUnits(ReceiveSyncOrganizationDto input) { var current_tenantid = 2; var action = input.ActionName.ToLower(); using (CurrentUnitOfWork.SetTenantId(current_tenantid)) { var parent = await _organizationUnitRepository.FirstOrDefaultAsync(x => x.WXDeptId == input.WXParentDeptId); if (action != "delete_dept") { if (parent == null) { return(new ReceiveSyncResultDto(33, "父级部门不存在")); } } var entity = await _organizationUnitRepository.FirstOrDefaultAsync(x => x.WXDeptId == input.WXDeptId); var base_org = _baseOrgRepository.FirstOrDefault(o => o.WxId == input.WXDeptId.ToString()); var parent_org = _baseOrgRepository.FirstOrDefault(x => x.WxId == input.WXParentDeptId.ToString()); if (action == "create_dept") { if (entity != null) { return(new ReceiveSyncResultDto(30, "部门已存在")); } entity = new AbpOrganizationUnitExtend { TenantId = current_tenantid,//AbpSession.TenantId, WXDeptId = input.WXDeptId, DisplayName = input.DisplayName, WXParentDeptId = input.WXParentDeptId, ParentId = parent.Id, Code = "" }; var result_id = _organizationUnitRepository.InsertAndGetId(entity); //CurrentUnitOfWork.SaveChanges(); entity.Code = string.IsNullOrEmpty(parent.Code) ? result_id.ToString() : parent.Code + ":" + result_id; entity.Id = result_id; _organizationUnitRepository.Update(entity); if (parent.Id == 1) { _baseOrgRepository.Insert(new BaseUserOrg { Name = input.DisplayName, OrgGuid = Guid.NewGuid().ToString(), OrgOrderNo = input.WXDeptId, OrgParentGuid = "0", ParentId = 0, WxId = input.WXDeptId.ToString() }); } else { if (parent_org != null) { _baseOrgRepository.Insert(new BaseUserOrg { Name = input.DisplayName, OrgGuid = Guid.NewGuid().ToString(), OrgOrderNo = input.WXDeptId, OrgParentGuid = parent_org.OrgGuid, ParentId = parent_org.Id, WxId = input.WXDeptId.ToString() }); } } } else if (action == "modify_dept") { if (entity == null) { return(new ReceiveSyncResultDto(31, "部门不存在")); } entity.TenantId = current_tenantid; entity.DisplayName = input.DisplayName; entity.WXParentDeptId = parent.WXDeptId; entity.ParentId = parent.Id; entity.Code = string.IsNullOrEmpty(parent.Code) ? entity.Id.ToString() : parent.Code + ":" + entity.Id; await _organizationUnitRepository.UpdateAsync(entity); base_org.Name = input.DisplayName; base_org.OrgParentGuid = parent_org != null ? parent_org.OrgGuid : "0"; base_org.ParentId = parent_org != null ? parent_org.Id : 0; _baseOrgRepository.Update(base_org); } else if (action == "delete_dept") { if (entity == null) { return(new ReceiveSyncResultDto(31, "部门不存在")); } var any_user = await _userOrganizationUnitRepository.GetAll().AnyAsync(x => x.OrganizationUnitId == entity.Id); if (any_user) { return(new ReceiveSyncResultDto(32, "部门内仍有用户")); } await _organizationUnitRepository.DeleteAsync(entity); await _baseOrgRepository.DeleteAsync(base_org); return(new ReceiveSyncResultDto(0, "")); } else { return(new ReceiveSyncResultDto(2, "无法识别Action")); } return(new ReceiveSyncResultDto(0, "")); } }
public override async Task <UserDto> CreateAsync(CreateUserDto input) { CheckCreatePermission(); var user = ObjectMapper.Map <User>(input); if (input.RoleTypeList != null && input.RoleTypeList.Count > 0) { user.InitRoleType = input.RoleTypeList[0]; //初始角色类型 } user.TenantId = AbpSession.TenantId; user.IsEmailConfirmed = true; await _userManager.InitializeOptionsAsync(AbpSession.TenantId); CheckErrors(await _userManager.CreateAsync(user, input.Password)); if (input.RoleNames != null) { CheckErrors(await _userManager.SetRolesAsync(user, input.RoleNames)); } CurrentUnitOfWork.SaveChanges(); await SetOrganization(user, input.Organizations); //Notifications await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier()); await _appNotifier.WelcomeToTheApplicationAsync(user); try { if (input.SendActivationEmail && !string.IsNullOrWhiteSpace(input.EmailAddress)) { var body = $"您好,系统已为您创建账号,用户名:{input.UserName}, 验证码:{input.Password},感谢您使用本系统"; if (!input.IsActive) { body = $"您好,系统已为您创建账号,用户名:{input.UserName}, 验证码:{input.Password}," + "首次登陆需要激活帐号,感谢您使用本系统。"; } var subject = "账号创建通知"; await _emailSender.SendAsync(input.EmailAddress, subject, body); } if (input.SendActivationMessage && !string.IsNullOrWhiteSpace(input.PhoneNumber)) { var body = $"您好,系统已为您创建账号,用户名:{input.UserName}, 密码:{input.Password},感谢您使用本系统"; if (!input.IsActive) { body = $"您好,系统已为您创建账号,用户名:{input.UserName}, 密码:{input.Password},首次登陆需要激活帐号,感谢您使用本系统。"; } await _smsSender.Sender(input.PhoneNumber, body); } } catch (Exception) { //ignore } return(MapToEntityDto(user)); }
public IInterceptorChain ResolveParameterValue(IMessage message) { return(CurrentUnitOfWork.Map(uow => uow.GetResource <IInterceptorChain>(INTERCEPTOR_CHAIN_EMITTER_KEY)) .OrElseThrow(() => new InvalidOperationException("InterceptorChain should have been injected"))); }
public static void Initialize(IInterceptorChain interceptorChain) { Assert.State(CurrentUnitOfWork.IsStarted, () => "An active Unit of Work is required for injecting interceptor chain"); CurrentUnitOfWork.Get().Resources[INTERCEPTOR_CHAIN_EMITTER_KEY] = interceptorChain; }
public void UseFamilyDataFilter() { CurrentUnitOfWork.SetFilterParameter(ChimaDataFilter.FamillyDataFilter, ChimaDataFilter.FamillyPara, Family); EnableFamilyDataFilter(); }
public async Task MarkAllUnreadMessagesOfUserAsRead(MarkAllUnreadMessagesOfUserAsReadInput input) { var userId = AbpSession.GetUserId(); var tenantId = AbpSession.TenantId; // receiver messages var messages = await _chatMessageRepository .GetAll() .Where(m => m.UserId == userId && m.TargetTenantId == input.TenantId && m.TargetUserId == input.UserId && m.ReadState == ChatMessageReadState.Unread) .ToListAsync(); if (!messages.Any()) { return; } foreach (var message in messages) { message.ChangeReadState(ChatMessageReadState.Read); } // sender messages using (CurrentUnitOfWork.SetTenantId(input.TenantId)) { var reverseMessages = await _chatMessageRepository.GetAll() .Where(m => m.UserId == input.UserId && m.TargetTenantId == tenantId && m.TargetUserId == userId) .ToListAsync(); if (!reverseMessages.Any()) { return; } foreach (var message in reverseMessages) { message.ChangeReceiverReadState(ChatMessageReadState.Read); } } var userIdentifier = AbpSession.ToUserIdentifier(); var friendIdentifier = input.ToUserIdentifier(); _userFriendsCache.ResetUnreadMessageCount(userIdentifier, friendIdentifier); var onlineUserClients = _onlineClientManager.GetAllByUserId(userIdentifier); if (onlineUserClients.Any()) { await _chatCommunicator.SendAllUnreadMessagesOfUserReadToClients(onlineUserClients, friendIdentifier); } var onlineFriendClients = _onlineClientManager.GetAllByUserId(friendIdentifier); if (onlineFriendClients.Any()) { await _chatCommunicator.SendReadStateChangeToClients(onlineFriendClients, userIdentifier); } }
protected void DisableFamilyDataFilter() { CurrentUnitOfWork.DisableFilter(ChimaDataFilter.FamillyDataFilter); }
public async Task <APIResultDto> SubmitActivityBanquetWeChatAsync(ActivityBanquetWeChatDto input) { Logger.InfoFormat("ActivityBanquetWeChatDto:{0}", Newtonsoft.Json.Linq.JObject.FromObject(input).ToString()); var banquest = input.MapTo <ActivityBanquet>(); var delivery = input.MapTo <ActivityDeliveryInfo>();//收货信息 var user = await _wechatuserManager.GetWeChatUserAsync(input.OpenId, input.TenantId); if (user == null) { return(new APIResultDto() { Code = 701, Msg = "当前用户无效" }); } if (user.UserType != UserTypeEnum.零售客户 && user.UserType != UserTypeEnum.客户经理) { return(new APIResultDto() { Code = 702, Msg = "当前用户类型不支持" }); } //微信服务器下载图片 banquest.PhotoUrl = await DownloadWechatImgs(input.PhotoUrl, input.AppId); using (CurrentUnitOfWork.SetTenantId(input.TenantId)) { //1、保存宴席信息 var activityForm = await _activityFormRepository.GetAsync(input.ActivityFormId); if (user.UserType == UserTypeEnum.零售客户) { banquest.Responsible = activityForm.ManagerName; banquest.Executor = activityForm.RetailerName; } else//客户经理更新状态 { activityForm.Status = FormStatusEnum.资料回传已审核; //记录审核日志 var log = new ActivityFormLog(); log.ActionTime = DateTime.Now; log.ActivityFormId = activityForm.Id; log.Opinion = "审核通过";// activityForm.Status.ToString(); log.Status = activityForm.Status; log.StatusName = activityForm.Status.ToString(); log.UserType = user.UserType; log.UserId = user.UserId; log.UserName = user.UserName; await _activityFormRepository.UpdateAsync(activityForm); await _activityFormLogRepository.InsertAsync(log); banquest.Responsible = activityForm.ManagerName; banquest.Executor = activityForm.ManagerName; } banquest.UserName = user.UserName; banquest.CreationTime = DateTime.Now; if (input.BanquetId.HasValue) { banquest.Id = input.BanquetId.Value; await _activitybanquetRepository.UpdateAsync(banquest); } else { await _activitybanquetRepository.InsertAsync(banquest); } //2、保存推荐人信息 delivery.Type = DeliveryUserTypeEnum.推荐人; delivery.CreationTime = DateTime.Now; if (input.DeliveryId.HasValue) { //delivery.Id = input.DeliveryId.Value; var orgDelivery = await _activityDeliveryInfoRepository.GetAsync(input.DeliveryId.Value); orgDelivery.UserName = delivery.UserName; orgDelivery.Phone = delivery.Phone; orgDelivery.DeliveryRemark = delivery.DeliveryRemark; orgDelivery.Address = delivery.Address; await _activityDeliveryInfoRepository.UpdateAsync(orgDelivery); } else { await _activityDeliveryInfoRepository.InsertAsync(delivery); } } if (user.UserType == UserTypeEnum.零售客户) { return(new APIResultDto() { Code = 0, Msg = "资料提交成功,待客户经理审核" }); } else { return(new APIResultDto() { Code = 0, Msg = "资料提交成功,待营销中心审核" }); } }
protected virtual async Task CreateUserAsync(CreateOrUpdateUserInput input) { if (AbpSession.TenantId.HasValue) { await _userPolicy.CheckMaxUserCountAsync(AbpSession.GetTenantId()); } var user = ObjectMapper.Map <User>(input.User); //Passwords is not mapped (see mapping configuration) user.TenantId = AbpSession.TenantId; //Set password if (input.SetRandomPassword) { var randomPassword = await _userManager.CreateRandomPassword(); user.Password = _passwordHasher.HashPassword(user, randomPassword); input.User.Password = randomPassword; } else if (!input.User.Password.IsNullOrEmpty()) { await UserManager.InitializeOptionsAsync(AbpSession.TenantId); foreach (var validator in _passwordValidators) { CheckErrors(await validator.ValidateAsync(UserManager, user, input.User.Password)); } user.Password = _passwordHasher.HashPassword(user, input.User.Password); } user.ShouldChangePasswordOnNextLogin = input.User.ShouldChangePasswordOnNextLogin; //Assign roles user.Roles = new Collection <UserRole>(); foreach (var roleName in input.AssignedRoleNames) { var role = await _roleManager.GetRoleByNameAsync(roleName); user.Roles.Add(new UserRole(AbpSession.TenantId, user.Id, role.Id)); } CheckErrors(await UserManager.CreateAsync(user)); await CurrentUnitOfWork.SaveChangesAsync(); //To get new user's Id. //Notifications await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(user.ToUserIdentifier()); await _appNotifier.WelcomeToTheApplicationAsync(user); //Organization Units await UserManager.SetOrganizationUnitsAsync(user, input.OrganizationUnits.ToArray()); //Send activation email if (input.SendActivationEmail) { user.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync( user, AppUrlService.CreateEmailActivationUrlFormat(AbpSession.TenantId), input.User.Password ); } }
public async Task <RegisterTenantOutput> RegisterTenant(RegisterTenantInput input) { if (input.EditionId.HasValue) { await CheckEditionSubscriptionAsync(input.EditionId.Value, input.SubscriptionStartType); } else { await CheckRegistrationWithoutEdition(); } using (CurrentUnitOfWork.SetTenantId(null)) { CheckTenantRegistrationIsEnabled(); if (UseCaptchaOnRegistration()) { await _recaptchaValidator.ValidateAsync(input.CaptchaResponse); } //Getting host-specific settings var isActive = await IsNewRegisteredTenantActiveByDefault(input.SubscriptionStartType); var isEmailConfirmationRequired = await SettingManager.GetSettingValueForApplicationAsync <bool>( AbpZeroSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin ); DateTime?subscriptionEndDate = null; var isInTrialPeriod = false; if (input.EditionId.HasValue) { isInTrialPeriod = input.SubscriptionStartType == SubscriptionStartType.Trial; if (isInTrialPeriod) { var edition = (SubscribableEdition)await _editionManager.GetByIdAsync(input.EditionId.Value); subscriptionEndDate = Clock.Now.AddDays(edition.TrialDayCount ?? 0); } } var tenantId = await _tenantManager.CreateWithAdminUserAsync( input.TenancyName, input.Name, input.AdminPassword, input.AdminEmailAddress, null, isActive, input.EditionId, shouldChangePasswordOnNextLogin : false, sendActivationEmail : true, subscriptionEndDate, isInTrialPeriod, AppUrlService.CreateEmailActivationUrlFormat(input.TenancyName) ); var tenant = await TenantManager.GetByIdAsync(tenantId); await _appNotifier.NewTenantRegisteredAsync(tenant); return(new RegisterTenantOutput { TenantId = tenant.Id, TenancyName = input.TenancyName, Name = input.Name, UserName = AbpUserBase.AdminUserName, EmailAddress = input.AdminEmailAddress, IsActive = tenant.IsActive, IsEmailConfirmationRequired = isEmailConfirmationRequired, IsTenantActive = tenant.IsActive }); } }
public void CreateProductAndRollback(ProductCreateInput input) { _productRepository.Insert(ObjectMapper.Map <Product>(input)); CurrentUnitOfWork.SaveChanges(); throw new UserFriendlyException("This exception is thrown to rollback the transaction!"); }
public virtual async Task RemoveOrganizationUnitsAsync(Guid id, Guid ouId) { await OrganizationUnitManager.RemoveRoleFromOrganizationUnitAsync(id, ouId); await CurrentUnitOfWork.SaveChangesAsync(); }
public virtual async Task <ActionResult> Register(RegisterTenantInput model) { try { if (UseCaptchaOnRegistration()) { model.CaptchaResponse = HttpContext.Request.Form[RecaptchaValidator.RecaptchaResponseKey]; } var result = await _tenantRegistrationAppService.RegisterTenant(model); CurrentUnitOfWork.SetTenantId(result.TenantId); var user = await _userManager.GetAdminAsync(); //Directly login if possible if (result.IsTenantActive && result.IsActive && !result.IsEmailConfirmationRequired && !_webUrlService.SupportsTenancyNameInUrl) { var loginResult = await GetLoginResultAsync(user.UserName, model.AdminPassword, model.TenancyName); if (loginResult.Result == AbpLoginResultType.Success) { await _signInManager.SignOutAsync(); await _signInManager.SignInAsync(loginResult.Identity, false); SetTenantIdCookie(result.TenantId); return(Redirect(Url.Action("Index", "Home", new { area = "AppName" }))); } Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result); } //Show result page var resultModel = ObjectMapper.Map <TenantRegisterResultViewModel>(result); resultModel.TenantLoginAddress = _webUrlService.SupportsTenancyNameInUrl ? _webUrlService.GetSiteRootAddress(model.TenancyName).EnsureEndsWith('/') + "Account/Login" : ""; if (model.SubscriptionStartType == SubscriptionStartType.Paid) { return(RedirectToAction("Buy", "Payment", new { tenantId = result.TenantId, editionId = model.EditionId, subscriptionStartType = (int)model.SubscriptionStartType })); } return(View("RegisterResult", resultModel)); } catch (UserFriendlyException ex) { ViewBag.UseCaptcha = UseCaptchaOnRegistration(); ViewBag.ErrorMessage = ex.Message; var viewModel = new TenantRegisterViewModel { PasswordComplexitySetting = await _passwordComplexitySettingStore.GetSettingsAsync(), EditionId = model.EditionId, SubscriptionStartType = model.SubscriptionStartType, EditionPaymentType = EditionPaymentType.NewRegistration }; if (model.EditionId.HasValue) { viewModel.Edition = await _tenantRegistrationAppService.GetEdition(model.EditionId.Value); viewModel.EditionId = model.EditionId.Value; } return(View("Register", viewModel)); } }
public async Task ApplyEvaluationTemplate(CreateEvaluationDto input) { EvaluationTemplates.EvaluationTemplate evaluationTemplate = await EvaluationTemplateRepository .GetAll() .Include(currentEvaluationTemplate => currentEvaluationTemplate.Sections) .ThenInclude(section => section.UnmeasuredQuestions) .Include(currentEvaluationTemplate => currentEvaluationTemplate.Sections) .ThenInclude(section => section.MeasuredQuestions) .Include(currentEvaluationTemplate => currentEvaluationTemplate.Sections) .ThenInclude(section => section.ChildSections) .ThenInclude(section => section.UnmeasuredQuestions) .Include(currentEvaluationTemplate => currentEvaluationTemplate.Sections) .ThenInclude(section => section.ChildSections) .ThenInclude(section => section.MeasuredQuestions) .FirstOrDefaultAsync(currentEvaluationTemplate => currentEvaluationTemplate.Id == input.EvaluationTemplateId); if (evaluationTemplate.IsNullOrDeleted()) { throw new UserFriendlyException($"Formato de Evaluacion {input.EvaluationTemplateId} no encontrado."); } List <User> users = new List <User>(); foreach (long inputOrganizationUnitId in input.OrganizationUnitIds) { Abp.Organizations.OrganizationUnit currentOrganizationUnit = await OrganizationUnitRepository.FirstOrDefaultAsync(inputOrganizationUnitId); users.AddRange(await UserManager.GetUsersInOrganizationUnit(currentOrganizationUnit, false)); } foreach (User user in users.Distinct()) { Abp.Organizations.OrganizationUnit userOrganizationUnit = (await UserManager.GetOrganizationUnitsAsync(user)) .First(); User supervisor = (await UserManager.GetUsersInOrganizationUnit(userOrganizationUnit, false)) .FirstOrDefault(currentUser => UserManager.IsInRoleAsync(currentUser, StaticRoleNames.Tenants.Supervisor).GetAwaiter() .GetResult()); long?supervisorId = null; if (!supervisor.IsNullOrDeleted()) { supervisorId = supervisor.Id; } Evaluation currentEvaluation = new Evaluation( input.Name, evaluationTemplate.Id, user.Id, input.StartDate, input.EndDate); currentEvaluation.SetRevision( currentEvaluation.EvaluationId, supervisorId.GetValueOrDefault(3), input.EndDate); long evaluationId = await EvaluationRepository.InsertAndGetIdAsync(currentEvaluation); currentEvaluation = await EvaluationRepository.FirstOrDefaultAsync(evaluationId); List <MeasuredQuestion> measuredQuestions = new List <MeasuredQuestion>(); List <UnmeasuredQuestion> unmeasuredQuestions = new List <UnmeasuredQuestion>(); foreach (Sections.Section evaluationTemplateSection in evaluationTemplate.Sections) { measuredQuestions.AddRange(evaluationTemplateSection.MeasuredQuestions); unmeasuredQuestions.AddRange(evaluationTemplateSection.UnmeasuredQuestions); } foreach (UnmeasuredQuestion unmeasuredQuestion in unmeasuredQuestions) { currentEvaluation.Questions.Add(new EvaluationQuestion( currentEvaluation.EvaluationId, unmeasuredQuestion.Id, currentEvaluation.EndDateTime)); } foreach (MeasuredQuestion measuredQuestion in measuredQuestions) { currentEvaluation.Questions.Add(new EvaluationQuestion( currentEvaluation.EvaluationId, measuredQuestion.Id, currentEvaluation.EndDateTime)); } foreach (EvaluationQuestion currentEvaluationQuestion in currentEvaluation.Questions) { currentEvaluationQuestion.SetAnswer(currentEvaluationQuestion.QuestionId, evaluationId); } await CurrentUnitOfWork.SaveChangesAsync(); } }
public async Task CreateKeyHolding(CreateKeyHoldingInput input) { var entity = new KeyHolding(CurrentUnitOfWork.GetTenantId(), input.VisitorName, input.VisiteStartTime, input.VisiteEndTime, input.Password, input.KeyType, input.HomeOwerId, input.CommunityId); await _manager.CreateAsync(entity); }
public void UpdateMsItem(UpdateMsItemInput input) { Logger.Info("UpdateMsItem() - Started."); Logger.DebugFormat("UpdateMsItem() - Start checking exiting code, name, and shortName. Params sent:{0}" + "itemCode ={1}{0}" + "itemName ={2}{0}" + "shortName ={3}{0}" + "itemID ={4}" , Environment.NewLine, input.itemCode, input.itemName, input.shortName, input.Id); var checkCodeName = (from x in _lkItemRepo.GetAll() where x.Id != input.Id && (x.itemCode == input.itemCode || x.itemName == input.itemName || x.shortName == input.shortName) select x).Any(); Logger.DebugFormat("UpdateMsItem() - End checking exiting code, name, and shortName. Result:{0}", checkCodeName); if (!checkCodeName) { var getMsItem = (from x in _lkItemRepo.GetAll() where x.Id == input.Id select x).FirstOrDefault(); var updateMsItem = getMsItem.MapTo <LK_Item>(); updateMsItem.itemName = input.itemName; updateMsItem.itemCode = input.itemCode; updateMsItem.shortName = input.shortName; try { Logger.DebugFormat("UpdateMsItem() - Start updatae Item. Params sent:{0}" + "itemCode = {1}{0}" + "itemName = {2}{0}" + "shortName = {3}" , Environment.NewLine, input.itemCode, input.itemName, input.shortName); _lkItemRepo.Update(updateMsItem); CurrentUnitOfWork.SaveChanges(); Logger.DebugFormat("UpdateMsItem() - End update item."); } /*catch (DbEntityValidationException ex) * { * var errorMessages = ex.EntityValidationErrors * .SelectMany(x => x.ValidationErrors) * .Select(x => x.ErrorMessage); * string fullErrorMessage = string.Join("; ", errorMessages); * string exceptionMessage = string.Concat("Validation Error: ", fullErrorMessage); * Logger.ErrorFormat("UpdateMsItem() ERROR DbEntityValidationException. Result = {0}", exceptionMessage); * throw new UserFriendlyException(exceptionMessage); * }*/ // Handle data errors. catch (DataException exDb) { Logger.ErrorFormat("UpdateMsItem() ERROR DataException. Result = {0}", exDb.Message); throw new UserFriendlyException("Database Error : {0}", exDb.Message); } // Handle all other exceptions. catch (Exception ex) { Logger.ErrorFormat("UpdateMsItem() ERROR Exception. Result = {0}", ex.Message); throw new UserFriendlyException("Error : {0}", ex.Message); } } else { Logger.ErrorFormat("CreateOrUpdateMsSchemaRequirement() ERROR. Result = {0}", "Item Code or Item Name or Short Name Already Exist!"); throw new UserFriendlyException("Item Code or Item Name or Short Name Already Exist!"); } Logger.Info("UpdateMsItem() - Finished."); }
private async Task BuildForInternalAsync(Tenant tenant) { //Create Organization Units var organizationUnits = new List <OrganizationUnit>(); var producing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Producing"); var researchAndDevelopment = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Research & Development", producing); var ivrProducts = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "IVR Related Products", researchAndDevelopment); var voiceTech = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Voice Technologies", researchAndDevelopment); var inhouseProjects = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Inhouse Projects", researchAndDevelopment); var qualityManagement = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Quality Management", producing); var testing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Testing", producing); var selling = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Selling"); var marketing = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Marketing", selling); var sales = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Sales", selling); var custRelations = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Customer Relations", selling); var supporting = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Supporting"); var buying = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Buying", supporting); var humanResources = await CreateAndSaveOrganizationUnit(organizationUnits, tenant, "Human Resources", supporting); //Create users var users = _randomUserGenerator.GetRandomUsers(RandomHelper.GetRandom(12, 26), tenant.Id); foreach (var user in users) { //Create the user await _userManager.CreateAsync(user); await CurrentUnitOfWork.SaveChangesAsync(); //Add to roles await _userManager.AddToRoleAsync(user, StaticRoleNames.Tenants.User); //Add to OUs var randomOus = RandomHelper.GenerateRandomizedList(organizationUnits).Take(RandomHelper.GetRandom(0, 3)); foreach (var ou in randomOus) { await _userManager.AddToOrganizationUnitAsync(user, ou); } //Set profile picture if (RandomHelper.GetRandom(100) < 70) //A user will have a profile picture in 70% probability. { await SetRandomProfilePictureAsync(user); } } //Set a picture to admin! var admin = await _userManager.GetAdminAsync(); await SetRandomProfilePictureAsync(admin); //Create Friendships var friends = RandomHelper.GenerateRandomizedList(users).Take(3).ToList(); foreach (var friend in friends) { await _friendshipManager.CreateFriendshipAsync( new Friendship( admin.ToUserIdentifier(), friend.ToUserIdentifier(), tenant.TenancyName, friend.UserName, friend.ProfilePictureId, FriendshipState.Accepted) ); await _friendshipManager.CreateFriendshipAsync( new Friendship( friend.ToUserIdentifier(), admin.ToUserIdentifier(), tenant.TenancyName, admin.UserName, admin.ProfilePictureId, FriendshipState.Accepted) ); } //Create chat message var friendWithMessage = RandomHelper.GenerateRandomizedList(friends).First(); var sharedMessageId = Guid.NewGuid(); _chatMessageRepository.InsertAndGetId( new ChatMessage( friendWithMessage.ToUserIdentifier(), admin.ToUserIdentifier(), ChatSide.Sender, L("Demo_SampleChatMessage"), ChatMessageReadState.Read, sharedMessageId, ChatMessageReadState.Unread ) ); _chatMessageRepository.InsertAndGetId( new ChatMessage( admin.ToUserIdentifier(), friendWithMessage.ToUserIdentifier(), ChatSide.Receiver, L("Demo_SampleChatMessage"), ChatMessageReadState.Unread, sharedMessageId, ChatMessageReadState.Read ) ); }
public void CreateMsItem(CreateMsItemInput input) { Logger.Info("CreateMsItem() - Started."); Logger.DebugFormat("CreateMsItem() - Start checking exiting code, name, and shortName. Params sent:{0}" + "itemCode ={1}{0}" + "itemName ={2}{0}" + "shortName ={3}" , Environment.NewLine, input.itemCode, input.itemName, input.shortName); var checkCodeName = (from x in _lkItemRepo.GetAll() where x.itemCode == input.itemCode || x.itemName == input.itemName || x.shortName == input.shortName select x).Any(); Logger.DebugFormat("CreateMsItem() - End checking exiting code, name, and shortName. Result:{0}", checkCodeName); if (!checkCodeName) { var createMsItem = new LK_Item { itemName = input.itemName, itemCode = input.itemCode, shortName = input.shortName, sortNo = 0, //hardcode for not null field isOption = false, //hardcode for not null field optionSort = 0 //hardcode for not null field }; try { Logger.DebugFormat("CreateMsItem() - Start update Item. Parameters sent:{0}" + "itemName = {1}{0}" + "itemCode = {2}{0}" + "shortName = {3}{0}" + "sortNo = {4}{0}" + "isOption = {5}{0}" + "optionSort = {6}" , Environment.NewLine, input.itemName, input.itemCode, input.shortName, 0, false, 0); _lkItemRepo.Insert(createMsItem); CurrentUnitOfWork.SaveChanges(); Logger.DebugFormat("CreateMsItem() - End update Item."); } /*catch (DbEntityValidationException ex) * { * var errorMessages = ex.EntityValidationErrors * .SelectMany(x => x.ValidationErrors) * .Select(x => x.ErrorMessage); * string fullErrorMessage = string.Join("; ", errorMessages); * string exceptionMessage = string.Concat("Validation Error: ", fullErrorMessage); * Logger.ErrorFormat("CreateMsItem() ERROR DbEntityValidationException. Result = {0}", exceptionMessage); * throw new UserFriendlyException(exceptionMessage); * }*/ // Handle data errors. catch (DataException exDb) { Logger.ErrorFormat("CreateMsItem() ERROR DbException. Result = {0}", exDb.Message); throw new UserFriendlyException("Database Error : {0}", exDb.Message); } // Handle all other exceptions. catch (Exception ex) { Logger.ErrorFormat("CreateMsItem() ERROR DbException. Result = {0}", ex.Message); throw new UserFriendlyException("Error : {0}", ex.Message); } } else { Logger.ErrorFormat("CreateMsItem() ERROR. Result = {0}", "Item Code or Item Name or Short Name Already Exist!"); throw new UserFriendlyException("Item Code or Item Name or Short Name Already Exist!"); } Logger.Info("CreateMsItem() - Finished."); }
public void UpdateMsAccount(UpdateMsAccountInputDto input) { Logger.Info("UpdateMsAccountPaymentPayment() - Started."); Logger.DebugFormat("UpdateMsAccountPayment() - Start get data before update Account. Parameters sent:{0}" + "accID = {1}{0}" , Environment.NewLine, input.accID); var getAccount = (from A in _msAccountRepo.GetAll() where input.accID == A.Id select A).FirstOrDefault(); Logger.DebugFormat("UpdateMsAccountPayment() - Ended get data before update Account."); var UpdateMsAccountPayment = getAccount.MapTo <MS_Account>(); UpdateMsAccountPayment.NATURE_ACCOUNT_BANK = input.natureAccountBank; UpdateMsAccountPayment.NATURE_ACCOUNT_DEP = input.natureAccountDep; UpdateMsAccountPayment.ORG_ID = input.org; UpdateMsAccountPayment.PROVINCE_ID = input.province; UpdateMsAccountPayment.isActive = input.isActive; try { Logger.DebugFormat("UpdateMsAccountPayment() - Start update Account in MS Account. Parameters sent:{0}" + "natureAccountBank = {1}{0}" + "natureAccountDep = {2}{0}" + "org = {3}{0}" + "province = {4}{0}" + "isActive = {5}{0}" , Environment.NewLine, input.natureAccountBank, input.natureAccountDep, input.org, input.province, input.isActive); _msAccountRepo.Update(UpdateMsAccountPayment); CurrentUnitOfWork.SaveChanges(); Logger.DebugFormat("UpdateMsAccountPayment() - End update Account in MS Account."); if (input.emailTo != null) { var dataAccountEmail = new CreateUpdateMsAccountEmailInputDto { accID = input.accID, emailTo = input.emailTo, emailCc = input.emailCc }; Logger.DebugFormat("UpdateMsAccountPayment() - Start update Account in MS Account Email. Parameters sent:{0}" + "accID = {1}{0}" + "emailTo = {2}{0}" + "emailCc = {3}{0}" , Environment.NewLine, input.accID, input.emailTo, input.emailCc); CreateOrUpdateAccountEmail(dataAccountEmail); Logger.DebugFormat("UpdateMsAccountPayment() - End update Account in MS Account Email."); } } catch (DataException ex) { Logger.ErrorFormat("UpdateMsAccountPayment() - ERROR DataException. Result = {0}", ex.Message); throw new UserFriendlyException("Db Error: " + ex.Message); } catch (Exception ex) { Logger.ErrorFormat("UpdateMsAccountPayment() - ERROR Exception. Result = {0}", ex.Message); throw new UserFriendlyException("Error: " + ex.Message); } Logger.Info("UpdateMsAccountPayment() - Finished."); }
public virtual async Task <ActionResult> Register(RegisterViewModel model) { try { //Get tenancy name and tenant if (!_multiTenancyConfig.IsEnabled) { model.TenancyName = Tenant.DefaultTenantName; } else if (model.TenancyName.IsNullOrEmpty()) { throw new UserFriendlyException(L("TenantNameCanNotBeEmpty")); } CurrentUnitOfWork.SetTenantId(null); var tenant = await GetActiveTenantAsync(model.TenancyName); CurrentUnitOfWork.SetTenantId(tenant.Id); //Create user var user = new User { TenantId = tenant.Id, Name = model.Name, Surname = model.Surname, EmailAddress = model.EmailAddress, IsActive = true }; //Get external login info if possible ExternalLoginUserInfo externalLoginInfo = null; if (model.IsExternalLogin) { externalLoginInfo = await HttpContext.Authentication.GetExternalLoginUserInfo(model.ExternalLoginAuthSchema); if (externalLoginInfo == null) { throw new ApplicationException("Can not external login!"); } user.Logins = new List <UserLogin> { new UserLogin { LoginProvider = externalLoginInfo.LoginInfo.LoginProvider, ProviderKey = externalLoginInfo.LoginInfo.ProviderKey, TenantId = tenant.Id } }; model.UserName = model.UserName; model.Password = Users.User.CreateRandomPassword(); if (string.Equals(externalLoginInfo.EmailAddress, model.EmailAddress, StringComparison.InvariantCultureIgnoreCase)) { user.IsEmailConfirmed = true; } } else { if (model.UserName.IsNullOrEmpty() || model.Password.IsNullOrEmpty()) { throw new UserFriendlyException(L("FormIsNotValidMessage")); } } user.UserName = model.UserName; user.Password = new PasswordHasher().HashPassword(model.Password); //Add default roles user.Roles = new List <UserRole>(); foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync()) { user.Roles.Add(new UserRole { RoleId = defaultRole.Id }); } //Save user CheckErrors(await _userManager.CreateAsync(user)); await _unitOfWorkManager.Current.SaveChangesAsync(); //Directly login if possible if (user.IsActive) { AbpLoginResult <Tenant, User> loginResult; if (externalLoginInfo != null) { loginResult = await _logInManager.LoginAsync(externalLoginInfo.LoginInfo, tenant.TenancyName); } else { loginResult = await GetLoginResultAsync(user.UserName, model.Password, tenant.TenancyName); } if (loginResult.Result == AbpLoginResultType.Success) { await SignInAsync(loginResult.User, loginResult.Identity); return(Redirect(Url.Action("Index", "Home"))); } Logger.Warn("New registered user could not be login. This should not be normally. login result: " + loginResult.Result); } //If can not login, show a register result page return(View("RegisterResult", new RegisterResultViewModel { TenancyName = tenant.TenancyName, NameAndSurname = user.Name + " " + user.Surname, UserName = user.UserName, EmailAddress = user.EmailAddress, IsActive = user.IsActive })); } catch (UserFriendlyException ex) { ViewBag.IsMultiTenancyEnabled = _multiTenancyConfig.IsEnabled; ViewBag.ErrorMessage = ex.Message; return(View("Register", model)); } }