Struts 2 client side validation only works when `devMode=true` - struts2

I'm trying to use client side validation using Struts 2 (2.3.34), but the problem is that the javascript validation code is completelly generated only when devMode=true. I'm using the xhtml theme.
When devMode=false it just generates the getFieldValue function then returns:
Reading the form-close-validate.ftl file, it seems the 'tagNames' list or the 'validators' list are empty?
See: form-close-validate frament
My form:
<s:form action="empleado_editsave" method="POST" name="empForm" namespace="/admin" theme="xhtml" validate="true" id="formEmpleadoEdit">
...
</s:form>
EDIT: found a workaround with devMode=false and reloadXmlConfiguration=true, however it is still far from ideal.
EDIT2: with reloadXmlConfiguration=false it generates the following js code:
<script type="text/javascript">
function validateForm_formEmpleadoEdit() {
var getFieldValue = function(field) {
var type = field.type ? field.type : field[0].type;
if (type == 'select-one' || type == 'select-multiple') {
return (field.selectedIndex == -1 ? "" : field.options[field.selectedIndex].value);
} else if (type == 'checkbox' || type == 'radio') {
if (!field.length) {
field = [field];
}
for (var i = 0; i < field.length; i++) {
if (field[i].checked) {
return field[i].value;
}
}
return "";
}
return field.value;
}
form = document.getElementById("formEmpleadoEdit");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
return !errors;
}
</script>
with reloadXmlConfiguration=true it generates:
<script type="text/javascript">
function validateForm_formEmpleadoEdit() {
var getFieldValue = function(field) {
var type = field.type ? field.type : field[0].type;
if (type == 'select-one' || type == 'select-multiple') {
return (field.selectedIndex == -1 ? "" : field.options[field.selectedIndex].value);
} else if (type == 'checkbox' || type == 'radio') {
if (!field.length) {
field = [field];
}
for (var i = 0; i < field.length; i++) {
if (field[i].checked) {
return field[i].value;
}
}
return "";
}
return field.value;
}
form = document.getElementById("formEmpleadoEdit");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
// field name: empleado.legajo
// validator name: required
if (form.elements['empleado.legajo']) {
field = form.elements['empleado.legajo'];
var error = "El legajo es requerido";
var fieldValue = getFieldValue(field);
if (fieldValue == "") {
addError(field, error);
errors = true;
}
}
// field name: empleado.legajo
// validator name: int
if (form.elements['empleado.legajo']) {
field = form.elements['empleado.legajo'];
var error = "El legajo es inválido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null) {
if (parseInt(fieldValue) <
1 ||
false) {
addError(field, error);
errors = true;
}
}
}
// field name: empleado.nombre
// validator name: requiredstring
if (form.elements['empleado.nombre']) {
field = form.elements['empleado.nombre'];
var error = "El nombre es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.apellido
// validator name: requiredstring
if (form.elements['empleado.apellido']) {
field = form.elements['empleado.apellido'];
var error = "El apellido es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.telefonos
// validator name: requiredstring
if (form.elements['empleado.telefonos']) {
field = form.elements['empleado.telefonos'];
var error = "El teléfono es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horaentrada
// validator name: requiredstring
if (form.elements['empleado.horaentrada']) {
field = form.elements['empleado.horaentrada'];
var error = "El horario de entrada es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horaentrada
// validator name: regex
if (form.elements['empleado.horaentrada']) {
field = form.elements['empleado.horaentrada'];
var error = "El horario de entrada es inválido. Use el formato HH:MM";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horasalida
// validator name: requiredstring
if (form.elements['empleado.horasalida']) {
field = form.elements['empleado.horasalida'];
var error = "El horario de salida es requerido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && (fieldValue == "" || fieldValue.replace(/^\s+|\s+$/g,"").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: empleado.horasalida
// validator name: regex
if (form.elements['empleado.horasalida']) {
field = form.elements['empleado.horasalida'];
var error = "El horario de salida es inválido. Use el formato HH:MM";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$")) {
addError(field, error);
errors = true;
}
}
// field name: empleado.fechaNacim
// validator name: date
if (form.elements['empleado.fechaNacim']) {
field = form.elements['empleado.fechaNacim'];
var error = "La fecha de nacimiento debe ser mayor a 01/01/10";
var fieldValue = getFieldValue(field);
}
// field name: empleado.email
// validator name: email
if (form.elements['empleado.email']) {
field = form.elements['empleado.email'];
var error = "El e-mail es inválido";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && fieldValue.length > 0 && fieldValue.match("\\b^[\'_a-z0-9-\\+]+(\\.[\'_a-z0-9-\\+]+)*#[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,6})$\\b")==null) {
addError(field, error);
errors = true;
}
}
// field name: empleado.posicion.posicionId
// validator name: required
if (form.elements['empleado.posicion.posicionId']) {
field = form.elements['empleado.posicion.posicionId'];
var error = "La posición es requerida";
var fieldValue = getFieldValue(field);
if (fieldValue == "") {
addError(field, error);
errors = true;
}
}
// field name: empleado.posicion.posicionId
// validator name: regex
if (form.elements['empleado.posicion.posicionId']) {
field = form.elements['empleado.posicion.posicionId'];
var error = "La posición es inválida";
var fieldValue = getFieldValue(field);
if (continueValidation && fieldValue != null && !fieldValue.match("^[1-9]\\d*$")) {
addError(field, error);
errors = true;
}
}
return !errors;
}
</script>

Related

How to create multiple configuration in Zerotouch? Configuration need enrollment token. Do we need multiple enrollment tokens for creating config?

Get Method of HardwarePolicy
[HttpGet]
[CustomAuthorization]
public IActionResult PolicyManagement(string profileType)
{
try
{
#region ResellerServiceAccountEMMOAuthCred
ServiceAccountCredential? credential;
string fileName = "service_account_key.json";
string path = Path.Combine(this.Environment.WebRootPath, "ZeroTouchCredJSON", fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(AndroidManagementService.ScopeConstants.Androidmanagement)
.UnderlyingCredential as ServiceAccountCredential;
}
// Create a zero-touch enrollment API service endpoint.
var service = new AndroidManagementService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = ResourceMsg.EMMAppName
});
#endregion
ViewBag.MyPolicyName = string.Empty;
dynamic? policyId = null;
CommonPoliciesDto dto = new();
CommonPoliciesDto cpDto = new();
bool jFlag = false;
dynamic enterpriseNameFormat = "";
//fetch two profile types (Fully Manged & Work)
dto.ProfileTypeList = _iAdminMapper.GetProfileTypeList();
//fetch LoggedIn user info
var loggedInUserEmail = HttpContext.Session.GetString("LoggedInUserName");
var loggedInUserId = HttpContext.Session.GetString("LoggedInUserId");
//fetch enterprises based on loggedInUser
var enterprisesRes = _iEmmMapper.GetEnterprises().Where(x => x.AdminIdentityId == loggedInUserId).FirstOrDefault();
//get enterprise data based on loggedIn user google account
var enterpriseDatax = _iEmmMapper.GetEnterprises().Where(x => x.CustomerGoogleAccountId == enterprisesRes.CustomerGoogleAccountId).FirstOrDefault();
if (enterpriseDatax != null)
{
//bind myEnterpriseId in view page
ViewBag.MyEnterpriseeId = enterpriseDatax.EnterpriseId;
//DeviceList
//dto.DeviceList = _iAdminMapper.GetDropDevicesList(enterpriseDatax.EnterpriseId);
enterpriseNameFormat = string.Format("enterprises/{0}", enterpriseDatax.EnterpriseId);
//Fetch Current PolicyName
var myPolicyDatax = _iEmmMapper.GetCommonPolicies().Where(x => x.EnterpriseId == enterpriseDatax.EnterpriseId && x.CustomStatus2 == true).FirstOrDefault();
if(myPolicyDatax != null)
{
ViewBag.MyPolicyName = myPolicyDatax.PolicyName;
}
else
{
ViewBag.MyPolicyName = ResourceMsg.DefaultPolicy;
}
//fetch policy info based on enterpriseId and profileType
var policyData = _iEmmMapper.GetCommonPolicies().Where(x => x.EnterpriseId == enterpriseDatax.EnterpriseId && x.PolicyProfileType == profileType && x.PolicyType == ResourceMsg.Default).FirstOrDefault();
if (policyData != null)
{
policyId = policyData.PolicyId;
//managedplaystore
List<string> featuresList = new()
{
ResourceMsg.PLAY_SEARCH
};
//create web token for managed Google Play web UI; need reseller creds to generated token
var ParentFrameUrl = _iConfiguration.GetValue<string>("AppSetting:ParentFrameUrl");
WebToken webTokenInfo = service.Enterprises.WebTokens.Create(new DemoWebToken()
.SetParentFrameUrl(ParentFrameUrl)
.SetEnabledFeatures(featuresList), enterpriseNameFormat)
.Execute();
var webToken = webTokenInfo.Value;
TempData["WebToken"] = webToken;
//hardwaresettings
var result = _iEmmMapper.GetCommonPolicies().Where(x => x.PolicyId == policyId && x.PolicyType == ResourceMsg.Default).FirstOrDefault();
//applicationsettings | based on profileType
var resAppmodel = _iEmmMapper.GetApplicationPolicies().OrderByDescending(x => x.Id).FirstOrDefault(x => x.PolicyId == policyId);
//devicesettings
var resDevicemodel = _iEmmMapper.GetDevicePolicies().Where(x => x.EnterpriseId == enterpriseDatax.EnterpriseId && x.IsActive).FirstOrDefault();
if (profileType != null)
{
//If Managed Profile then perform on all settings
if (profileType == ResourceMsg.FullyManged)
{
if (result != null)
{
}
if (resAppmodel != null)
{
}
if (resDevicemodel != null)
{
}
//prepare commonpolicies vmodel to send to view
dto = new()
{
EnterpriseName = enterpriseDatax.EnterpriseNameRequested,
//populate policyNameList
//EnterpriseList = _iEmmMapper.GetActiveEnterprisesDropList(),
//populate enterprise list
EnterpriseList = _iEmmMapper.GetActiveEnterprisesDropList(),
//common policies
ProfileTypeList = _iAdminMapper.GetProfileTypeList(),
ProfileType = profileType,
//bindMyEnterpriseId in view
MyEnterpriseId = enterpriseDatax.EnterpriseId,
//hardware settings
DupWifiConfigDisabled = cpDto.DupWifiConfigDisabled,
DupMobileNetworksConfigDisabled = cpDto.DupMobileNetworksConfigDisabled,
DupBluetoothDisabled = cpDto.DupBluetoothDisabled,
DupUsbFileTransferDisabled = cpDto.DupUsbFileTransferDisabled,
MaximumTimeToLock = cpDto.MaximumTimeToLock,
AdjustVolumeDisabled = result != null ? result.AdjustVolumeDisabled : false,
ScreenCaptureDisabled = result != null ? result.ScreenCaptureDisabled : false,
StatusBarDisabled = result != null ? result.StatusBarDisabled : false,
BluetoothContactSharingDisabled = result != null ? result.BluetoothContactSharingDisabled : false,
ShareLocationDisabled = result != null ? result.ShareLocationDisabled : false,
WifiConfigDisabled = result != null ? result.WifiConfigDisabled : false,
MobileNetworksConfigDisabled = result != null ? result.MobileNetworksConfigDisabled : false,
AutoDateAndTimeZone = result != null ? result.AutoDateAndTimeZone : ResourceMsg.AUTO_DATEANDTIMEZONE_UNSPECIFIED,
KeyguardDisabled = result != null ? result.KeyguardDisabled : false,
CameraDisabled = result != null ? result.CameraDisabled : false,
//app settings
ApplicationName = cpDto.ApplicationName ?? string.Empty,
AppPackageName = cpDto.AppPackageName ?? string.Empty,
DupInstallType = cpDto.DupInstallType,
DupDefaultPermissionPolicy = cpDto.DupDefaultPermissionPolicy,
PackageList = _iEmmMapper.GetApplicationsList(),
//device mode settings
KioskMode = cpDto.KioskMode,
AppPolicyName = "",
PackageName = resDevicemodel != null? resDevicemodel.PackageName: "",
PackageId = cpDto.PackageId,
DupLockPowerButton = cpDto.DupLockPowerButton,
StatusBar = cpDto.StatusBar,
DupDisableDeviceSettings = cpDto.DupDisableDeviceSettings,
SystemNavigation = cpDto.SystemNavigation != null ? cpDto.SystemNavigation : ResourceMsg.SYSTEM_NAVIGATION_UNSPECIFIED,
DupEnableSystemErrorWarnings = cpDto.DupEnableSystemErrorWarnings,
IsDeleted = resDevicemodel != null ? resDevicemodel.IsDeleted: true,
//fetch defaultConfiguration status to show createConfiguration button when status is true
IsDefaultConfigurationSet = enterpriseDatax.IsDefaultConfigurationSet,
DeviceList = _iAdminMapper.GetDropDevicesList(enterpriseDatax.EnterpriseId)
};
if (jFlag)
{
//when profile dropdown changed
return Json(dto);
}
// TempData["PolicyApplied"] = TempData["PolicyApplied"];
return View(dto);
}
//If work Profile then perform on hardware and apps settings
if (profileType == ResourceMsg.Work)
{
if (result != null)
{
}
if (resAppmodel != null)
{
}
//prepare commonpolicies vmodel to send to view
dto = new()
{
EnterpriseName = enterpriseDatax.EnterpriseNameRequested,
//hardware settings
DupWifiConfigDisabled = cpDto.DupWifiConfigDisabled,
DupMobileNetworksConfigDisabled = cpDto.DupMobileNetworksConfigDisabled,
DupBluetoothDisabled = cpDto.DupBluetoothDisabled,
DupUsbFileTransferDisabled = cpDto.DupUsbFileTransferDisabled,
MaximumTimeToLock = cpDto.MaximumTimeToLock,
AdjustVolumeDisabled = result != null ? result.AdjustVolumeDisabled : false,
ScreenCaptureDisabled = result != null ? result.ScreenCaptureDisabled : false,
StatusBarDisabled = result != null ? result.StatusBarDisabled : false,
BluetoothContactSharingDisabled = result != null ? result.BluetoothContactSharingDisabled : false,
ShareLocationDisabled = result != null ? result.ShareLocationDisabled : false,
WifiConfigDisabled = result != null ? result.WifiConfigDisabled : false,
MobileNetworksConfigDisabled = result != null ? result.MobileNetworksConfigDisabled : false,
AutoDateAndTimeZone = result != null ? result.AutoDateAndTimeZone : ResourceMsg.AUTO_DATEANDTIMEZONE_UNSPECIFIED,
KeyguardDisabled = result != null ? result.KeyguardDisabled : false,
CameraDisabled = result != null ? result.CameraDisabled : false,
//app settings
ApplicationName = cpDto.ApplicationName ?? string.Empty,
AppPackageName = cpDto.AppPackageName ?? string.Empty,
DupInstallType = cpDto.DupInstallType,
DupDefaultPermissionPolicy = cpDto.DupDefaultPermissionPolicy,
PackageList = _iEmmMapper.GetApplicationsList(),
//common policies
EnterpriseList = _iEmmMapper.GetActiveEnterprisesDropList(),
ProfileTypeList = _iEmmMapper.GetProfileTypeList(),
ProfileType = profileType,
//bindMyEnterpriseId in view
MyEnterpriseId = enterpriseDatax.EnterpriseId,
//fetch defaultConfiguration status to show createConfiguration button when status is true
IsDefaultConfigurationSet = enterpriseDatax.IsDefaultConfigurationSet,
DeviceList = _iAdminMapper.GetDropDevicesList(enterpriseDatax.EnterpriseId)
};
if (jFlag)
{
//when profile dropdown changed
return Json(dto);
}
return View(dto);
}
}
}
}
// TempData["PolicyApplied"] = TempData["PolicyApplied"];
return View(dto);
}
catch (Exception ex)
{
_loggerManager.LogError($"Something went wrong inside CommonPolicies get action: {ex.Message}");
return View(new CommonPoliciesDto());
}
}
Post Mehtod
[HttpPost]
[CustomAuthorization]
public IActionResult PolicyManagement(CommonPoliciesDto commonPolicies)
{
try
{
dynamic PolicyAge = string.Empty;
dynamic policyResponse = string.Empty;
string myPolicyId = string.Empty;
//bind myEnterpriseId in view page
ViewBag.MyEnterpriseeId = commonPolicies.MyEnterpriseId;
//fetch UserIdentityId
var userLoggedId = _iEmmMapper.GetEnterprises().Where(x=> x.EnterpriseId == commonPolicies.MyEnterpriseId).Select(x => x.AdminIdentityId).FirstOrDefault();
if(userLoggedId != null)
{
commonPolicies.UserIdentityId = userLoggedId;
}
#region ResellerServiceAccountEMMOAuthCred
//read service a/c creds
ServiceAccountCredential? credential;
string fileName = "service_account_key.json";
string path = Path.Combine(this.Environment.WebRootPath, "ZeroTouchCredJSON", fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(AndroidManagementService.ScopeConstants.Androidmanagement)
.UnderlyingCredential as ServiceAccountCredential;
}
// Create a zero-touch enrollment API service endpoint.
var service = new AndroidManagementService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = ResourceMsg.EMMAppName
});
#endregion
ModelState.Remove("PackageName");
if (ModelState.IsValid)
{
if (!string.IsNullOrEmpty(commonPolicies.MyEnterpriseId))
{
#region conditions
if (commonPolicies.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED)
{
commonPolicies.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED;
}
else if (commonPolicies.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE)
{
commonPolicies.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE;
}
else
{
commonPolicies.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_UNSPECIFIED;
}
//
if (commonPolicies.WifiMoblieData == 1)
{
commonPolicies.WifiConfigDisabled = false;
commonPolicies.MobileNetworksConfigDisabled = true;
}
else if (commonPolicies.WifiMoblieData == 2)
{
commonPolicies.MobileNetworksConfigDisabled = false;
commonPolicies.WifiConfigDisabled = true;
}
else
{
commonPolicies.WifiConfigDisabled = false;
commonPolicies.MobileNetworksConfigDisabled = false;
}
//
if (commonPolicies.DupBluetoothDisabled == 1)
{
commonPolicies.BluetoothDisabled = false;
}
else
{
commonPolicies.BluetoothDisabled = true;
commonPolicies.BluetoothContactSharingDisabled = true;
}
if (commonPolicies.DupUsbFileTransferDisabled == 1)
{
commonPolicies.UsbFileTransferDisabled = false;
}
else
{
commonPolicies.UsbFileTransferDisabled = true;
}
if (commonPolicies.MaximumTimeToLock > 0)
{
commonPolicies.MaximumTimeToLock *= 60000;
}
#endregion
#region formingPolicyIdFromPolicyName
//form Policy Id
string myPolicyName = commonPolicies.PolicyName.Trim();
bool flag = false;
foreach (var data in myPolicyName.ToCharArray())
{
if (data == ' ')
{
flag = true;
}
}
if (flag)
{
string[] polArr = myPolicyName.Split(' ');
foreach (var datax in polArr)
{
myPolicyId += datax + "_";
}
myPolicyId = myPolicyId.Remove(myPolicyId.Length - 1, 1);
//Console.WriteLine(myPolicyId);
}
else
{
myPolicyId = myPolicyName;
//Console.WriteLine(test);
}
#endregion
var entepriseParent = string.Format("enterprises/{0}", commonPolicies.MyEnterpriseId);
var policyName = string.Format("{0}/policies/{1}", entepriseParent, myPolicyId);
//Check if policy exist on server or not
//If policy not exist on server then it thru 404 error
try
{
policyResponse = service.Enterprises.Policies.Get(policyName).Execute();
}
catch (GoogleApiException gex)
{
//thru 404 error as this is the new policy for the server
PolicyAge = ResourceMsg.New;
}
if (PolicyAge != ResourceMsg.New)
{
//Policy exist on server
PolicyAge = ResourceMsg.Existing;
}
//condition for add policy
if (commonPolicies.ActionType != ResourceMsg.update)
{
//check if the policyId exist in both database and active in server
var IsPolicyExistOnDB = _iEmmMapper.GetCommonPolicies().Where(x => x.PolicyName.ToUpper() == commonPolicies.PolicyName.ToUpper().Trim() && x.PolicyId == myPolicyId && x.EnterpriseId == commonPolicies.MyEnterpriseId).Any();
//If PolicyExistOnDb or PolicyIsNewToServer then only thru policy exist error
if(IsPolicyExistOnDB || PolicyAge == ResourceMsg.Existing)
{
//If Policy Exist on server then can't create a policy again with the same name
TempData["Failure"] = ResourceMsg.PolicyNameAlreadyExist;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ResourceMsg.PolicyNameAlreadyExist}");
return View(new EnterpriseDto());
}
else
{
//create a new policy in DB without policyId
//as PolicyId only generated by the server which need to be created during apply policy
//update data to common policies database table
commonPolicies.EnterpriseId = commonPolicies.MyEnterpriseId;
commonPolicies.PolicyId = "";
commonPolicies.PolicyName = commonPolicies.PolicyName;
commonPolicies.PolicyType = ResourceMsg.Custom;
//update into database
var result = _iAdminMapper.CreateUpdateHardwarePolicies(commonPolicies);
if (result == 0)
{
TempData["MsgCmnPolicies"] = ResourceMsg.PoliciesCreatedSuccessfully;
}
else
{
//this msg need to be removed
if (result == 1)
{
TempData["MsgCmnPolicies"] = ResourceMsg.PoliciesUpdatedSuccessfully;
}
}
}
}
else if (commonPolicies.ActionType == ResourceMsg.update)
{
//If the policy Exist on server then update the policy settings on server thru Policies.Patch endpoint
if(PolicyAge == ResourceMsg.Existing)
{
var newpolicyResponse = service.Enterprises.Policies.Patch(ConfigureCommonPolicies(commonPolicies), policyName).Execute();
commonPolicies.PolicyId = myPolicyId;
}
//update policy on local database
commonPolicies.EnterpriseId = commonPolicies.MyEnterpriseId;
commonPolicies.PolicyId = commonPolicies.PolicyId == null? string.Empty: commonPolicies.PolicyId;
commonPolicies.PolicyName = commonPolicies.PolicyName;
commonPolicies.PolicyType = ResourceMsg.Custom;
//update into database
var result = _iAdminMapper.CreateUpdateHardwarePolicies(commonPolicies);
if (result == 0)
{
TempData["MsgCmnPolicies"] = ResourceMsg.PoliciesCreatedSuccessfully;
}
else
{
if (result == 1)
{
TempData["MsgCmnPolicies"] = ResourceMsg.PoliciesUpdatedSuccessfully;
}
}
}
else
{
TempData["Failure"] = ResourceMsg.PolicyNameAlreadyExist;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ResourceMsg.PolicyNameAlreadyExist}");
}
}
else
{
TempData["Failure"] = ResourceMsg.TryAgainContactTechnicalTeam;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ResourceMsg.EnterpriseIdIsMissing}");
}
}
else
{
TempData["Failure"] = ResourceMsg.RequiredFieldsAreEmpty;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ResourceMsg.RequiredFieldsAreEmpty}");
}
CommonPoliciesDto dto = new();
//fetch & bind two profile types (Fully Manged & Work) on view
dto.ProfileTypeList = _iAdminMapper.GetProfileTypeList();
var myEnterpriseName = _iEmmMapper.GetEnterprises().Where(x => x.EnterpriseId == commonPolicies.MyEnterpriseId).Select(x => x.EnterpriseNameRequested).FirstOrDefault();
//DeviceList
dto.DeviceList = _iAdminMapper.GetDropDevicesList(commonPolicies.MyEnterpriseId);
dto.EnterpriseName = myEnterpriseName;
//pass the dto model to view
return View(dto);
}
catch (GoogleApiException gex)
{
TempData["Failure"] = ResourceMsg.PolicyNotFoundContactTechnicalTeam;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{gex.Message}");
return View(new EnterpriseDto());
}
catch (Exception ex)
{
TempData["Failure"] = ResourceMsg.TryAgainContactTechnicalTeam;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{ex.Message}");
return View();
}
}
Apply the policy
[HttpPost]
[CustomAuthorization]
/// <summary>
/// This method is used to apply hardware policy.
/// </summary>
/// <returns></returns>
public IActionResult ApplyHardwarePolicy(string rwId, string devarr)
{
try
{
#region ResellerServiceAccountEMMOAuthCred
//read service a/c creds
ServiceAccountCredential? credential;
string fileName = "service_account_key.json";
string path = Path.Combine(this.Environment.WebRootPath, "ZeroTouchCredJSON", fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(AndroidManagementService.ScopeConstants.Androidmanagement)
.UnderlyingCredential as ServiceAccountCredential;
}
// Create a zero-touch enrollment API service endpoint.
var service = new AndroidManagementService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = ResourceMsg.EMMAppName
});
#endregion
string PolicyAge = string.Empty;
CommonPoliciesDto model = new();
string myPolicyId = string.Empty;
string[] devicesArr = devarr.Split('|');
devicesArr = devicesArr.SkipLast(1).ToArray();
//fetch policy information based on rowId
var policyInfo = _iEmmMapper.GetCommonPolicies().Where(x => x.Id == Convert.ToInt32(rwId)).FirstOrDefault();
if(policyInfo != null)
{
//initialize model to assign apps into it
model.ApplicationDtoList = new List<ApplicationsDto>();
var appModel = new ApplicationsDto();
//prepare the model from database response to apply the policy on server
#region conditions
if (policyInfo.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED)
{
model.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED;
}
else if (policyInfo.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE)
{
model.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE;
}
else
{
model.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_UNSPECIFIED;
}
//
if (policyInfo.WifiConfigDisabled == false && policyInfo.MobileNetworksConfigDisabled == false)
{
model.WifiConfigDisabled = false;
model.MobileNetworksConfigDisabled = false;
}
if (policyInfo.WifiConfigDisabled == true)
{
model.WifiConfigDisabled = true;
model.MobileNetworksConfigDisabled = false;
}
else if (policyInfo.MobileNetworksConfigDisabled == true)
{
model.MobileNetworksConfigDisabled = true;
model.WifiConfigDisabled = false;
}
else
{
model.WifiConfigDisabled = false;
model.MobileNetworksConfigDisabled = false;
}
//
if (policyInfo.BluetoothDisabled == false)
{
model.BluetoothDisabled = false;
}
else
{
model.BluetoothDisabled = true;
model.BluetoothContactSharingDisabled = true;
}
//
if (policyInfo.UsbFileTransferDisabled == false)
{
model.UsbFileTransferDisabled = false;
}
else
{
model.UsbFileTransferDisabled = true;
}
//MaximumTimeToLock
model.MaximumTimeToLock = policyInfo.MaximumTimeToLock;
//adjustvolume
model.AdjustVolumeDisabled = policyInfo.AdjustVolumeDisabled;
//screencapture
model.ScreenCaptureDisabled = policyInfo.ScreenCaptureDisabled;
//statusbar
if(policyInfo.StatusBarDisabled == true)
{
model.StatusBarDisabled = true;
}
else
{
model.StatusBarDisabled = false;
}
//sharelocation
model.ShareLocationDisabled = policyInfo.ShareLocationDisabled;
//keyguard
model.KeyguardDisabled = policyInfo.KeyguardDisabled;
//camera
model.CameraDisabled = policyInfo.CameraDisabled;
#endregion
#region forming policyId from policyName
//form Policy Id
string myPolicyName = policyInfo.PolicyName.Trim();
bool flag = false;
foreach (var data in myPolicyName.ToCharArray())
{
if (data == ' ')
{
flag = true;
}
}
if (flag)
{
string[] polArr = myPolicyName.Split(' ');
foreach (var datax in polArr)
{
myPolicyId += datax + "_";
}
myPolicyId = myPolicyId.Remove(myPolicyId.Length - 1, 1);
//Console.WriteLine(myPolicyId);
}
else
{
myPolicyId = myPolicyName;
//Console.WriteLine(test);
}
#endregion
//Apply the selected policy on server
//check there is an active policy of the enterprise on server
var entepriseParent = string.Format("enterprises/{0}", policyInfo.EnterpriseId);
//var policyName = string.Format("{0}/policies/{1}", entepriseParent, myDefaumyPolicyIdltPolicyId);
var policyName = string.Format("{0}/policies/{1}", entepriseParent, myPolicyId);
//Check if policy exist on server or not
//If policy not exist on server then it thru 404 error
dynamic appList = string.Empty;
try
{
appList = service.Enterprises.Policies.Get(policyName).Execute();
}
catch (GoogleApiException gex)
{
//thru 404 error as this is the new policy for the server
PolicyAge = ResourceMsg.New;
}
//If policy is not the new policy then the existing policy
if (PolicyAge == string.Empty)
{
//If there no 404 exeception from server then the policy is the existing server policy
PolicyAge = ResourceMsg.Old;
}
//devicename
dynamic deviceNameAPI = string.Empty;
if (PolicyAge.Equals(ResourceMsg.New))
{
//create a new policy on the server with the formed policyId thru policies.patch endpoint
var newpolicyResponse = service.Enterprises.Policies.Patch(ConfigureCommonPolicies(model), policyName).Execute();
//loop thru each requested devices
foreach (var deviceId in devicesArr)
{
//form the deviceName API format
deviceNameAPI = string.Format("{0}/devices/{1}", entepriseParent, deviceId);
//Check device is exist on server or not
var deviceResponse = service.Enterprises.Devices.Get(deviceNameAPI).Execute();
//This device belongs to EMM Device; Full fledged path
//There is also Device class exist for Zerotouch device
Google.Apis.AndroidManagement.v1.Data.Device device = new Google.Apis.AndroidManagement.v1.Data.Device()
{
//Assign policyId to policyName
PolicyName = myPolicyId,
State = ResourceMsg.ACTIVE
};
//Apply the newly created policy on the requested devices thru device.patch endpont
var devicePatchResponse = service.Enterprises.Devices.Patch(device, deviceNameAPI).Execute();
}
//Update the local database with newly applied policy
}
else
{
if (PolicyAge.Equals(ResourceMsg.Old))
{
//No need to create a new policy on server
if (appList != null)
{
//set all hardware policies exist on server
//check if app list is null or not
if (appList.Applications != null)
{
//set all application policies exist from server
//fetching existing apps from the provided policy
foreach (var app in appList.Applications)
{
appModel = new ApplicationsDto()
{
PackageName = app.PackageName,
InstallType = app.InstallType,
DefaultPermissionPolicy = app.DefaultPermissionPolicy
};
model.ApplicationDtoList.Add(appModel);
}
}
}
//update the existing policy
var newpolicyResponse = service.Enterprises.Policies.Patch(ConfigureCommonPolicies(model), policyName).Execute();
//loop thru each requested devices
foreach (var deviceId in devicesArr)
{
//form the deviceName API format
deviceNameAPI = string.Format("{0}/devices/{1}", entepriseParent, deviceId);
//Check device is exist on server or not
var deviceResponse = service.Enterprises.Devices.Get(deviceNameAPI).Execute();
//This device belongs to EMM Device; Full fledged path
//There is also Device class exist for Zerotouch device
Google.Apis.AndroidManagement.v1.Data.Device device = new Google.Apis.AndroidManagement.v1.Data.Device()
{
//Assign policyId to policyName
PolicyName = myPolicyId,
State = ResourceMsg.ACTIVE
};
//Apply the newly created policy on the requested devices thru device.patch endpont
var devicePatchResponse = service.Enterprises.Devices.Patch(device, deviceNameAPI).Execute();
}
}
}
model.EnterpriseId = policyInfo.EnterpriseId;
model.PolicyName = policyInfo.PolicyName;
model.PolicyId = myPolicyId;
model.PolicyNameApiFormat = policyName;
model.Custom1 = DateTime.UtcNow.ToString();//PolicyAppliedDate
model.CustomStatus1 = true; //PolicyAppliedOnServerStatus
//model.CustomStatus2 = true; //IsThisCurrentPolicy
//update the policyInfo on local database
var result = _iAdminMapper.CreateUpdateHardwarePolicies(model);
if (result == 1)
{
//update the IsThisCurrentAppliedPolicy = customstatus2 to false for rest policies under the same policyId
//var res = _iAdminMapper.UpdateHardwarePoliciesStatus(model);
TempData["PolicyApplied"] = ResourceMsg.PoliciesAppliedSuccessfully;
}
else
{
TempData["PolicyApplied"] = ResourceMsg.ContactTechnicalTeam;
}
}
else
{
TempData["Failure"] = ResourceMsg.ContactTechnicalTeam;
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ResourceMsg.PolicyNotFound}");
return Json(new {success = false,message= ResourceMsg.ContactTechnicalTeam });
}
return Json(new { success = true, message = TempData["PolicyApplied"] });
}
catch (Exception ex)
{
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ex.Message}");
TempData["Failure"] = ResourceMsg.ContactTechnicalTeam;
return Json(new { success = false, message = ResourceMsg.ContactTechnicalTeam });
}
}
Method for Delete Policy
[HttpGet]
public IActionResult DeleteHardwarePolicy(string rwId)
{
try
{
if (rwId != null)
{
#region ResellerServiceAccountEMMOAuthCred
//read service a/c creds
ServiceAccountCredential? credential;
string fileName = "service_account_key.json";
string path = Path.Combine(this.Environment.WebRootPath, "ZeroTouchCredJSON", fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(AndroidManagementService.ScopeConstants.Androidmanagement)
.UnderlyingCredential as ServiceAccountCredential;
}
// Create a zero-touch enrollment API service endpoint.
var service = new AndroidManagementService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = ResourceMsg.EMMAppName
});
#endregion
//Fetch enterpriseId based on deviceId where device is active
var policiesInfo = _iEmmMapper.GetCommonPolicies().Where(x => x.Id == Convert.ToInt32(rwId) && x.IsActive).FirstOrDefault();
if (policiesInfo != null)
{
//Fetch Default Policy
var defaultPolicyId = _iEmmMapper.GetCommonPolicies().Where(x => x.EnterpriseId == policiesInfo.EnterpriseId && x.PolicyProfileType == policiesInfo.PolicyProfileType && x.PolicyType == ResourceMsg.Default).Select(x=> x.PolicyId).FirstOrDefault();
//If policy is active policy for any devices then after deleting the sever will be updated with default policy
var entepriseParent = string.Format("enterprises/{0}", policiesInfo.EnterpriseId);
//Fetch DeviceList with ongoing deleted policy
//var DevicesList = service.Enterprises.Devices.List(entepriseParent);
var deviceList = _iEmmMapper.GetDevices().Where(x => x.PolicyId == policiesInfo.PolicyId && x.IsActive).ToList();
if(deviceList.Count > 0)
{
//apply all devices with default policy
foreach(var device in deviceList)
{
var deviceNameAPI = string.Format("{0}/devices/{1}", entepriseParent, device.DeviceId);
//Apply policy on device
Google.Apis.AndroidManagement.v1.Data.Device deviceBody = new Google.Apis.AndroidManagement.v1.Data.Device()
{
//Assign policyId to policyName
PolicyName = defaultPolicyId,
State = ResourceMsg.ACTIVE
};
//Apply the newly created policy on the requested devices thru device.patch endpont
var devicePatchResponse = service.Enterprises.Devices.Patch(deviceBody, deviceNameAPI).Execute();
}
}
//var policyName = string.Format("{0}/policies/{1}", entepriseParent, policiesInfo.PolicyId);
//var policyResponse = service.Enterprises.Policies.Get(policyName).Execute();
//if(policyResponse != null)
//{
// //If policy exist on server then set default hardware policy
// var appliedPolicyData = service.Enterprises.Policies.Patch(DefaultHardwarePolicies(policiesInfo.PolicyId), policyName).Execute();
//}
//soft delete policy from local database
var result = _iAdminMapper.SoftDeletePolicy(Convert.ToInt32(rwId));
if (result == 1)
{
TempData["MsgCmnPolicies"] = ResourceMsg.DeleteMsg;
return RedirectToAction("PolicyManagement", "Admin");
}
}
return RedirectToAction("PolicyManagement", "Admin");
}
return RedirectToAction("PolicyManagement", "Admin");
}
catch (Exception ex)
{
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ex.Message}");
return RedirectToAction("PolicyManagement", "Admin");
}
}
This method for get policy h/w policy
[HttpGet]
/// <summary>
/// This method is used to return hardware policies based on enterprise Id in json format.
/// </summary>
/// <param name="enterpriseId"></param>
/// <returns></returns>
public IActionResult GetjHardwarePolicies(string enterpriseId)
{
try
{
IList<CommonPoliciesDto> hardwarePoliciesList = new List<CommonPoliciesDto>();
List<SelectListItem> deviceDropList = new List<SelectListItem>();
SelectListItem hardwarePoliciy = new();
//fetch enterprise name
var enterpriseName = _iEmmMapper.GetEnterprises().Where(x=> x.EnterpriseId == enterpriseId).Select(x=> x.EnterpriseNameRequested).FirstOrDefault();
//fetch devices based on enterprise
var deviceList = _iEmmMapper.GetDevices().Where(x => x.EnterpriseId == enterpriseId && x.IsActive).ToList();
if(deviceList.Count > 0)
{
foreach(var device in deviceList)
{
hardwarePoliciy = new SelectListItem()
{
Text = device.Model,
Value = device.DeviceId
};
deviceDropList.Add(hardwarePoliciy);
};
}
if (enterpriseId != null)
{
//fetch list of custom hardware policies based on enterprise
var hardwarePoliciesListResponse = _iEmmMapper.GetCommonPolicies().Where(x => x.EnterpriseId.Equals(enterpriseId) && x.PolicyType == ResourceMsg.Custom && x.IsActive);
foreach (var policy in hardwarePoliciesListResponse)
{
policy.EnterpriseName = enterpriseName;
policy.DeviceList.AddRange(deviceDropList);
hardwarePoliciesList.Add(policy);
}
}
//List<SelectListItem> countries = this.Context.Customers.Where(x => x.Country != null)
//.Select(x => new SelectListItem
//{
// Text = x.Country,
// Value = x.Country
//}).Distinct().ToList();
return new JsonResult(hardwarePoliciesList);
}
catch (Exception ex)
{
string msgErr = "Error in " + this.GetType().ToString();
_loggerManager.LogError($"{msgErr}{ex.Message}");
return RedirectToAction("PolicyManagement", "Admin");
}
}
This method is used for edit policy
[HttpGet]
/// <summary>
/// This method used to Edit Hardware Setting modal by Id.
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public JsonResult jEditHardwareSettings(int id)
{
CommonPoliciesDto commonModel = new() { Id = id };
var responseHardwareModel = _iEmmMapper.GetCommonPolicies().Where(x => x.Id == id).FirstOrDefault();
if (responseHardwareModel != null)
{
#region Hardware Settings from database
//PolicyName
commonModel.PolicyName = responseHardwareModel.PolicyName;
//ProfileType
commonModel.PolicyProfileType = responseHardwareModel.PolicyProfileType;
//Blutooth
if (responseHardwareModel.BluetoothDisabled == false)
{
commonModel.DupBluetoothDisabled = 1;
}
else
{
commonModel.DupBluetoothDisabled = 0;
}
//USB
if (responseHardwareModel.UsbFileTransferDisabled == false)
{
commonModel.DupUsbFileTransferDisabled = 1;
}
else
{
commonModel.DupUsbFileTransferDisabled = 0;
}
//Wifi
if (responseHardwareModel.WifiConfigDisabled == false)
{
//enabled
commonModel.DupWifiConfigDisabled = 1;
}
else
{
//disabled
commonModel.DupWifiConfigDisabled = 0;
}
//MobileData
if (responseHardwareModel.MobileNetworksConfigDisabled == false)
{
commonModel.DupMobileNetworksConfigDisabled = 1;
}
else
{
commonModel.DupMobileNetworksConfigDisabled = 0;
}
//ScreenLockTime
if (responseHardwareModel.MaximumTimeToLock > 0)
{
commonModel.MaximumTimeToLock = responseHardwareModel.MaximumTimeToLock / 60000;
}
//LockVolume
commonModel.AdjustVolumeDisabled = responseHardwareModel.AdjustVolumeDisabled;
//ManageTimeZone
if (responseHardwareModel.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED)
{
commonModel.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_ENFORCED;
}
else if (responseHardwareModel.AutoDateAndTimeZone == ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE)
{
commonModel.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_USERCHOICE;
}
else
{
commonModel.AutoDateAndTimeZone = ResourceMsg.AUTO_DATEANDTIMEZONE_UNSPECIFIED;
}
//ScreenCapture
commonModel.ScreenCaptureDisabled = responseHardwareModel.ScreenCaptureDisabled;
//StatusBar
commonModel.StatusBarDisabled = responseHardwareModel.StatusBarDisabled;
//BlutoothContactSharing
commonModel.BluetoothContactSharingDisabled = responseHardwareModel.BluetoothContactSharingDisabled;
//GPS
commonModel.ShareLocationDisabled = responseHardwareModel.ShareLocationDisabled;
//Keyguard
commonModel.KeyguardDisabled = responseHardwareModel.KeyguardDisabled;
//Camera
commonModel.CameraDisabled = responseHardwareModel.CameraDisabled;
#endregion
}
return Json(commonModel);
}

