Portal signin via Control Instance

This commit is contained in:
Andy Howard
2024-10-29 08:40:47 +00:00
parent bf6bb966bc
commit c5ee285e27
467 changed files with 25771 additions and 3347 deletions
@@ -0,0 +1,189 @@
using DocumentFormat.OpenXml.Spreadsheet;
using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Diagnostics.Contracts;
namespace Sarand.BusinessMgr.Web.Control.Models.Account
{
//=======================================================================
public class Model_UserAccount : SbmModel_Control
{
//-------------------------------------------------------------------
// Construction.
public Model_UserAccount(SbmLocaliser localiser) :
base(localiser)
{
}
//-------------------------------------------------------------------
// Filter properties.
public class FilterData
{
public string Search { get; set; }
public string EmailAddress { get; set; }
public string StatusCat { get; set; }
public SbmcUserAccount.StatusCat GetStatusCat()
{
return EnumUtil.ParseEnum(StatusCat, SbmcUserAccount.StatusCat.NotDeleted);
}
}
public FilterData Filter { get; } = new FilterData();
//-------------------------------------------------------------------
// Item properties.
public class UserAccountData
{
public String Exists { get; set; }
public string Id { get; set; }
public string EmailAddress { get; set; }
public string Title { get; set; }
public string FirstName { get; set; }
public string Initials { get; set; }
public string LastName { get; set; }
public string PhoneMain { get; set; }
public string PhoneMobile { get; set; }
public string PhoneAlt { get; set; }
public string StatusCode { get; set; }
public SaStatus GetStatus() { return SacsSystem.GetStatusForCode(StatusCode); }
}
public UserAccountData User { get; } = new UserAccountData();
// User emails.
public string UserEmailAcountActivationPortal { get; set; }
public string UserEmailRequestPasswordPortal { get; set; }
public string UserEmailRequestPasswordControl { get; set; }
//-------------------------------------------------------------------
// Validation.
//-------------------------------------------------------------------
// User.
public bool ValidateUserData(Sacs.Web.Components.SaController.AjaxResponse_Data responseData)
{
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsHierarchyItem> disposables = new DisposableCollection<SacsHierarchyItem>())
{
// User email.
if (User.EmailAddress != null)
{
string controlName = "UserEmailAddress";
User.EmailAddress = User.EmailAddress.ToLowerInvariant();
responseData.SetControlValue(controlName, User.EmailAddress);
if (User.EmailAddress.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(User.EmailAddress) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_EmailAddress))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_EmailAddress)]);
else if (!SacsDataValidationHelper.IsValidEmailAddress(User.EmailAddress))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
else
{
// Check for duplicate email address.
SbmcUserAccount.Params prmUserAccount = new SbmcUserAccount.Params();
SysId userAccountId = User.Id.ToSysId();
if (SysId.IsValid(userAccountId))
prmUserAccount.IdsExcluded.Add(userAccountId);
prmUserAccount.EmailAddress = User.EmailAddress;
prmUserAccount.StatusCat = SbmcUserAccount.StatusCat.Any;
if (ControlAccountMgr.GetUserAccountCount(prmUserAccount) > 0)
responseData.SetControlError(controlName, Localiser["msg.validation.duplicate.value"]);
}
}
// User title.
if (User.Title != null)
{
string controlName = "UserTitle";
responseData.SetControlValue(controlName, User.Title);
if (StringUtil.GetLength(User.Title) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_Title))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_Title)]);
}
// User first name.
if (User.FirstName != null)
{
string controlName = "UserFirstName";
responseData.SetControlValue(controlName, User.FirstName);
if (User.FirstName.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(User.FirstName) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_FirstName))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_FirstName)]);
}
// User title.
if (User.Initials != null)
{
string controlName = "UserInitials";
responseData.SetControlValue(controlName, User.Initials);
if (StringUtil.GetLength(User.Initials) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_Initials))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_Initials)]);
}
// User last name.
if (User.LastName != null)
{
string controlName = "UserLastName";
responseData.SetControlValue(controlName, User.LastName);
if (User.LastName.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (StringUtil.GetLength(User.LastName) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_LastName))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_LastName)]);
}
// Phone.
if (User.PhoneMain != null)
{
string controlName = "UserPhoneMain";
responseData.SetControlValue(controlName, User.PhoneMain);
if (StringUtil.GetLength(User.PhoneMain) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMain))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMain)]);
else if (!User.PhoneMain.IsEmpty() && !SacsDataValidationHelper.IsValidPhone(User.PhoneMain))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Mobile Phone.
if (User.PhoneMobile != null)
{
string controlName = "UserPhoneMobile";
responseData.SetControlValue(controlName, User.PhoneMobile);
if (StringUtil.GetLength(User.PhoneMobile) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMobile))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneMobile)]);
else if (!User.PhoneMobile.IsEmpty() && !SacsDataValidationHelper.IsValidPhone(User.PhoneMobile))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// Alt Phone.
if (User.PhoneAlt != null)
{
string controlName = "UserPhoneAlt";
responseData.SetControlValue(controlName, User.PhoneAlt);
if (StringUtil.GetLength(User.PhoneAlt) > GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneAlt))
responseData.SetControlError(controlName, Localiser["msg.validation.maximum.length", GetControlMaxLength(SbmDbDfn_Control.ColumnIdx.UserAccount_PhoneAlt)]);
else if (!User.PhoneAlt.IsEmpty() && !SacsDataValidationHelper.IsValidPhone(User.PhoneAlt))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
// User status.
if (User.StatusCode != null)
{
string controlName = "UserStatus";
if (User.StatusCode.IsBlank())
responseData.SetControlError(controlName, Localiser["msg.validation.mandatory.value"]);
else if (!SbmcUserAccount.ValidStatuses.Contains(User.GetStatus()))
responseData.SetControlError(controlName, Localiser["msg.validation.invalid.value"]);
}
}
return !responseData.HasControlErrors();
}
//-------------------------------------------------------------------
}
//=======================================================================
}