示例#1
0
        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
            });
        }
示例#2
0
 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));
        }