Removed v7 import shit
This commit is contained in:
@@ -12,7 +12,7 @@ using System.Text.RegularExpressions;
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
|
||||
internal class TranslationBiz : BizObject, IImportAyaNova7Object
|
||||
internal class TranslationBiz : BizObject
|
||||
{
|
||||
public bool SeedOrImportRelaxedRulesMode { get; set; }
|
||||
|
||||
@@ -199,7 +199,7 @@ namespace AyaNova.Biz
|
||||
return await ct.TranslationItem.Where(m => m.TranslationId == ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID && m.Key == key).Select(m => m.Display).AsNoTracking().FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
//Get all stock keys that are valid (used for import)
|
||||
//Get all stock keys that are valid (used for key coverage reporting)
|
||||
internal static async Task<List<string>> GetKeyListAsync()
|
||||
{
|
||||
AyContext ct = ServiceProviderProvider.DBContext;
|
||||
@@ -253,8 +253,9 @@ namespace AyaNova.Biz
|
||||
|
||||
foreach (NewTextIdConcurrencyTokenItem tit in inObj)
|
||||
{
|
||||
var titem=await ct.TranslationItem.SingleOrDefaultAsync(m => m.Id == tit.Id);
|
||||
if(titem==null){
|
||||
var titem = await ct.TranslationItem.SingleOrDefaultAsync(m => m.Id == tit.Id);
|
||||
if (titem == null)
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, $"Translation item ID {tit.Id}");
|
||||
return false;
|
||||
}
|
||||
@@ -429,107 +430,6 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Used by import, translate the old v7 translation key name into the new shorter version
|
||||
/// </summary>
|
||||
/// <param name="oldKey"></param>
|
||||
/// <returns></returns>
|
||||
public string Translatev7TranslationKey(string oldKey)
|
||||
{
|
||||
string s = oldKey.Replace(".Label.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
if (s.StartsWith("O.", StringComparison.InvariantCultureIgnoreCase))
|
||||
s = s.Replace("O.", "", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".ToolBar.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".Go.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".Command.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".Error.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".Object.", ".", StringComparison.InvariantCultureIgnoreCase);
|
||||
if (s.StartsWith("UI.", StringComparison.InvariantCultureIgnoreCase))
|
||||
s = s.Replace("UI.", "", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace(".", "", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("AddressAddress", "Address", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ContactPhoneContactPhone", "ContactPhone", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ContactPhonePhone", "ContactPhone", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("PurchaseOrderPurchaseOrder", "PurchaseOrder", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("WorkorderItemMiscExpenseExpense", "WorkorderItemMiscExpense", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("WorkorderItemTravelTravel", "WorkorderItemTravel", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("DashboardDashboard", "Dashboard", StringComparison.InvariantCultureIgnoreCase);
|
||||
|
||||
//ScheduleMarkers -> Reminder
|
||||
s = s.Replace("ScheduleMarker", "Reminder", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerARGB", "ReminderARGB", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerColor", "ReminderColor", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerCompleted", "ReminderCompleted", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerEventCreated", "ReminderEventCreated", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerEventPendingAlert", "ReminderEventPendingAlert", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerFollowUp", "ReminderFollowUp", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerList", "ReminderList", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerName", "ReminderName", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerNotes", "ReminderNotes", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerRecurrence", "ReminderRecurrence", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerScheduleMarkerSourceType", "ReminderSourceType", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerSourceID", "ReminderSourceID", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerStartDate", "ReminderStartDate", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleMarkerStopDate", "ReminderStopDate", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleEditScheduleMarker", "ScheduleEditReminder", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("ScheduleNewScheduleMarker", "ScheduleNewReminder", StringComparison.InvariantCultureIgnoreCase);
|
||||
|
||||
|
||||
|
||||
|
||||
//Custom fields were 0 to 9, now 1 to 16
|
||||
s = s.Replace("Custom9", "Custom10", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom8", "Custom9", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom7", "Custom8", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom6", "Custom7", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom5", "Custom6", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom4", "Custom5", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom3", "Custom4", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom2", "Custom3", StringComparison.InvariantCultureIgnoreCase);
|
||||
if (!s.EndsWith("Custom10"))
|
||||
s = s.Replace("Custom1", "Custom2", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("Custom0", "Custom1", StringComparison.InvariantCultureIgnoreCase);
|
||||
//separate code will handle adding the new keys that didn't exist in v7 (custom 11 - 16)
|
||||
|
||||
//CommonActive CommonID etc remove Common
|
||||
s = s.Replace("Common", "");
|
||||
|
||||
//Misc
|
||||
s = s.Replace("FormFieldDataType", "UiFieldDataType", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("UserUserType", "UserType", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("UserTypesUtilityNotification", "UserTypesUtility", StringComparison.InvariantCultureIgnoreCase);
|
||||
|
||||
//Localized -> Translation
|
||||
s = s.Replace("LocaleCustomizeText", "TranslationCustomizeText", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleExport", "TranslationExport", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleImport", "TranslationImport", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleList", "TranslationList", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleLocaleFile", "TranslationFile", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleUIDestLocale", "TranslationDest", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleUISourceLocale", "TranslationSource", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocaleWarnLocaleLocked", "TranslationWarnLocked", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocalizedTextDisplayText", "TranslationDisplayText", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocalizedTextDisplayTextCustom", "TranslationDisplayTextCustom", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocalizedTextKey", "TranslationKey", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocalizedTextLocale", "Translation", StringComparison.InvariantCultureIgnoreCase);
|
||||
s = s.Replace("LocalizedText", "TranslatedText", StringComparison.InvariantCultureIgnoreCase);
|
||||
|
||||
|
||||
//FUTURE
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
// s = s.Replace("WASXXX", "NOWXXXX", StringComparison.InvariantCultureIgnoreCase);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -580,108 +480,6 @@ namespace AyaNova.Biz
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/// IMPORT v7 implementation
|
||||
public async Task<bool> ImportV7Async(
|
||||
JObject j, List<ImportAyaNova7MapItem> importMap,
|
||||
Guid jobId, Dictionary<string, Dictionary<Guid, string>> tagLists)
|
||||
{
|
||||
//some types need to import from more than one source hence the seemingly redundant switch statement for futureproofing
|
||||
switch (j["IMPORT_TASK"].Value<string>())
|
||||
{
|
||||
case "main":
|
||||
{
|
||||
//Get source translation name from filename using regex
|
||||
var SourceTranslationFileName = j["V7_SOURCE_FILE_NAME"].Value<string>();
|
||||
Regex RxExtractTranslationName = new Regex(@"translation\.(.*)\.json");
|
||||
var v = RxExtractTranslationName.Match(SourceTranslationFileName);
|
||||
var SourceTranslationName = v.Groups[1].ToString();
|
||||
|
||||
//Ensure doesn't already exist
|
||||
if (await TranslationExistsAsync(SourceTranslationName))
|
||||
{
|
||||
//If there are any validation errors, log in joblog and move on
|
||||
await JobsBiz.LogJobAsync(jobId, $"TranslationBiz::ImportV7Async -> - Translation \"{SourceTranslationName}\" already exists in database, can not import over an existing translation", ct);
|
||||
return false;
|
||||
}
|
||||
|
||||
//keys to skip importing
|
||||
List<string> SkipKeys = new List<string>();
|
||||
SkipKeys.Add("UI.Label.CurrentUserName");
|
||||
SkipKeys.Add("V7_SOURCE_FILE_NAME");
|
||||
SkipKeys.Add("V7_TYPE");
|
||||
SkipKeys.Add("IMPORT_TASK");
|
||||
|
||||
List<string> ValidKeys = await GetKeyListAsync();
|
||||
Dictionary<string, string> NewTranslationDict = new Dictionary<string, string>();
|
||||
foreach (var Pair in j.Children())
|
||||
{
|
||||
var V7Value = Pair.First.Value<string>().Replace(" && ", " ").Replace(" & ", " ").Replace("&", "");//clean out LT values that had double ampersands for old Windows menu shortcut scheme
|
||||
var V7KeyName = ((JProperty)Pair).Name;
|
||||
|
||||
if (!SkipKeys.Contains(V7KeyName))
|
||||
{
|
||||
var RavenKeyName = Translatev7TranslationKey(V7KeyName);
|
||||
if (!ValidKeys.Contains(RavenKeyName))
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException($"TranslationBiz::ImportV7 - old Key \"{V7KeyName}\" translates to new Key \"{RavenKeyName}\" which is not valid!");
|
||||
}
|
||||
|
||||
if (!NewTranslationDict.ContainsKey(RavenKeyName))
|
||||
{
|
||||
NewTranslationDict.Add(RavenKeyName, V7Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Use the shortest V7Value string in the case of dupes
|
||||
if (NewTranslationDict[RavenKeyName].Length > V7Value.Length)
|
||||
{
|
||||
NewTranslationDict[RavenKeyName] = V7Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Now add keys that were added after v7 for RAVEN using default translation values
|
||||
foreach (string s in ValidKeys)
|
||||
{
|
||||
if (!NewTranslationDict.ContainsKey(s))
|
||||
{
|
||||
NewTranslationDict.Add(s, await GetDefaultTranslationAsync(s));
|
||||
}
|
||||
}
|
||||
|
||||
//Validate it's the correct number of keys expected
|
||||
if (NewTranslationDict.Count != ValidKeys.Count)
|
||||
{
|
||||
throw new System.ArgumentOutOfRangeException($"TranslationBiz::ImportV7 - Import translation \"{SourceTranslationName}\" has an unexpected number of keys: {NewTranslationDict.Count}, expected {ValidKeys.Count} ");
|
||||
}
|
||||
|
||||
//have file name, have all localized text
|
||||
Translation l = new Translation();
|
||||
l.Name = SourceTranslationName;
|
||||
l.Stock = false;
|
||||
|
||||
foreach (KeyValuePair<string, string> K in NewTranslationDict)
|
||||
{
|
||||
l.TranslationItems.Add(new TranslationItem() { Key = K.Key, Display = K.Value });
|
||||
}
|
||||
|
||||
await ct.Translation.AddAsync(l);
|
||||
await ct.SaveChangesAsync();
|
||||
|
||||
//Log now that we have the Id, note that there is no source created / modified for this so just attributing to current userId
|
||||
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, l.Id, AyaType.Translation, AyaEvent.Created), ct);
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//this is the equivalent of returning void for a Task signature with nothing to return
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user