Esempio n. 1
0
        public AddStaffResponse AddStaff(AddStaffRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.StaffDetail, "StaffDetail");

            // if trying to associate with a user account, check the account is free
            if (!string.IsNullOrEmpty(request.StaffDetail.UserName))
            {
                ValidateUserNameFree(request.StaffDetail.UserName);
            }

            // create new staff
            var staff = new Staff();

            // set properties from request
            var assembler = new StaffAssembler();

            var groupsEditable = Thread.CurrentPrincipal.IsInRole(AuthorityTokens.Admin.Data.StaffGroup);

            assembler.UpdateStaff(request.StaffDetail,
                                  staff,
                                  groupsEditable,
                                  groupsEditable,
                                  PersistenceContext);

            PersistenceContext.Lock(staff, DirtyState.New);

            // ensure the new staff is assigned an OID before using it in the return value
            PersistenceContext.SynchState();

            return(new AddStaffResponse(assembler.CreateStaffSummary(staff, PersistenceContext)));
        }
Esempio n. 2
0
        public ResponseErrorEnum?AddStaff(AddStaffRequest request)
        {
            try
            {
                var staffEmails = _staffRepository.GetAll().Select(s => s.Email);
                if (staffEmails.Contains(request.Email))
                {
                    return(ResponseErrorEnum.EmailAlreadyUsed);
                }

                var passwordHash = BCrypt.Net.BCrypt.HashPassword(request.Password);

                var staff = new Staff
                {
                    Address      = request.Address,
                    CreatedAt    = DateTime.Now,
                    Email        = request.Email,
                    FirstName    = request.FirstName,
                    LastName     = request.LastName,
                    PasswordHash = passwordHash,
                    PhoneNumber  = request.PhoneNumber,
                    StaffType    = request.StaffType
                };

                _staffRepository.Insert(staff);
                _staffRepository.Save();
            }
            catch
            {
                // TODO: Log the exception.
                return(ResponseErrorEnum.RepositoryError);
            }

            return(null);
        }