示例#1
0
        public bool Add(Employee anEmployee)
        {
            bool checkEmail = CheckEmail(anEmployee.Email);

            if (checkEmail)
            {
                bool isUnique = IsEmailAddressUnique(anEmployee.Email);
                if (isUnique)
                {
                    int    lastSlN     = GetEmployeeMaxSerialNo();
                    string accountCode = Generator.GenerateAccountCode("3301", lastSlN);
                    anEmployee.EmployeeNo           = Generator.GenerateEmployeeNo(anEmployee, lastSlN);
                    anEmployee.SubSubSubAccountCode = accountCode;
                    return(_iEmployeeGateway.Add(anEmployee) > 0);
                }

                return(false);
            }

            return(false);
        }
        /// <summary>
        /// Создаем запись пользователя, его профиля и его должности.
        /// Возвращаем информацию о новом сотруднике.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        protected override AddEmployeeUseCaseResult Handler(AddEmployeeUseCaseRequest request)
        {
            // ищем, не существовало ли пользователя с таким именем, и создаем, если не было
            User currentUser = FindUser(request.Login);

            if (currentUser != null)
            {
                throw new Exception("Данное имя пользователя уже занято");
            }
            _userGateway.Add(new User {
                Login = request.Login, Password = request.Password
            });
            User newUser = FindUser(request.Login);

            // сохраняем информацию о пользователе
            _profileGateway.Add(new UserProfile
            {
                FirstName  = request.FirstName,
                LastName   = request.LastName,
                MiddleName = request.MiddleName,
                Phone      = Phone.For(request.Phone),
                Gender     = (Domain.Enumerations.ProfileGender)request.Gender,
                Birthdate  = request.Birthdate,
                UserId     = newUser.Id
            });

            // записываем данные о сотруднике
            _employeeGateway.Add(new Employee
            {
                UserId     = newUser.Id,
                PositionId = request.PositionId
            });

            Employee newEmployee = _employeeGateway.FindByUserId(newUser.Id);

            return(new AddEmployeeUseCaseResult {
                Employee = _mapper.Map <EmployeeModel>(newEmployee)
            });
        }