Exemplo n.º 1
0
        private void RaiseCreateRmaRequestInteractionRequest()
        {
            var rmaRequest = CreateEntity <RmaRequest>();

            rmaRequest.IsPhysicalReturnRequired = true;

            var itemVM = _wizardRmaVmFactory.GetViewModelInstance(
                new KeyValuePair <string, object>("innerOrder", InnerItem),
                new KeyValuePair <string, object>("rmaRequest", rmaRequest));

            var confirmation = new Confirmation {
                Title = "Create RMA request".Localize(), Content = itemVM
            };

            CommonOrderWizardDialogInteractionRequest.Raise(confirmation, (x) =>
            {
                if (x.Confirmed)
                {
                    rmaRequest = itemVM.GetRmaRequest();
                    if (!rmaRequest.IsPhysicalReturnRequired)
                    {
                        rmaRequest.SetCurrentStatus((int)RmaRequestStatus.AwaitingCompletion, _client);
                    }

                    // workaround:begin1
                    // preparing for save: clear LineItem values otherwise .InjectFrom() will crash
                    foreach (var rmaItem in rmaRequest.RmaReturnItems)
                    {
                        rmaItem.RmaLineItems[0].LineItem = null;
                    }
                    Repository.Add(rmaRequest);
                    // workaround:end1

                    InnerItem.RmaRequests.Add(rmaRequest);
                    //await Save(false);
                    DoSaveChanges1();

                    // workaround:begin2
                    // set right values after save
                    foreach (var rmaItem in rmaRequest.RmaReturnItems)
                    {
                        var newLineItem = InnerItem.OrderForms[0].LineItems.First(x1 => x1.LineItemId == rmaItem.RmaLineItems[0].LineItemId);
                        rmaItem.RmaLineItems[0].LineItem = newLineItem;
                    }
                    // workaround:end2

                    var rmaRequestViewModel = _rmaRequestVmFactory.GetViewModelInstance(
                        new KeyValuePair <string, object>("rmaRequestItem", rmaRequest),
                        new KeyValuePair <string, object>("parentViewModel", this));
                    RmaRequestViewModels.Add(rmaRequestViewModel);

                    // reinitialize changes
                    CloseAllSubscription();
                    SetAllSubscription();

                    // show created RmaRequest item
                    SelectedTabIndex = ReturnsTabIndex;
                }
            });
        }
Exemplo n.º 2
0
        internal void RaiseCreateExchangeInteractionRequest(RmaRequest item)
        {
            RmaRequest rmaRequest;

            if (item == null)
            {
                rmaRequest = CreateEntity <RmaRequest>();
            }
            else
            {
                rmaRequest = item.DeepClone(EntityFactory as IKnownSerializationTypes);
            }

            var itemVM = _wizardExchangeVmFactory.GetViewModelInstance(
                new KeyValuePair <string, object>("innerOrder", InnerItem),
                new KeyValuePair <string, object>("rmaRequest", rmaRequest));

            var confirmation = new Confirmation {
                Title = "Create an exchange Order".Localize(), Content = itemVM
            };

            CommonOrderWizardDialogInteractionRequest.Raise(confirmation, (x) =>
            {
                if (x.Confirmed)
                {
                    rmaRequest        = itemVM.GetRmaRequest();
                    var exchangeOrder = rmaRequest.ExchangeOrder;
                    if (InnerItem.RmaRequests.All(x1 => x1.RmaRequestId != rmaRequest.RmaRequestId))
                    {
                        // workaround:begin1
                        // preparing for save
                        Repository.Add(exchangeOrder);
                        rmaRequest.ExchangeOrder = null;
                        // clear LineItem values otherwise the next _repository.Add(rmaRequest); will crash
                        foreach (var rmaItem in rmaRequest.RmaReturnItems)
                        {
                            rmaItem.RmaLineItems[0].LineItem = null;
                        }
                        Repository.Add(rmaRequest);
                        // workaround:end1

                        InnerItem.RmaRequests.Add(rmaRequest);
                    }
                    else
                    {
                        item.ExchangeOrder = exchangeOrder;
                        OnUIThread(() => item.InjectFrom <CloneInjection>(rmaRequest));
                        Repository.Add(exchangeOrder);
                    }

                    DoSaveChanges1();

                    // workaround:begin2
                    // set right values after save
                    foreach (var rmaItem in rmaRequest.RmaReturnItems)
                    {
                        var newLineItem = InnerItem.OrderForms[0].LineItems.First(x1 => x1.LineItemId == rmaItem.RmaLineItems[0].LineItemId);
                        rmaItem.RmaLineItems[0].LineItem = newLineItem;
                    }
                    rmaRequest.ExchangeOrder = exchangeOrder;
                    // workaround:end2

                    var rmaRequestViewModel = _rmaRequestVmFactory.GetViewModelInstance(
                        new KeyValuePair <string, object>("rmaRequestItem", rmaRequest)
                        , new KeyValuePair <string, object>("parentViewModel", this));
                    RmaRequestViewModels.Add(rmaRequestViewModel);

                    // reinitialize changes
                    CloseAllSubscription();
                    SetAllSubscription();

                    // show created RmaRequest item
                    SelectedTabIndex = ReturnsTabIndex;

                    // open newly created ExchangeOrder
                    rmaRequestViewModel.ExchangeOrderViewCommand.Execute();
                }
            });
        }