BusinessMgr 3.0.2 .Net8
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sacs</RootNamespace>
|
<RootNamespace>Sacs</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -14,12 +14,13 @@ using System.Collections.Specialized;
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
|
|
||||||
namespace Sacs.Web.Components
|
namespace Sacs.Web.Components
|
||||||
{
|
{
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
public class SaController : Controller
|
public class SaController : Controller, ISacsStateItem
|
||||||
{
|
{
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -246,7 +247,7 @@ namespace Sacs.Web.Components
|
|||||||
public AjaxResponse_Base SetSessionExpired(String title, String text)
|
public AjaxResponse_Base SetSessionExpired(String title, String text)
|
||||||
{
|
{
|
||||||
SessionExpired = true;
|
SessionExpired = true;
|
||||||
return SetMessage(title, text);
|
return SetPopupMessage(title, text);
|
||||||
}
|
}
|
||||||
public AjaxResponse_Base SetGoHome()
|
public AjaxResponse_Base SetGoHome()
|
||||||
{
|
{
|
||||||
@@ -256,21 +257,53 @@ namespace Sacs.Web.Components
|
|||||||
public AjaxResponse_Base SetGoHome(String title, String text)
|
public AjaxResponse_Base SetGoHome(String title, String text)
|
||||||
{
|
{
|
||||||
GoHome = true;
|
GoHome = true;
|
||||||
return SetMessage(title, text);
|
return SetPopupMessage(title, text);
|
||||||
}
|
}
|
||||||
// Message - displays alert popup.
|
|
||||||
|
// Inline message - to display on view.
|
||||||
|
public class InlineMessageData
|
||||||
|
{
|
||||||
|
public String Text { get; init; }
|
||||||
|
public bool? Warning { get { return Level == SaMessageLevel.Warning ? true : null; } }
|
||||||
|
public bool? Error { get { return Level == SaMessageLevel.Error ? true : null; } }
|
||||||
|
[JsonIgnore]
|
||||||
|
public SaMessageLevel Level { get; init; } = SaMessageLevel.Info;
|
||||||
|
}
|
||||||
|
public InlineMessageData InlineMessage { get; private set; }
|
||||||
|
public AjaxResponse_Base SetInfoMessage(String message)
|
||||||
|
{
|
||||||
|
if (!StringUtil.IsBlank(message))
|
||||||
|
InlineMessage = new() { Text = message };
|
||||||
|
if (InlineMessage is not null) throw new NotSupportedException("Inline message already populated");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
public AjaxResponse_Base SetWarningMessage(String message)
|
||||||
|
{
|
||||||
|
if (!StringUtil.IsBlank(message))
|
||||||
|
InlineMessage = new() { Text = message, Level = SaMessageLevel.Warning };
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
public AjaxResponse_Base SetErrorMessage(String message)
|
||||||
|
{
|
||||||
|
if (!StringUtil.IsBlank(message))
|
||||||
|
InlineMessage = new() { Text = message, Level = SaMessageLevel.Error };
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Popup Message - displays in modal popup.
|
||||||
public class MessageData
|
public class MessageData
|
||||||
{
|
{
|
||||||
public String Title { get; set; }
|
public String Title { get; set; }
|
||||||
public String Text { get; set; }
|
public String Text { get; set; }
|
||||||
}
|
}
|
||||||
public MessageData Message { get; private set; }
|
public MessageData PopupMessage { get; private set; }
|
||||||
public AjaxResponse_Base SetMessage(String title, String text)
|
public AjaxResponse_Base SetPopupMessage(String title, String text)
|
||||||
{
|
{
|
||||||
if (!StringUtil.IsBlank(text))
|
if (!StringUtil.IsBlank(text))
|
||||||
Message = new MessageData() { Title = title, Text = text };
|
PopupMessage = new MessageData() { Title = title, Text = text };
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirmation message - to query user.
|
// Confirmation message - to query user.
|
||||||
public class ConfirmMessageData : MessageData
|
public class ConfirmMessageData : MessageData
|
||||||
{
|
{
|
||||||
@@ -284,6 +317,20 @@ namespace Sacs.Web.Components
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public bool? HasConfirmMessage { get { return ConfirmMessage != null ? true : null; } }
|
public bool? HasConfirmMessage { get { return ConfirmMessage != null ? true : null; } }
|
||||||
|
|
||||||
|
// Notify message - briefly displays after response received.
|
||||||
|
public class NotifyMessageData
|
||||||
|
{
|
||||||
|
public String Title { get; set; }
|
||||||
|
public String Message { get; set; }
|
||||||
|
}
|
||||||
|
public NotifyMessageData NotifyMessage { get; private set; }
|
||||||
|
public AjaxResponse_Base SetNotifyMessage(String title, String message)
|
||||||
|
{
|
||||||
|
NotifyMessage = new NotifyMessageData() { Title = title, Message = message };
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
@@ -295,15 +342,15 @@ namespace Sacs.Web.Components
|
|||||||
{
|
{
|
||||||
if (model.ErrorMessages.Any())
|
if (model.ErrorMessages.Any())
|
||||||
{
|
{
|
||||||
SetMessage(StringUtil.OnBlank(messageTitle, model.GetText("label.error", "Error")), model.ErrorMessages.Concat("", "\n"));
|
SetPopupMessage(StringUtil.OnBlank(messageTitle, model.GetText("label.error", "Error")), model.ErrorMessages.Concat("", "\n"));
|
||||||
}
|
}
|
||||||
else if (model.WarningMessages.Any())
|
else if (model.WarningMessages.Any())
|
||||||
{
|
{
|
||||||
SetMessage(StringUtil.OnBlank(messageTitle, model.GetText("label.warning", "Warning")), model.WarningMessages.Concat("", "\n"));
|
SetPopupMessage(StringUtil.OnBlank(messageTitle, model.GetText("label.warning", "Warning")), model.WarningMessages.Concat("", "\n"));
|
||||||
}
|
}
|
||||||
else if (model.InfoMessages.Any())
|
else if (model.InfoMessages.Any())
|
||||||
{
|
{
|
||||||
SetNotification(StringUtil.OnBlank(messageTitle, model.GetText("label.notification", "Notificaton")), model.InfoMessages.Concat("", "\n"));
|
SetNotifyMessage(StringUtil.OnBlank(messageTitle, model.GetText("label.notification", "Notificaton")), model.InfoMessages.Concat("", "\n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,20 +538,6 @@ namespace Sacs.Web.Components
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
// Notification - briefly displays after response received.
|
|
||||||
public class NotificationData
|
|
||||||
{
|
|
||||||
public String Title { get; set; }
|
|
||||||
public String Message { get; set; }
|
|
||||||
}
|
|
||||||
public NotificationData Notification { get; private set; }
|
|
||||||
public AjaxResponse_Data SetNotification(String title, String message)
|
|
||||||
{
|
|
||||||
Notification = new NotificationData() { Title = title, Message = message };
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
// Paged data.
|
// Paged data.
|
||||||
public class PagingData
|
public class PagingData
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using Microsoft.Maui.Controls.Compatibility;
|
using Microsoft.Maui.Controls.Compatibility;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Mobile.Maui.Layouts
|
namespace Sarand.Net.Mobile.Maui.Layouts
|
||||||
{
|
{
|
||||||
@@ -139,7 +133,7 @@ namespace Sarand.Net.Mobile.Maui.Layouts
|
|||||||
|
|
||||||
var size = child.Measure(widthConstraint, heightConstraint);
|
var size = child.Measure(widthConstraint, heightConstraint);
|
||||||
var itemWidth = (double)columnsSize;
|
var itemWidth = (double)columnsSize;
|
||||||
var itemHeight = size.Request.Height;
|
var itemHeight = size.Height;
|
||||||
|
|
||||||
if (IsSquare)
|
if (IsSquare)
|
||||||
{
|
{
|
||||||
@@ -201,8 +195,8 @@ namespace Sarand.Net.Mobile.Maui.Layouts
|
|||||||
{
|
{
|
||||||
var child = childBlock.current.child;
|
var child = childBlock.current.child;
|
||||||
var size = childBlock.current.size;
|
var size = childBlock.current.size;
|
||||||
var itemWidth = size.Request.Width;
|
var itemWidth = size.Width;
|
||||||
var itemHeight = size.Request.Height;
|
var itemHeight = size.Height;
|
||||||
|
|
||||||
rowHeight = Math.Max(rowHeight, itemHeight + SpacingY);
|
rowHeight = Math.Max(rowHeight, itemHeight + SpacingY);
|
||||||
rowWidth += itemWidth + SpacingX;
|
rowWidth += itemWidth + SpacingX;
|
||||||
@@ -224,7 +218,7 @@ namespace Sarand.Net.Mobile.Maui.Layouts
|
|||||||
}
|
}
|
||||||
|
|
||||||
xPos += itemWidth + SpacingX;
|
xPos += itemWidth + SpacingX;
|
||||||
var nextWitdh = childBlock.next.size.Request.Width;
|
var nextWitdh = childBlock.next.size.Width;
|
||||||
|
|
||||||
if (xPos + nextWitdh - x > widthConstraint)
|
if (xPos + nextWitdh - x > widthConstraint)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
|
<TargetFrameworks>net9.0-android;net9.0-ios;net9.0-maccatalyst18.0</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>
|
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0</TargetFrameworks>
|
||||||
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
|
<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
|
||||||
<!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> -->
|
<!-- <TargetFrameworks>$(TargetFrameworks);net8.0-tizen</TargetFrameworks> -->
|
||||||
<UseMaui>true</UseMaui>
|
<UseMaui>true</UseMaui>
|
||||||
@@ -10,9 +10,9 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
|
||||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">15.4</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">14.5</SupportedOSPlatformVersion>
|
||||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
|
||||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">32.0</SupportedOSPlatformVersion>
|
||||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
|
||||||
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
|
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
|
||||||
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.3</SupportedOSPlatformVersion>
|
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.3</SupportedOSPlatformVersion>
|
||||||
@@ -20,8 +20,8 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Maui.Controls" Version="8.0.20" />
|
<PackageReference Include="Microsoft.Maui.Controls" Version="9.0.120" />
|
||||||
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="8.0.20" />
|
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="9.0.120" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sarand.Net.Mobile</RootNamespace>
|
<RootNamespace>Sarand.Net.Mobile</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using Sarand.Net.Standard.Base.Core;
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
using Sarand.Net.Standard.Base.Utils;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.App
|
namespace Sarand.Net.Standard.Base.App
|
||||||
{
|
{
|
||||||
@@ -11,7 +9,7 @@ namespace Sarand.Net.Standard.Base.App
|
|||||||
{
|
{
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Construction.
|
// Construction.
|
||||||
public SacsVersion (String name, String version, DateTime buildAt)
|
public SacsVersion(String name, String version, DateTime buildAt)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
Version = version;
|
Version = version;
|
||||||
@@ -27,7 +25,7 @@ namespace Sarand.Net.Standard.Base.App
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Warn(GetType().Name + " " + exc.GetType().Name + " on parsing version: " + exc.Message);
|
SaLogger.Warn($"{GetType().Name} {exc.GetType().Name} on parsing version: {ExceptionUtil.GetMessage(exc)}");
|
||||||
}
|
}
|
||||||
VersionInt = Ver1 << 48 + Ver2 << 32 + Ver3 << 16 + Ver4;
|
VersionInt = Ver1 << 48 + Ver2 << 32 + Ver3 << 16 + Ver4;
|
||||||
}
|
}
|
||||||
@@ -45,24 +43,24 @@ namespace Sarand.Net.Standard.Base.App
|
|||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Comparison.
|
// Comparison.
|
||||||
public override bool Equals (object obj)
|
public override bool Equals(object obj)
|
||||||
{
|
{
|
||||||
if (obj is SacsVersion) return Equals(obj as SacsVersion);
|
if (obj is SacsVersion) return Equals(obj as SacsVersion);
|
||||||
return base.Equals(obj);
|
return base.Equals(obj);
|
||||||
}
|
}
|
||||||
public override int GetHashCode ()
|
public override int GetHashCode()
|
||||||
{
|
{
|
||||||
var hashCode = 2121240903;
|
var hashCode = 2121240903;
|
||||||
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Version);
|
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Version);
|
||||||
hashCode = hashCode * -1521134295 + VersionInt.GetHashCode();
|
hashCode = hashCode * -1521134295 + VersionInt.GetHashCode();
|
||||||
return hashCode;
|
return hashCode;
|
||||||
}
|
}
|
||||||
public bool Equals (SacsVersion version)
|
public bool Equals(SacsVersion version)
|
||||||
{
|
{
|
||||||
if (VersionInt == version.VersionInt) return true;
|
if (VersionInt == version.VersionInt) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public int CompareTo (SacsVersion version, bool includeName = false)
|
public int CompareTo(SacsVersion version, bool includeName = false)
|
||||||
{
|
{
|
||||||
int versionCompare = VersionInt.CompareTo(version.VersionInt);
|
int versionCompare = VersionInt.CompareTo(version.VersionInt);
|
||||||
if (!includeName || versionCompare != 0) return versionCompare;
|
if (!includeName || versionCompare != 0) return versionCompare;
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
using Sarand.Net.Standard.Base.App;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using Sarand.Net.Standard.Base.Core;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.Data
|
namespace Sarand.Net.Standard.Base.Data
|
||||||
{
|
{
|
||||||
@@ -23,11 +20,11 @@ namespace Sarand.Net.Standard.Base.Data
|
|||||||
// Either generate a 32 byte key or use any string and convert it into a key with CreateKey.
|
// Either generate a 32 byte key or use any string and convert it into a key with CreateKey.
|
||||||
// NB The salt will remain the same here for each key generated - it does not need to be randomized as with hashing.
|
// NB The salt will remain the same here for each key generated - it does not need to be randomized as with hashing.
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
private static byte[] CreateKey (string password, int keyBytes = 32)
|
private static byte[] CreateKey(string password, int keyBytes = 32)
|
||||||
{
|
{
|
||||||
byte[] salt = new byte[] { 80, 70, 60, 50, 40, 30, 20, 10 };
|
byte[] salt = new byte[] { 80, 70, 60, 50, 40, 30, 20, 10 };
|
||||||
int iterations = 300;
|
int iterations = 300;
|
||||||
DeriveBytes keyGenerator = new Rfc2898DeriveBytes(password, salt, iterations);
|
DeriveBytes keyGenerator = new Rfc2898DeriveBytes(password, salt, iterations, HashAlgorithmName.SHA256);
|
||||||
return keyGenerator.GetBytes(keyBytes);
|
return keyGenerator.GetBytes(keyBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +34,7 @@ namespace Sarand.Net.Standard.Base.Data
|
|||||||
// In AES, the IV is a randomizer, making sure that no two identical messages ever give the same encrypted output.
|
// In AES, the IV is a randomizer, making sure that no two identical messages ever give the same encrypted output.
|
||||||
// The IV can be public and does not need to be hidden.
|
// The IV can be public and does not need to be hidden.
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static string Encrypt (this string clearValue, string encryptionKey)
|
public static string Encrypt(this string clearValue, string encryptionKey)
|
||||||
{
|
{
|
||||||
using (Aes aes = Aes.Create())
|
using (Aes aes = Aes.Create())
|
||||||
{
|
{
|
||||||
@@ -48,7 +45,7 @@ namespace Sarand.Net.Standard.Base.Data
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static byte[] Encrypt (string plainText, byte[] key, byte[] iv)
|
public static byte[] Encrypt(string plainText, byte[] key, byte[] iv)
|
||||||
{
|
{
|
||||||
if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException($"{nameof(plainText)}");
|
if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException($"{nameof(plainText)}");
|
||||||
if (key == null || key.Length <= 0) throw new ArgumentNullException($"{nameof(key)}");
|
if (key == null || key.Length <= 0) throw new ArgumentNullException($"{nameof(key)}");
|
||||||
@@ -79,7 +76,7 @@ namespace Sarand.Net.Standard.Base.Data
|
|||||||
// assume that the IV is at the end of the string passed in.
|
// assume that the IV is at the end of the string passed in.
|
||||||
// To decrypt a message encrypted by another function, the IV will have to be passed explicitly.
|
// To decrypt a message encrypted by another function, the IV will have to be passed explicitly.
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static string Decrypt (this string encryptedValue, string encryptionKey)
|
public static string Decrypt(this string encryptedValue, string encryptionKey)
|
||||||
{
|
{
|
||||||
String[] valueParts = encryptedValue.Split(new String[] { AesIvDelimiter }, StringSplitOptions.None);
|
String[] valueParts = encryptedValue.Split(new String[] { AesIvDelimiter }, StringSplitOptions.None);
|
||||||
if (valueParts.Length != 2)
|
if (valueParts.Length != 2)
|
||||||
@@ -91,7 +88,7 @@ namespace Sarand.Net.Standard.Base.Data
|
|||||||
return Decrypt(Convert.FromBase64String(valueParts[0]), CreateKey(encryptionKey), Convert.FromBase64String(valueParts[1]));
|
return Decrypt(Convert.FromBase64String(valueParts[0]), CreateKey(encryptionKey), Convert.FromBase64String(valueParts[1]));
|
||||||
}
|
}
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static string Decrypt (byte[] cipherText, byte[] key, byte[] iv)
|
public static string Decrypt(byte[] cipherText, byte[] key, byte[] iv)
|
||||||
{
|
{
|
||||||
if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException($"{nameof(cipherText)}");
|
if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException($"{nameof(cipherText)}");
|
||||||
if (key == null || key.Length <= 0) throw new ArgumentNullException($"{nameof(key)}");
|
if (key == null || key.Length <= 0) throw new ArgumentNullException($"{nameof(key)}");
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
using System;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using Sarand.Net.Standard.Base.Core;
|
|
||||||
using Sarand.Net.Standard.Base.Bus;
|
using Sarand.Net.Standard.Base.Bus;
|
||||||
using Sarand.Net.Standard.Base.App;
|
using Sarand.Net.Standard.Base.Core;
|
||||||
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.Dbas
|
namespace Sarand.Net.Standard.Base.Dbas
|
||||||
{
|
{
|
||||||
@@ -54,7 +55,7 @@ namespace Sarand.Net.Standard.Base.Dbas
|
|||||||
// Get Field Value.
|
// Get Field Value.
|
||||||
public DataValue GetFieldValue(String columnName)
|
public DataValue GetFieldValue(String columnName)
|
||||||
{
|
{
|
||||||
String fn = GetType().Name + ".GetFieldValue('" + columnName + "')";
|
String fn = $"{GetType().Name}.GetFieldValue('{columnName}')";
|
||||||
DataValue dataValue = null;
|
DataValue dataValue = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -62,7 +63,7 @@ namespace Sarand.Net.Standard.Base.Dbas
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Warn(fn + " Exception: " + exc.Message);
|
SaLogger.Warn($"{fn} {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
}
|
}
|
||||||
return dataValue;
|
return dataValue;
|
||||||
}
|
}
|
||||||
@@ -71,7 +72,7 @@ namespace Sarand.Net.Standard.Base.Dbas
|
|||||||
#endif
|
#endif
|
||||||
public DataValue GetFieldValue(int columnIdx)
|
public DataValue GetFieldValue(int columnIdx)
|
||||||
{
|
{
|
||||||
String fn = GetType().Name + ".GetFieldValue(" + columnIdx + ")";
|
String fn = $"{GetType().Name}.GetFieldValue('{columnIdx}')";
|
||||||
if (IsDbNull(columnIdx)) return null;
|
if (IsDbNull(columnIdx)) return null;
|
||||||
String columnDataType = "";
|
String columnDataType = "";
|
||||||
DataValue dataValue = null;
|
DataValue dataValue = null;
|
||||||
@@ -136,7 +137,7 @@ namespace Sarand.Net.Standard.Base.Dbas
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Warn(fn + " Data type: " + columnDataType + ". Exception: " + exc.Message /*+ "\n" + exc.ToString()*/);
|
SaLogger.Warn($"{fn} Data type: {columnDataType}. {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (!handlingGetFieldValueException)
|
if (!handlingGetFieldValueException)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
using Microsoft.Net.Http.Headers;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using Sarand.Net.Standard.Base.App;
|
|
||||||
using Sarand.Net.Standard.Base.Core;
|
using Sarand.Net.Standard.Base.Core;
|
||||||
using Sarand.Net.Standard.Base.Net;
|
using Sarand.Net.Standard.Base.Net;
|
||||||
using Sarand.Net.Standard.Base.Tasks;
|
using Sarand.Net.Standard.Base.Tasks;
|
||||||
using Sarand.Net.Standard.Base.Utils;
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
@@ -179,8 +177,8 @@ namespace Sarand.Net.Standard.Base.Helpers
|
|||||||
{
|
{
|
||||||
exc = exc.InnerException;
|
exc = exc.InnerException;
|
||||||
}
|
}
|
||||||
String msg = exc.GetType().Name + ": " + exc.Message;
|
String msg = ExceptionUtil.GetErrorStateMessage(exc);
|
||||||
SaLogger.Warn(SysUtil.Fn + " " + msg + ExceptionUtil.GetStackEntries(exc, 6).Concat("", "\n\t"));
|
SaLogger.Warn($"{SysUtil.Fn} {msg}{ExceptionUtil.GetStackEntries(exc, 6).Concat("", "\n\t")}");
|
||||||
responseData.ErrorStateMessage = msg;
|
responseData.ErrorStateMessage = msg;
|
||||||
}
|
}
|
||||||
requestData.ThrowIfCancellationRequested();
|
requestData.ThrowIfCancellationRequested();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
using System;
|
using Sarand.Net.Standard.Base.App;
|
||||||
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using Sarand.Net.Standard.Base.App;
|
|
||||||
using Sarand.Net.Standard.Base.Core;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.IO
|
namespace Sarand.Net.Standard.Base.IO
|
||||||
{
|
{
|
||||||
@@ -13,7 +13,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// D i r e c t o r y E x i s t s
|
// D i r e c t o r y E x i s t s
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
public static bool DirectoryExists (String directory)
|
public static bool DirectoryExists(String directory)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// <param name="path">The path of a file or directory.</param>
|
/// <param name="path">The path of a file or directory.</param>
|
||||||
/// <returns>Directory information for path, or null if path denotes a root directory or is
|
/// <returns>Directory information for path, or null if path denotes a root directory or is
|
||||||
/// null. Returns System.String.Empty if path does not contain directory information.</returns>
|
/// null. Returns System.String.Empty if path does not contain directory information.</returns>
|
||||||
public static String GetDirectoryName (String path)
|
public static String GetDirectoryName(String path)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -54,7 +54,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// Retrieve list of sub directories in directory.
|
/// Retrieve list of sub directories in directory.
|
||||||
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IEnumerable<String> EnumerateDirectories (String path)
|
public static IEnumerable<String> EnumerateDirectories(String path)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -62,7 +62,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Error("DirectoryUtil.EnumerateDirectories " + exc.GetType().Name + ": " + exc.Message + ". Path: '" + path + "'");
|
SaLogger.Error($"DirectoryUtil.EnumerateDirectories {ExceptionUtil.GetErrorStateMessage(exc)}. Path: '{path}'");
|
||||||
}
|
}
|
||||||
return new List<String>();
|
return new List<String>();
|
||||||
}
|
}
|
||||||
@@ -74,7 +74,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// Retrieve list of files in directory.
|
/// Retrieve list of files in directory.
|
||||||
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IEnumerable<String> EnumerateFiles (String path)
|
public static IEnumerable<String> EnumerateFiles(String path)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -82,7 +82,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Error("DirectoryUtil.EnumerateFiles " + exc.GetType().Name + ": " + exc.Message + ". Path: '" + path + "'");
|
SaLogger.Error($"DirectoryUtil.EnumerateFiles {ExceptionUtil.GetErrorStateMessage(exc)}. Path: '{path}'");
|
||||||
}
|
}
|
||||||
return new List<String>();
|
return new List<String>();
|
||||||
}
|
}
|
||||||
@@ -91,7 +91,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// Retrieve list of files in directory.
|
/// Retrieve list of files in directory.
|
||||||
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IEnumerable<String> EnumerateFiles (String path, String searchPattern)
|
public static IEnumerable<String> EnumerateFiles(String path, String searchPattern)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -99,7 +99,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Error("DirectoryUtil.EnumerateFiles " + exc.GetType().Name + ": " + exc.Message + ". Path: '" + path + "'. Pattern: " + searchPattern);
|
SaLogger.Error($"DirectoryUtil.EnumerateFiles {ExceptionUtil.GetErrorStateMessage(exc)}. Path: '{path}'. Pattern: {searchPattern}");
|
||||||
}
|
}
|
||||||
return new List<String>();
|
return new List<String>();
|
||||||
}
|
}
|
||||||
@@ -108,7 +108,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// Retrieve list of files in directory.
|
/// Retrieve list of files in directory.
|
||||||
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static IEnumerable<String> EnumerateFiles (String path, String searchPattern, SearchOption searchOption)
|
public static IEnumerable<String> EnumerateFiles(String path, String searchPattern, SearchOption searchOption)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -116,7 +116,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Error("DirectoryUtil.EnumerateFiles " + exc.GetType().Name + ": " + exc.Message + ". Path: '" + path + "'. Pattern: " + searchPattern + ". Option: " + searchOption.ToString());
|
SaLogger.Error($"DirectoryUtil.EnumerateFiles {ExceptionUtil.GetErrorStateMessage(exc)}. Path: '{path}'. Pattern: {searchPattern}. Option: {searchOption}");
|
||||||
}
|
}
|
||||||
return new List<String>();
|
return new List<String>();
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
/// Create Directory in the specified path.
|
/// Create Directory in the specified path.
|
||||||
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
/// <para>Avoiding Exception thrown when network path isn't valid.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static DirectoryInfo CreateDirectory (String path)
|
public static DirectoryInfo CreateDirectory(String path)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -136,7 +136,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Error("DirectoryUtil.CreateDirectory " + exc.GetType().Name + ": " + exc.Message + ". Path: '" + path + "'");
|
SaLogger.Error($"DirectoryUtil.CreateDirectory {ExceptionUtil.GetErrorStateMessage(exc)}. Path: '{path}'");
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -144,7 +144,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
// Utilities.
|
// Utilities.
|
||||||
|
|
||||||
public static String TrimTrailingSlashes (String path)
|
public static String TrimTrailingSlashes(String path)
|
||||||
{
|
{
|
||||||
return Regex.Replace(path, "[\\\\/]+$", "");
|
return Regex.Replace(path, "[\\\\/]+$", "");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
using System;
|
using Sarand.Net.Standard.Base.App;
|
||||||
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using Sarand.Net.Standard.Base.App;
|
|
||||||
using Sarand.Net.Standard.Base.Core;
|
|
||||||
using Sarand.Net.Standard.Base.Utils;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.IO
|
namespace Sarand.Net.Standard.Base.IO
|
||||||
{
|
{
|
||||||
@@ -57,7 +56,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
// Default method.
|
// Default method.
|
||||||
return Directory.Exists(directoryPath);
|
return Directory.Exists(directoryPath);
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Debug("FileUtil.IsDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
catch (Exception exc) { SaLogger.Debug($"FileUtil.IsDirectory {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public delegate String DirectoryGetParentFn(String filepath);
|
public delegate String DirectoryGetParentFn(String filepath);
|
||||||
@@ -74,7 +73,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
if (parentDirectoryInfo != null)
|
if (parentDirectoryInfo != null)
|
||||||
return parentDirectoryInfo.FullName;
|
return parentDirectoryInfo.FullName;
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Debug("FileUtil.GetParentDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
catch (Exception exc) { SaLogger.Debug($"FileUtil.GetParentDirectory {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
}
|
}
|
||||||
public delegate bool DirectoryCreateDirectoryFn(String filepath);
|
public delegate bool DirectoryCreateDirectoryFn(String filepath);
|
||||||
@@ -90,7 +89,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
DirectoryInfo info = Directory.CreateDirectory(directoryPath);
|
DirectoryInfo info = Directory.CreateDirectory(directoryPath);
|
||||||
return info.Exists;
|
return info.Exists;
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Debug("FileUtil.CreateDirectory " + exc.GetType().Name + ": " + exc.Message); }
|
catch (Exception exc) { SaLogger.Debug($"FileUtil.CreateDirectory {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
public static bool ValidateDirectory(String directoryPath, bool allowCreation = false)
|
public static bool ValidateDirectory(String directoryPath, bool allowCreation = false)
|
||||||
@@ -116,7 +115,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Warn(typeof(FileUtil).Name + ".GetFileLastWriteTime " + exc.GetType().Name + ": " + exc.Message);
|
SaLogger.Warn($"{typeof(FileUtil).Name}.GetFileLastWriteTime {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
}
|
}
|
||||||
return DateTime.MinValue;
|
return DateTime.MinValue;
|
||||||
}
|
}
|
||||||
@@ -139,7 +138,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
// Default method.
|
// Default method.
|
||||||
return File.Exists(filePath);
|
return File.Exists(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Debug("FileUtil.IsFile " + exc.GetType().Name + ": " + exc.Message); }
|
catch (Exception exc) { SaLogger.Debug($"FileUtil.IsFile {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +160,7 @@ namespace Sarand.Net.Standard.Base.IO
|
|||||||
// Default method.
|
// Default method.
|
||||||
return File.ReadAllLines(filePath);
|
return File.ReadAllLines(filePath);
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Debug("FileUtil.ReadAllFileLines " + exc.GetType().Name + ": " + exc.Message); }
|
catch (Exception exc) { SaLogger.Debug($"FileUtil.ReadAllFileLines {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return new String[0];
|
return new String[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.Net.Http.Headers;
|
||||||
using Microsoft.Net.Http.Headers;
|
|
||||||
using Sarand.Net.Standard.Base.App;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using Sarand.Net.Standard.Base.Core;
|
using Sarand.Net.Standard.Base.Core;
|
||||||
using Sarand.Net.Standard.Base.Helpers;
|
|
||||||
using Sarand.Net.Standard.Base.Tasks;
|
using Sarand.Net.Standard.Base.Tasks;
|
||||||
using Sarand.Net.Standard.Base.Utils;
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
using System;
|
using System;
|
||||||
@@ -14,7 +12,6 @@ using System.Linq;
|
|||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Reflection.Metadata;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -262,7 +259,7 @@ namespace Sarand.Net.Standard.Base.Net
|
|||||||
{
|
{
|
||||||
exc = exc.InnerException;
|
exc = exc.InnerException;
|
||||||
}
|
}
|
||||||
String msg = exc.GetType().Name + ": " + exc.Message;
|
String msg = ExceptionUtil.GetErrorStateMessage(exc);
|
||||||
SaLogger.Warn(SysUtil.Fn + " " + msg + ExceptionUtil.GetStackEntries(exc, 6).Concat("", "\n\t"));
|
SaLogger.Warn(SysUtil.Fn + " " + msg + ExceptionUtil.GetStackEntries(exc, 6).Concat("", "\n\t"));
|
||||||
responseData.ErrorStateMessage = msg;
|
responseData.ErrorStateMessage = msg;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ namespace Sarand.Net.Standard.Base.Procs
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
String msg = exc.GetType().Name + ": " + exc.Message;
|
String msg = ExceptionUtil.GetErrorStateMessage(exc);
|
||||||
AddErrorMessage(msg);
|
AddErrorMessage(msg);
|
||||||
SaLogger.Error($"{SysUtil.Fn} ProcessStarting: {msg}{exc.GetStackEntries(6).Concat("", "\n\tat ")}", true);
|
SaLogger.Error($"{SysUtil.Fn} ProcessStarting: {msg}{exc.GetStackEntries(6).Concat("", "\n\tat ")}", true);
|
||||||
}
|
}
|
||||||
@@ -319,7 +319,7 @@ namespace Sarand.Net.Standard.Base.Procs
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
String msg = exc.GetType().Name + ": " + exc.Message;
|
String msg = ExceptionUtil.GetErrorStateMessage(exc);
|
||||||
AddErrorMessage(msg);
|
AddErrorMessage(msg);
|
||||||
SaLogger.Error($"{SysUtil.Fn} " + msg + exc.GetStackEntries(6).Concat("", "\n\tat "), true);
|
SaLogger.Error($"{SysUtil.Fn} " + msg + exc.GetStackEntries(6).Concat("", "\n\tat "), true);
|
||||||
}
|
}
|
||||||
@@ -340,7 +340,7 @@ namespace Sarand.Net.Standard.Base.Procs
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
String msg = exc.GetType().Name + ": " + exc.Message;
|
String msg = ExceptionUtil.GetErrorStateMessage(exc);
|
||||||
AddErrorMessage(msg);
|
AddErrorMessage(msg);
|
||||||
SaLogger.Error($"{SysUtil.Fn} ProcessCompleted: {msg}{exc.GetStackEntries(6).Concat("", "\n\tat ")}", true);
|
SaLogger.Error($"{SysUtil.Fn} ProcessCompleted: {msg}{exc.GetStackEntries(6).Concat("", "\n\tat ")}", true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Base.Utils
|
namespace Sarand.Net.Standard.Base.Utils
|
||||||
{
|
{
|
||||||
@@ -27,10 +25,9 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
#pragma warning restore CS0649
|
#pragma warning restore CS0649
|
||||||
};
|
};
|
||||||
|
|
||||||
public static DateTime GetBuildDateTime (this Assembly assembly)
|
public static DateTime GetBuildDateTime(this Assembly assembly)
|
||||||
{
|
{
|
||||||
// Not available until .Net Standard 1.5.
|
var path = assembly.Location;
|
||||||
var path = assembly.GetName().CodeBase;
|
|
||||||
if (File.Exists(path))
|
if (File.Exists(path))
|
||||||
{
|
{
|
||||||
var buffer = new byte[Math.Max(Marshal.SizeOf(typeof(_IMAGE_FILE_HEADER)), 4)];
|
var buffer = new byte[Math.Max(Marshal.SizeOf(typeof(_IMAGE_FILE_HEADER)), 4)];
|
||||||
|
|||||||
@@ -579,7 +579,7 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Debug("DateUtil.Format Exception: " + exc.Message);
|
SaLogger.Debug($"DateUtil.Format {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
}
|
}
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.Serialization;
|
|
||||||
using System.Runtime.Serialization.Formatters.Binary;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
@@ -20,9 +18,6 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
/// <returns>The copied object.</returns>
|
/// <returns>The copied object.</returns>
|
||||||
public static T DeepCopy<T>(T source)
|
public static T DeepCopy<T>(T source)
|
||||||
{
|
{
|
||||||
if (!typeof(T).IsSerializable)
|
|
||||||
throw new ArgumentException("The type must be serializable.", "source");
|
|
||||||
|
|
||||||
// Don't serialize a null object, simply return the default for that object
|
// Don't serialize a null object, simply return the default for that object
|
||||||
if (Object.ReferenceEquals(source, null))
|
if (Object.ReferenceEquals(source, null))
|
||||||
return default(T);
|
return default(T);
|
||||||
@@ -40,7 +35,6 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
// Serialize using JSON.
|
// Serialize using JSON.
|
||||||
public static String ToJson<T>(T source)
|
public static String ToJson<T>(T source)
|
||||||
{
|
{
|
||||||
if (!typeof(T).IsSerializable) throw new ArgumentException("The type must be serializable.", "source");
|
|
||||||
// Don't serialize a null object, simply return the default for that object
|
// Don't serialize a null object, simply return the default for that object
|
||||||
if (Object.ReferenceEquals(source, null)) return "";
|
if (Object.ReferenceEquals(source, null)) return "";
|
||||||
// Serialise to JSON String.
|
// Serialise to JSON String.
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using Sarand.Net.Standard.Base.App;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using Sarand.Net.Standard.Base.Bus;
|
|
||||||
using Sarand.Net.Standard.Base.Core;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
@@ -665,7 +663,7 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Debug("StringUtil.FormatNumeric(double) " + exc.GetType().Name + ": " + exc.Message);
|
SaLogger.Debug($"StringUtil.FormatNumeric(double) {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
@@ -681,7 +679,7 @@ namespace Sarand.Net.Standard.Base.Utils
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SaLogger.Debug("StringUtil.FormatNumeric(decimal) " + exc.GetType().Name + ": " + exc.Message);
|
SaLogger.Debug($"StringUtil.FormatNumeric(decimal) {ExceptionUtil.GetErrorStateMessage(exc)}");
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
using System;
|
using Sarand.Net.Standard.Base.App;
|
||||||
using System.Data;
|
|
||||||
using System.Data.Common;
|
|
||||||
using Sarand.Net.Standard.Base.App;
|
|
||||||
using Sarand.Net.Standard.Base.Core;
|
using Sarand.Net.Standard.Base.Core;
|
||||||
using Sarand.Net.Standard.Base.Dbas;
|
using Sarand.Net.Standard.Base.Dbas;
|
||||||
using Sarand.Net.Standard.Base.Utils;
|
using Sarand.Net.Standard.Base.Utils;
|
||||||
using Sarand.Net.Standard.Dbas.Base;
|
using Sarand.Net.Standard.Dbas.Base;
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Data.Common;
|
||||||
|
|
||||||
namespace Sarand.Net.Standard.Dbas.Data
|
namespace Sarand.Net.Standard.Dbas.Data
|
||||||
{
|
{
|
||||||
@@ -48,8 +48,8 @@ namespace Sarand.Net.Standard.Dbas.Data
|
|||||||
}
|
}
|
||||||
catch (Exception exc)
|
catch (Exception exc)
|
||||||
{
|
{
|
||||||
SetErrorState(exc.GetType().Name + ": " + exc.Message);
|
SetErrorState(ExceptionUtil.GetErrorStateMessage(exc));
|
||||||
SaLogger.Warn(SysUtil.Fn + " " + exc.GetType().Name + ": " + exc.Message + "\n\t Query: " + query, true);
|
SaLogger.Warn($"{SysUtil.Fn} {ExceptionUtil.GetErrorStateMessage(exc)}\n\t Query: " + query, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ namespace Sarand.Net.Standard.Proc.Excel
|
|||||||
workbook.MemoryStream = new MemoryStream();
|
workbook.MemoryStream = new MemoryStream();
|
||||||
workbook.Document = SpreadsheetDocument.Create(workbook.MemoryStream, SpreadsheetDocumentType.Workbook);
|
workbook.Document = SpreadsheetDocument.Create(workbook.MemoryStream, SpreadsheetDocumentType.Workbook);
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Warn(exc.GetType().Name + ".CreateWorkbook " + ExceptionUtil.GetErrorStateMessage(exc)); }
|
catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return (workbook != null);
|
return (workbook != null);
|
||||||
}
|
}
|
||||||
public override bool OpenWorkbook(String filePath)
|
public override bool OpenWorkbook(String filePath)
|
||||||
@@ -113,7 +113,7 @@ namespace Sarand.Net.Standard.Proc.Excel
|
|||||||
workbook = new WorkbookData();
|
workbook = new WorkbookData();
|
||||||
workbook.Document = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);
|
workbook.Document = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Warn(exc.GetType().Name + ".OpenWorkbook " + ExceptionUtil.GetErrorStateMessage(exc)); }
|
catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
return (workbook != null);
|
return (workbook != null);
|
||||||
}
|
}
|
||||||
public override bool CleanseWorkbook()
|
public override bool CleanseWorkbook()
|
||||||
@@ -153,7 +153,7 @@ namespace Sarand.Net.Standard.Proc.Excel
|
|||||||
workbook = null;
|
workbook = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exc) { SaLogger.Warn(exc.GetType().Name + ".CloseWorkbook " + ExceptionUtil.GetErrorStateMessage(exc)); }
|
catch (Exception exc) { SaLogger.Warn($"{SysUtil.Fn} {ExceptionUtil.GetErrorStateMessage(exc)}"); }
|
||||||
workbook = null;
|
workbook = null;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
<RootNamespace>Sarand.Net.Standard</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user