Example #1
0
        /// <summary>
        /// Produces new staffs and add them to data source
        /// </summary>
        /// <param name="count">how many restaurants will be hired</param>
        public void HireStaff(int count)
        {
            CreateStaffRequest request = BuildCreateStaffRequest(count);

            var response = _staffService.CreateStaff(request);

            if (response == null)
            {
                throw new Exception("");
            }
        }
Example #2
0
        /// <summary>
        /// 创建客服账号。
        /// </summary>
        /// <param name="req"><see cref="CreateStaffRequest"/></param>
        /// <returns><see cref="CreateStaffResponse"/></returns>
        public CreateStaffResponse CreateStaffSync(CreateStaffRequest req)
        {
            JsonResponseModel <CreateStaffResponse> rsp = null;

            try
            {
                var strResp = this.InternalRequestSync(req, "CreateStaff");
                rsp = JsonConvert.DeserializeObject <JsonResponseModel <CreateStaffResponse> >(strResp);
            }
            catch (JsonSerializationException e)
            {
                throw new TencentCloudSDKException(e.Message);
            }
            return(rsp.Response);
        }
Example #3
0
        public IHttpActionResult Post(
            [FromUri] CreateStaffRequest request,
            [FromBody] CreateStaffPayload payload)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequestWithErrors());
            }

            request.Payload = payload;

            var result = _createStaffProcessor.Process(request);

            return(Ok(result));
        }
Example #4
0
        public async Task <ActionResult <BaseResponse <StaffViewModel> > > PostAccount([FromBody] CreateStaffRequest request)
        {
            try
            {
                var raw       = Request.Headers.FirstOrDefault(x => x.Key.Equals("Authorization")).Value;
                var requester = IdentityManager.GetUsernameFromToken(raw);
                var roles     = IdentityManager.GetRolesFromToken(raw);

                var result = _staffService.CreateStaff(request, requester, roles);

                if (result == null)
                {
                    return(BadRequest(new ErrorResponse(StatusCodes.Status400BadRequest.ToString()
                                                        , "Failed to create a staff")));
                }

                return(Created(result.Id.ToString(), new BaseResponse <StaffViewModel>()
                {
                    Data = result
                }));
            }
            catch (Exception ex)
            {
                if (ex.Message.StartsWith("ERR"))
                {
                    return(BadRequest(new ErrorResponse(ex.Message)));
                }
                else
                {
                    throw;
                }
            }
        }
        public StaffViewModel CreateStaff(CreateStaffRequest request, string createdBy, IEnumerable <string> roles = null)
        {
            if (roles.Count() == 0 || roles == null)
            {
                return(null);
            }

            if (roles.Contains(Constants.ROLE_MOD_NAME) && !request.RoleId.Equals(Constants.ROLE_STAFF_ID))
            {
                return(null);
            }

            if (!request.Password.IsEmpty() && request.PasswordConfirmation.IsEmpty())
            {
                throw new Exception(Constants.ERR_EMPTY_PWD_CONFIR);
            }
            else if (!request.Password.IsEmpty() && !request.Password.Equals(request.PasswordConfirmation))
            {
                throw new Exception(Constants.ERR_PWD_NOTMATCH);
            }

            if (request.Email.IsEmpty())
            {
                throw new Exception(Constants.ERR_EMPTY_EMAIL);
            }
            if (request.FullName.IsEmpty())
            {
                throw new Exception(Constants.ERR_EMPTY_FNAME);
            }
            if (request.PhoneNumber.Length > Constants.CONSTRAINT_PHONENUM_MAXLEN)
            {
                throw new Exception(Constants.ERR_PHONENUM_MAXLEN);
            }


            var repo = _unitOfWork.Repository <Account>();

            var creatingStaff = _mapper.Map <Account>(request);

            try
            {
                creatingStaff.Id           = Guid.NewGuid();
                creatingStaff.CreatedBy    = createdBy;
                creatingStaff.UpdatedBy    = createdBy;
                creatingStaff.PasswordHash = IdentityManager.HashPassword(request.Password);
                repo.Insert(creatingStaff);
                repo.Commit();
            }
            catch (DbUpdateException due)
            {
                var se = due.GetBaseException() as SqlException;
                if (se != null)
                {
                    if (se.Errors.Count > 0)
                    {
                        switch (se.Errors[0].Number)
                        {
                        case 547:     // Foreign Key violation
                            throw new Exception(Constants.ERR_ROLE_FK);

                        case 2627:
                            throw new Exception(Constants.ERR_UNAME_NOTAVAILABLE);

                        default:
                            throw;
                        }
                    }
                }
            }



            return(_mapper.Map <StaffViewModel>(creatingStaff));
        }