private async Task CreatingLastLinkReport(IOrganizationServiceExtented service, SelectedFile selectedFile) { Guid?idLastLink = service.ConnectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var thread = new Thread(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, idLastLink); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(service.ConnectionData, ex); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); if (!dialogResult.GetValueOrDefault()) { this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.CreatingLastLinkWasCanceled); return; } if (!selectedReportId.HasValue) { this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.ReportNotFoundedByNameFormat1, selectedFile.Name); return; } ReportRepository reportRepository = new ReportRepository(service); this._iWriteToOutput.WriteToOutput(service.ConnectionData, Properties.OutputStrings.ReportIsSelected); var webresource = await reportRepository.GetByIdAsync(selectedReportId.Value); service.ConnectionData.AddMapping(webresource.Id, selectedFile.FriendlyFilePath); service.ConnectionData.Save(); }
private async Task UpdatingReport(SelectedFile selectedFile, ConnectionData connectionData, CommonConfiguration commonConfig) { if (connectionData == null) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.NoCurrentCRMConnection); return; } if (connectionData.IsReadOnly) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ConnectionIsReadOnlyFormat1, connectionData.Name); return; } var service = await ConnectAndWriteToOutputAsync(connectionData); if (service == null) { return; } bool isconnectionDataDirty = false; // Репозиторий для работы с веб-ресурсами ReportRepository reportRepository = new ReportRepository(service); if (File.Exists(selectedFile.FilePath)) { Report reportEntity = null; reportEntity = await reportRepository.FindAsync(selectedFile.FileName); if (reportEntity != null) { this._iWriteToOutput.WriteToOutput(connectionData, "Report founded by name."); isconnectionDataDirty = true; connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); } else { Guid?lastReportId = connectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); this._iWriteToOutput.WriteToOutput(connectionData, "Starting Custom Report selection form."); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var t = new Thread((ThreadStart)(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, lastReportId); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(connectionData, ex); } })); t.SetApartmentState(ApartmentState.STA); t.Start(); t.Join(); if (dialogResult.GetValueOrDefault()) { if (selectedReportId.HasValue) { this._iWriteToOutput.WriteToOutput(connectionData, "Custom report is selected."); reportEntity = await reportRepository.GetByIdAsync(selectedReportId.Value); isconnectionDataDirty = true; connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); } else { this._iWriteToOutput.WriteToOutput(connectionData, "!Warning. Report not exists. name: {0}.", selectedFile.Name); } } else { this._iWriteToOutput.WriteToOutput(connectionData, "Updating was cancelled."); return; } } if (reportEntity != null) { var update = new Entity(Report.EntityLogicalName); update.Id = reportEntity.Id; update.Attributes[Report.Schema.Attributes.bodytext] = File.ReadAllText(selectedFile.FilePath); await service.UpdateAsync(update); this._iWriteToOutput.WriteToOutput(connectionData, "Report updated in CRM: {0} - {1} - {2}", reportEntity.Name, reportEntity.FileName, reportEntity.ReportNameOnSRS); } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ReportNotFoundedInConnectionFormat2, connectionData.Name, selectedFile.FileName); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.FileNotExistsFormat1, selectedFile.FilePath); } if (isconnectionDataDirty) { //Сохранение настроек после публикации connectionData.Save(); } }
private async Task OpeningReport(CommonConfiguration commonConfig, ConnectionData connectionData, SelectedFile selectedFile, ActionOnComponent actionOnComponent) { if (!File.Exists(selectedFile.FilePath)) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.FileNotExistsFormat1, selectedFile.FilePath); return; } var service = await ConnectAndWriteToOutputAsync(connectionData); if (service == null) { return; } // Репозиторий для работы с веб-ресурсами ReportRepository reportRepository = new ReportRepository(service); Report reportEntity = await reportRepository.FindAsync(selectedFile.FileName); if (reportEntity != null) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ReportFoundedByNameFormat2, reportEntity.Id.ToString(), reportEntity.Name); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { Guid?reportId = connectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); if (reportId.HasValue) { reportEntity = await reportRepository.GetByIdAsync(reportId.Value); } if (reportEntity != null) { this._iWriteToOutput.WriteToOutput(connectionData, "Report not founded by name. Last link report is selected for opening."); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, "Report not founded by name and has not Last link."); this._iWriteToOutput.WriteToOutput(connectionData, "Starting Custom Report selection form."); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var thread = new Thread(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, reportId); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(connectionData, ex); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); if (dialogResult.GetValueOrDefault()) { if (selectedReportId.HasValue) { this._iWriteToOutput.WriteToOutput(connectionData, "Custom report is selected."); reportEntity = await reportRepository.GetByIdAsync(selectedReportId.Value); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, "!Warning. Report not exists. name: {0}.", selectedFile.Name); } } else { this._iWriteToOutput.WriteToOutput(connectionData, "Opening was cancelled."); return; } } } if (reportEntity == null) { service.TryDispose(); this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ReportNotFoundedByNameFormat1, selectedFile.FileName); return; } if (actionOnComponent == ActionOnComponent.OpenInWeb) { service.UrlGenerator.OpenSolutionComponentInWeb(Entities.ComponentType.Report, reportEntity.Id); service.TryDispose(); } else if (actionOnComponent == ActionOnComponent.OpenDependentComponentsInWeb) { connectionData.OpenSolutionComponentDependentComponentsInWeb(Entities.ComponentType.Report, reportEntity.Id); service.TryDispose(); } else if (actionOnComponent == ActionOnComponent.OpenDependentComponentsInExplorer) { WindowHelper.OpenSolutionComponentDependenciesExplorer( _iWriteToOutput , service , null , commonConfig , (int)ComponentType.Report , reportEntity.Id , null); } else if (actionOnComponent == ActionOnComponent.OpenSolutionsListWithComponentInExplorer) { WindowHelper.OpenExplorerSolutionExplorer( _iWriteToOutput , service , commonConfig , (int)ComponentType.Report , reportEntity.Id , null ); } }
private async Task DifferenceReport(ConnectionData connectionData, CommonConfiguration commonConfig, SelectedFile selectedFile, string fieldName, string fieldTitle, bool withSelect) { if (!File.Exists(selectedFile.FilePath)) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.FileNotExistsFormat1, selectedFile.FilePath); return; } var service = await ConnectAndWriteToOutputAsync(connectionData); if (service == null) { return; } if (string.IsNullOrEmpty(fieldName)) { fieldName = Report.Schema.Attributes.originalbodytext; fieldTitle = Report.Schema.Headers.originalbodytext; } Report reportEntity = null; using (service.Lock()) { // Репозиторий для работы с веб-ресурсами var reportRepository = new ReportRepository(service); if (withSelect) { Guid?reportId = connectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var thread = new Thread(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, reportId); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(connectionData, ex); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); if (dialogResult.GetValueOrDefault()) { if (selectedReportId.HasValue) { this._iWriteToOutput.WriteToOutput(connectionData, "Custom report is selected."); reportEntity = await reportRepository.GetByIdAsync(selectedReportId.Value); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, "!Warning. Report not exists. name: {0}.", selectedFile.Name); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.DifferenceWasCancelled); return; } } else { reportEntity = await reportRepository.FindAsync(selectedFile.FileName); if (reportEntity != null) { this._iWriteToOutput.WriteToOutput(connectionData, "Report founded by name."); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { Guid?reportId = connectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); if (reportId.HasValue) { reportEntity = await reportRepository.GetByIdAsync(reportId.Value); } if (reportEntity != null) { this._iWriteToOutput.WriteToOutput(connectionData, "Report not founded by name. Last link report is selected for difference."); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, "Report not founded by name and has not Last link."); this._iWriteToOutput.WriteToOutput(connectionData, "Starting Custom Report selection form."); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var thread = new Thread(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, reportId); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(connectionData, ex); } }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); if (dialogResult.GetValueOrDefault()) { if (selectedReportId.HasValue) { this._iWriteToOutput.WriteToOutput(connectionData, "Custom report is selected."); reportEntity = await reportRepository.GetByIdAsync(selectedReportId.Value); connectionData.AddMapping(reportEntity.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, "!Warning. Report not exists. name: {0}.", selectedFile.Name); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.DifferenceWasCancelled); return; } } } } } if (reportEntity == null) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.InConnectionReportWasNotFoundFormat2, connectionData.Name, selectedFile.FileName); return; } var reportName = EntityFileNameFormatter.GetReportFileName(connectionData.Name, reportEntity.Name, reportEntity.Id, fieldTitle, selectedFile.Extension); string temporaryFilePath = FileOperations.GetNewTempFilePath(Path.GetFileNameWithoutExtension(reportName), selectedFile.Extension); var textReport = reportEntity.GetAttributeValue <string>(fieldName); if (ContentComparerHelper.TryParseXml(textReport, out var doc)) { textReport = doc.ToString(); } File.WriteAllText(temporaryFilePath, textReport, new UTF8Encoding(false)); //DownloadReportDefinitionRequest rdlRequest = new DownloadReportDefinitionRequest //{ // ReportId = reportEntity.Id //}; //DownloadReportDefinitionResponse rdlResponse = (DownloadReportDefinitionResponse)service.Execute(rdlRequest); //using (XmlTextWriter reportDefinitionFile = new XmlTextWriter(temporaryFilePath, System.Text.Encoding.UTF8)) //{ // reportDefinitionFile.WriteRaw(rdlResponse.BodyText); // reportDefinitionFile.Close(); //} this._iWriteToOutput.WriteToOutput(connectionData, "Starting Compare Program for {0} and {1}", selectedFile.FriendlyFilePath, reportName); string fileLocalPath = selectedFile.FilePath; string fileLocalTitle = selectedFile.FileName; string filePath2 = temporaryFilePath; string fileTitle2 = connectionData.Name + "." + selectedFile.FileName + " - " + temporaryFilePath; await this._iWriteToOutput.ProcessStartProgramComparerAsync(connectionData, fileLocalPath, filePath2, fileLocalTitle, fileTitle2); }
private async Task CreatingLastLinkReport(SelectedFile selectedFile, ConnectionData connectionData) { if (connectionData == null) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.NoCurrentCRMConnection); return; } if (!File.Exists(selectedFile.FilePath)) { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.FileNotExistsFormat1, selectedFile.FilePath); return; } this._iWriteToOutput.WriteToOutput(connectionData, connectionData.GetConnectionDescription()); // Подключаемся к CRM. var service = await QuickConnection.ConnectAsync(connectionData); if (service == null) { _iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ConnectionFailedFormat1, connectionData.Name); return; } this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.CurrentServiceEndpointFormat1, service.CurrentServiceEndpoint); Guid?idLastLink = connectionData.GetLastLinkForFile(selectedFile.FriendlyFilePath); bool?dialogResult = null; Guid?selectedReportId = null; string selectedPath = string.Empty; var t = new Thread((ThreadStart)(() => { try { var form = new Views.WindowReportSelect(this._iWriteToOutput, service, selectedFile, idLastLink); dialogResult = form.ShowDialog(); selectedReportId = form.SelectedReportId; } catch (Exception ex) { DTEHelper.WriteExceptionToOutput(connectionData, ex); } })); t.SetApartmentState(ApartmentState.STA); t.Start(); t.Join(); if (dialogResult.GetValueOrDefault()) { if (selectedReportId.HasValue) { ReportRepository reportRepository = new ReportRepository(service); this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ReportIsSelected); var webresource = await reportRepository.GetByIdAsync(selectedReportId.Value); connectionData.AddMapping(webresource.Id, selectedFile.FriendlyFilePath); connectionData.Save(); } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.ReportNotFoundedByNameFormat1, selectedFile.Name); } } else { this._iWriteToOutput.WriteToOutput(connectionData, Properties.OutputStrings.CreatingLastLinkWasCanceled); return; } }