public async Task <HealthUser> AddOrUpdateUser(HealthUser user, string roleName) { try { //Get the role var role = await DbContext.HealthRoles.SingleOrDefaultAsync(item => item.Name == roleName); //Check if the role is vaild and if the user is new if (user.Id == Guid.Empty) { //Assign the role user.Role = role; //Hash the password user.Password = user.Password.GetMD5Hash(); //change the email to lower case user.Email = user.Email.ToLower(); //Attach the enitity to the context DbContext.Attach(user); //Mark it as added DbContext.Entry(user).State = EntityState.Added; } else { //Get the user from db var userDb = await DbContext.HealthUsers.SingleOrDefaultAsync(item => item.Id == user.Id); //Update the values userDb.Password = string.IsNullOrEmpty(user.Password) ? userDb.Password : user.Password.GetMD5Hash(); userDb.PhoneNumber = user.PhoneNumber; userDb.Gender = user.Gender; userDb.DOB = user.DOB; userDb.MedicalHistory = user.MedicalHistory; userDb.Note = user.Note; //Check if the role was changed if (role != null) { userDb.Role = role; } //Markt the entity as modified DbContext.Entry(userDb).State = EntityState.Modified; } await DbContext.SaveChangesAsync(); return(user); } catch (System.Exception ex) { LogginService.LogException(ex); } return(null); }
public async Task <ErrData <IHealthUser> > HealthUserLoginExAsync(QueryData <HealthUserQuery> query) { var result = new ErrData <IHealthUser>(); var dt = DateTime.Now; var res = await HealthPcOperaters.HealthAccountOperater.GetHealthUserPageAsync(query); if (res.HasErr) { result.SetInfo(res.ErrMsg, res.ErrCode); } else { var queryEx = new QueryData <WcfADUserInfoQuery>() { Criteria = new WcfADUserInfoQuery() { UserName = query.Criteria.AdAccount, Password = query.Criteria.Pwd } }; var resUser = await WCFOperators.TlgChinaOperater.GetADUserInfoAsync(queryEx); if (resUser.HasErr) { result.SetInfo(resUser.ErrMsg, resUser.ErrCode); } else { if (string.IsNullOrEmpty(resUser.Data?.UserNo)) { result.SetInfo("用户名或密码错误!", -102); result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); } IHealthUser info = new HealthUser(); info.UserNo = resUser.Data.UserNo; info.UserName = resUser.Data.UserName; info.AdAccount = resUser.Data.ADAccount; info.IsAdmin = false; if (res.Data.Count > 0) { info.IsAdmin = res.Data.FirstOrDefault().IsAdmin; } result.SetInfo(info, "登录成功!", 200); } } result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); }
public async Task <ErrData <byte[]> > HealthContentExcelExportUserStaffAdAllAsync(QueryData <HealthContentQuery> query) { var result = new ErrData <byte[]>(); var dt = DateTime.Now; IHealthUser loginUser = new HealthUser(); #region 验证AD账号是否已添加权限 var queryUser = new QueryData <HealthUserQuery>() { Criteria = new HealthUserQuery() { AdAccount = query.Extend.UserNo } }; var healthUser = await HealthPcOperaters.HealthAccountOperater.GetHealthUserPageAsync(queryUser);//根据health_user判断是否管理员 if (healthUser.HasErr) { result.SetInfo(healthUser.ErrMsg, healthUser.ErrCode); result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); } var queryAd = new QueryData <WcfADUserInfoQuery>() { Criteria = new WcfADUserInfoQuery() { UserName = query.Extend.UserNo, Password = query.Extend.Pwd } }; var resUser = await WCFOperators.TlgChinaOperater.GetADUserInfoAsync(queryAd);//根据wcf获取账号信息 if (resUser.HasErr) { result.SetInfo(resUser.ErrMsg, resUser.ErrCode); result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); } else { if (string.IsNullOrEmpty(resUser.Data?.UserNo)) { result.SetInfo("用户名或密码错误!", -102); result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); } loginUser.UserNo = resUser.Data.UserNo; loginUser.UserName = resUser.Data.UserName; loginUser.AdAccount = resUser.Data.ADAccount; loginUser.IsAdmin = false; if (healthUser.Data.Count > 0) { loginUser.IsAdmin = healthUser.Data.FirstOrDefault().IsAdmin; } } #endregion if (loginUser.IsAdmin)//登录账号为管理员时,根据HR负责人作为sheet导出 { result = await HealthContentExcelExportByHrAllAsync(loginUser, query); } else//登录账号为非管理员时,登陆人作为sheet导出其权限下体检内容 { var dicTable = new Dictionary <string, DataTable>(); var queryEx = query.Criteria; queryEx.UpStaffNo = loginUser.IsAdmin ? string.Empty : loginUser.UserNo; query.Criteria = queryEx; var dtUserStaff = await GetHealthContentUserStaffAllAsync(query); if (dtUserStaff.HasErr) { result.SetInfo(dtUserStaff.Msg, dtUserStaff.Code); return(result); } else { dicTable.Add(loginUser.UserName, dtUserStaff.Results[0]); } result.Data = EPPlusHelper.ExcelExport(dicTable); } result.ExpandSeconds = (DateTime.Now - dt).TotalSeconds; return(result); }