/// <summary> /// Updateds the element. /// </summary> /// <param name="element">The element.</param> /// <returns> /// The <see cref="UPMElement" />. /// </returns> public override UPMElement UpdatedElement(UPMElement element) { UPMSyncConflictsPage page = new UPMSyncConflictsPage(StringIdentifier.IdentifierWithStringId("SyncConflictsPage")); page.SyncConflictEmail = ConfigurationUnitStore.DefaultStore.ConfigValue("Sync.ConflictEmailAddress"); IOfflineStorage offlineStorage = UPOfflineStorage.DefaultStorage; var offlineRequests = this.ShowAllOfflineRequests ? offlineStorage.OfflineRequests : offlineStorage.ConflictRequests; if (offlineRequests == null || offlineRequests.Count == 0) { this.AddNoConflictsFoundPage(page); return(page); } foreach (UPOfflineRequest request in offlineRequests) { IIdentifier identifier; if (!string.IsNullOrEmpty(request.IdentifyingRecordIdentification)) { identifier = new RecordIdentifier(request.IdentifyingRecordIdentification); } else { identifier = StringIdentifier.IdentifierWithStringId($"request_{request.RequestNr}"); } UPMSyncConflictWithContext syncConflict = new UPMSyncConflictWithContext(identifier); request.LoadFromOfflineStorage(); syncConflict.OfflineRequest = request; syncConflict.CanBeFixed = request.FixableByUser; syncConflict.CanBeReported = !string.IsNullOrEmpty(page.SyncConflictEmail) && syncConflict.OfflineRequest.HasXml; if (!string.IsNullOrEmpty(request.ImageName)) { //SyncConflict.Icon = UIImage.ImageNamed(request.ImageName); // CRM-5007 } UPMStringField titleLineField = new UPMStringField(null); titleLineField.StringValue = request.TitleLine; syncConflict.MainField = titleLineField; string detailsLine = request.DetailsLine; if (!string.IsNullOrEmpty(detailsLine)) { UPMStringField detailsLineField = new UPMStringField(null); detailsLineField.StringValue = detailsLine; syncConflict.DetailField = detailsLineField; } if (!this.ShowAllOfflineRequests) { UPMErrorStatus error = UPMErrorStatus.ErrorStatusWithMessageDetails(request.Error, request.Response); syncConflict.AddStatus(error); } List <UPOfflineRequest> dependingRequests = request.DependentRequests; if (dependingRequests != null) { foreach (UPOfflineRequest dependentRequest in dependingRequests) { string description = $"{dependentRequest.TitleLine}-{dependentRequest.DetailsLine}"; UPMWarnStatus warning = UPMWarnStatus.WarnStatusWithMessageDetails(description, null); syncConflict.AddStatus(warning); } } page.AddSyncConflict(syncConflict); } if (this.oldNumberOfConflicts >= 0 && this.oldNumberOfConflicts != offlineRequests.Count) { Messenger.Default.Send(SyncManagerMessage.Create(SyncManagerMessageKey.NumberOfConflictsChanged)); } this.oldNumberOfConflicts = offlineRequests.Count; return(page); }
/// <summary> /// Handles the page error details. /// </summary> /// <param name="message">The message.</param> /// <param name="details">The details.</param> /// <returns></returns> public virtual bool HandlePageErrorDetails(string message, string details) { var errorStatus = UPMErrorStatus.ErrorStatusWithMessageDetails(message, details); return(this.ShowStatus(errorStatus)); }
/// <inheritdoc/> public override void ViewWillAppear() { base.ViewWillAppear(); if (this.SearchPage.AvailableFilters.Count < 1) { this.SearchPage.Status = UPMErrorStatus.ErrorStatusWithMessageDetails(string.Empty, LocalizedString.TextErrorConfiguration); return; } string configValue = this.ViewReference.ContextValueForKey("AdditionalParameters"); Dictionary <string, object> additionalParametersDictionary = null; if (this.LocationMode == UPMLocationModeType.Manual) { return; } else { this.LocationMode = UPMLocationModeType.Auto; } if (configValue?.Length > 0) { additionalParametersDictionary = configValue.JsonDictionaryFromString(); } if (this.copyFieldsDictionary?.Count > 0) { if (additionalParametersDictionary?.Count > 0) { var dict = new Dictionary <string, object>(additionalParametersDictionary); foreach (var key in this.copyFieldsDictionary.Keys) { dict.Add(key, this.copyFieldsDictionary[key]); } additionalParametersDictionary = dict; } else { additionalParametersDictionary = this.copyFieldsDictionary; } } if (additionalParametersDictionary?.Count > 0) { string gpsY = additionalParametersDictionary.ValueOrDefault("GpsY") as string; string gpsX = additionalParametersDictionary.ValueOrDefault("GpsX") as string; if ((gpsX != null && gpsX != "0") && (gpsY != null && gpsY != "0")) { this.initialTarget = new Location(gpsX.ToDouble(), gpsY.ToDouble()); if (this.LocationMode != UPMLocationModeType.Manual) { this.LocationMode = UPMLocationModeType.Initial; } } else { string gpsCountry = additionalParametersDictionary.ValueOrDefault("GpsCountry") as string; string gpsCity = additionalParametersDictionary.ValueOrDefault("GpsCity") as string; string gpsStreet = additionalParametersDictionary.ValueOrDefault("GpsStreet") as string; string address = null; if (gpsStreet != null) { address = gpsStreet; } if (gpsCity != null) { if (address != null) { address = $"{address},{gpsCity}"; } else { address = gpsCity; } } if (gpsCountry != null) { if (address != null) { address = $"{address}, {gpsCountry}"; } else { address = gpsCountry; } } if (address != null) { this.LocationMode = UPMLocationModeType.Initial; } this.LocationMode = UPMLocationModeType.Auto; this.StartAutoLocation(); } } if (this.LocationMode == UPMLocationModeType.Auto || this.LocationMode == UPMLocationModeType.Initial) { this.StartAutoLocation(); } }
/// <summary> /// Updates the page with result. /// </summary> /// <param name="result"> /// The result. /// </param> public void UpdatePageWithResult(UPCRMResult result) { if (result == null) { return; } var oldPage = this.Page; var newPage = (MDetailPage)this.InstantiatePage(); newPage.LabelText = oldPage.LabelText; newPage.Invalid = false; newPage.Status = null; if (result.RowCount == 0) { if (this.RequestOption == UPRequestOption.BestAvailable) { var containerMetaInfo = new UPContainerMetaInfo(this.detailsControl) { ReplaceCaseSensitiveCharacters = ConfigurationUnitStore.DefaultStore.ConfigValueIsSet( "Search.ReplaceCaseSensitiveCharacters") }; if (string.IsNullOrWhiteSpace(this.LinkRecordIdentification)) { result = containerMetaInfo.ReadRecord(this.infoAreaId.InfoAreaIdRecordId(this.recordId)); } else { containerMetaInfo.SetLinkRecordIdentification(this.LinkRecordIdentification, this.LinkId); result = containerMetaInfo.Find(); } if (result.RowCount == 0) { var errorStatus = UPMErrorStatus.ErrorStatusWithMessageDetails("Loading error", null); newPage.Status = errorStatus; newPage.Invalid = true; this.TopLevelElement = newPage; this.InformAboutDidFailTopLevelElement(this.Page); return; } } else { var errorStatus = UPMErrorStatus.ErrorStatusWithMessageDetails("Loading error", null); newPage.Status = errorStatus; newPage.Invalid = true; this.TopLevelElement = newPage; this.InformAboutDidFailTopLevelElement(this.Page); return; } } var resultRow = result.ResultRowAtIndex(0) as UPCRMResultRow; this.FillPageWithResultRow( newPage, resultRow, resultRow.IsServerResponse ? UPRequestOption.Online : UPRequestOption.Offline); this.ApplySubTitleFromResultRow(resultRow); this.TopLevelElement = newPage; this.InformAboutDidChangeTopLevelElement(oldPage, newPage, null, null); }