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; } }); }
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(); } }); }