public override void Process(ServicePipelineArgs args) { UpdateUserRequest request; UpdateUserResult result; ValidateArguments <UpdateUserRequest, UpdateUserResult>(args, out request, out result); Assert.IsNotNull((object)request.CommerceUser, "request.CommerceUser"); Assert.IsNotNull((object)request.CommerceUser.ExternalId, "request.CommerceUser.ExternalId"); Assert.IsNotNull((object)request.Shop, "request.Shop"); Container container = this.GetContainer(request.Shop.Name, request.CommerceUser.ExternalId, "", "", args.Request.CurrencyCode, new DateTime?()); string externalId = request.CommerceUser.ExternalId; EntityView entityView = this.GetEntityView(container, externalId, string.Empty, "Details", "EditCustomer", (ServiceProviderResult)result); if (!result.Success) { return; } this.TranslateCommerceUserToView(entityView, request.CommerceUser); CommerceCommand commerceCommand = this.DoAction(container, entityView, (ServiceProviderResult)result); if (commerceCommand != null && commerceCommand.ResponseCode.Equals("ok", StringComparison.OrdinalIgnoreCase)) { result.CommerceUser = request.CommerceUser; } base.Process(args); }
public override void Process(ServicePipelineArgs args) { ValidateArguments <CreateUserRequest, CreateUserResult>(args, out var request, out var result); Assert.IsNotNull(request.UserName, "request.UserName"); Assert.IsNotNull(request.Password, "request.Password"); Container container = GetContainer(request.Shop.Name, string.Empty, "", "", args.Request.CurrencyCode, new DateTime?()); CommerceUser commerceUser1 = result.CommerceUser; if (commerceUser1 != null && commerceUser1.UserName.Equals(request.UserName, StringComparison.OrdinalIgnoreCase)) { string entityId = "Entity-Customer-" + request.UserName; ServiceProviderResult currentResult = new ServiceProviderResult(); EntityView entityView = GetEntityView(container, entityId, string.Empty, "Details", string.Empty, currentResult); if (currentResult.Success && !string.IsNullOrEmpty(entityView.EntityId)) { base.Process(args); return; } } EntityView entityView1 = GetEntityView(container, string.Empty, string.Empty, "Details", "AddCustomer", result); if (!result.Success) { return; } entityView1.Properties.FirstOrDefault(p => p.Name.Equals("Domain")).Value = request.UserName.Split('\\')[0]; entityView1.Properties.FirstOrDefault(p => p.Name.Equals("LoginName")).Value = request.UserName.Split('\\')[1]; entityView1.Properties.FirstOrDefault(p => p.Name.Equals("AccountStatus")).Value = "ActiveAccount"; if (!string.IsNullOrEmpty(request.Email)) { entityView1.Properties.FirstOrDefault(p => p.Name.Equals("Email")).Value = request.Email; } CommerceCommand commerceCommand = DoAction(container, entityView1, result); if (commerceCommand != null && commerceCommand.ResponseCode.Equals("ok", StringComparison.OrdinalIgnoreCase)) { CommerceUser commerceUser2 = EntityFactory.Create <CommerceUser>("CommerceUser"); commerceUser2.Email = request.Email; commerceUser2.UserName = request.UserName; commerceUser2.ExternalId = commerceCommand.Models.OfType <CustomerAdded>().FirstOrDefault()?.CustomerId; result.CommerceUser = commerceUser2; request.Properties.Add(new PropertyItem() { Key = "UserId", Value = result.CommerceUser.ExternalId }); string entityId = "Entity-Customer-" + request.UserName; TestSave(container, entityId, request, result, commerceUser2.ExternalId); } base.Process(args); }
public override void Process(ServicePipelineArgs args) { var request = args.Request as AddReviewRequest; var result = args.Result as AddReviewResult; Assert.IsNotNull(request, nameof(request)); Assert.IsNotNull(result, nameof(result)); try { CommerceCommand command = Proxy.DoCommand( this.GetContainer(request.ShopName, string.Empty) .AddReview(request.ProductId, request.Text, request.Author, request.Score)); result.HandleCommandMessages(command); } catch (Exception ex) { Log.Error(ex.Message, ex, this); result.Success = false; } base.Process(args); }
private IList <MissingReferencesModel> GetMissingReferences(CommerceCommand command) { return(command.Models.OfType <MissingReferencesModel>().ToList()); }
private IList <string> GetMessages(CommerceCommand command, string code) { return(command.Messages.Where(x => x.Code.Equals(code, StringComparison.OrdinalIgnoreCase)).Select(x => x.Text).ToList()); }
public static void WaitUntilCompletion(this CommerceCommand command, params string[] allowedErrorTerms) { command.Should().NotBeNull(); command.ResponseCode.Should().Be("Ok"); WaitUntilCompletion(command.TaskId, allowedErrorTerms); }
public override async Task <IssueCouponArgument> Run(IssueCouponArgument arg, CommercePipelineExecutionContext context) { var policy = context.GetPolicy <LoyaltyPointsPolicy>(); var summary = arg.Customer.GetComponent <LoyaltySummary>(); if (summary.TotalPoints - summary.AppliedPoints < policy.PointsForCoupon) { return(arg); } ManagedList couponList = await _getManagedListCommand.Process(context.CommerceContext, Constants.AvailableCouponsList); if (couponList == null) { return(arg); } var commerceCommand = new CommerceCommand(_serviceProvider); await commerceCommand.PerformTransaction(context.CommerceContext, async() => { int couponsToIssue = ((summary.TotalPoints - summary.AppliedPoints) / policy.PointsForCoupon); CommerceList <Coupon> list = await _findEntitiesInListCommand.Process <Coupon>(context.CommerceContext, Constants.AvailableCouponsList, 0, couponsToIssue); if (list.Items.Count < couponsToIssue) { context.Abort( $"{Name}: Unable to provision required {couponsToIssue} coupons. Examine List {Constants.AvailableCouponsList} and CreateCouponsMinion process.", context); return; } List <string> couponCodes = list.Items.Select(coupon => coupon.Code).ToList(); List <string> entityIds = list.Items.Select(coupon => coupon.Id).ToList(); var result = await _removeListEntitiesCommand.Process(context.CommerceContext, Constants.AvailableCouponsList, entityIds); if (!result.Success) { context.Abort($"{Name}: Unable to remove coupon(s) from List {Constants.AvailableCouponsList}", context); return; } summary.AppliedPoints += couponsToIssue *policy.PointsForCoupon; summary.CouponEntities.AddRange(entityIds); arg.CouponEntities.AddRange(entityIds); arg.Coupons.AddRange(couponCodes); await _persistEntityPipeline.Run(new PersistEntityArgument(arg.Customer), context); }); return(arg); }