示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }