This commit is contained in:
@@ -22,78 +22,80 @@ namespace AyaNova.Biz
|
|||||||
//Used by SEARCH and objects with JOBS
|
//Used by SEARCH and objects with JOBS
|
||||||
internal static BizObject GetBizObject(AyaType ayaType, long userId = 1, AuthorizationRoles roles = AuthorizationRoles.All)
|
internal static BizObject GetBizObject(AyaType ayaType, long userId = 1, AuthorizationRoles roles = AuthorizationRoles.All)
|
||||||
{
|
{
|
||||||
var dbcontext = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
switch (ayaType)
|
|
||||||
{
|
{
|
||||||
//CoreBizObject add here
|
switch (ayaType)
|
||||||
case AyaType.ServerJob:
|
{
|
||||||
return new JobOperationsBiz(dbcontext, userId, roles);
|
//CoreBizObject add here
|
||||||
case AyaType.TrialSeeder:
|
case AyaType.ServerJob:
|
||||||
return new TrialBiz(dbcontext, userId, roles);
|
return new JobOperationsBiz(ct, userId, roles);
|
||||||
case AyaType.Translation:
|
case AyaType.TrialSeeder:
|
||||||
return new TranslationBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new TrialBiz(ct, userId, roles);
|
||||||
case AyaType.DataListView:
|
case AyaType.Translation:
|
||||||
return new DataListViewBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new TranslationBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.FormCustom:
|
case AyaType.DataListView:
|
||||||
return new FormCustomBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new DataListViewBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.Widget:
|
case AyaType.FormCustom:
|
||||||
return new WidgetBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new FormCustomBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
case AyaType.Widget:
|
||||||
|
return new WidgetBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
case AyaType.Customer:
|
case AyaType.Customer:
|
||||||
return new CustomerBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new CustomerBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.User:
|
case AyaType.User:
|
||||||
return new UserBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new UserBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
|
|
||||||
case AyaType.Contract:
|
case AyaType.Contract:
|
||||||
return new ContractBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new ContractBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.HeadOffice:
|
case AyaType.HeadOffice:
|
||||||
return new HeadOfficeBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new HeadOfficeBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.LoanUnit:
|
case AyaType.LoanUnit:
|
||||||
return new LoanUnitBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new LoanUnitBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.Part:
|
case AyaType.Part:
|
||||||
return new PartBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new PartBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.PM:
|
case AyaType.PM:
|
||||||
return new PMBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new PMBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
case AyaType.PMTemplate:
|
case AyaType.PMTemplate:
|
||||||
return new PMTemplateBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new PMTemplateBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
case AyaType.Project:
|
case AyaType.Project:
|
||||||
return new ProjectBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new ProjectBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.PurchaseOrder:
|
case AyaType.PurchaseOrder:
|
||||||
return new PurchaseOrderBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new PurchaseOrderBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.Quote:
|
case AyaType.Quote:
|
||||||
return new QuoteBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new QuoteBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
case AyaType.QuoteTemplate:
|
case AyaType.QuoteTemplate:
|
||||||
return new QuoteTemplateBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new QuoteTemplateBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
case AyaType.Unit:
|
case AyaType.Unit:
|
||||||
return new UnitBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new UnitBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.UnitModel:
|
case AyaType.UnitModel:
|
||||||
return new UnitModelBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new UnitModelBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
case AyaType.Vendor:
|
case AyaType.Vendor:
|
||||||
return new VendorBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new VendorBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
//--- WorkOrder
|
//--- WorkOrder
|
||||||
case AyaType.WorkOrder:
|
case AyaType.WorkOrder:
|
||||||
case AyaType.WorkOrderItem:
|
case AyaType.WorkOrderItem:
|
||||||
case AyaType.WorkOrderItemExpense:
|
case AyaType.WorkOrderItemExpense:
|
||||||
case AyaType.WorkOrderItemLabor:
|
case AyaType.WorkOrderItemLabor:
|
||||||
case AyaType.WorkOrderItemLoan:
|
case AyaType.WorkOrderItemLoan:
|
||||||
case AyaType.WorkOrderItemPart:
|
case AyaType.WorkOrderItemPart:
|
||||||
case AyaType.WorkOrderItemPartRequest:
|
case AyaType.WorkOrderItemPartRequest:
|
||||||
case AyaType.WorkOrderItemScheduledUser:
|
case AyaType.WorkOrderItemScheduledUser:
|
||||||
case AyaType.WorkOrderItemTask:
|
case AyaType.WorkOrderItemTask:
|
||||||
case AyaType.WorkOrderItemTravel:
|
case AyaType.WorkOrderItemTravel:
|
||||||
case AyaType.WorkOrderItemUnit:
|
case AyaType.WorkOrderItemUnit:
|
||||||
return new WorkOrderBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new WorkOrderBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
//---
|
//---
|
||||||
case AyaType.WorkOrderTemplate:
|
case AyaType.WorkOrderTemplate:
|
||||||
return new WorkOrderTemplateBiz(dbcontext, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
return new WorkOrderTemplateBiz(ct, userId, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, roles);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new System.NotSupportedException($"AyaNova.BLL.BizObjectFactory::GetBizObject type {ayaType.ToString()} is not supported");
|
throw new System.NotSupportedException($"AyaNova.BLL.BizObjectFactory::GetBizObject type {ayaType.ToString()} is not supported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,23 +19,6 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
#region JOB OPS
|
#region JOB OPS
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a non tracked list of jobs for an object
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ayObj"></param>
|
|
||||||
///
|
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<List<OpsJob>> GetJobsForObjectAsync(AyaTypeId ayObj)
|
|
||||||
{
|
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
|
||||||
return await ct.OpsJob
|
|
||||||
.AsNoTracking()
|
|
||||||
.Where(z => z.ObjectId == ayObj.ObjectId && z.ObjectType == ayObj.ObjectType)
|
|
||||||
.OrderBy(z => z.Created)
|
|
||||||
.ToListAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get a non tracked list of jobs that are ready to process and exclusive only
|
/// Get a non tracked list of jobs that are ready to process and exclusive only
|
||||||
@@ -63,122 +46,39 @@ namespace AyaNova.Biz
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static async Task<List<OpsJob>> GetReadyJobsAsync(bool exclusiveOnly)
|
private static async Task<List<OpsJob>> GetReadyJobsAsync(bool exclusiveOnly)
|
||||||
{
|
{
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
var ret = await ct.OpsJob
|
{
|
||||||
.AsNoTracking()
|
var ret = await ct.OpsJob
|
||||||
.Where(z => z.StartAfter < System.DateTime.UtcNow && z.Exclusive == exclusiveOnly && z.JobStatus == JobStatus.Sleeping)
|
.AsNoTracking()
|
||||||
.OrderBy(z => z.Created)
|
.Where(z => z.StartAfter < System.DateTime.UtcNow && z.Exclusive == exclusiveOnly && z.JobStatus == JobStatus.Sleeping)
|
||||||
.ToListAsync();
|
.OrderBy(z => z.Created)
|
||||||
|
.ToListAsync();
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a non tracked list of all jobs that are not completed
|
|
||||||
/// could be running or sleeping
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<List<OpsJob>> GetAllSleepingOrRunningJobsAsync()
|
|
||||||
{
|
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
|
||||||
var ret = await ct.OpsJob
|
|
||||||
.AsNoTracking()
|
|
||||||
.Where(z => z.JobStatus == JobStatus.Sleeping || z.JobStatus == JobStatus.Running)
|
|
||||||
.OrderBy(z => z.Created)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a non tracked list of all jobs for a JobType
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<List<OpsJob>> GetAllJobsForJobTypeAsync(JobType jobType)
|
|
||||||
{
|
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
|
||||||
var ret = await ct.OpsJob
|
|
||||||
.AsNoTracking()
|
|
||||||
.Where(z => z.JobType == jobType)
|
|
||||||
.OrderBy(z => z.Created)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a non tracked list of all jobs that are status running but have no last activity for XX HOURS
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<List<OpsJob>> GetPotentiallyDeadRunningJobsAsync()
|
|
||||||
{
|
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
|
||||||
var ret = await ct.OpsJob
|
|
||||||
.AsNoTracking()
|
|
||||||
.Where(z => z.JobStatus == JobStatus.Sleeping || z.JobStatus == JobStatus.Running)
|
|
||||||
.OrderBy(z => z.Created)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get a count of all jobs for a JobStatus
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<long> GetCountForJobStatusAsync(JobStatus jobStatus)
|
|
||||||
{
|
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
|
||||||
var ret = await ct.OpsJob
|
|
||||||
.Where(z => z.JobStatus == jobStatus)
|
|
||||||
.LongCountAsync();
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a new job to the database
|
/// Add a new job to the database
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="newJob"></param>
|
/// <param name="newJob"></param>
|
||||||
|
internal static async Task AddJobAsync(OpsJob newJob)
|
||||||
/// <returns></returns>
|
|
||||||
internal static async Task<OpsJob> AddJobAsync(OpsJob newJob)
|
|
||||||
{
|
{
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
await ct.OpsJob.AddAsync(newJob);
|
|
||||||
await ct.SaveChangesAsync();
|
|
||||||
return newJob;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Remove any jobs or logs for the object in question
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="ayObj"></param>
|
|
||||||
internal static async Task DeleteJobsForObjectAsync(AyaTypeId ayObj)
|
|
||||||
{
|
|
||||||
//Get a list of all jobid's for the object passed in
|
|
||||||
List<OpsJob> jobsForObject = await GetJobsForObjectAsync(ayObj);
|
|
||||||
if (jobsForObject.Count == 0)
|
|
||||||
return;
|
|
||||||
foreach (OpsJob jobToBeDeleted in jobsForObject)
|
|
||||||
{
|
{
|
||||||
await RemoveJobAndLogsAsync(jobToBeDeleted.GId);
|
await ct.OpsJob.AddAsync(newJob);
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// REmove the job and it's logs
|
/// Remove the job and it's logs
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="jobIdToBeDeleted"></param>
|
/// <param name="jobIdToBeDeleted"></param>
|
||||||
internal static async Task RemoveJobAndLogsAsync(Guid jobIdToBeDeleted)
|
internal static async Task RemoveJobAndLogsAsync(Guid jobIdToBeDeleted)
|
||||||
{
|
{
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
using (var transaction = await ct.Database.BeginTransactionAsync())
|
using (var transaction = await ct.Database.BeginTransactionAsync())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -205,18 +105,18 @@ namespace AyaNova.Biz
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="jobId">(NOTE: Guid.empty indicates internal job)</param>
|
/// <param name="jobId">(NOTE: Guid.empty indicates internal job)</param>
|
||||||
/// <param name="statusText"></param>
|
/// <param name="statusText"></param>
|
||||||
///
|
internal static async Task LogJobAsync(Guid jobId, string statusText)
|
||||||
internal static async Task<OpsJobLog> LogJobAsync(Guid jobId, string statusText)
|
|
||||||
{
|
{
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
if (string.IsNullOrWhiteSpace(statusText))
|
{
|
||||||
statusText = "No status provided";
|
if (string.IsNullOrWhiteSpace(statusText))
|
||||||
OpsJobLog newObj = new OpsJobLog();
|
statusText = "No status provided";
|
||||||
newObj.JobId = jobId;
|
OpsJobLog newObj = new OpsJobLog();
|
||||||
newObj.StatusText = statusText;
|
newObj.JobId = jobId;
|
||||||
await ct.OpsJobLog.AddAsync(newObj);
|
newObj.StatusText = statusText;
|
||||||
await ct.SaveChangesAsync();
|
await ct.OpsJobLog.AddAsync(newObj);
|
||||||
return newObj;
|
await ct.SaveChangesAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -225,14 +125,15 @@ namespace AyaNova.Biz
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="jobId"></param>
|
/// <param name="jobId"></param>
|
||||||
/// <param name="newStatus"></param>
|
/// <param name="newStatus"></param>
|
||||||
internal static async Task<OpsJob> UpdateJobStatusAsync(Guid jobId, JobStatus newStatus)
|
internal static async Task UpdateJobStatusAsync(Guid jobId, JobStatus newStatus)
|
||||||
{
|
{
|
||||||
var ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
var oFromDb = await ct.OpsJob.SingleOrDefaultAsync(z => z.GId == jobId);
|
{
|
||||||
if (oFromDb == null) return null;
|
var oFromDb = await ct.OpsJob.SingleOrDefaultAsync(z => z.GId == jobId);
|
||||||
oFromDb.JobStatus = newStatus;
|
if (oFromDb == null) return;
|
||||||
await ct.SaveChangesAsync();
|
oFromDb.JobStatus = newStatus;
|
||||||
return oFromDb;
|
await ct.SaveChangesAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endregion Job ops
|
#endregion Job ops
|
||||||
|
|
||||||
@@ -295,8 +196,8 @@ namespace AyaNova.Biz
|
|||||||
//backup
|
//backup
|
||||||
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing backup");
|
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing backup");
|
||||||
await CoreJobBackup.DoWorkAsync();//sb exclusive
|
await CoreJobBackup.DoWorkAsync();//sb exclusive
|
||||||
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing metrics snapshotter");
|
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing metrics snapshotter");
|
||||||
|
|
||||||
//Capture metrics
|
//Capture metrics
|
||||||
CoreJobMetricsSnapshot.DoJob();
|
CoreJobMetricsSnapshot.DoJob();
|
||||||
|
|
||||||
@@ -312,7 +213,7 @@ namespace AyaNova.Biz
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing NON-exclusive biz job {j.Name}");
|
//System.Diagnostics.Debug.WriteLine($"JobsBiz processing NON-exclusive biz job {j.Name}");
|
||||||
TaskUtil.Forget(Task.Run(() => ProcessJobAsync(j)));
|
TaskUtil.Forget(Task.Run(() => ProcessJobAsync(j)));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -323,14 +224,14 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Capture metrics
|
//Capture metrics
|
||||||
CoreJobMetricsSnapshot.DoJob();
|
CoreJobMetricsSnapshot.DoJob();
|
||||||
|
|
||||||
|
|
||||||
//TODO: NOTIFICATIONS
|
//TODO: NOTIFICATIONS
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
log.LogError(ex, "JobsBiz::ProcessJobsAsync unexpected error during processing");
|
log.LogError(ex, "JobsBiz::ProcessJobsAsync unexpected error during processing");
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace AyaNova.Biz
|
|||||||
u.Password = Hasher.hash(u.Salt, "l3tm3in");
|
u.Password = Hasher.hash(u.Salt, "l3tm3in");
|
||||||
u.Roles = AuthorizationRoles.All;//AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminFull | AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull;
|
u.Roles = AuthorizationRoles.All;//AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminFull | AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryFull;
|
||||||
|
|
||||||
|
|
||||||
u.UserType = UserType.Administrator;
|
u.UserType = UserType.Administrator;
|
||||||
u.UserOptions = new UserOptions();
|
u.UserOptions = new UserOptions();
|
||||||
u.UserOptions.TranslationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;//Ensure primeTranslations is called first
|
u.UserOptions.TranslationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;//Ensure primeTranslations is called first
|
||||||
@@ -59,38 +59,43 @@ namespace AyaNova.Biz
|
|||||||
await ImportTranslation(ResourceFolderPath, "fr");
|
await ImportTranslation(ResourceFolderPath, "fr");
|
||||||
await ImportTranslation(ResourceFolderPath, "de");
|
await ImportTranslation(ResourceFolderPath, "de");
|
||||||
|
|
||||||
//Ensure Translations are present, not missing any keys and that there is a server default translation that exists
|
//Ensure Translations are present, not missing any keys and that there is a server default translation that exists
|
||||||
TranslationBiz lb = TranslationBiz.GetBiz(ServiceProviderProvider.DBContext);
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
await lb.ValidateTranslationsAsync();
|
{
|
||||||
|
TranslationBiz lb = TranslationBiz.GetBiz(ct);
|
||||||
|
await lb.ValidateTranslationsAsync();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task ImportTranslation(string resourceFolderPath, string translationCode)
|
private static async Task ImportTranslation(string resourceFolderPath, string translationCode)
|
||||||
{
|
{
|
||||||
AyContext ct = ServiceProviderProvider.DBContext;
|
using (AyContext ct = ServiceProviderProvider.DBContext)
|
||||||
var TranslationPath = Path.Combine(resourceFolderPath, $"{translationCode}.json");
|
|
||||||
if (!File.Exists(TranslationPath))
|
|
||||||
{
|
{
|
||||||
throw new System.Exception($"E1013: stock translation file \"{translationCode}\" not found where expected: \"{TranslationPath}\", installation damaged?");
|
var TranslationPath = Path.Combine(resourceFolderPath, $"{translationCode}.json");
|
||||||
|
if (!File.Exists(TranslationPath))
|
||||||
|
{
|
||||||
|
throw new System.Exception($"E1013: stock translation file \"{translationCode}\" not found where expected: \"{TranslationPath}\", installation damaged?");
|
||||||
|
}
|
||||||
|
|
||||||
|
JObject o = JObject.Parse(await File.ReadAllTextAsync(TranslationPath));
|
||||||
|
|
||||||
|
Translation l = new Translation();
|
||||||
|
l.Name = translationCode;
|
||||||
|
|
||||||
|
l.Stock = true;
|
||||||
|
l.CjkIndex = false;
|
||||||
|
|
||||||
|
foreach (JToken t in o.Children())
|
||||||
|
{
|
||||||
|
var key = t.Path;
|
||||||
|
var display = t.First.Value<string>();
|
||||||
|
l.TranslationItems.Add(new TranslationItem() { Key = key, Display = display });
|
||||||
|
}
|
||||||
|
|
||||||
|
await ct.Translation.AddAsync(l);
|
||||||
|
await ct.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
JObject o = JObject.Parse(await File.ReadAllTextAsync(TranslationPath));
|
|
||||||
|
|
||||||
Translation l = new Translation();
|
|
||||||
l.Name = translationCode;
|
|
||||||
|
|
||||||
l.Stock = true;
|
|
||||||
l.CjkIndex = false;
|
|
||||||
|
|
||||||
foreach (JToken t in o.Children())
|
|
||||||
{
|
|
||||||
var key = t.Path;
|
|
||||||
var display = t.First.Value<string>();
|
|
||||||
l.TranslationItems.Add(new TranslationItem() { Key = key, Display = display });
|
|
||||||
}
|
|
||||||
|
|
||||||
await ct.Translation.AddAsync(l);
|
|
||||||
await ct.SaveChangesAsync();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user