public void DateRange_Data_Element_Between_Precision_Mont_With_Begin_Circa() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.BGN_DT = new DateTime(1940, 07, 01); dataRow.END_DT = new DateTime(1945, 08, 31); dataRow.BGN_DT_STND = "+194007"; dataRow.END_DT_STND = "+194508"; dataRow.BGN_CIRCA_IND = 1; dataRow.END_CIRCA_IND = 0; dataRow.DT_OPRTR_ID = (int)ScopeArchivDateOperator.Between; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.dateRange, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("zwischen ca. 07.1940 und 08.1945"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("between approx. 7/1940 and 8/1945"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("entre env. 07/1940 et 08/1945"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("tra il ca. 07/1940 e il 08/1945"); value.DateRange.DateOperator.Should().Be(DateRangeDateOperator.between); value.DateRange.From.Should().Be("+194007"); value.DateRange.To.Should().Be("+194508"); value.DateRange.FromApproxIndicator.Should().BeTrue(); value.DateRange.ToApproxIndicator.Should().BeFalse(); value.DateRange.FromDate.Should().Be(new DateTime(1940, 7, 01)); value.DateRange.ToDate.Should().Be(new DateTime(1945, 8, 31)); value.DateRange.SearchFromDate.Should().BeBefore(value.DateRange.FromDate); value.DateRange.SearchToDate.Should().BeAfter(value.DateRange.ToDate); }
public void DateRange_Data_Element_Sine_Dato() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.BGN_DT = DateTime.MinValue; dataRow.END_DT = DateTime.MaxValue; dataRow.BGN_DT_STND = null; dataRow.END_DT_STND = null; dataRow.BGN_CIRCA_IND = 0; dataRow.END_CIRCA_IND = 0; dataRow.DT_OPRTR_ID = (int)ScopeArchivDateOperator.SineDato; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.dateRange, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("s. d. (sine dato)"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("s. d. (sine dato)"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("s. d. (sans date)"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("s. d. (senza data)"); value.DateRange.DateOperator.Should().Be(DateRangeDateOperator.sd); value.DateRange.From.Should().BeNullOrEmpty(); value.DateRange.To.Should().BeNullOrEmpty(); value.DateRange.FromApproxIndicator.Should().BeFalse(); value.DateRange.ToApproxIndicator.Should().BeFalse(); value.DateRange.FromDate.Should().Be(DateTime.MinValue); value.DateRange.ToDate.Should().Be(DateTime.MaxValue); value.DateRange.SearchFromDate.Should().BeSameDateAs(value.DateRange.FromDate); value.DateRange.SearchToDate.Should().BeSameDateAs(value.DateRange.ToDate); }
public void DateRange_Data_Element_Exact_Precision_Mont_With_Circa() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.BGN_DT = new DateTime(1940, 07, 01); dataRow.END_DT = new DateTime(1940, 07, 31); dataRow.BGN_DT_STND = "+194007"; dataRow.END_DT_STND = null; dataRow.BGN_CIRCA_IND = 1; dataRow.END_CIRCA_IND = 0; dataRow.DT_OPRTR_ID = (int)ScopeArchivDateOperator.Exact; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.dateRange, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("ca. 07.1940"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("approx. 7/1940"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("env. 07/1940"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("ca. 07/1940"); value.DateRange.DateOperator.Should().Be(DateRangeDateOperator.exact); value.DateRange.From.Should().Be("+194007"); value.DateRange.To.Should().BeNullOrEmpty(); value.DateRange.FromApproxIndicator.Should().BeTrue(); value.DateRange.ToApproxIndicator.Should().BeFalse(); value.DateRange.FromDate.Should().Be(new DateTime(1940, 7, 01)); value.DateRange.ToDate.Should().Be(new DateTime(1940, 7, 31)); value.DateRange.SearchFromDate.Should().BeBefore(value.DateRange.FromDate); value.DateRange.SearchToDate.Should().BeAfter(value.DateRange.ToDate); }
public void Date_Data_Element_Precision_Day() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.BGN_DT = new DateTime(1940, 07, 20); dataRow.END_DT = new DateTime(1940, 07, 20); dataRow.BGN_DT_STND = "+19400720"; dataRow.DT_OPRTR_ID = 0; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.date, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("20.07.1940"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("7/20/1940"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("20/07/1940"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("20/07/1940"); value.DateRange.DateOperator.Should().Be(DateRangeDateOperator.exact); value.DateRange.From.Should().Be("+19400720"); value.DateRange.To.Should().BeNullOrEmpty(); value.DateRange.FromApproxIndicator.Should().BeFalse(); value.DateRange.ToApproxIndicator.Should().BeFalse(); value.DateRange.FromDate.Should().Be(new DateTime(1940, 7, 20)); value.DateRange.ToDate.Should().Be(new DateTime(1940, 7, 20)); value.DateRange.SearchFromDate.Should().BeSameDateAs(value.DateRange.FromDate); value.DateRange.SearchToDate.Should().BeSameDateAs(value.DateRange.ToDate); }
public async Task <ActionResult <DataElement> > Delete(int instanceOwnerPartyId, Guid instanceGuid, Guid dataGuid) { _logger.LogInformation("//DataController // Delete // Starting method"); (Instance instance, ActionResult instanceError) = await GetInstanceAsync(instanceGuid, instanceOwnerPartyId); if (instance == null) { return(instanceError); } (DataElement dataElement, ActionResult dataElementError) = await GetDataElementAsync(instanceGuid, dataGuid); if (dataElement == null) { return(dataElementError); } string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataGuid.ToString()); await _dataRepository.DeleteDataInStorage(instance.Org, storageFileName); await _dataRepository.Delete(dataElement); await DispatchEvent(InstanceEventType.Deleted.ToString(), instance, dataElement); return(Ok(dataElement)); }
public async Task <IActionResult> Delete(Guid instanceGuid, Guid dataId, int instanceOwnerId) { _logger.LogInformation($"//DataController // Delete // Starting method"); string instanceId = $"{instanceOwnerId}/{instanceGuid}"; // check if instance id exist and user is allowed to change the instance data Instance instance = await _instanceRepository.GetOne(instanceId, instanceOwnerId); if (instance == null) { return(NotFound("Provided instanceId is unknown to storage service")); } string dataIdString = dataId.ToString(); if (instance.Data.Exists(m => m.Id == dataIdString)) { string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataId.ToString()); bool result = await _dataRepository.DeleteDataInStorage(storageFileName); if (result) { // Update instance record DataElement data = instance.Data.Find(m => m.Id == dataIdString); instance.Data.Remove(data); Instance storedInstance = await _instanceRepository.Update(instance); return(Ok(storedInstance)); } } return(BadRequest()); }
public void Date_Data_Element_Precision_Year() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.BGN_DT = new DateTime(1940, 01, 01); dataRow.END_DT = new DateTime(1940, 12, 31); dataRow.BGN_DT_STND = "+1940"; dataRow.DT_OPRTR_ID = 0; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.date, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("1940"); value.DateRange.DateOperator.Should().Be(DateRangeDateOperator.exact); value.DateRange.From.Should().Be("+1940"); value.DateRange.To.Should().BeNullOrEmpty(); value.DateRange.FromApproxIndicator.Should().BeFalse(); value.DateRange.ToApproxIndicator.Should().BeFalse(); value.DateRange.FromDate.Should().Be(new DateTime(1940, 1, 1)); value.DateRange.ToDate.Should().Be(new DateTime(1940, 12, 31)); value.DateRange.SearchFromDate.Should().BeBefore(value.DateRange.FromDate); value.DateRange.SearchToDate.Should().BeAfter(value.DateRange.ToDate); }
/// <summary> /// Creates a data element by reading the first multipart element or body of the request. /// </summary> private async Task <(Stream, DataElement)> ReadRequestAndCreateDataElementAsync(HttpRequest request, string elementType, List <Guid> refs, Instance instance) { DateTime creationTime = DateTime.UtcNow; Stream theStream; string contentType; string contentFileName = null; long fileSize = 0; if (MultipartRequestHelper.IsMultipartContentType(request.ContentType)) { // Only read the first section of the mulitpart message. MediaTypeHeaderValue mediaType = MediaTypeHeaderValue.Parse(request.ContentType); string boundary = MultipartRequestHelper.GetBoundary(mediaType, _defaultFormOptions.MultipartBoundaryLengthLimit); MultipartReader reader = new MultipartReader(boundary, request.Body); MultipartSection section = await reader.ReadNextSectionAsync(); theStream = section.Body; contentType = section.ContentType; bool hasContentDisposition = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out ContentDispositionHeaderValue contentDisposition); if (hasContentDisposition) { contentFileName = contentDisposition.FileName.ToString(); fileSize = contentDisposition.Size ?? 0; } } else { theStream = request.Body; if (request.Headers.TryGetValue("Content-Disposition", out StringValues headerValues)) { string contentDisposition = headerValues.ToString(); List <string> contentDispositionValues = contentDisposition.Split(';').ToList(); string fileNameValue = contentDispositionValues.FirstOrDefault(x => x.Contains("filename", StringComparison.CurrentCultureIgnoreCase)); if (!string.IsNullOrEmpty(fileNameValue)) { string[] valueParts = fileNameValue.Split('='); if (valueParts.Length == 2) { contentFileName = valueParts[1]; } } } contentType = request.ContentType; } DataElement newData = DataElementHelper.CreateDataElement(elementType, refs, instance, creationTime, contentType, contentFileName, fileSize, null); return(theStream, newData); }
public async Task <ActionResult> Get(int instanceOwnerPartyId, Guid instanceGuid, Guid dataGuid) { string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}"; if (instanceOwnerPartyId == 0) { return(BadRequest("Missing parameter value: instanceOwnerPartyId can not be empty")); } // check if instance id exist and user is allowed to change the instance data (Instance instance, ActionResult errorResult) = await GetInstanceAsync(instanceId, instanceOwnerPartyId); if (instance == null) { return(errorResult); } string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataGuid.ToString()); DataElement dataElement = await _dataRepository.Read(instanceGuid, dataGuid); if (dataElement != null) { string orgFromClaim = User.GetOrg(); if (!string.IsNullOrEmpty(orgFromClaim)) { _logger.LogInformation($"App owner download of {instance.Id}/data/{dataGuid}, {instance.AppId} for {orgFromClaim}"); // update downloaded structure on data element dataElement.AppOwner ??= new ApplicationOwnerDataState(); dataElement.AppOwner.Downloaded ??= new List <DateTime>(); dataElement.AppOwner.Downloaded.Add(DateTime.UtcNow); await _dataRepository.Update(dataElement); } if (string.Equals(dataElement.BlobStoragePath, storageFileName)) { try { Stream dataStream = await _dataRepository.ReadDataFromStorage(instance.Org, storageFileName); if (dataStream == null) { return(NotFound($"Unable to read data element from blob storage for {dataGuid}")); } return(File(dataStream, dataElement.ContentType, dataElement.Filename)); } catch (Exception e) { return(StatusCode(500, $"Unable to access blob storage for dataelement {e}")); } } } return(NotFound("Unable to find requested data item")); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { float origLabelWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 85; GUILayout.BeginHorizontal(); //Draw image SerializedProperty imageProp = property.FindPropertyRelative("m_icon"); imageProp.objectReferenceValue = EditorGUILayout.ObjectField(imageProp.objectReferenceValue, typeof(Texture2D), false, GUILayout.Height(100), GUILayout.Width(100)); GUILayout.BeginVertical(); //Draw name and ID DataElementHelper.OnGUI_DrawDefaultValues(property); /// This special method draws the element and it'd ID in a nicely formatted line. //Draw rarity and sell price GUILayout.Space(4); GUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(property.FindPropertyRelative("m_weaponType")); EditorGUILayout.PropertyField(property.FindPropertyRelative("m_rarity")); EditorGUILayout.PropertyField(property.FindPropertyRelative("m_sellPrice")); GUILayout.EndHorizontal(); //Draw stats GUILayout.Space(4); GUILayout.BeginHorizontal(); StatDrawer(property.FindPropertyRelative("m_atk")); StatDrawer(property.FindPropertyRelative("m_def")); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); StatDrawer(property.FindPropertyRelative("m_spd")); StatDrawer(property.FindPropertyRelative("m_crit")); GUILayout.EndHorizontal(); //Draw Prefab GUILayout.Space(2); EditorGUILayout.PropertyField(property.FindPropertyRelative("m_prefab")); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.Space(4); EditorGUIUtility.labelWidth = origLabelWidth; }
/// <summary> /// Creates a data element by reading the first multipart element or body of the request. /// </summary> private async Task <(Stream Stream, DataElement DataElement)> ReadRequestAndCreateDataElementAsync(HttpRequest request, string elementType, List <Guid> refs, Instance instance) { DateTime creationTime = DateTime.UtcNow; Stream theStream; string contentType; string contentFileName = null; long fileSize = 0; if (MultipartRequestHelper.IsMultipartContentType(request.ContentType)) { // Only read the first section of the Multipart message. MediaTypeHeaderValue mediaType = MediaTypeHeaderValue.Parse(request.ContentType); string boundary = MultipartRequestHelper.GetBoundary(mediaType, _defaultFormOptions.MultipartBoundaryLengthLimit); MultipartReader reader = new MultipartReader(boundary, request.Body); MultipartSection section = await reader.ReadNextSectionAsync(); theStream = section.Body; contentType = section.ContentType; bool hasContentDisposition = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out ContentDispositionHeaderValue contentDisposition); if (hasContentDisposition) { contentFileName = HttpUtility.UrlDecode(contentDisposition.GetFilename()); fileSize = contentDisposition.Size ?? 0; } } else { theStream = request.Body; if (request.Headers.TryGetValue("Content-Disposition", out StringValues headerValues)) { bool hasContentDisposition = ContentDispositionHeaderValue.TryParse(headerValues.ToString(), out ContentDispositionHeaderValue contentDisposition); if (hasContentDisposition) { contentFileName = HttpUtility.UrlDecode(contentDisposition.GetFilename()); fileSize = contentDisposition.Size ?? 0; } } contentType = request.ContentType; } string user = User.GetUserOrOrgId(); DataElement newData = DataElementHelper.CreateDataElement(elementType, refs, instance, creationTime, contentType, contentFileName, fileSize, user); return(theStream, newData); }
public void FileLink_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = @"C:\Temp\testfile.txt"; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.fileLink, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be(@"C:\Temp\testfile.txt"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Should().BeNull(); }
public void Header_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.TITEL = "Titel"; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.header, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("Titel"); value.Sequence.Should().Be(1); }
public async Task <ActionResult> Get(int instanceOwnerPartyId, Guid instanceGuid, Guid dataGuid) { string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}"; if (instanceOwnerPartyId == 0) { return(BadRequest("Missing parameter value: instanceOwnerPartyId can not be empty")); } // check if instance id exist and user is allowed to change the instance data (Instance instance, ActionResult errorResult) = await GetInstanceAsync(instanceId, instanceOwnerPartyId); if (instance == null) { return(errorResult); } string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataGuid.ToString()); DataElement dataElement = await _dataRepository.Read(instanceGuid, dataGuid); if (dataElement != null && string.Equals(dataElement.BlobStoragePath, storageFileName)) { if (!dataElement.IsRead && User.GetOrg() != instance.Org) { dataElement.IsRead = true; await _dataRepository.Update(dataElement); } try { Stream dataStream = await _dataRepository.ReadDataFromStorage(instance.Org, storageFileName); if (dataStream == null) { return(NotFound($"Unable to read data element from blob storage for {dataGuid}")); } return(File(dataStream, dataElement.ContentType, dataElement.Filename)); } catch (Exception e) { return(StatusCode(500, $"Unable to access blob storage for dataelement {e}")); } } return(NotFound("Unable to find requested data item")); }
public void MailLink_Data_Element_Without_Prefix() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = "*****@*****.**"; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.mailLink, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("*****@*****.**"); value.Link.Value.Should().Be("*****@*****.**"); value.Link.Href.Should().Be("mailto:[email protected]"); }
public void Accrual_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.INT_ZAHL = 5; dataRow.MEMO_TXT = "Some Text"; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.accrual, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("5 - Some Text"); value.TextValues.FirstOrDefault().Value.Should().Be("5 - Some Text"); }
public async Task <IActionResult> Get(int instanceOwnerId, Guid instanceGuid, Guid dataId) { string instanceId = $"{instanceOwnerId}/{instanceGuid}"; if (instanceOwnerId == 0) { return(BadRequest("Missing parameter value: instanceOwnerId can not be empty")); } // check if instance id exist and user is allowed to change the instance data Instance instance = GetInstance(instanceId, instanceOwnerId, out ActionResult errorResult); if (instance == null) { return(errorResult); } string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataId.ToString()); string dataIdString = dataId.ToString(); // check if dataId exists in instance if (instance.Data.Exists(element => element.Id == dataIdString)) { DataElement data = instance.Data.Find(element => element.Id == dataIdString); if (string.Equals(data.StorageUrl, storageFileName)) { try { Stream dataStream = await _dataRepository.ReadDataFromStorage(storageFileName); if (dataStream == null) { return(NotFound("Unable to read data storage for " + dataIdString)); } return(File(dataStream, data.ContentType, data.FileName)); } catch (Exception e) { return(StatusCode(500, $"Unable to access blob storage for dataelement {e}")); } } } return(NotFound("Unable to find requested data item")); }
public void Image_and_Media_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = @"C:\Temp\testfile.jpg"; dataRow.BNR_DATEN = (byte[])new ImageConverter().ConvertTo(Resources.sample, typeof(byte[])); var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.image, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be(@"testfile.jpg"); value.BlobValueBase64.Value.Should().Be(Convert.ToBase64String(dataRow.BNR_DATEN)); value.BlobValueBase64.MimeType.Should().Be("image/jpeg"); }
public void Date_With_Year_Precision_With_No_Circa_Returns_Half_a_Year_Corrected_Search_Dates() { // Arrange var startDateStd = "+1950"; var startDate = new DateTime(1950, 01, 01); var startIsApprox = false; var endDateStd = "+1960"; var endDate = new DateTime(1960, 12, 31); var endIsApprox = false; // Act var result = DataElementHelper.GetSearchDate(startDateStd, startDate, startIsApprox, endDateStd, endDate, endIsApprox); // Assert result.FromDate.Should().Be(startDate.AddDays(-180)); result.ToDate.Should().Be(endDate.AddDays(180)); }
public void Hyperlink_Data_Element_New_Style_No_Http_Prefix() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = "Microsoft" + Environment.NewLine + "www.microsoft.com"; dataRow.ELMNT_SQNZ_NR = 1; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.hyperlink, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("Microsoft"); value.Link.Value.Should().Be("Microsoft"); value.Link.Href.Should().Be("http://www.microsoft.com"); }
public void Text_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = "Test value"; dataRow.ELMNT_SQNZ_NR = 2; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.text, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("Test value"); value.Sequence.Should().Be(2); value.TextValues.FirstOrDefault(t => t.Lang == "en").Should().BeNull(); }
public void Exact_Date_With_Circa_Returns_Same_Search_Dates() { // Arrange var startDateStd = "+19500101"; var startDate = new DateTime(1950, 01, 01); var startIsApprox = true; var endDateStd = "+19601231"; var endDate = new DateTime(1960, 12, 31); var endIsApprox = true; // Act var result = DataElementHelper.GetSearchDate(startDateStd, startDate, startIsApprox, endDateStd, endDate, endIsApprox); // Assert result.FromDate.Should().Be(startDate); result.ToDate.Should().Be(endDate); }
public void Date_Resulting_In_Min_Date_Underrun_Returns_Min_Date() { // Arrange var startDateStd = "+0001"; var startDate = new DateTime(0001, 01, 01); var startIsApprox = true; var endDateStd = "+1900"; var endDate = new DateTime(1900, 12, 31); var endIsApprox = true; // Act var result = DataElementHelper.GetSearchDate(startDateStd, startDate, startIsApprox, endDateStd, endDate, endIsApprox); // Assert result.FromDate.Should().Be(DateTime.MinValue.Date); result.ToDate.Should().Be(endDate.AddDays(180 * 4)); }
public void Selection_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.MEMO_TXT = "Content of selection field"; dataRow.ELMNT_SQNZ_NR = 1; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.selection, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("Content of selection field"); value.Sequence.Should().Be(1); value.TextValues.Count.Should().Be(1); }
public void Date_With_Century_Precision_With_Circa_Returns_Half_a_Century_Times_2_Corrected_Search_Dates() { // Arrange var startDateStd = "+19"; var startDate = new DateTime(1801, 01, 01); var startIsApprox = true; var endDateStd = "+19"; var endDate = new DateTime(1900, 12, 31); var endIsApprox = true; // Act var result = DataElementHelper.GetSearchDate(startDateStd, startDate, startIsApprox, endDateStd, endDate, endIsApprox); // Assert result.FromDate.Should().Be(startDate.AddDays(-365 * 50 * 2)); result.ToDate.Should().Be(endDate.AddDays(365 * 50 * 2)); }
public void Date_Resulting_In_Max_Date_Overflow_Returns_Max_Date() { // Arrange var startDateStd = "+1900"; var startDate = new DateTime(1900, 01, 01); var startIsApprox = true; var endDateStd = "+9999"; var endDate = new DateTime(9999, 12, 31); var endIsApprox = true; // Act var result = DataElementHelper.GetSearchDate(startDateStd, startDate, startIsApprox, endDateStd, endDate, endIsApprox); // Assert result.FromDate.Should().Be(startDate.AddDays(-180 * 4)); result.ToDate.Should().Be(DateTime.MaxValue.Date); }
public async Task <ActionResult> Get(int instanceOwnerPartyId, Guid instanceGuid, Guid dataGuid) { string instanceId = $"{instanceOwnerPartyId}/{instanceGuid}"; if (instanceOwnerPartyId == 0) { return(BadRequest("Missing parameter value: instanceOwnerPartyId can not be empty")); } (Instance instance, ActionResult instanceError) = await GetInstanceAsync(instanceId, instanceOwnerPartyId); if (instance == null) { return(instanceError); } (DataElement dataElement, ActionResult dataElementError) = await GetDataElementAsync(instanceGuid, dataGuid); if (dataElement == null) { return(dataElementError); } if (!dataElement.IsRead && User.GetOrg() != instance.Org) { dataElement.IsRead = true; await _dataRepository.Update(dataElement); } string storageFileName = DataElementHelper.DataFileName(instance.AppId, instanceGuid.ToString(), dataGuid.ToString()); if (string.Equals(dataElement.BlobStoragePath, storageFileName)) { Stream dataStream = await _dataRepository.ReadDataFromStorage(instance.Org, storageFileName); if (dataStream == null) { return(NotFound($"Unable to read data element from blob storage for {dataGuid}")); } return(File(dataStream, dataElement.ContentType, dataElement.Filename)); } return(NotFound("Unable to find requested data item")); }
public void Timespan_Data_Element_Less_Than_A_Day() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.INT_ZAHL = 5721; // timespan in seconds var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.timespan, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("1:35:21"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("1:35:21"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("1:35:21"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("1:35:21"); value.DurationInSeconds.Should().Be(5721); }
public void Time_Data_Element() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.ZT = new DateTime(1999, 01, 05, 02, 30, 34); // Date part is ignored var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.time, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("02:30:34"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("2:30:34 AM"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("02:30:34"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("02:30:34"); value.TimeValue.Should().BeSameDateAs(new DateTime(1999, 01, 05, 02, 30, 34)); }
public void Boolean_Data_Element_Yes() { // Arrange var dataRow = ds.DetailData.NewDetailDataRow(); dataRow.INT_ZAHL = 1; var value = new DataElementElementValue(); // Act DataElementHelper.FillDataElementElementValue(DataElementElementType.boolean, dataRow, value, languageSettings); // Assert value.TextValues.FirstOrDefault(t => t.IsDefaultLang).Value.Should().Be("Ja"); value.TextValues.FirstOrDefault(t => t.Lang == "en").Value.Should().Be("Yes"); value.TextValues.FirstOrDefault(t => t.Lang == "fr").Value.Should().Be("Oui"); value.TextValues.FirstOrDefault(t => t.Lang == "it").Value.Should().Be("Si"); value.BooleanValue.Should().BeTrue(); }