public async Task<ResponseBool> SalesmanUserAddAsync(DistributorSalesmanItem distributorSalesmanItem,
     UserItem userItem)
 {
     ResponseBool _response = new ResponseBool { Success = false, ErrorInfo = "" };
     bool success = false;
     string url = string.Format("api/distributorservices/salesmanuseradd");
     var httpClient = setupHttpClient();
     httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
     try
     {
         SalesmanAddDTO dto = new SalesmanAddDTO { Salesman = distributorSalesmanItem, User = userItem };
         var response = await httpClient.PostAsJsonAsync(url, dto);
         _response = await response.Content.ReadAsAsync<ResponseBool>();
         if (response.IsSuccessStatusCode)
             success = true;
     }
     catch (Exception ex)
     {
         _log.Error("Failed to add salesman /user", ex);
     }
     return _response;
 }
        public HttpResponseMessage SalesmanUserAdd(SalesmanAddDTO salesmanAddDto)
        {

            var response = new ResponseBool { Success = false };
            User user = null;
            try
            {
                var dsItem = salesmanAddDto.Salesman;
                var userItem = salesmanAddDto.User;
                CostCentre ds = _costCentreRepository.GetById(dsItem.MasterId);
                if (ds == null)
                {
                    ds = _costCentreFactory.CreateCostCentre(dsItem.MasterId, CostCentreType.DistributorSalesman,
                                                             _costCentreRepository.GetById(dsItem.ParentCostCentreId))
                         as
                         DistributorSalesman;
                }
                ds.Name = dsItem.Name;
                ds.CostCentreCode = dsItem.CostCentreCode;
                user = _userRepository.GetById(userItem.MasterId);
                if (user == null)
                    user = new User(Guid.NewGuid());

                user.Username = userItem.Username;
                user.Password = userItem.Password;
                user.PIN = userItem.PIN;
                user.Mobile = userItem.Mobile;
                user.UserType = (UserType)userItem.UserType;
                user.TillNumber = userItem.TillNumber;
                ValidationResultInfo vri = _userRepository.Validate(user);
                if (!vri.IsValid)
                    throw new DomainValidationException(vri, "Failed to save user");
                var ccId = _costCentreRepository.Save(ds);
                user.CostCentre = ccId;
                var userId = _userRepository.Save(user);
                response.Success = true;
                response.ErrorInfo = "Successfully saved.";
            }
            catch (DomainValidationException dve)
            {
                string errorMsg = dve.ValidationResults.Results.Aggregate("Error: Invalid user fields.\n",
                                                                          (current, msg) =>
                                                                          current + ("\t- " + msg.ErrorMessage + "\n"));
                response.ErrorInfo = errorMsg;
                _log.Error(errorMsg, dve);
            }
            catch (Exception ex) //any other
            {
                response.ErrorInfo = "Error: An error occurred when saving the user.";
                _log.Error("Error: An error occurred when saving the user.", ex);
            }

            return Request.CreateResponse(HttpStatusCode.OK, response);
        }