public async Task <IActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                EmployeeAccount employeeAccount = await _context.EmployeeAccount.FirstOrDefaultAsync(u => u.Login == model.Login);

                if (employeeAccount == null)
                {
                    employeeAccount = new EmployeeAccount
                    {
                        Login    = model.Login,
                        Password = model.Password
                    };
                    _context.EmployeeAccount.Add(employeeAccount);
                    await _context.SaveChangesAsync();

                    Employee employee = new Employee
                    {
                        EmployeeId     = employeeAccount.EmployeeAccountId,
                        Name           = model.Name,
                        Surname        = model.Surname,
                        Patronymic     = model.Patronymic,
                        Email          = model.Email,
                        EmployeeRoleId = model.EmployeeRoleId,
                        RankId         = model.RankId,
                        PhoneNumber    = model.PhoneNumber
                    };
                    _context.Employee.Add(employee);
                    await _context.SaveChangesAsync();

                    if (model.MentorId != null)
                    {
                        EmployeeMentors employeeMentors = new EmployeeMentors
                        {
                            MentorId = model.MentorId.Value,
                            InternId = employee.EmployeeId,
                        };
                        _context.EmployeeMentors.Add(employeeMentors);
                    }

                    foreach (var skillVal in model.SkillsValue)
                    {
                        EmployeeSkillValue employeeSkillValue = new EmployeeSkillValue
                        {
                            EmployeeId = employee.EmployeeId,
                            SkillId    = _context.Skill.Where(u => u.SkillTitle == skillVal.Key && u.SkillValueId == skillVal.Value).First().IdSkill
                        };
                        _context.EmployeeSkillValue.Add(employeeSkillValue);
                    }
                    await _context.SaveChangesAsync();

                    // await Login(new LoginModel() { Login = model.Login, Password = model.Password}); // аутентификация
                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError("", "Такий логін вже використано");
            }
            ViewBag.EmployeeRoleId = new SelectList(_context.EmployeeRole, "EmployeeRoleId", "EmployeeRoleName");
            ViewBag.RankId         = new SelectList(_context.EmployeeRank, "EmployeeRankId", "EmployeeRankTitle");

            return(View(model));
        }
 /// <summary>
 /// 更新一条数据
 /// </summary>
 public bool Update(EmployeeAccount model)
 {
     return(dal.Update(model));
 }
        /// <summary>
        /// 添加员工
        /// </summary>
        private void AddEmployee()
        {
            string employeeNO = txtEmployeeNo.Text.Trim();  //员工编号

            try
            {
                //判断编号是否已经使用
                bool isExist = eBll.IsExist(employeeNO);
                if (isExist)
                {
                    ExecuteScript("AlertDialog('员工编号已存在!', null);");
                    return;
                }
                string name   = txtName.Text.Trim();            //员工姓名
                int    gender = 0;                              //员工性别
                if (rdbFemale.Checked)
                {
                    gender = 1;
                }
                //出生日期
                string birthdate = txtBirthDate.Text.Trim();

                Employee emp = new Employee();
                emp.ID         = Guid.NewGuid().ToString();
                emp.EMPLOYEENO = employeeNO;
                //密码加密
                emp.PASSWORD = AES.Encrypt("666666", "0512000000000512");
                //姓名
                emp.NAME = name == null ? null : name;
                //性别
                emp.SEX = gender == 0;
                if (!string.IsNullOrEmpty(birthdate))
                {
                    emp.BIRTHDATE = Convert.ToDateTime(birthdate);
                }
                //手机号码
                emp.MOBILEPHONE = txtMobilePhone.Text.Trim();
                //转正日期
                emp.TOREGULARDATE = Convert.ToDateTime(txtToRegularDate.Text.Trim());
                //员工类型,0:总经办,1:客服,2:造价员
                decimal userType = 0;
                //总经办
                if (rdbGMO.Checked)
                {
                    userType = 0;
                }
                //客服
                else if (rdbCustomerService.Checked)
                {
                    userType = 1;
                }
                //造价员
                else if (rdbEmployee.Checked)
                {
                    userType = 2;
                }
                // 其他用户类型
                else if (rdbOtherUserType.Checked)
                {
                    if (!string.IsNullOrEmpty(txtUserType.Text.Trim()))
                    {
                        userType = Convert.ToDecimal(txtUserType.Text.Trim());
                    }
                }
                emp.TYPE           = userType;
                emp.ISBRANCHLEADER = rblIsBranchLeader.SelectedValue == "1";
                emp.ISEXTERNAL     = rblIsExternal.SelectedValue == "1";
                //启用状态
                emp.AVAILABLE = 1;
                bool flag = eBll.Add(emp);
                //本系统添加成功
                if (flag)
                {
                    if (rblAddRole.SelectedValue == "1")
                    {
                        // 添加角色
                        EmployeeRole empRole = new EmployeeRole();
                        empRole.ID         = Guid.NewGuid().ToString();
                        empRole.EMPLOYEEID = emp.ID;
                        // 1 客服
                        if (emp.TYPE == 1)
                        {
                            empRole.ROLEID = "fea3a06f-6d97-45d3-93f7-b145c158eb27";
                        }
                        // 2 工程师
                        else if (emp.TYPE == 2)
                        {
                            empRole.ROLEID = "2B43010866666af2b73d78c35288d565";
                        }
                        if (!string.IsNullOrEmpty(empRole.ROLEID))
                        {
                            new EmployeeRoleBLL().Add(empRole);
                        }
                    }

                    // 创建员工编号同名目录
                    string rootPath       = Convert.ToString(ConfigurationManager.AppSettings["employeePath"]);
                    string employeeFolder = Path.Combine(rootPath, emp.EMPLOYEENO);
                    if (!Directory.Exists(employeeFolder))
                    {
                        Directory.CreateDirectory(employeeFolder);
                    }

                    // 2018-05-19 添加
                    // 添加员工的任务分成配置
                    EmployeeProportionBLL epBll         = new EmployeeProportionBLL();
                    EmployeeProportion    empProportion = new EmployeeProportion();
                    empProportion.ID               = Guid.NewGuid().ToString();
                    empProportion.EMPLOYEEID       = emp.ID;
                    empProportion.PROPORTION       = 0.3m;
                    empProportion.PARENTEMPLOYEEID = null;
                    empProportion.ISBRANCHLEADER   = emp.ISBRANCHLEADER;
                    epBll.Add(empProportion);
                    // 任务分成配置结束

                    // 2018-05-20 添加
                    // 添加员工的默认账户
                    EmployeeAccount empAcct = new EmployeeAccount();
                    empAcct.ID             = Guid.NewGuid().ToString();
                    empAcct.EMPLOYEEID     = emp.ID;
                    empAcct.AMOUNT         = 0m;
                    empAcct.PAIDAMOUNT     = 0m;
                    empAcct.SURPLUSAMOUNT  = 0m;
                    empAcct.OTHERSAMOUNT   = 0m;
                    empAcct.CREATEDATE     = DateTime.Now;
                    empAcct.LASTUPDATEDATE = DateTime.Now;
                    EmployeeAccountBLL empAcctBll = new EmployeeAccountBLL();
                    empAcctBll.Add(empAcct);

                    // 员工账户结束
                    #region 调用钉钉接口,添加员工到钉钉
                    //如果选择了钉钉同步创建
                    if (Request.Form["sync"] == "rdbSync")
                    {
                        string  accessTokenResult = DingTalkHelper.GetAccessToken();
                        JObject jObj        = JObject.Parse(accessTokenResult);
                        string  errcode     = jObj["errcode"].ToString();
                        string  accessToken = string.Empty;
                        if (errcode == "0")
                        {
                            accessToken = jObj["access_token"].ToString();
                            string postUrl = string.Format("https://oapi.dingtalk.com/user/create?access_token={0}", accessToken);
                            //岗位
                            string position = string.Empty;
                            //钉钉系统中对应的部门ID
                            string departmentid = string.Empty;
                            ////总经办
                            //if (rdbGMO.Checked)
                            //{
                            //    position = rdbGMO.Text;
                            //    departmentid = "37037510";
                            //}
                            ////客服
                            //else if (rdbCustomerService.Checked)
                            //{
                            //    position = rdbCustomerService.Text;
                            //    departmentid = "36958636";
                            //}
                            ////造价员
                            //else if (rdbEmployee.Checked)
                            //{
                            //    position = rdbEmployee.Text;
                            //    departmentid = "36961466";
                            //}
                            departmentid = "110817907";

                            //\"orderInDepts\":\"{1:10}\",  \"remark\":\"\",    \"tel\":\"010-12333\",  \"workPlace\":\"\",  \"isHide\":false,  \"isSenior\":false
                            string param = "{\"name\":\"" + emp.NAME + "\",    \"department\":[" + departmentid + "],  \"position\":\"" + position + "\",  \"mobile\":\"" + emp.MOBILEPHONE +
                                           "\",  \"email\":\"" + emp.EMAIL + "\",  \"jobnumber\":\"" + emp.EMPLOYEENO + "\",}";
                            object  userCreateResult = WebServiceHelper.Post(postUrl, param);
                            JObject jCreateResult    = JObject.Parse(userCreateResult.ToString());
                            //返回码
                            errcode = jCreateResult["errcode"].ToString();
                            //返回消息
                            string errmsg = jCreateResult["errmsg"].ToString();
                            //返回码为0,成功
                            if (errcode == "0")
                            {
                                string dingTalkUserId = jCreateResult["userid"].ToString();
                                emp.DINGTALKUSERID = dingTalkUserId;
                                try
                                {
                                    //关联钉钉UserId
                                    bool uptFlag = eBll.Update(emp);
                                    //关联成功
                                    if (uptFlag)
                                    {
                                        //弹出提示并刷新当前页面
                                        ExecuteScript("alert('添加成功!');window.location.href='/Pages/Admin/EmployeeAdd?UserId=" + emp.ID + "'");
                                    }
                                    else
                                    {
                                        ExecuteScript("AlertDialog('关联钉钉UserId失败!', null);");
                                    }
                                }
                                //本地OA更新钉钉UserId失败
                                catch (Exception ex)
                                {
                                    LogHelper.WriteLine("自动关联钉钉UserId失败。" + ex.Message + ex.StackTrace);
                                    ExecuteScript("AlertDialog('操作失败!', null)");
                                }
                            }
                            else
                            {
                                LogHelper.WriteLine("用户在OA系统创建成功,但在钉钉系统创建失败,原因:" + errmsg);
                                //ExecuteScript("AlertDialog('OA系统已成功创建用户,但该用户在钉钉系统中创建失败,请人工在钉钉系统中添加。<br />钉钉系统中添加成功后,需要将其系统中的UserId填写并关联到本系统中。', null)");
                                ExecuteScript("alert('OA系统已成功创建用户,但该用户在钉钉系统中创建失败,请人工在钉钉系统中添加。钉钉系统中添加成功后,需要将其系统中的UserId填写并关联到本系统中。');window.location.href='EmployeeAdd?UserId=" + emp.ID + "';");
                            }
                        }
                        else
                        {
                            ExecuteScript("AlertDialog('用户已在本系统中成功创建,但获取钉钉token失败,并未在钉钉系统中成功添加用户,请人工添加!', null)");
                        }
                    }
                    else
                    {
                        ExecuteScript("alert('本系统添加成功但尚未关联钉钉UserId,请尽快关联!');window.location.href='/Pages/Admin/EmployeeAdd?UserId=" + emp.ID + "';");
                    }
                    #endregion
                }
                //添加失败
                else
                {
                    ExecuteScript("AlertDialog('添加失败!', null)");
                }
            }
            catch (Exception ex)
            {
                string exMsg = ex.Message;
                LogHelper.WriteLine(string.Format("员工添加出错。" + exMsg + ex.StackTrace));  //写入文本日志
                string script = string.Format("AlertDialog('服务器错误,请联系管理员!<p>{0}</p>'), null", exMsg);
                ExecuteScript(script);
            }
        }
 /// <summary>
 /// 增加一条数据
 /// </summary>
 public bool Add(EmployeeAccount model)
 {
     return(dal.Add(model));
 }