public async Task <PartnerCreateResponse> CreateAsync(PartnerCreateModel partnerCreateModel) { Guid id; try { id = await _partnerService.CreateAsync(_mapper.Map <Partner>(partnerCreateModel)); } catch (ClientAlreadyExistException e) { _log.Info(e.Message, partnerCreateModel); return(new PartnerCreateResponse { ErrorCode = PartnerManagementError.AlreadyRegistered, ErrorMessage = e.Message }); } catch (PartnerRegistrationFailedException e) { _log.Info(e.Message, partnerCreateModel); return(new PartnerCreateResponse { ErrorCode = PartnerManagementError.RegistrationFailed, ErrorMessage = e.Message }); } catch (LocationContactRegistrationFailedException e) { _log.Info(e.Message, partnerCreateModel); return(new PartnerCreateResponse { ErrorCode = PartnerManagementError.RegistrationFailed, ErrorMessage = e.Message }); } catch (LocationExternalIdNotUniqueException e) { _log.Info(e.Message, partnerCreateModel); return(new PartnerCreateResponse { ErrorCode = PartnerManagementError.LocationExternalIdNotUnique, ErrorMessage = e.Message }); } return(new PartnerCreateResponse { Id = id, ErrorCode = PartnerManagementError.None }); }
public CreatePartnerCommand(PartnerCreateModel model, IMediator mediator) { Model = model; _mediator = mediator; }
public async Task <(AdminServiceCreateResponseError, AdminModel)> RegisterPartnerAdminAsync(AdminRegisterModel model) { #region Create Admin var createAdminResponse = await _adminManagementServiceClient.AdminsApi.RegisterAsync( new RegistrationRequestModel { Email = model.Email, Password = model.Password, Company = model.CompanyName, Localization = _mapper.Map <Localization>(model.Localization), Department = DefaultStringValue, FirstName = DefaultStringValue, JobTitle = DefaultStringValue, LastName = DefaultStringValue, PhoneNumber = DefaultStringValue, Permissions = new List <AdminPermission> { new AdminPermission { Type = PermissionType.Dashboard.ToString(), Level = AdminPermissionLevel.PartnerEdit }, new AdminPermission { Type = PermissionType.VoucherManager.ToString(), Level = AdminPermissionLevel.PartnerEdit }, new AdminPermission { Type = PermissionType.ProgramPartners.ToString(), Level = AdminPermissionLevel.PartnerEdit }, new AdminPermission { Type = PermissionType.Reports.ToString(), Level = AdminPermissionLevel.PartnerEdit }, new AdminPermission { Type = PermissionType.AdminUsers.ToString(), Level = AdminPermissionLevel.PartnerEdit }, } }); if (createAdminResponse.Error != AdminManagementError.None) { switch (createAdminResponse.Error) { case AdminManagementError.AlreadyRegistered: return(AdminServiceCreateResponseError.AlreadyRegistered, null); case AdminManagementError.InvalidEmailOrPasswordFormat: return(AdminServiceCreateResponseError.InvalidEmailOrPasswordFormat, null); default: throw new ArgumentOutOfRangeException(nameof(createAdminResponse.Error), createAdminResponse.Error.ToString()); } } #endregion #region Create Partner var partnerRequest = new PartnerCreateModel { Name = model.CompanyName, UseGlobalCurrencyRate = true, BusinessVertical = Vertical.Retail, ClientId = await _partnerManagementClient.Auth.GenerateClientId(), ClientSecret = await _partnerManagementClient.Auth.GenerateClientSecret(), CreatedBy = Guid.Parse(createAdminResponse.Admin.AdminUserId) }; var response = await _partnerManagementClient.Partners.CreateAsync(partnerRequest); if (response.ErrorCode != PartnerManagementError.None) { throw LykkeApiErrorException.BadRequest(new LykkeApiErrorCode(response.ErrorCode.ToString(), response.ErrorMessage)); } #endregion return(AdminServiceCreateResponseError.None, _mapper.Map <AdminModel>(createAdminResponse.Admin)); }