private static void DeleteViewDependencyRecuricive(XmlRequest request, List <ClsViiewItemsChecked> checkedItems, TaskCompletedCallBack taskCompletedCallBack) { if (checkedItems.Any(c => c.CheckItemProcessed == false)) { var objListItem = checkedItems.FirstOrDefault(c => c.CheckItemProcessed == false); if (objListItem == null) { return; } { var objEnt = (Entity)objListItem.CheckedItem.Tag; if (request.IsUserView) { ((CrmServiceClient)request.ServiceProxy).CallerId = ((EntityReference)objEnt.Attributes["ownerid"]).Id; } var objResult = InternalDeleteViewDependency(request.OldAttributeName, objListItem.CheckedItem); objResult.OldFetchXml = (string)objEnt["fetchxml"]; if (objResult.LayoutXml != string.Empty) { objEnt["layoutxml"] = objResult.LayoutXml; } if (objResult.FetchXml != string.Empty) { objEnt["fetchxml"] = objResult.FetchXml; } request.ObjPlugin.WorkAsync(new WorkAsyncInfo { Message = "Deleting Dependency View " + objListItem.CheckedItem.Text + " for Attribute Name " + request.OldAttributeName, Work = (bw, e) => { try { request.ServiceProxy.Update(objEnt); }catch (Exception exc) { MessageBox.Show(request.ObjPlugin.ParentForm, exc.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }, PostWorkCallBack = e => { if (e.Error != null) { MessageBox.Show(request.ObjPlugin.ParentForm, e.Error.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { objListItem.CheckItemProcessed = true; DeleteViewDependencyRecuricive(request, checkedItems, taskCompletedCallBack); if (checkedItems.Any(c => c.CheckItemProcessed == false)) { return; } if (!request.IsUserView) { PublishEntity(request.ObjPlugin, request.ServiceProxy, request.Objentity); } taskCompletedCallBack?.Invoke(request); } } }); } } }
public static void DeleteViewDependency(XmlRequest request, TaskCompletedCallBack taskCompletedCallBack) { var checkedItemsProcess = ConvertListViweItems(request.CheckedItemsViews); DeleteViewDependencyRecuricive(request, checkedItemsProcess, taskCompletedCallBack); }
private static void ReplaceFormDependencyRecuricive(XmlRequest request, IReadOnlyCollection <ClsViiewItemsChecked> checkedItems, TaskCompletedCallBack taskCompletedCallBack) { if (checkedItems.All(c => c.CheckItemProcessed)) { return; } { var objListItem = checkedItems.FirstOrDefault(c => c.CheckItemProcessed == false); if (objListItem == null) { return; } { var objEnt = (Entity)objListItem.CheckedItem.Tag; if (!objEnt.Attributes.Contains("formxml")) { return; } var layoutXml = (string)objEnt["formxml"]; if (layoutXml.IndexOf(request.OldAttributeName, StringComparison.Ordinal) < 0) { return; } var doc = new XmlDocument(); doc.LoadXml(layoutXml); var allControls = doc.GetElementsByTagName("control"); var control = allControls.Cast <XmlNode>().FirstOrDefault(p => p.Attributes != null && p.Attributes["id"].InnerText == request.OldAttributeName); if (control == null) { return; } { var controlParentCell = control.ParentNode; var labelNode = controlParentCell?.SelectNodes(@"labels//label"); if (labelNode != null && labelNode.Count > 0) { var xmlAttributeCollection = labelNode[0].Attributes; if (xmlAttributeCollection != null) { xmlAttributeCollection["description"].InnerText = request.ObjAttDataReplace.DisplayName .LocalizedLabels.FirstOrDefault(l => l.LanguageCode == 1033) ?.Label ?? string.Empty; } } var findSimilerAttribute = request.Objentity.Attributes.Where(k => k.AttributeType == request.ObjAttDataReplace.AttributeType); XmlNode similerClassControl = null; foreach (var attSimilierControl in findSimilerAttribute) { similerClassControl = allControls.Cast <XmlNode>().FirstOrDefault(p => p.Attributes != null && p.Attributes["id"].InnerText == attSimilierControl.LogicalName); if (similerClassControl != null) { break; } } if (similerClassControl != null) { if (control.Attributes != null) { control.Attributes["id"].InnerText = request.ReplaceAttributeName; if (similerClassControl.Attributes != null) { control.Attributes["classid"].InnerText = similerClassControl.Attributes["classid"].InnerText; control.Attributes["datafieldname"].InnerText = request.ReplaceAttributeName; } } objEnt["formxml"] = doc.InnerXml; request.ObjPlugin.WorkAsync(new WorkAsyncInfo { Message = "Replacing Dependency Form " + objListItem.CheckedItem.Text + "\n Old Attribute Name " + request.OldAttributeName + " with New Attribute Name: " + request.ReplaceAttributeName, Work = (bw, e) => { try { request.ServiceProxy.Update(objEnt); } catch (Exception exc) { MessageBox.Show(request.ObjPlugin.ParentForm, exc.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }, PostWorkCallBack = e => { if (e.Error != null) { MessageBox.Show(request.ObjPlugin.ParentForm, e.Error.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { objListItem.CheckItemProcessed = true; ReplaceFormDependencyRecuricive(request, checkedItems, taskCompletedCallBack); if (checkedItems.Any(c => c.CheckItemProcessed == false)) { return; } if (request.IsViewDependency) { ReplaceViewDependency(request, taskCompletedCallBack); } else { PublishEntity(request.ObjPlugin, request.ServiceProxy, request.Objentity); taskCompletedCallBack?.Invoke(request); } } } }); } else { MessageBox.Show(@"Replace Attribute data type shold be same or same datatype control should be availbale on from : " + objListItem.CheckedItem.Text); } } } } }
private static void DeleteFormDependencyRecuricive(XmlRequest request, List <ClsViiewItemsChecked> checkedItems, TaskCompletedCallBack taskCompletedCallBack) { if (checkedItems.All(c => c.CheckItemProcessed)) { return; } { var objListItem = checkedItems.FirstOrDefault(c => c.CheckItemProcessed == false); if (objListItem == null) { return; } { var objEnt = (Entity)objListItem.CheckedItem.Tag; if (!objEnt.Attributes.Contains("formxml")) { return; } var layoutXml = (string)objEnt["formxml"]; var objResult = PerformXmlOperation(layoutXml, request.OldAttributeName, "control", "id", "row"); objEnt["formxml"] = objResult.PublishXml; request.ObjPlugin.WorkAsync(new WorkAsyncInfo { Message = "Deleting Dependency from " + objListItem.CheckedItem.Text + " for Attribute Name " + request.OldAttributeName, Work = (bw, e) => { try { request.ServiceProxy.Update(objEnt); } catch (Exception exc) { MessageBox.Show(request.ObjPlugin.ParentForm, exc.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }, PostWorkCallBack = e => { if (e.Error != null) { MessageBox.Show(request.ObjPlugin.ParentForm, e.Error.Message, @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { objListItem.CheckItemProcessed = true; DeleteFormDependencyRecuricive(request, checkedItems, taskCompletedCallBack); if (checkedItems.Any(c => c.CheckItemProcessed == false)) { return; } if (request.IsViewDependency) { DeleteViewDependency(request, taskCompletedCallBack); } else { PublishEntity(request.ObjPlugin, request.ServiceProxy, request.Objentity); taskCompletedCallBack?.Invoke(request); } } } }); } } }
public static void ReplaceFormDependency(XmlRequest request, TaskCompletedCallBack taskCompletedCallBack) { var checkedItemsProcess = ConvertListViweItems(request.CheckedFromItems); ReplaceFormDependencyRecuricive(request, checkedItemsProcess, taskCompletedCallBack); }