public async Task <ActionResult <EmployeeInfo> > PostEmployeeInfo(GetEmployeeForEditOutput getEmployeeForEditOutput)
        {
            getEmployeeForEditOutput.Username = getEmployeeForEditOutput.Username.ToLower();
            getEmployeeForEditOutput.Email    = getEmployeeForEditOutput.Email.ToLower();
            if (!await _employeeInfoRepository.IsEmployeeUserNameExists(getEmployeeForEditOutput.Username))
            {
                return(BadRequest("Username is Already Exist"));
            }
            if (!await _employeeInfoRepository.IsEmployeeEmailExists(getEmployeeForEditOutput.Email))
            {
                return(BadRequest("Email is Already Exist"));
            }
            var userLoginToCreate = new UserLogin
            {
                Username    = getEmployeeForEditOutput.Username,
                UserType    = "E",
                CreatedDate = DateTime.Now,
                UpdatedDate = DateTime.Now
            };
            var createdUserLogin = await _employeeInfoRepository.CreateUserLogin(userLoginToCreate, getEmployeeForEditOutput.Password);

            EmployeeInfo employee = null;

            if (createdUserLogin.Id > 0)
            {
                employee = await _employeeInfoRepository.PostEmployeeInfo(getEmployeeForEditOutput, createdUserLogin.Id);
            }
            return(employee);
        }
        public async Task <GetEmployeeForViewDto> PutEmployeeInfo(int id, GetEmployeeForEditOutput editOutput)
        {
            EmployeeInfo emp = await _context.EmployeeInfos.FirstOrDefaultAsync(i => i.Id == id);

            if (emp != null)
            {
                emp.EmpName     = editOutput.EmpName;
                emp.Email       = editOutput.Email;
                emp.Designation = editOutput.Designation;
                emp.ContactNo   = editOutput.ContactNo;
            }
            UserLogin userLogin = await _context.UserLogins.FirstOrDefaultAsync(x => x.Id == emp.UserId);

            if (userLogin != null)
            {
                userLogin.Username = editOutput.Username;
            }
            _context.UserLogins.Update(userLogin);
            _context.EmployeeInfos.Update(emp);
            await _context.SaveChangesAsync();

            var updatedEmployee = await GetEmployeeInfo(emp.Id);

            return(updatedEmployee);
        }
        public async Task <EmployeeInfo> PostEmployeeInfo(GetEmployeeForEditOutput getEmployeeForEditOutput, int id)
        {
            EmployeeInfo employeeInfo = new EmployeeInfo
            {
                EmpCode     = "EMP" + id,
                EmpName     = getEmployeeForEditOutput.EmpName,
                Designation = getEmployeeForEditOutput.Designation,
                ContactNo   = getEmployeeForEditOutput.ContactNo,
                Email       = getEmployeeForEditOutput.Email,
                UserId      = id
            };
            await _context.EmployeeInfos.AddAsync(employeeInfo);

            await _context.SaveChangesAsync();


            return(employeeInfo);
        }
        /// <summary>
        /// 导出Employee为excel表
        /// </summary>
        /// <returns></returns>
        //public async Task<FileDto> GetEmployeesToExcel(){
        //var users = await UserManager.Users.ToListAsync();
        //var userListDtos = ObjectMapper.Map<List<UserListDto>>(users);
        //await FillRoleNames(userListDtos);
        //return _userListExcelExporter.ExportToFile(userListDtos);
        //}
        /// <summary>
        /// MPA版本才会用到的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <GetEmployeeForEditOutput> GetEmployeeForEdit(NullableIdDto <Guid> input)
        {
            var             output = new GetEmployeeForEditOutput();
            EmployeeEditDto employeeEditDto;

            if (input.Id.HasValue)
            {
                var entity = await _employeeRepository.GetAsync(input.Id.Value);

                employeeEditDto = entity.MapTo <EmployeeEditDto>();

                //employeeEditDto = ObjectMapper.Map<List <employeeEditDto>>(entity);
            }
            else
            {
                employeeEditDto = new EmployeeEditDto();
            }

            output.Employee = employeeEditDto;
            return(output);
        }
        public async Task <ActionResult <GetEmployeeForViewDto> > PutEmployeeInfo(int id, GetEmployeeForEditOutput editOutput)
        {
            if (_employeeInfoRepository.IsEmployeeExists(id) == null)
            {
                return(BadRequest());
            }

            var empInfo = await _employeeInfoRepository.PutEmployeeInfo(id, editOutput);

            return(empInfo);
        }