Beispiel #1
0
        public void Add(string loginToken, UserModel model)
        {
            var token = _loginTokenGateway.Get(loginToken);

            var user = new UserDomain(
                new UserAspect
            {
                UserId = new UserReference(token.OpenId.Code, "UserAspect"),
                ExpectationAfterGraduation = model.ExpectationAfterGraduation,
                Gender = MapInt(model.Gender) == null
                        ? GenderType.Unknown
                        : (GenderType)MapInt(model.Gender),
                Height       = MapInt(model.Height),
                Weight       = MapInt(model.Weight),
                MajorIn      = model.MajorIn,
                Name         = model.Name,
                StudyContent = model.StudyContent,
                Hobby        = model.Hobby
            },
                new UserInfoAspect
            {
                OpenId    = new UserReference(token.OpenId.Code, "UserInfo"),
                NickName  = model.NickName,
                AvatarUrl = model.AvatarUrl,
                City      = model.City,
                Country   = model.Country,
                Language  = model.Language,
                Province  = model.Province
            });

            _userGateway.Add(user);
        }
        /// <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)
            });
        }