Removed v7 import shit

This commit is contained in:
2020-05-01 01:00:39 +00:00
parent 026fa3a29c
commit bb10dc726d
15 changed files with 46 additions and 1241 deletions

View File

@@ -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;
}
/////////////////////////////////////////////////////////////////////