3.0.0.0 Initial deployment.

This commit is contained in:
Andy Howard
2025-02-02 18:06:57 +00:00
parent 7930ef5604
commit 0d8e7d5619
75 changed files with 345 additions and 211 deletions
@@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "9.0.1",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}
@@ -222,7 +222,7 @@ namespace Sarand.BusinessMgr.Web.Control.App
// Application configuration. // Application configuration.
appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs")); appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs"));
emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("EmailConfigs")); emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email/Configs"));
LoggingRootFolder = AppConfig.Logging.RootFolder; LoggingRootFolder = AppConfig.Logging.RootFolder;
// Application instance. // Application instance.
@@ -3,7 +3,7 @@ using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Web.Control.Controllers; using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Helpers; using Sarand.Net.Standard.Base.Helpers;
@@ -19,7 +19,7 @@ using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.Web; using System.Web;
namespace Sarand.BusinessMgr.Web.Control.Controllers namespace Sarand.BusinessMgr.Web.Control.Components
{ {
//====================================================================== //======================================================================
public class SbmController_Control : SbmController_Web public class SbmController_Control : SbmController_Web
@@ -56,7 +56,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
/// <summary>Control session data</summary> /// <summary>Control session data</summary>
protected SbmApplication_Control App_Control { get { return SbmApplication_Control.Instance; } } protected SbmApplication_Control App_Control { get { return SbmApplication_Control.Instance; } }
protected SbmSessionData_Control SessionData_Control { get { return SessionData as SbmSessionData_Control; } } protected SbmSessionData_Control SessionData_Control { get { return SessionData as SbmSessionData_Control; } }
protected override SbmSessionData_Web DeserializeSessionData(String sessionDataJson) protected override SbmSessionData_Web DeserializeSessionData(string sessionDataJson)
{ {
return JsonConvert.DeserializeObject<SbmSessionData_Control>(sessionDataJson, SessionDataJsonDeserializerSettings); return JsonConvert.DeserializeObject<SbmSessionData_Control>(sessionDataJson, SessionDataJsonDeserializerSettings);
} }
@@ -84,7 +84,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
/// <para>- Open user session - store details against Sesion Data.</para> /// <para>- Open user session - store details against Sesion Data.</para>
/// <para>- Set 'Keep logged in' cookie if required.</para> /// <para>- Set 'Keep logged in' cookie if required.</para>
/// </summary> /// </summary>
protected bool SignUserIn(SbmcUserAccount userAccount, bool keepLoggedIn, ref String errorMessage) protected bool SignUserIn(SbmcUserAccount userAccount, bool keepLoggedIn, ref string errorMessage)
{ {
// Record disposable items as they are created so all can be disposed when needed. // Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>()) using (DisposableCollection<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>())
@@ -134,7 +134,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
{ {
// Validate user properties. // Validate user properties.
if (!SysId.IsValid(userAccount.Id)) return false; if (!SysId.IsValid(userAccount.Id)) return false;
if (StringUtil.IsEmpty(userAccount.EmailAddress)) return false; if (userAccount.EmailAddress.IsEmpty()) return false;
// Close previous session. // Close previous session.
CloseUserSession(); CloseUserSession();
@@ -161,9 +161,9 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
if (!AppConfig.Security.SignIn.KeepLoggedIn.Allowed) return false; if (!AppConfig.Security.SignIn.KeepLoggedIn.Allowed) return false;
// Extract cookie details. // Extract cookie details.
String encryptedParams = GetRequestCookie(KeepLoggedIn.CookieName); string encryptedParams = GetRequestCookie(KeepLoggedIn.CookieName);
KeepLoggedInParams keepLoggedInParams = ExtractKeepLoggedInParams(encryptedParams); KeepLoggedInParams keepLoggedInParams = ExtractKeepLoggedInParams(encryptedParams);
String logSuffix = keepLoggedInParams.GetValidParams().Concat("", " ", "."); string logSuffix = keepLoggedInParams.GetValidParams().Concat("", " ", ".");
if (keepLoggedInParams.IsValid()) if (keepLoggedInParams.IsValid())
{ {
using (SbmcUserAccount userAccount = ControlAccountMgr.GetUserAccountById(keepLoggedInParams.UserAccountId)) using (SbmcUserAccount userAccount = ControlAccountMgr.GetUserAccountById(keepLoggedInParams.UserAccountId))
@@ -172,7 +172,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
{ {
if (userAccount.IsStatusActive) if (userAccount.IsStatusActive)
{ {
String errorMessage = ""; string errorMessage = "";
if (SignUserIn(userAccount, true, ref errorMessage)) if (SignUserIn(userAccount, true, ref errorMessage))
{ {
// Successful login. // Successful login.
@@ -194,7 +194,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
/// <summary>Keep-Logged-In cookie.</summary> /// <summary>Keep-Logged-In cookie.</summary>
protected void SetKeepLoggedInCookie() protected void SetKeepLoggedInCookie()
{ {
String keepLoggedInCookieValue = GenerateKeepLoggedInCookieValue(); string keepLoggedInCookieValue = GenerateKeepLoggedInCookieValue();
int cookieExpiresDays = Math.Max(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Min, Math.Min(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Max, AppConfig.Security.SignIn.KeepLoggedIn.CookieExpiresDays)); int cookieExpiresDays = Math.Max(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Min, Math.Min(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Max, AppConfig.Security.SignIn.KeepLoggedIn.CookieExpiresDays));
SetResponseCookie(KeepLoggedIn.CookieName, keepLoggedInCookieValue, DateTime.Now.AddDays(cookieExpiresDays), true); SetResponseCookie(KeepLoggedIn.CookieName, keepLoggedInCookieValue, DateTime.Now.AddDays(cookieExpiresDays), true);
SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Value: " + keepLoggedInCookieValue); SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Value: " + keepLoggedInCookieValue);
@@ -203,7 +203,7 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
/// <summary>Set the 'Keep Logged In' response cookie to expired with no data.</summary> /// <summary>Set the 'Keep Logged In' response cookie to expired with no data.</summary>
public void ClearKeepLoggedInCookie() public void ClearKeepLoggedInCookie()
{ {
if (StringUtil.IsEmpty(GetRequestCookie(KeepLoggedIn.CookieName))) return; if (GetRequestCookie(KeepLoggedIn.CookieName).IsEmpty()) return;
// Clear cookie by setting expiry date in the past. // Clear cookie by setting expiry date in the past.
SetResponseCookie(KeepLoggedIn.CookieName, "", DateTime.Today.AddDays(-7), true); SetResponseCookie(KeepLoggedIn.CookieName, "", DateTime.Today.AddDays(-7), true);
SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie cleared."); SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie cleared.");
@@ -217,16 +217,16 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
// - IV Must be regenerated if key is changed: uncomment 'Generated' variable and copy resulting value to IV variable. // - IV Must be regenerated if key is changed: uncomment 'Generated' variable and copy resulting value to IV variable.
public static class KeepLoggedIn public static class KeepLoggedIn
{ {
public static String CookieName = "BCKLI"; public static string CookieName = "BCKLI";
public static String Base64Key = SacsEncryptionHelper.EncodePlainKey("$BusinessMgr+KeEp-1OgG3d=1n}*32?", SacsEncryptionHelper.KeyLength); public static string Base64Key = SacsEncryptionHelper.EncodePlainKey("$BusinessMgr+KeEp-1OgG3d=1n}*32?", SacsEncryptionHelper.KeyLength);
public static String Base64IV = "fpHMZchDkrJzgjVMrjpdHg=="; public static string Base64IV = "fpHMZchDkrJzgjVMrjpdHg==";
//public static String Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key); //public static String Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key);
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Keep-logged-in cookie value. // Keep-logged-in cookie value.
private static readonly String ParamName_KeepLoggedIn_UserAccountId = "uai"; private static readonly string ParamName_KeepLoggedIn_UserAccountId = "uai";
private String GenerateKeepLoggedInCookieValue() private string GenerateKeepLoggedInCookieValue()
{ {
NameValueCollection keepLoggedInParams = new NameValueCollection(); NameValueCollection keepLoggedInParams = new NameValueCollection();
keepLoggedInParams.Add(ParamName_KeepLoggedIn_UserAccountId, SysId.ToString(SessionData_Control.User.UserAccountId)); keepLoggedInParams.Add(ParamName_KeepLoggedIn_UserAccountId, SysId.ToString(SessionData_Control.User.UserAccountId));
@@ -238,9 +238,9 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
{ {
public SysId UserAccountId { get; set; } public SysId UserAccountId { get; set; }
/// <summary>Retrieve the list of valid parameters in printable format [Name: Value].</summary> /// <summary>Retrieve the list of valid parameters in printable format [Name: Value].</summary>
public List<String> GetValidParams() public List<string> GetValidParams()
{ {
List<String> values = new List<String>(); List<string> values = new List<string>();
if (SysId.IsValid(UserAccountId)) if (SysId.IsValid(UserAccountId))
values.Add("UserAccountId: " + SysId.ToString(UserAccountId)); values.Add("UserAccountId: " + SysId.ToString(UserAccountId));
return values; return values;
@@ -252,13 +252,13 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
SysId.IsValid(UserAccountId); SysId.IsValid(UserAccountId);
} }
} }
public KeepLoggedInParams ExtractKeepLoggedInParams(String encryptedParams) public KeepLoggedInParams ExtractKeepLoggedInParams(string encryptedParams)
{ {
KeepLoggedInParams keepLoggedInParams = new KeepLoggedInParams(); KeepLoggedInParams keepLoggedInParams = new KeepLoggedInParams();
if (!StringUtil.IsEmpty(encryptedParams)) if (!encryptedParams.IsEmpty())
{ {
NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key); NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key);
keepLoggedInParams.UserAccountId = new SysId(StringUtil.ToInt(linkParams.Get(ParamName_KeepLoggedIn_UserAccountId))); keepLoggedInParams.UserAccountId = new SysId(linkParams.Get(ParamName_KeepLoggedIn_UserAccountId).ToInt());
} }
if (DebugMode) SaLogger.Info($"{SysUtil.Fn} UserAccountId: " + SysId.ToString(keepLoggedInParams.UserAccountId)); if (DebugMode) SaLogger.Info($"{SysUtil.Fn} UserAccountId: " + SysId.ToString(keepLoggedInParams.UserAccountId));
return keepLoggedInParams; return keepLoggedInParams;
@@ -269,16 +269,16 @@ namespace Sarand.BusinessMgr.Web.Control.Controllers
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Encryption key is the same for all users each time the application is started, // Encryption key is the same for all users each time the application is started,
// but a different IV value is generated for each session so that the links/parameters cannot be shared. // but a different IV value is generated for each session so that the links/parameters cannot be shared.
public static String Base64Key_ControlApp { get; } = SacsEncryptionHelper.EncodePlainKey("BusinessMgr=Control&Encryption-" + DateTime.Today.Format("ddMMyy"), SacsEncryptionHelper.KeyLength); public static string Base64Key_ControlApp { get; } = SacsEncryptionHelper.EncodePlainKey("BusinessMgr=Control&Encryption-" + DateTime.Today.Format("ddMMyy"), SacsEncryptionHelper.KeyLength);
protected String EncryptSessionParams(NameValueCollection parameters) protected string EncryptSessionParams(NameValueCollection parameters)
{ {
return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Control.Base64IV_ControlApp, Base64Key_ControlApp)); return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Control.Base64IV_ControlApp, Base64Key_ControlApp));
} }
public static String EncryptSessionParams(SbmController_Control controller, NameValueCollection parameters) public static string EncryptSessionParams(SbmController_Control controller, NameValueCollection parameters)
{ {
return controller.EncryptSessionParams(parameters); return controller.EncryptSessionParams(parameters);
} }
protected NameValueCollection ExtractSessionParams(String encryptedParams) protected NameValueCollection ExtractSessionParams(string encryptedParams)
{ {
return DecryptParameters(encryptedParams, SessionData_Control.Base64IV_ControlApp, Base64Key_ControlApp); return DecryptParameters(encryptedParams, SessionData_Control.Base64IV_ControlApp, Base64Key_ControlApp);
} }
@@ -9,7 +9,7 @@ using Sarand.Net.Standard.Base.Core;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace Sarand.BusinessMgr.Web.Control.Models namespace Sarand.BusinessMgr.Web.Control.Components
{ {
//======================================================================= //=======================================================================
public class SbmModel_Control : SbmModel_Base public class SbmModel_Control : SbmModel_Base
@@ -1,7 +1,7 @@
using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Models; using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Account; using Sarand.BusinessMgr.Web.Control.Models.Account;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Account; using Sarand.BusinessMgr.Web.Control.Models.Account;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models; using Sarand.BusinessMgr.Web.Control.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -2,8 +2,8 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.BusinessMgr.Web.Control.Consoles;
using Sarand.BusinessMgr.Web.Control.Models;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Models; using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.BusinessMgr.Web.Control.Consoles;
using Sarand.BusinessMgr.Web.Control.Models;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance namespace Sarand.BusinessMgr.Web.Control.Controllers.Instance
@@ -6,8 +6,8 @@ using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Consoles; using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.BusinessMgr.Web.Control.Consoles;
using Sarand.BusinessMgr.Web.Control.Models;
using Sarand.BusinessMgr.Web.Control.Models.Instance; using Sarand.BusinessMgr.Web.Control.Models.Instance;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Models; using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Param; using Sarand.BusinessMgr.Web.Control.Models.Param;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Models.Param; using Sarand.BusinessMgr.Web.Control.Models.Param;
namespace Sarand.BusinessMgr.Web.Control.Controllers.Param namespace Sarand.BusinessMgr.Web.Control.Controllers.Param
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Helpers; using Sarand.BusinessMgr.Web.Control.Helpers;
using Sarand.BusinessMgr.Web.Control.Models; using Sarand.BusinessMgr.Web.Control.Models;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -13,6 +13,7 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Control.Components;
namespace Sarand.BusinessMgr.Web.Control.Controllers namespace Sarand.BusinessMgr.Web.Control.Controllers
{ {
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Control.Components;
using System; using System;
namespace Sarand.BusinessMgr.Web.Control.Models.Instance namespace Sarand.BusinessMgr.Web.Control.Models.Instance
@@ -3,6 +3,7 @@ using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Core.Web.Components; using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -3,6 +3,7 @@ using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Core.Web.Components; using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -5,6 +5,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.BusinessMgr.Web.Control.Consoles; using Sarand.BusinessMgr.Web.Control.Consoles;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,5 +1,6 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
namespace Sarand.BusinessMgr.Web.Control.Models namespace Sarand.BusinessMgr.Web.Control.Models
{ {
@@ -2,6 +2,7 @@
using Sarand.BusinessMgr.Net.Core.Web.Components; using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Helpers; using Sarand.BusinessMgr.Net.Standard.Base.Helpers;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.Helpers; using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Base.Utils;
using System; using System;
@@ -2,6 +2,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Control.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.CodeTypes;
@@ -26,6 +26,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Control\Controllers\NewFolder\" />
<Folder Include="Control\Controllers\System\" /> <Folder Include="Control\Controllers\System\" />
<Folder Include="Views\Security\" /> <Folder Include="Views\Security\" />
</ItemGroup> </ItemGroup>
@@ -35,6 +36,11 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Update="appsettings.Machine.Sarand602.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Update="appsettings.Development.json"> <Content Update="appsettings.Development.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile> <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
@@ -1,6 +1,7 @@
@using Sarand.BusinessMgr.Net.Standard.Base.App @using Sarand.BusinessMgr.Net.Standard.Base.App
@using Sarand.BusinessMgr.Net.Core.Web.App @using Sarand.BusinessMgr.Net.Core.Web.App
@using Sarand.BusinessMgr.Web.Control @using Sarand.BusinessMgr.Web.Control
@using Sarand.BusinessMgr.Web.Control.Components
@using Sarand.BusinessMgr.Web.Control.Models @using Sarand.BusinessMgr.Web.Control.Models
@using Sarand.BusinessMgr.Web.Control.Models.Account @using Sarand.BusinessMgr.Web.Control.Models.Account
@using Sarand.BusinessMgr.Web.Control.Models.Instance @using Sarand.BusinessMgr.Web.Control.Models.Instance
@@ -6,7 +6,8 @@
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Information"
} }
}, },
"EmailConfigs": { "Email": {
"Configs": {
"SBM-Dev": { "SBM-Dev": {
"SMTP": { "SMTP": {
"Server": "smtp.ionos.co.uk", "Server": "smtp.ionos.co.uk",
@@ -23,4 +24,5 @@
} }
} }
} }
}
} }
@@ -0,0 +1,31 @@
{
"AppConfigs": {
"BusMgr-Ctrl": {
"Environments": [ "Production" ],
"Instance": "Prod",
"ControlDatabase": {
"Location": "MsSql:.\\BusMgr.SaBusinessMgr_Control",
"User": "bmc",
"Password": "sarand"
},
"TemplateDatabase": {
"Location": "MsSql:.\\BusMgr.SaBusinessMgr_Template",
"User": "busmgr",
"Password": "sapphire"
},
"Email": {
"Configs": [],
"Context": "SBC",
"ContactUs": {
"AddressesTo": [ "contact@BusMgr.Sarand.com" ]
}
},
"Documents": {
"RootFolder": "C:\\Sarand\\BusinessMgr\\Docs"
},
"Logging": {
"RootFolder": "C:\\Sarand\\BusinessMgr\\Log\\WebControl"
}
}
}
}
@@ -1,5 +1,6 @@
{ {
"EmailConfigs": { "Email": {
"Configs": {
"SBM-Prod": { "SBM-Prod": {
"SMTP": { "SMTP": {
"Server": "smtp.ionos.co.uk", "Server": "smtp.ionos.co.uk",
@@ -16,4 +17,5 @@
} }
} }
} }
}
} }
@@ -0,0 +1,13 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "9.0.1",
"commands": [
"dotnet-ef"
],
"rollForward": false
}
}
}
@@ -243,7 +243,7 @@ namespace Sarand.BusinessMgr.Web.Portal.App
// Application configuration. // Application configuration.
appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs")); appConfigs = SbmAppConfigHelper.ExtractAppConfigs(SbmConfiguration.GetSection("AppConfigs"));
emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("EmailConfigs")); emailConfigs = SbmEmailConfigHelper.ExtractEmailConfigs(SbmConfiguration.GetSection("Email/Configs"));
LoggingRootFolder = AppConfig.Logging.RootFolder; LoggingRootFolder = AppConfig.Logging.RootFolder;
// Application instance. // Application instance.
@@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Core; using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Web.Portal.Controllers; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Dbas; using Sarand.Net.Standard.Base.Dbas;
@@ -9,7 +9,6 @@ using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Web.Portal.App; using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.BusinessMgr.Web.Portal.Helpers; using Sarand.BusinessMgr.Web.Portal.Helpers;
using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.CodeTypes;
@@ -32,7 +31,7 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Web; using System.Web;
namespace Sarand.BusinessMgr.Web.Portal.Controllers namespace Sarand.BusinessMgr.Web.Portal.Components
{ {
//======================================================================= //=======================================================================
// Portal Controller - Utils. // Portal Controller - Utils.
@@ -100,7 +99,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
/// <summary> /// <summary>
/// Session data deserialisation. /// Session data deserialisation.
/// </summary> /// </summary>
protected override SbmSessionData_Web DeserializeSessionData(String sessionDataJson) protected override SbmSessionData_Web DeserializeSessionData(string sessionDataJson)
{ {
return JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SessionDataJsonDeserializerSettings); return JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SessionDataJsonDeserializerSettings);
} }
@@ -120,7 +119,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
/// <para>- Open user session - store details against Sesion Data.</para> /// <para>- Open user session - store details against Sesion Data.</para>
/// <para>- Set 'Keep logged in' cookie if required.</para> /// <para>- Set 'Keep logged in' cookie if required.</para>
/// </summary> /// </summary>
protected bool SignUserIn(SbmSessionData_Portal sessionDataForUser, SbmInternals internalsForUser, SaSecurityItem securityItemUser, SbmAffiliate affiliateUser, SbmAssociation associationOrganisation, SbmAffiliate affiliateOrganisation, bool keepLoggedIn, ref String errorMessage) protected bool SignUserIn(SbmSessionData_Portal sessionDataForUser, SbmInternals internalsForUser, SaSecurityItem securityItemUser, SbmAffiliate affiliateUser, SbmAssociation associationOrganisation, SbmAffiliate affiliateOrganisation, bool keepLoggedIn, ref string errorMessage)
{ {
string errorPrefix = $"Unable to sign account in"; string errorPrefix = $"Unable to sign account in";
string errorSuffix = $"Context: {sessionDataForUser.RepositoryContext}. Email: {sessionDataForUser.UserEmailAddress}."; string errorSuffix = $"Context: {sessionDataForUser.RepositoryContext}. Email: {sessionDataForUser.UserEmailAddress}.";
@@ -240,7 +239,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
{ {
return false; return false;
} }
if (StringUtil.IsBlank(sessionDataForUser.UserEmailAddress)) if (sessionDataForUser.UserEmailAddress.IsBlank())
{ {
return false; return false;
} }
@@ -311,10 +310,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
if (!AppConfig.Security.SignIn.KeepLoggedIn.Allowed) return false; if (!AppConfig.Security.SignIn.KeepLoggedIn.Allowed) return false;
// Extract parameters and validate that they are populated. // Extract parameters and validate that they are populated.
String encryptedParams = GetRequestCookie(KeepLoggedIn.CookieName); string encryptedParams = GetRequestCookie(KeepLoggedIn.CookieName);
KeepLoggedInParams keepLoggedInParams = ExtractKeepLoggedInParams(encryptedParams); KeepLoggedInParams keepLoggedInParams = ExtractKeepLoggedInParams(encryptedParams);
String logPrefix = $"{SysUtil.Fn} 'Keep Logged In' cookie found but "; string logPrefix = $"{SysUtil.Fn} 'Keep Logged In' cookie found but ";
String logSuffix = keepLoggedInParams.GetValidParams().Concat("", " ", "."); string logSuffix = keepLoggedInParams.GetValidParams().Concat("", " ", ".");
if (keepLoggedInParams.IsValid()) if (keepLoggedInParams.IsValid())
{ {
// Instance Repository configured on Control database identified by Context. // Instance Repository configured on Control database identified by Context.
@@ -338,7 +337,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
{ {
// Bring the Session Data up to date with the session properties. // Bring the Session Data up to date with the session properties.
sessionDataForUser.Refresh(securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation); sessionDataForUser.Refresh(securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation);
String errorMessage = ""; string errorMessage = "";
if (SignUserIn(sessionDataForUser, internalsForUser, securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation, true, ref errorMessage)) if (SignUserIn(sessionDataForUser, internalsForUser, securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation, true, ref errorMessage))
{ {
// User auto-login successful. // User auto-login successful.
@@ -357,7 +356,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
} }
else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but no matching session contexts found." + logSuffix); else SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but no matching session contexts found." + logSuffix);
} }
else if (!StringUtil.IsEmpty(encryptedParams)) else if (!encryptedParams.IsEmpty())
SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but with incomplete details." + logSuffix); SaLogger.Warn($"{SysUtil.Fn} Keep Logged In cookie found but with incomplete details." + logSuffix);
ClearKeepLoggedInCookie(); ClearKeepLoggedInCookie();
return false; return false;
@@ -367,7 +366,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
/// <summary>Keep-Logged-In cookie.</summary> /// <summary>Keep-Logged-In cookie.</summary>
protected void SetKeepLoggedInCookie() protected void SetKeepLoggedInCookie()
{ {
String keepLoggedInCookieValue = GenerateKeepLoggedInCookieValue(); string keepLoggedInCookieValue = GenerateKeepLoggedInCookieValue();
int cookieExpiresDays = Math.Max(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Min, Math.Min(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Max, AppConfig.Security.SignIn.KeepLoggedIn.CookieExpiresDays)); int cookieExpiresDays = Math.Max(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Min, Math.Min(Sbm.Config.Security.SignIn.KeepLoggedIn.CookieExpiresDays_Max, AppConfig.Security.SignIn.KeepLoggedIn.CookieExpiresDays));
SetResponseCookie(KeepLoggedIn.CookieName, keepLoggedInCookieValue, DateTime.Now.AddDays(cookieExpiresDays), true); SetResponseCookie(KeepLoggedIn.CookieName, keepLoggedInCookieValue, DateTime.Now.AddDays(cookieExpiresDays), true);
SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Name: {KeepLoggedIn.CookieName}. Value: {keepLoggedInCookieValue}"); SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie set. Name: {KeepLoggedIn.CookieName}. Value: {keepLoggedInCookieValue}");
@@ -376,7 +375,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
/// <summary>Set the 'Keep Logged In' response cookie to expired with no data.</summary> /// <summary>Set the 'Keep Logged In' response cookie to expired with no data.</summary>
public void ClearKeepLoggedInCookie() public void ClearKeepLoggedInCookie()
{ {
if (StringUtil.IsEmpty(GetRequestCookie(KeepLoggedIn.CookieName))) return; if (GetRequestCookie(KeepLoggedIn.CookieName).IsEmpty()) return;
// Clear cookie by setting expiry date in the past. // Clear cookie by setting expiry date in the past.
SetResponseCookie(KeepLoggedIn.CookieName, "", DateTime.Today.AddDays(-7), true); SetResponseCookie(KeepLoggedIn.CookieName, "", DateTime.Today.AddDays(-7), true);
SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie cleared. Name: {KeepLoggedIn.CookieName}."); SaLogger.Debug($"{SysUtil.Fn} 'Keep Logged In' cookie cleared. Name: {KeepLoggedIn.CookieName}.");
@@ -391,20 +390,20 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
// NB - 'Keep Logged In' is termed 'Remember Me' in the Portal application. // NB - 'Keep Logged In' is termed 'Remember Me' in the Portal application.
public static class KeepLoggedIn public static class KeepLoggedIn
{ {
public static String CookieName = "sbprm"; public static string CookieName = "sbprm";
public static String Base64Key = SacsEncryptionHelper.EncodePlainKey("<=SaBusMgr^P0rt4L{KeepLoggedIn}~", SacsEncryptionHelper.KeyLength); public static string Base64Key = SacsEncryptionHelper.EncodePlainKey("<=SaBusMgr^P0rt4L{KeepLoggedIn}~", SacsEncryptionHelper.KeyLength);
//private static String KeepLoggedIn.Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key); //private static String KeepLoggedIn.Base64IV_Generated = SacsEncryptionHelper.InitSymmetricEncryptionIV(KeepLoggedIn.Base64Key);
public static String Base64IV = "m47AMcMgACp3aoQVc0Y92A=="; public static string Base64IV = "m47AMcMgACp3aoQVc0Y92A==";
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Keep-logged-in cookie value. // Keep-logged-in cookie value.
private static readonly String ParamName_KeepLoggedIn_RepositoryContext = "rct"; private static readonly string ParamName_KeepLoggedIn_RepositoryContext = "rct";
private static readonly String ParamName_KeepLoggedIn_EmailAddress = "ema"; private static readonly string ParamName_KeepLoggedIn_EmailAddress = "ema";
private static readonly String ParamName_KeepLoggedIn_SecurityItemId = "sii"; private static readonly string ParamName_KeepLoggedIn_SecurityItemId = "sii";
private static readonly String ParamName_KeepLoggedIn_AffiliateIdUser = "afiu"; private static readonly string ParamName_KeepLoggedIn_AffiliateIdUser = "afiu";
private static readonly String ParamName_KeepLoggedIn_AssociationIdOrganisation = "asio"; private static readonly string ParamName_KeepLoggedIn_AssociationIdOrganisation = "asio";
private String GenerateKeepLoggedInCookieValue() private string GenerateKeepLoggedInCookieValue()
{ {
NameValueCollection keepLoggedInParams = new NameValueCollection(); NameValueCollection keepLoggedInParams = new NameValueCollection();
keepLoggedInParams.Add(ParamName_KeepLoggedIn_RepositoryContext, SessionData_Portal.RepositoryContext); keepLoggedInParams.Add(ParamName_KeepLoggedIn_RepositoryContext, SessionData_Portal.RepositoryContext);
@@ -418,18 +417,18 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
//------------------------------------------------------------------- //-------------------------------------------------------------------
public class KeepLoggedInParams public class KeepLoggedInParams
{ {
public String RepositoryContext { get; set; } public string RepositoryContext { get; set; }
public String EmailAddress { get; set; } public string EmailAddress { get; set; }
public SysId SecurityItemId { get; set; } public SysId SecurityItemId { get; set; }
public SysId AffiliateIdUser { get; set; } public SysId AffiliateIdUser { get; set; }
public SysId AssociationIdOrganisation { get; set; } public SysId AssociationIdOrganisation { get; set; }
/// <summary>Retrieve the list of valid parameters in printable format [Name: Value].</summary> /// <summary>Retrieve the list of valid parameters in printable format [Name: Value].</summary>
public List<String> GetValidParams() public List<string> GetValidParams()
{ {
List<String> values = new List<String>(); List<string> values = new List<string>();
if (!StringUtil.IsBlank(RepositoryContext)) if (!RepositoryContext.IsBlank())
values.Add("RepositoryContext: " + RepositoryContext); values.Add("RepositoryContext: " + RepositoryContext);
if (!StringUtil.IsBlank(EmailAddress)) if (!EmailAddress.IsBlank())
values.Add("EmailAddress: " + EmailAddress); values.Add("EmailAddress: " + EmailAddress);
if (SysId.IsValid(SecurityItemId)) if (SysId.IsValid(SecurityItemId))
values.Add("SecurityItemId: " + SysId.ToString(SecurityItemId)); values.Add("SecurityItemId: " + SysId.ToString(SecurityItemId));
@@ -443,17 +442,17 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
public bool IsValid() public bool IsValid()
{ {
return return
!StringUtil.IsBlank(RepositoryContext) && !RepositoryContext.IsBlank() &&
!StringUtil.IsBlank(EmailAddress) && !EmailAddress.IsBlank() &&
SysId.IsValid(SecurityItemId) && SysId.IsValid(SecurityItemId) &&
SysId.IsValid(AffiliateIdUser) && SysId.IsValid(AffiliateIdUser) &&
SysId.IsValid(AssociationIdOrganisation); SysId.IsValid(AssociationIdOrganisation);
} }
} }
public KeepLoggedInParams ExtractKeepLoggedInParams(String encryptedParams) public KeepLoggedInParams ExtractKeepLoggedInParams(string encryptedParams)
{ {
KeepLoggedInParams keepLoggedInParams = new KeepLoggedInParams(); KeepLoggedInParams keepLoggedInParams = new KeepLoggedInParams();
if (!StringUtil.IsEmpty(encryptedParams)) if (!encryptedParams.IsEmpty())
{ {
NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key); NameValueCollection linkParams = DecryptParameters(encryptedParams, KeepLoggedIn.Base64IV, KeepLoggedIn.Base64Key);
keepLoggedInParams.RepositoryContext = linkParams.Get(ParamName_KeepLoggedIn_RepositoryContext); keepLoggedInParams.RepositoryContext = linkParams.Get(ParamName_KeepLoggedIn_RepositoryContext);
@@ -470,16 +469,16 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
// Parameter encryption, eg. for images. // Parameter encryption, eg. for images.
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Encryption key is the same for all users but a different IV value is generated for each session so that the links/parameters cannot be shared. // Encryption key is the same for all users but a different IV value is generated for each session so that the links/parameters cannot be shared.
public static String Base64Key_PortalApp { get; } = SacsEncryptionHelper.EncodePlainKey("{SaBusMgr=Portal-App#Encryption}", SacsEncryptionHelper.KeyLength); public static string Base64Key_PortalApp { get; } = SacsEncryptionHelper.EncodePlainKey("{SaBusMgr=Portal-App#Encryption}", SacsEncryptionHelper.KeyLength);
protected String EncryptPortalParams(NameValueCollection parameters) protected string EncryptPortalParams(NameValueCollection parameters)
{ {
return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Portal.Base64IV_PortalApp, Base64Key_PortalApp)); return HttpUtility.UrlEncode(EncryptParameters(parameters, SessionData_Portal.Base64IV_PortalApp, Base64Key_PortalApp));
} }
public static String EncryptPortalParams(SbmController_Portal controller, NameValueCollection parameters) public static string EncryptPortalParams(SbmController_Portal controller, NameValueCollection parameters)
{ {
return controller.EncryptPortalParams(parameters); return controller.EncryptPortalParams(parameters);
} }
protected NameValueCollection ExtractPortalParams(String encryptedParams) protected NameValueCollection ExtractPortalParams(string encryptedParams)
{ {
return DecryptParameters(encryptedParams, SessionData_Portal.Base64IV_PortalApp, Base64Key_PortalApp); return DecryptParameters(encryptedParams, SessionData_Portal.Base64IV_PortalApp, Base64Key_PortalApp);
} }
@@ -487,13 +486,13 @@ namespace Sarand.BusinessMgr.Web.Portal.Controllers
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Logging. // Logging.
//------------------------------------------------------------------- //-------------------------------------------------------------------
protected String getLogSuffix() protected string getLogSuffix()
{ {
List<String> logSuffix = new List<string>(); List<string> logSuffix = new List<string>();
SbmSessionData_Portal sessionData = SessionData_Portal; SbmSessionData_Portal sessionData = SessionData_Portal;
if (sessionData != null) if (sessionData != null)
{ {
if (!StringUtil.IsEmpty(sessionData.User.EmailAddress)) if (!sessionData.User.EmailAddress.IsEmpty())
logSuffix.Add("User: " + sessionData.User.EmailAddress); logSuffix.Add("User: " + sessionData.User.EmailAddress);
} }
return logSuffix.Concat("", " ", "."); return logSuffix.Concat("", " ", ".");
@@ -22,7 +22,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm; using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
namespace Sarand.BusinessMgr.Web.Portal.Models namespace Sarand.BusinessMgr.Web.Portal.Components
{ {
//======================================================================= //=======================================================================
public class SbmModel_Portal : SbmModel_Base public class SbmModel_Portal : SbmModel_Base
@@ -50,17 +50,17 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Properties. // Properties.
protected SbmSessionData_Portal SessionData_Portal { get { return SessionData_Web as SbmSessionData_Portal; } } protected SbmSessionData_Portal SessionData_Portal { get { return SessionData_Web as SbmSessionData_Portal; } }
public String OrganisationName { get { return SessionData_Portal?.Organisation?.DisplayName ?? ""; } } public string OrganisationName { get { return SessionData_Portal?.Organisation?.DisplayName ?? ""; } }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Security profile. // Security profile.
public bool UserCanViewFinancials() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(); } public bool UserCanViewFinancials() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(); }
public bool UserCanViewCommodityFinancials_Supply() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySupply); } public bool UserCanViewCommodityFinancials_Supply() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(FinancialType.CommoditySupply); }
public bool UserCanViewCommodityFinancials_Sales() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(Sbm.FinancialType.CommoditySales); } public bool UserCanViewCommodityFinancials_Sales() { return SessionData_Portal.SecurityProfile.UserCanViewFinancials(FinancialType.CommoditySales); }
public bool UserCanUpdateFinancials() { return SessionData_Portal.SecurityProfile.UserCanUpdateFinancials(); } public bool UserCanUpdateFinancials() { return SessionData_Portal.SecurityProfile.UserCanUpdateFinancials(); }
public bool UserCanStockTake() { return SessionData_Portal.SecurityProfile.UserHasSecurityRight(Sbm.SecurityRight.StockTake); } public bool UserCanStockTake() { return SessionData_Portal.SecurityProfile.UserHasSecurityRight(SecurityRight.StockTake); }
public bool UserCanCreateItem(Sbm.ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanCreateItemType(itemType); } public bool UserCanCreateItem(ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanCreateItemType(itemType); }
public bool UserCanUpdateItem(Sbm.ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanUpdateItemType(itemType); } public bool UserCanUpdateItem(ItemType itemType) { return SessionData_Portal.SecurityProfile.UserCanUpdateItemType(itemType); }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Business components. // Business components.
@@ -90,19 +90,19 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
protected SbmStockControlConfig StockControlConfig { get { return Internals.StockControlConfig; } } protected SbmStockControlConfig StockControlConfig { get { return Internals.StockControlConfig; } }
protected SbmRequirementCostingConfig RequirementCostingConfig { get { return Internals.RequirementCostingConfig; } } protected SbmRequirementCostingConfig RequirementCostingConfig { get { return Internals.RequirementCostingConfig; } }
// System codes. // System codes.
protected List<TypeCodeDesc> GetCodesOfType(Sbm.SystemCode systemCode) { return Internals.GetSystemCodes(systemCode); } protected List<TypeCodeDesc> GetCodesOfType(SystemCode systemCode) { return Internals.GetSystemCodes(systemCode); }
//------------------------------------------------------------------- //-------------------------------------------------------------------
// Page menu options. // Page menu options.
public class MenuOptionData public class MenuOptionData
{ {
public String Caption { get; set; } public string Caption { get; set; }
public String Page { get; set; } public string Page { get; set; }
} }
public class MenuItemData public class MenuItemData
{ {
public String Caption { get; set; } public string Caption { get; set; }
public List<MenuOptionData> Options { get; } = new List<MenuOptionData>(); public List<MenuOptionData> Options { get; } = new List<MenuOptionData>();
} }
public class MenuData public class MenuData
@@ -122,7 +122,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
// Contacts. // Contacts.
MenuItemData contactsItem = new MenuItemData() { Caption = @Localiser["label.contacts"] }; MenuItemData contactsItem = new MenuItemData() { Caption = @Localiser["label.contacts"] };
if (SessionConsole.AllowOption(Sbm.ConfigOption.Contacts)) if (SessionConsole.AllowOption(ConfigOption.Contacts))
{ {
contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.contacts"], Page = "Contacts" }); contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.contacts"], Page = "Contacts" });
contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.customers"], Page = "Customers" }); contactsItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.customers"], Page = "Customers" });
@@ -134,13 +134,13 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
// Commodities. // Commodities.
MenuItemData commoditiesItem = new MenuItemData() { Caption = @Localiser["label.commodities"] }; MenuItemData commoditiesItem = new MenuItemData() { Caption = @Localiser["label.commodities"] };
if (SessionConsole.AllowOption(Sbm.ConfigOption.Commodities)) if (SessionConsole.AllowOption(ConfigOption.Commodities))
commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.commodities"], Page = "Commodity" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.commodities"], Page = "Commodity" });
if (SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) if (SessionConsole.AllowOption(ConfigOption.Assets))
{ {
commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.asset.categories"], Page = "Assets/AssetCategory" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.asset.categories"], Page = "Assets/AssetCategory" });
commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.assets"], Page = "Assets/Asset" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.assets"], Page = "Assets/Asset" });
if (SessionConsole.AllowOption(Sbm.ConfigOption.Vehicles)) if (SessionConsole.AllowOption(ConfigOption.Vehicles))
{ {
commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.vehicle.classes"], Page = "Vehicles/VehicleClass" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["caption.vehicle.classes"], Page = "Vehicles/VehicleClass" });
commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.vehicles"], Page = "Vehicles/Vehicle" }); commoditiesItem.Options.Add(new MenuOptionData() { Caption = @Localiser["label.vehicles"], Page = "Vehicles/Vehicle" });
@@ -175,7 +175,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
} }
/// <summary>List of Code Type Codes for dropdown.</summary> /// <summary>List of Code Type Codes for dropdown.</summary>
public IEnumerable<SelectListItem> GetCodeTypeCodesForSelect(Sbm.ApplCodeType codeType, bool activeOnly = true) public IEnumerable<SelectListItem> GetCodeTypeCodesForSelect(ApplCodeType codeType, bool activeOnly = true)
{ {
List<CodeDesc> codes = new List<CodeDesc>(); List<CodeDesc> codes = new List<CodeDesc>();
foreach (SaCode code in CodeTypeConsole.GetCodesForCodeType(SbmSystem.GetCodeTypeCode(codeType), activeOnly)) foreach (SaCode code in CodeTypeConsole.GetCodesForCodeType(SbmSystem.GetCodeTypeCode(codeType), activeOnly))
@@ -192,10 +192,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
/// </summary> /// </summary>
public IEnumerable<SelectListItem> GetAffiliateTypeCodesForFilterDropdown() public IEnumerable<SelectListItem> GetAffiliateTypeCodesForFilterDropdown()
{ {
List<TypeCodeDesc> affiliateTypes = GetCodesOfType(Sbm.SystemCode.AffiliateType); List<TypeCodeDesc> affiliateTypes = GetCodesOfType(SystemCode.AffiliateType);
if (!affiliateTypes.Any(item => item.Type == (int)Sbm.AffiliateType.AnyOrganisation)) if (!affiliateTypes.Any(item => item.Type == (int)AffiliateType.AnyOrganisation))
affiliateTypes.Insert(0, new TypeCodeDesc((int)Sbm.AffiliateType.AnyOrganisation, ((short)Sbm.AffiliateType.AnyOrganisation).ToString(), Localiser["label.organisation"])); affiliateTypes.Insert(0, new TypeCodeDesc((int)AffiliateType.AnyOrganisation, ((short)AffiliateType.AnyOrganisation).ToString(), Localiser["label.organisation"]));
affiliateTypes.Insert(0, Sbm.AffiliateType.Any, "", Localiser["label.any"]); affiliateTypes.Insert(0, AffiliateType.Any, "", Localiser["label.any"]);
return new SelectList(affiliateTypes, "Code", "Desc"); return new SelectList(affiliateTypes, "Code", "Desc");
} }
@@ -205,10 +205,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
/// </summary> /// </summary>
public IEnumerable<SelectListItem> GetAssociationTypeCodesForFilterDropdown() public IEnumerable<SelectListItem> GetAssociationTypeCodesForFilterDropdown()
{ {
List<TypeCodeDesc> associationTypes = GetCodesOfType(Sbm.SystemCode.AssociationType); List<TypeCodeDesc> associationTypes = GetCodesOfType(SystemCode.AssociationType);
associationTypes.Insert(0, Sbm.AssociationType.Any, "", Localiser["label.any"]); associationTypes.Insert(0, AssociationType.Any, "", Localiser["label.any"]);
associationTypes.RemoveAll(item => item.Type == (short)Sbm.AssociationType.Internal); associationTypes.RemoveAll(item => item.Type == (short)AssociationType.Internal);
foreach (Sbm.AssociationType associationType in EnumUtil.GetValues<Sbm.AssociationType>()) foreach (AssociationType associationType in EnumUtil.GetValues<AssociationType>())
{ {
if (!SessionConsole.AllowAssociationType(associationType)) if (!SessionConsole.AllowAssociationType(associationType))
associationTypes.RemoveAll(item => item.Type == (short)associationType); associationTypes.RemoveAll(item => item.Type == (short)associationType);
@@ -225,10 +225,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetCommodityTypeCodesForFilterDropdown() public IEnumerable<SelectListItem> GetCommodityTypeCodesForFilterDropdown()
{ {
List<TypeCodeDesc> commodityTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> commodityTypes = new List<TypeCodeDesc>();
commodityTypes.Add(Sbm.CommodityType.Any, "", Localiser["label.any"]); commodityTypes.Add(CommodityType.Any, "", Localiser["label.any"]);
foreach (TypeCodeDesc commodityType in GetCodesOfType(Sbm.SystemCode.CommodityType)) foreach (TypeCodeDesc commodityType in GetCodesOfType(SystemCode.CommodityType))
{ {
if (commodityType.Type == (int)Sbm.CommodityType.Asset && !SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) continue; if (commodityType.Type == (int)CommodityType.Asset && !SessionConsole.AllowOption(ConfigOption.Assets)) continue;
commodityTypes.Add(commodityType); commodityTypes.Add(commodityType);
} }
return new SelectList(commodityTypes, "Code", "Desc"); return new SelectList(commodityTypes, "Code", "Desc");
@@ -240,9 +240,9 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetCommodityTypeCodesForDropdown() public IEnumerable<SelectListItem> GetCommodityTypeCodesForDropdown()
{ {
List<TypeCodeDesc> commodityTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> commodityTypes = new List<TypeCodeDesc>();
foreach (TypeCodeDesc commodityType in GetCodesOfType(Sbm.SystemCode.CommodityType)) foreach (TypeCodeDesc commodityType in GetCodesOfType(SystemCode.CommodityType))
{ {
if (commodityType.Type == (int)Sbm.CommodityType.Asset && !SessionConsole.AllowOption(Sbm.ConfigOption.Assets)) continue; if (commodityType.Type == (int)CommodityType.Asset && !SessionConsole.AllowOption(ConfigOption.Assets)) continue;
commodityTypes.Add(commodityType); commodityTypes.Add(commodityType);
} }
return new SelectList(commodityTypes, "Code", "Desc"); return new SelectList(commodityTypes, "Code", "Desc");
@@ -254,8 +254,8 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetAssetTypeCodesForFilterDropdown() public IEnumerable<SelectListItem> GetAssetTypeCodesForFilterDropdown()
{ {
List<TypeCodeDesc> assetTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> assetTypes = new List<TypeCodeDesc>();
assetTypes.Add(Sbm.AssetType.Any, "", Localiser["label.any"]); assetTypes.Add(AssetType.Any, "", Localiser["label.any"]);
foreach (TypeCodeDesc assetType in GetCodesOfType(Sbm.SystemCode.AssetType)) foreach (TypeCodeDesc assetType in GetCodesOfType(SystemCode.AssetType))
{ {
assetTypes.Add(assetType); assetTypes.Add(assetType);
} }
@@ -268,7 +268,7 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetAssetTypeCodesForDropdown() public IEnumerable<SelectListItem> GetAssetTypeCodesForDropdown()
{ {
List<TypeCodeDesc> assetTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> assetTypes = new List<TypeCodeDesc>();
foreach (TypeCodeDesc assetType in GetCodesOfType(Sbm.SystemCode.AssetType)) foreach (TypeCodeDesc assetType in GetCodesOfType(SystemCode.AssetType))
{ {
assetTypes.Add(assetType); assetTypes.Add(assetType);
} }
@@ -284,11 +284,11 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetTransactionTypeCodesForFilterDropdown() public IEnumerable<SelectListItem> GetTransactionTypeCodesForFilterDropdown()
{ {
List<TypeCodeDesc> transactionTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> transactionTypes = new List<TypeCodeDesc>();
transactionTypes.Add(Sbm.TransactionType.Any, "", Localiser["label.any"]); transactionTypes.Add(TransactionType.Any, "", Localiser["label.any"]);
foreach (TypeCodeDesc transactionType in GetCodesOfType(Sbm.SystemCode.TransactionType)) foreach (TypeCodeDesc transactionType in GetCodesOfType(SystemCode.TransactionType))
{ {
if (!SessionConsole.AllowTransactionType((Sbm.TransactionType)transactionType.Type)) continue; if (!SessionConsole.AllowTransactionType((TransactionType)transactionType.Type)) continue;
String description = SessionConsole.GetOwnerOption_Caption(Sbm.TransTypeToOrgOption((Sbm.TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((Sbm.TransactionType)transactionType.Type)); string description = SessionConsole.GetOwnerOption_Caption(TransTypeToOrgOption((TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((TransactionType)transactionType.Type));
transactionTypes.Add(transactionType.Type, transactionType.Code, description); transactionTypes.Add(transactionType.Type, transactionType.Code, description);
} }
return new SelectList(transactionTypes, "Code", "Desc"); return new SelectList(transactionTypes, "Code", "Desc");
@@ -300,10 +300,10 @@ namespace Sarand.BusinessMgr.Web.Portal.Models
public IEnumerable<SelectListItem> GetTransactionTypeCodesForDropdown() public IEnumerable<SelectListItem> GetTransactionTypeCodesForDropdown()
{ {
List<TypeCodeDesc> transactionTypes = new List<TypeCodeDesc>(); List<TypeCodeDesc> transactionTypes = new List<TypeCodeDesc>();
foreach (TypeCodeDesc transactionType in GetCodesOfType(Sbm.SystemCode.TransactionType)) foreach (TypeCodeDesc transactionType in GetCodesOfType(SystemCode.TransactionType))
{ {
if (!SessionConsole.AllowTransactionType((Sbm.TransactionType)transactionType.Type)) continue; if (!SessionConsole.AllowTransactionType((TransactionType)transactionType.Type)) continue;
String description = SessionConsole.GetOwnerOption_Caption(Sbm.TransTypeToOrgOption((Sbm.TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((Sbm.TransactionType)transactionType.Type)); string description = SessionConsole.GetOwnerOption_Caption(TransTypeToOrgOption((TransactionType)transactionType.Type), Localiser.GetTransactionTypeCaption((TransactionType)transactionType.Type));
transactionTypes.Add(transactionType.Type, transactionType.Code, description); transactionTypes.Add(transactionType.Type, transactionType.Code, description);
} }
return new SelectList(transactionTypes, "Code", "Desc"); return new SelectList(transactionTypes, "Code", "Desc");
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using Sarand.BusinessMgr.Web.Portal.Models.Commodities; using Sarand.BusinessMgr.Web.Portal.Models.Commodities;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using System; using System;
@@ -2,7 +2,7 @@
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using System; using System;
@@ -3,7 +3,7 @@ using NPOI.OpenXmlFormats.Dml.Diagram;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Codes; using Sarand.BusinessMgr.Web.Portal.Models.Codes;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Codes; using Sarand.BusinessMgr.Web.Portal.Models.Codes;
using System; using System;
@@ -3,7 +3,7 @@ using NPOI.SS.Formula.Functions;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using Sarand.BusinessMgr.Web.Portal.Models.Codes; using Sarand.BusinessMgr.Web.Portal.Models.Codes;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Assets; using Sarand.BusinessMgr.Web.Portal.Models.Assets;
using Sarand.BusinessMgr.Web.Portal.Models.Codes; using Sarand.BusinessMgr.Web.Portal.Models.Codes;
@@ -1,7 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Commodities; using Sarand.BusinessMgr.Web.Portal.Models.Commodities;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -15,6 +15,7 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Models.Commodities; using Sarand.BusinessMgr.Web.Portal.Models.Commodities;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities namespace Sarand.BusinessMgr.Web.Portal.Controllers.Commodities
{ {
@@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Mvc;
using NPOI.OpenXmlFormats.Dml.Diagram; using NPOI.OpenXmlFormats.Dml.Diagram;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -16,6 +16,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
{ {
@@ -3,7 +3,7 @@ using DocumentFormat.OpenXml.ExtendedProperties;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -15,6 +15,7 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts namespace Sarand.BusinessMgr.Web.Portal.Controllers.Contacts
{ {
@@ -15,6 +15,7 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers namespace Sarand.BusinessMgr.Web.Portal.Controllers
{ {
@@ -6,6 +6,7 @@ using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Helpers; using Sarand.BusinessMgr.Net.Standard.Base.Helpers;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr; using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Web.Portal.App; using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Helpers; using Sarand.BusinessMgr.Web.Portal.Helpers;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -18,6 +18,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Helpers; using Sarand.BusinessMgr.Web.Portal.Helpers;
using Sarand.BusinessMgr.Web.Portal.App; using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security namespace Sarand.BusinessMgr.Web.Portal.Controllers.Security
{ {
@@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Transactions; using Sarand.BusinessMgr.Web.Portal.Models.Transactions;
using Sarand.BusinessMgr.Web.Portal.Models.Contacts; using Sarand.BusinessMgr.Web.Portal.Models.Contacts;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
@@ -13,6 +12,7 @@ using Sarand.Net.Standard.Base.Utils;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using static Sacs.Web.Components.SaController.AjaxResponse_Data; using static Sacs.Web.Components.SaController.AjaxResponse_Data;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions
{ {
@@ -15,6 +15,7 @@ using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Sarand.BusinessMgr.Web.Portal.Models.Transactions; using Sarand.BusinessMgr.Web.Portal.Models.Transactions;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions namespace Sarand.BusinessMgr.Web.Portal.Controllers.Transactions
{ {
@@ -2,7 +2,7 @@
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models.Vehicles; using Sarand.BusinessMgr.Web.Portal.Models.Vehicles;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Models;
using Sarand.BusinessMgr.Web.Portal.Models.Vehicles; using Sarand.BusinessMgr.Web.Portal.Models.Vehicles;
using System; using System;
@@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -5,7 +5,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.CodeTypes;
@@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.CodeTypes; using Sarand.Net.Standard.Base.CodeTypes;
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Components;
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.Utils; using Sarand.Net.Standard.Base.Utils;
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -1,4 +1,5 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Web.Portal.Components;
using System; using System;
namespace Sarand.BusinessMgr.Web.Portal.Models namespace Sarand.BusinessMgr.Web.Portal.Models
@@ -2,6 +2,7 @@
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Components;
namespace Sarand.BusinessMgr.Web.Portal.Models namespace Sarand.BusinessMgr.Web.Portal.Models
{ {
@@ -2,6 +2,7 @@
using Sarand.BusinessMgr.Net.Core.Web.Components; using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Helpers; using Sarand.BusinessMgr.Net.Standard.Base.Helpers;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.Helpers; using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Security; using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.Utils; using Sarand.Net.Standard.Base.Utils;
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -4,7 +4,7 @@ using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control; using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Web.Portal.Models; using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -1,6 +1,7 @@
using Sarand.BusinessMgr.Net.Core.Web.App; using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App; using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus; using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Web.Portal.Components;
using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Core;
@@ -1,5 +1,6 @@
@using Sarand.BusinessMgr.Net.Core.Web.App @using Sarand.BusinessMgr.Net.Core.Web.App
@using Sarand.BusinessMgr.Net.Standard.Base.App @using Sarand.BusinessMgr.Net.Standard.Base.App
@using Sarand.BusinessMgr.Web.Portal.Components
@using Sarand.BusinessMgr.Web.Portal.Models @using Sarand.BusinessMgr.Web.Portal.Models
@using Sarand.BusinessMgr.Web.Portal.Models.Contacts @using Sarand.BusinessMgr.Web.Portal.Models.Contacts
@using Sarand.BusinessMgr.Web.Portal.Models.Commodities @using Sarand.BusinessMgr.Web.Portal.Models.Commodities
@@ -6,7 +6,8 @@
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Information"
} }
}, },
"EmailConfigs": { "Email": {
"Configs": {
"SBM-Dev": { "SBM-Dev": {
"SMTP": { "SMTP": {
"Server": "smtp.ionos.co.uk", "Server": "smtp.ionos.co.uk",
@@ -23,4 +24,5 @@
} }
} }
} }
}
} }
@@ -0,0 +1,26 @@
{
"AppConfigs": {
"BusMgr": {
"Environments": [ "Production" ],
"Instance": "Prod",
"ControlDatabase": {
"Location": "MsSql:.\\BusMgr.SaBusinessMgr_Control",
"User": "bmc",
"Password": "sarand"
},
"Email": {
"Configs": [],
"Context": "SBM-Dev",
"ContactUs": {
"AddressesTo": [ "Control@BusMgr.Sarand.com" ]
}
},
"Documents": {
"RootFolder": "D:\\Sarand\\Projects\\Users\\AHoward\\VS2022\\BusinessMgr\\Docs"
},
"Logging": {
"RootFolder": "D:\\Sarand\\Projects\\Users\\AHoward\\VS2022\\BusinessMgr\\Logs\\WebPortal"
}
}
}
}
@@ -1,5 +1,6 @@
{ {
"EmailConfigs": { "Email": {
"Configs": {
"SBM-Prod": { "SBM-Prod": {
"SMTP": { "SMTP": {
"Server": "smtp.ionos.co.uk", "Server": "smtp.ionos.co.uk",
@@ -16,4 +17,5 @@
} }
} }
} }
}
} }