Value cannot be null. Parameter name DropdownList in ASP. NET CORE

I have a problem in mi code, when show the error message appears the message of the title
This is the code of my form Register
<div class="form-group col-md-6">
#if (!Model.MODEL_PACIENTE.PAC_ID.Equals(0))
{
<label>Comuna:</label>
#Html.DropDownList("MODEL_PACIENTE.PAC_COMUNA", new SelectList(Model.MODEL_PACIENTE.Comuna_Lista, "Text", "Text"),
new { #class = "form-control" })
}
else
{
<label>Comuna:</label>
#Html.DropDownList("MODEL_PACIENTE.PAC_COMUNA", new SelectList(Model.MODEL_PACIENTE.Comuna_Lista, "Text", "Text"),
"ESCOGA UNA COMUNA", new { #class = "form-control" }) // HERE IS THE ERROR WHEN MY DNI IS REGISTER IN THE BD }
<span asp-validation-for="MODEL_PACIENTE.PAC_COMUNA" class="text-danger"></span>
</div>
Code of my class GetOdontologo
public List<SelectListItem> GetOdontologo(ApplicationDbContext context)
{
List<SelectListItem> selectListItems = null;
try
{
selectListItems = new List<SelectListItem>();
context.TBL_ODONTOLOGO.ToList().ForEach(item =>
{
selectListItems.Add(new SelectListItem
{
Value = item.ODONT_ID.ToString(),
// Text = item.ODONT_CODIGO
Text = item.ODONT_CODIGO + '-' + item.ODONT_APELLIDO + ' ' + item.ODONT_NOMBRE
});
});
}
catch (Exception ex)
{
Console.WriteLine($"Error: '{ex}'");
}
return selectListItems;
}
This is the class GetComuna
public List<SelectListItem> GetComuna(ApplicationDbContext context)
{
List<SelectListItem> selectListItems = null;
try
{
selectListItems = new List<SelectListItem>();
context.TBL_PROVINCIA.ToList().ForEach(item =>
{
selectListItems.Add(new SelectListItem
{
Value = item.PROV_ID.ToString(),
Text = item.PROV_NOMBRE
});
});
}
catch (Exception ex)
{
Console.WriteLine($"Error: '{ex}'");
}
return selectListItems;
}
And this the code of my method "onget"
public void OnGet(int idActPac)
{
_DataPac2 = null;
if(idActPac.Equals(0))
{
_DataPac2 = null;
}
if (_dataInput != null || _DataPac1 != null || _DataPac2 != null)
{
if (_dataInput != null)
{
MODEL_PACIENTE = _dataInput;
MODEL_PACIENTE.AvatarImage = null;
}
else
{
if (_DataPac1 != null || _DataPac2 != null)
{
if (_DataPac2 != null)
_DataPac1 = _DataPac2;
MODEL_PACIENTE = new PACIENTE
{
PAC_ID = _DataPac1.PAC_ID,
PAC_NOMBRE = _DataPac1.PAC_NOMBRE,
PAC_APELLIDO = _DataPac1.PAC_APELLIDO,
PAC_CODIGO = _DataPac1.PAC_CODIGO,
PAC_EDAD = _DataPac1.PAC_EDAD,
PAC_COD_ODONT = _DataPac1.PAC_COD_ODONT,
PAC_COMUNA = _DataPac1.PAC_COMUNA,
PAC_CORREO = _DataPac1.PAC_CORREO,
PAC_DIRECCION = _DataPac1.PAC_DIRECCION,
PAC_OBSERVACIONES = _DataPac1.PAC_OBSERVACIONES,
PAC_OTRAS_COMUNAS = _DataPac1.PAC_OTRAS_COMUNAS,
PAC_CONVENIO = _DataPac1.PAC_CONVENIO,
PAC_PREVISIONES = _DataPac1.PAC_PREVISIONES,
PAC_REPRESENTANTE = _DataPac1.PAC_REPRESENTANTE,
PAC_RUT = _DataPac1.PAC_RUT,
PAC_SEXO = _DataPac1.PAC_SEXO,
PAC_TELEFONO = _DataPac1.PAC_TELEFONO,
PAC_FECHA_NAC = _DataPac1.PAC_FECHA_NAC,
PAC_FEC_ACT = _DataPac1.PAC_FEC_ACT,
PAC_FEC_REG = _DataPac1.PAC_FEC_REG,
PAC_IMAGEN = _DataPac1.PAC_IMAGEN,
//AL USAR EL METODO ACTUALIZAR AL CARGAR LOS DATOS EN LOS INPUT NO OLVIDAR QUE SE DEBE CARGAR
//NUEVAMENTE LOS DropDownList LLAMANDOLO NUEVAMENTE AL FINAL COMO SE VE EN EL CODIGO A CONTINUACION
Genero_Lista = _lPacienteGen.GetGenero(_context),
Comuna_Lista = _lComuna.GetComuna(_context),
Odontologo_Lista = _lOdontologo.GetOdontologo(_context)
};
if (_dataInput != null)
{
MODEL_PACIENTE.ErrorMessage = _dataInput.ErrorMessage;
}
}
}
}
else
{
var Cod_Pac = 0;
String TempCodPac = null;
var Ultimo_Paciente = (from t in _context.TBL_PACIENTE
orderby t.PAC_CODIGO
select t).LastOrDefault();
if (Ultimo_Paciente != null)
{
Cod_Pac = (Ultimo_Paciente.PAC_CODIGO != null) ?
Convert.ToInt32(Ultimo_Paciente.PAC_CODIGO) + 1 :
1;
if (Cod_Pac < 10)
{
TempCodPac = String.Concat("0000", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac >= 10 && Cod_Pac <= 11)
{
TempCodPac = String.Concat("000", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac > 10 && Cod_Pac < 100)
{
TempCodPac = String.Concat("000", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac >= 100 && Cod_Pac <=101)
{
TempCodPac = String.Concat("00", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac > 100 && Cod_Pac < 1000)
{
TempCodPac = String.Concat("00", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac >= 1000 && Cod_Pac <= 1001)
{
TempCodPac = String.Concat("0", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac > 1000 && Cod_Pac <= 9999)
{
TempCodPac = String.Concat("0", Convert.ToString(Cod_Pac));
}
else if (Cod_Pac > 9999 && Cod_Pac < 99999)
{
TempCodPac = String.Concat("", Convert.ToString(Cod_Pac));
}
}
MODEL_PACIENTE = new PACIENTE
{
PAC_CODIGO = TempCodPac,
Genero_Lista = _lPacienteGen.GetGenero(_context),
Comuna_Lista = _lComuna.GetComuna(_context),
Odontologo_Lista = _lOdontologo.GetOdontologo(_context),
PAC_COD_ODONT = "00000"
};
}
_DataPac2 = _DataPac1;
_DataPac1 = null;
}
The code of my method Save_Patient
private async Task<bool> Guardar_Paciente_Async()
{
_dataInput = MODEL_PACIENTE;
var valor = false;
if (ModelState.IsValid)
{
var PacLista = _context.TBL_PACIENTE.Where(u => u.PAC_RUT.Equals(MODEL_PACIENTE.PAC_RUT)).ToList();
if (PacLista.Count.Equals(0))
{
var strategy = _context.Database.CreateExecutionStrategy();
await strategy.ExecuteAsync(async () =>
{
using (var transaction = _context.Database.BeginTransaction())
{
try
{
var imagenByte = await _lCargarImagen.ByteAvatarImageAsync(MODEL_PACIENTE.AvatarImage, _environment, "images/user_icon.png");
string TmpCodPac = _dataInput.PAC_COD_ODONT;
String vfCodPac = TmpCodPac.Substring(0, 4);
var Nuevo_Paciente = new MODELO_PACIENTE
{
PAC_CODIGO = _dataInput.PAC_CODIGO,
PAC_NOMBRE = _dataInput.PAC_NOMBRE.ToUpper(),
PAC_APELLIDO = _dataInput.PAC_APELLIDO.ToUpper(),
PAC_SEXO = _dataInput.PAC_SEXO,
PAC_RUT = _dataInput.PAC_RUT,
PAC_FECHA_NAC = _dataInput.PAC_FECHA_NAC,
PAC_EDAD = _dataInput.PAC_EDAD,
PAC_REPRESENTANTE = _dataInput.PAC_REPRESENTANTE?.ToUpper(),
PAC_DIRECCION = _dataInput.PAC_DIRECCION?.ToUpper(),
PAC_COMUNA = _dataInput.PAC_COMUNA?.ToUpper(),
PAC_OTRAS_COMUNAS = _dataInput.PAC_OTRAS_COMUNAS?.ToUpper(),
PAC_TELEFONO = _dataInput.PAC_TELEFONO,
PAC_CORREO = _dataInput.PAC_CORREO,
PAC_CONVENIO = _dataInput.PAC_CONVENIO?.ToUpper(),
PAC_PREVISIONES = _dataInput.PAC_PREVISIONES?.ToUpper(),
PAC_OBSERVACIONES = _dataInput.PAC_OBSERVACIONES?.ToUpper(),
PAC_COD_ODONT = vfCodPac,
PAC_IMAGEN = imagenByte,
PAC_FEC_REG = DateTime.Now,
PAC_FEC_ACT = DateTime.Now
};
await _context.AddAsync(Nuevo_Paciente);
_context.SaveChanges();
transaction.Commit();
_dataInput = null;
valor = true;
}
catch (Exception ex)
{
_dataInput.ErrorMessage = ex.Message;
transaction.Rollback();
valor = false;
}
}
});
}
else
{
_dataInput.ErrorMessage = $"El RUT {MODEL_PACIENTE.PAC_RUT} ya se encuentra Registrado";
// It should show this error in the respective "input", but the error message you see below in the image appears
}
}
else
{
foreach (var modelState in ModelState.Values)
{
foreach (var error in modelState.Errors)
{
_dataInput.ErrorMessage += error.ErrorMessage;
}
}
valor = false;
}
return valor;
}
If I debug, when I start it loads the 2 records from the dentist table, but when I put the existing ID at the time of appearing the error message appears what is seen in the image and when trying to load the list again it comes out null
After checking the ID error, the "Odontologia Lista" method returns null and the title error appears
where is the problem ?, I appreciate your help or guide to solve this problem.
You can try to check the following code:
MODEL_PACIENTE = new PACIENTE
{
PAC_CODIGO = TempCodPac,
//Genero_Lista = _lPacienteGen.GetGenero(_context),
Comuna_Lista = _lComuna.GetComuna(_context),
//Odontologo_Lista = _lOdontologo.GetOdontologo(_context),
PAC_COD_ODONT = "00000"
};
Odontologo_Lista = _lOdontologo.GetOdontologo(_context), is commented.If _dataInput == null && _DataPac1 == null && _DataPac2 == null,the Odontologo_Lista will not be set,and you will get the error Value cannot be null.

asp.net mvc core A second operation was started on the context before the first operation is completed

I am using this code for authorization on controllers.
with [Authorize(Policy = "CustomRole")]
The thing happened that after 3 or 4 request it fails with
A second operation started on this context before a previous operation completed
public class CustomRoleRequirement : AuthorizationHandler<CustomRoleRequirement>, IAuthorizationRequirement
{
public CMSContext _context = new CMSContext();
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomRoleRequirement requirement)
{
var routeobj = context.Resource as Microsoft.AspNetCore.Mvc.Filters.AuthorizationFilterContext;
var c = routeobj.RouteData.Values.Values.ToList();
var keys = routeobj.RouteData.Values.Keys.ToList();
string area = "";
string id = "";
string controller = "";
string action = "";
string module = "";
foreach (var item in keys)
{
if (item=="area")
{
int indexs = keys.FindIndex(cc => cc == "area");
area = c[indexs].ToString();
}
else if (item == "id")
{
int indexs = keys.FindIndex(cc => cc == "id");
id = c[indexs].ToString();
}
else if (item == "controller")
{
int indexs = keys.FindIndex(cc => cc == "controller");
controller = c[indexs].ToString();
}
else if (item == "module")
{
int indexs = keys.FindIndex(cc => cc == "module");
module = c[indexs].ToString();
}
else if (item == "action")
{
int indexs = keys.FindIndex(cc => cc == "action");
action = c[indexs].ToString();
}
}
string modulelink = controller;
if (!string.IsNullOrEmpty(module))
{
modulelink = modulelink + "/" + module;
}
List<string> Roles = new List<string>();
int UserId = Auth.UserID;
string UserName = Auth.UserName;
if (UserName == "superadmin")
{
context.Succeed(requirement);
return Task.CompletedTask;
}
else
{
// apparently the error occurred here
var moduleobj = _context.AppModules.FirstOrDefault(q => q.Link == modulelink);
if (moduleobj != null)
{ // 69 role is assessing news module
//60 role is accessing page module
var RolesModulesobj = _context.AppRolesModules.FirstOrDefault(q => q.ModuleId == moduleobj.ModuleId && q.RolesId == Auth.RoleId);
if (RolesModulesobj != null)
{
string permissionsobj = RolesModulesobj.Permissions;
List<string> PermissionsListobj = permissionsobj.Split(',').Select(x => x.Trim()).ToList();
var FindFullAccess = PermissionsListobj.FirstOrDefault(q => q.Contains("FullAccess:true"));
if (FindFullAccess != null)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
else
{
var abc = PermissionsListobj.FirstOrDefault(q => q.Contains(action + ":true"));
if (abc != null)
{
context.Succeed(requirement);
return Task.CompletedTask;
}
else
{
context.Fail();
return Task.CompletedTask;
}
}
}
}
}
The error occurred at this line above
var moduleobj = _context.AppModules.FirstOrDefault(q => q.Link == modulelink);
How can I make task wait before the second operation started in the method above?
You can't use a singleton DB context. You either create one each time you need one or you pool them.

Flash of previous page while navigating between pages in react js application

I am developing a react js application for ios and android. In my application while navigating from one page to another,a flash of previous page is displaying for 1 second and then my next page is loading.This issue is prevalent only in ios app.
Issue does not appear while checking in browser safari,chrome.Only in app
Please provide solution.
We are not using react native and react router.
Few pages are developed in reactjs and integrated in to an existing mobile app.
In the above code:
else {
console.log('clicked');
window.location.href = path + '?id=' + id + '&time=' `window.sessionStorage.getItem('time') + '&prodId=' + productId + '&qty=' + `qty + '&storeCall=true';
}
here we are navigating to another jsx page with window.location.href
While navigating a getting issues in ios app.Flash of previous page showing up for a second
import React from 'react';
import Copyright from './Copyright.jsx';
import { browserHistory } from 'react-router';
import axios from 'axios';
import envConstant from '../../../../../config/labelConstants.js';
import { ClipLoader } from 'react-spinners';
var x=0;
let submitOrder, flag = "false", footerBtn = '', vendor;
let closeFunc;
class Footer extends React.Component {
constructor(props) {
super(props);
this.orderSubmit = this.orderSubmit.bind(this);
this.validateSubmit = this.validateSubmit.bind(this);
this.validateNetwork = this.validateNetwork.bind(this);
this.disableBtn = this.disableBtn.bind(this);
this.state = {
data: 'Initial data....',
price: 'total',
loading:false
}
this.propTypes = {
alertFunc: React.PropTypes.func,
couponAvail: React.PropTypes.func,
alertClose:React.PropTypes.func
};
};
validateSubmit() {
const react = this;
var submit = false;
var phoneNum;
var fname = this.props.UserDetails.refs.fname.value;
var lname = this.props.UserDetails.refs.lname.value;
var phone = this.props.UserDetails.refs.phone.value.replace(/[-.]/gi, '');
if (phone != null) {
phoneNum = phone.toString();
}
var email = this.props.UserDetails.refs.email.value;
var agree = window.sessionStorage.getItem('agree');
submitOrder = {};
let prodId, qty;
if (null == window.sessionStorage.getItem('prodID') && null == window.sessionStorage.getItem('qty')) {
prodId = window.sessionStorage.getItem('initprodID');
qty = 1;
} else {
prodId = window.sessionStorage.getItem('prodID');
qty = window.sessionStorage.getItem('qty');
}
submitOrder = {
fname: this.props.UserDetails.refs.fname.value,
lname: this.props.UserDetails.refs.lname.value,
coupon: window.sessionStorage.getItem('successCoupon'),
email: this.props.UserDetails.refs.email.value,
phoneNum: this.props.UserDetails.refs.phone.value.replace(/[-.]/gi, ''),
id: window.sessionStorage.getItem('id'),
qty: qty,
prodID: prodId,
emailOptIn: window.sessionStorage.getItem('emailOptIn'),
smsOptIn: window.sessionStorage.getItem('smsOptIn'),
time: window.sessionStorage.getItem('time')
};
if (fname == null || fname == '') {
this.props.alertFunc(envConstant.enterDetails,react.props.UserDetails.refs.fname);
submit = false;
return false;
}
if (lname == null || lname == '') {
this.props.alertFunc(envConstant.enterDetails,react.props.UserDetails.refs.lname);
submit = false;
return false;
}
if (phoneNum == null || phoneNum == '') {
this.props.alertFunc(envConstant.enterDetails,react.props.UserDetails.refs.phone);
submit = false;
return false;
}
if (email == null || email == '') {
this.props.alertFunc(envConstant.enterDetails,react.props.UserDetails.refs.email);
submit = false;
return false;
}
if ('' != fname || null != fname || '' == lname || null != lname) {
submit = true;
}
if (null != fname || '' != fname) {
const re = /^[a-zA-Z\ ]*$/;
if (!re.test(fname)) {
this.props.alertFunc(envConstant.invalidName,react.props.UserDetails.refs.fname);
submit = false;
return false;
} else {
submit = true;
}
}
if (null != lname || '' != lname) {
const re = /^[a-zA-Z\'\-\. ]*$/;
if (!re.test(lname)) {
this.props.alertFunc(envConstant.invalidName,react.props.UserDetails.refs.lname);
submit = false;
return false;
} else {
submit = true;
}
}
if (null != phoneNum || '' != phoneNum) {
if (vendor == "boots") {
if (phoneNum.length != "11") {
this.props.alertFunc(envConstant.invalidPhnum,react.props.UserDetails.refs.phone);
submit = false;
return false;
} else {
submit = true;
}
} else if (vendor == "roi") {
const re = /^[0]+[0-9]*$/;
if (phoneNum.length != "11" || !re.test(phoneNum)) {
this.props.alertFunc(envConstant.invalidPhnum,react.props.UserDetails.refs.phone);
submit = false;
return false;
} else {
submit = true;
}
} else {
if (phoneNum.length != "10") {
this.props.alertFunc(envConstant.invalidPhnum,react.props.UserDetails.refs.phone);
submit = false;
return false;
} else {
submit = true;
}
}
}
if (null != email || '' != email) {
const re = /^([a-zA-Z0-9_\.\-])+\#(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!re.test(email)) {
this.props.alertFunc(envConstant.invalidEmail,react.props.UserDetails.refs.email);
submit = false;
return false;
} else {
submit = true;
}
}
if (agree == "false" || null == agree) {
this.props.alertFunc(envConstant.agreeTerms);
submit = false;
return false;
}
if (submit == true) {
return true;
}
}
validateNetwork() {
var hasConn = window.navigator.onLine;
if (hasConn) {
return hasConn;
}
else {
this.props.alertFunc(envConstant.networkFailure);
}
}
orderSubmit(e) {
const react = this;
if (this.props.footer == envConstant.submitFoot) {
window.sessionStorage.setItem('id', this.props.id);
if (this.validateNetwork()) {
if (this.validateSubmit()) {
axios({
method: 'post',
url: react.props.urlValue + '/inputFields',
data: submitOrder
}).then((response) => {
this.setState({loading:true});
window.location.href = react.props.path;
});
}
}
}
if (this.props.footer == envConstant.orderInfoFoot) {
if (this.validateNetwork()) {
let qty, productId;
this.setState({loading:true});
if (null == window.sessionStorage.getItem('qty') || 'null' == `window.sessionStorage.getItem('qty')) {`
qty = 1;
productId = window.sessionStorage.getItem('initprodID');
} else {
qty = window.sessionStorage.getItem('qty');
productId = window.sessionStorage.getItem('prodID');
}
let path = this.props.path;
let id = this.props.id;
if (null != window.sessionStorage.getItem('coupon') && "null" != `window.sessionStorage.getItem('coupon')) {`
if (window.sessionStorage.getItem('errorcode') == '' && null != `window.sessionStorage.getItem('coupon') &&` `window.sessionStorage.getItem('couponApplied') == "true") {`
setTimeout(function () {
if (window.sessionStorage.getItem('status1') != 'failure') {
window.location.href = path + '?id=' + id + '&time=' + `window.sessionStorage.getItem('time') + '&prodId=' + productId + '&qty=' +` `qty + '&storeCall=true';`
}
},1500);
}
}
else {
console.log('clicked');
window.location.href = path + '?id=' + id + '&time=' + `window.sessionStorage.getItem('time') + '&prodId=' + productId + '&qty=' +` `qty + '&storeCall=true';`
}
}
}
if (this.props.footer == envConstant.ThankyouFoot) {
let callBackUrl = this.props.callBackUrl;
if (window.navigator.userAgent.includes("iPhone")) {
window.location = "QP_DONE:DONE";
} else {
try {
window.quickprint.onCheckoutComplete();
} catch (e) {
if (undefined != callBackUrl && '' != callBackUrl && null != callBackUrl) {
if (callBackUrl.includes('?')) {
window.location = callBackUrl + '?action=done';
} else {
window.location = callBackUrl + '&action=done';
}
}
}
}
}
}
componentDidMount() {
let footerHeight = this.refs.footerHeight.clientHeight;
window.sessionStorage.setItem('footerHeight', footerHeight);
}
disableBtn(id) {
window.sessionStorage.setItem('disable', "true");
if(window.sessionStorage.getItem('alert1'+id)=="0" || `window.sessionStorage.getItem('alert1'+id)=="1" || `window.sessionStorage.getItem('alert1'+id)==1){
alert(envConstant.priceInvalid);
}else{
x=0;
window.sessionStorage.setItem('alert1'+id,x++);
}
//this.props.alertFunc(envConstant.priceInvalid)
}
render() {
vendor = this.props.vendor;
let copyrightsWrapper;
if (vendor != "ts" && vendor != "roi") {
copyrightsWrapper = (
<Copyright copyRightMessage={this.props.copyRightMessage} />
);
}
if (typeof window !== 'undefined') {
window.sessionStorage.setItem('callBackUrl',this.props.callBackUrl);
if (window.sessionStorage.getItem('status') == "success" || `window.sessionStorage.getItem('status') == "") {`
if ((window.sessionStorage.getItem('status1') != "failure" || `window.sessionStorage.getItem('couponApplied') == "false") && `window.sessionStorage.getItem('flagDrop') != "true" &&` `window.sessionStorage.getItem('couponFocus') != "true") {
var discTotal = `window.sessionStorage.getItem('discount').split(this.props.currency);`
if (parseInt(discTotal[1]) > 998) {
window.sessionStorage.setItem('alert1'+this.props.id,x++);
this.disableBtn(this.props.id);
} else {
window.sessionStorage.setItem('disable', "false");
}
}
}
if (window.sessionStorage.getItem('status') == null) {
if (window.sessionStorage.getItem('invalid') != 'true') {
if (null == window.sessionStorage.getItem('total')) {
var initTotal = `window.sessionStorage.getItem('inittotal').split(this.props.currency);`
if (parseInt(initTotal[1]) > 998) {
window.sessionStorage.setItem('alert1'+this.props.id,1);
this.disableBtn(this.props.id);
} else {
window.sessionStorage.setItem('disable', "false");
}
} else {
var prodTotal = `window.sessionStorage.getItem('total').split(this.props.currency);`
if (parseInt(prodTotal[1]) > 998) {
window.sessionStorage.setItem('alert1'+this.props.id,1);
this.disableBtn(this.props.id);
} else {
window.sessionStorage.setItem('disable', "false");
}
}
}
}
if (window.sessionStorage.getItem('disable') == "true") {
footerBtn = (
<button type="button"
className="btn-off supp-color btn-w1" `disabled="disabled"> {this.props.footer}</button>`
);
} else {
footerBtn = (
<button ref="footerBtn" type="button" className="btn-on supp-color btn-`w1" onClick={this.orderSubmit}>{this.props.footer}</button>`
);
}
}else{
footerBtn = (
<button ref="footerBtn" type="button" className="btn-on supp-color btn-w1" >{this.props.footer}</button>
);
}
return (
<div className="op-footer footer_height" ref="footerHeight" id="footerValue">
{copyrightsWrapper}
<div className="background-white">
<div className={'sweet-loading '+ this.state.loading}>
<ClipLoader color={'#a0a0a0'} loading={this.state.loading}/>
</div>
{footerBtn}
</div>
</div>
);
}
}
export default Footer;

asp.net-MVC Unexplained Production Exception

After moving my application to production, I get the regular Object reference not set to an instance of an object. exception logged in my event viewer.
This exception occurs intermittently few times a day, the problem is that I cannot put my hand on the problem, the logged exception details are not helpful, as there are no code line numbers included in the stack trace.
The Exception occurs on an action in my home controller which is the entry point action for each user arriving at the web site.
Can anyone help me reason with the below trace:
ERROR => Object reference not set to an instance of an object.
(XXX.XXX.Web.Controllers.HomeController.Index)
(
<>c__DisplayClass2b.<BeginInvokeAction>b__1c =>
<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32 =>
<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f =>
AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d =>
WrappedAsyncResult`2.CallEndDelegate =>
AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39 =>
ControllerActionInvoker.InvokeActionMethod =>
ReflectedActionDescriptor.Execute =>
<no type>.lambda_method => HomeController.Index )
System.NullReferenceException: Object reference not set to an instance of an object.
at XXXX.XXXX.Web.Controllers.HomeController.Index()
Code:
[SSOAuthorize]
public ActionResult Index()
{
try
{
ViewBag.ShowXXXAccountPrompt = false;
ViewBag.IsErrored = "false";
#region "Session Check"
if (_webHttpContext == null)
{
return RedirectToAction("signout", "Federation");
}
if (_webHttpContext.Session == null)
{
return RedirectToAction("signout", "Federation");
}
if (_webHttpContext.Session.PortalUser == null)
{
return RedirectToAction("signout", "Federation");
}
#endregion
if (_webHttpContext.Session.PortalUser != null)
{
if (!string.IsNullOrEmpty(_webHttpContext.Session.PortalUser.UserName))
{
var user = _usersManagementService.GetUserByUsername(_webHttpContext.Session.PortalUser.UserName);
var latestsubline = _subscriptionLineService.GetLatestLineByUserName(_webHttpContext.Session.PortalUser.UserName);
var isDualAccount = latestsubline == null ? false : latestsubline.Action == (int)Entities.SubscriptionLineAction.Activate? latestsubline.IsDualAccount : false;
isDualAccount = isDualAccount == null ? false : isDualAccount;
if(user == null)
{
//whenever there is no account Just Create it, the subscriptionLines table is irrelevant
_usersManagementService.CreateUser(_webHttpContext.Session.PortalUser.UserName, isDualAccount);
}
if (user.Status == AccountStatus.Inactive)
{
//Account Re-Activation Logic
if (_usersManagementService.CreateAccountHistory(user))
{
user.FirstLogonOn = DateTime.Now;
user.DeactivatedOn = null;
user.Status = AccountStatus.Active;
user.IsDualAccount = isDualAccount;
_usersManagementService.UpdateAccount(user);
#region "Check XXX Dual Account"
try
{
if (_webHttpContext.Session.MultipleAccountDialogueInformed == false)
{
_webHttpContext.Session.MultipleAccountDialogueInformed = true;
if (user.IsDualAccount == true)
{
ViewBag.ShowXXXAccountPrompt = true;
}
else
{
ViewBag.ShowXXXAccountPrompt = false;
}
}
}
catch (Exception ex)
{
_logger.Log(LogLevel.Error, "XXX Account Service _ " + ex.Message, ex);
}
#endregion
}
else
{
ViewBag.IsErrored = "true";
return View(_webHttpContext.Account);
}
}
else
{
#region "Check XXX Dual Account"
try
{
if (_webHttpContext.Session.MultipleAccountDialogueInformed == false)
{
_webHttpContext.Session.MultipleAccountDialogueInformed = true;
if (user.IsDualAccount == true)
{
ViewBag.ShowXXXAccountPrompt = true;
}
else
{
ViewBag.ShowXXXAccountPrompt = false;
}
}
}
catch (Exception ex)
{
_logger.Log(LogLevel.Error, "XXX Account Service _ " + ex.Message, ex);
}
#endregion
}
_webHttpContext.BrowserDetails.OperatingSystem = Entities.OperatingSystem.MacinXXXh;
_webHttpContext.Session.PortalUser.Id = user.Id;
if (_webHttpContext.BrowserDetails.OperatingSystem == Entities.OperatingSystem.Windows)
{
ViewBag.ProductType = "ZZZ";
var YYYInstallsDetails = GetYYYInstallsDetails(0);
ViewBag.RemainingInstallCount = YYYInstallsDetails.NumberOfSeatsAvailable;
ViewBag.YYYInstallsDetails = YYYInstallsDetails.YYYCustomersLicenseDetailsList;
ViewBag.YYYInstallsDetailsCount = YYYInstallsDetails.YYYCustomersLicenseDetailsList.Count;
ViewBag.DownloadPageUrl = getDownloadPageUrl(ProductType.ComputerProtectionNT);
ViewBag.ProductId = (int)ProductType.ComputerProtectionNT;
}
else if (_webHttpContext.BrowserDetails.OperatingSystem == Entities.OperatingSystem.MacinXXXh)
{
ViewBag.ProductType = "MacZZZ";
var YYYInstallsDetails = GetYYYInstallsDetails(1);
ViewBag.RemainingInstallCount = YYYInstallsDetails.NumberOfSeatsAvailable;
ViewBag.YYYInstallsDetails = YYYInstallsDetails.YYYCustomersLicenseDetailsList;
ViewBag.YYYInstallsDetailsCount = YYYInstallsDetails.YYYCustomersLicenseDetailsList.Count;
ViewBag.DownloadPageUrl = getDownloadPageUrl(ProductType.ComputerProtectionOSX);
ViewBag.ProductId = (int)ProductType.ComputerProtectionOSX;
}
else if (_webHttpContext.BrowserDetails.OperatingSystem == Entities.OperatingSystem.Other)
{
ViewBag.ProductType = "AndroidZZZ";
var YYYInstallsDetails = GetYYYInstallsDetails(2);
ViewBag.RemainingInstallCount = YYYInstallsDetails.NumberOfSeatsAvailable;
ViewBag.YYYInstallsDetails = YYYInstallsDetails.YYYCustomersLicenseDetailsList;
ViewBag.YYYInstallsDetailsCount = YYYInstallsDetails.YYYCustomersLicenseDetailsList.Count;
ViewBag.DownloadPageUrl = getDownloadPageUrl(ProductType.ComputerProtectionAndroid);
ViewBag.ProductId = (int)ProductType.ComputerProtectionAndroid;
}
ViewBag.ZZZInstallUrl = PortalConfig.ZZZInstallUrl;
ViewBag.ScInstallUrl = PortalConfig.SafeCentralInstallUrl;
ViewBag.MacZZZInstallUrl = PortalConfig.MacZZZInstallUrl;
ViewBag.TTTTEmail = _webHttpContext.Session.PortalUser.UserName;
}
else // if primary username coming back from sso is empty
{
return RedirectToAction("signout", "Federation");
}
}
else // if the portal user is null
{
return RedirectToAction("signout", "Federation");
}
}
catch (Exception ex)
{
ViewBag.IsErrored = "true";
_logger.Log(LogLevel.Error, ex.Message, ex);
}
return View(_webHttpContext.Account);
}

Resources