This commit is contained in:
2018-08-31 20:58:07 +00:00
parent 8208a1d67f
commit cda2458d01
2 changed files with 141 additions and 73 deletions

View File

@@ -258,89 +258,156 @@ namespace AyaNova.Biz
case "GZTW.AyaNova.BLL.DispatchZone":
case "GZTW.AyaNova.BLL.ScheduleableUserGroup":
{
var NewTagName = j["Name"].Value<string>();
var ShortTypeName = string.Empty;
switch (SourceType)
switch (j["IMPORT_TASK"].Value<string>())
{
case "GZTW.AyaNova.BLL.Region":
ShortTypeName = "rgn";
break;
case "GZTW.AyaNova.BLL.UnitModelCategory":
ShortTypeName = "unitmdlctgry";
break;
case "GZTW.AyaNova.BLL.UnitServiceType":
ShortTypeName = "unitsvtyp";
break;
case "GZTW.AyaNova.BLL.WorkorderItemType":
ShortTypeName = "woitemtyp";
break;
case "GZTW.AyaNova.BLL.ClientGroup":
ShortTypeName = "clntgrp";
break;
case "GZTW.AyaNova.BLL.WorkorderCategory":
ShortTypeName = "woctgry";
break;
case "GZTW.AyaNova.BLL.PartCategory":
ShortTypeName = "prtctgry";
break;
case "GZTW.AyaNova.BLL.DispatchZone":
ShortTypeName = "dspchzn";
break;
case "GZTW.AyaNova.BLL.ScheduleableUserGroup":
ShortTypeName = "schdusrgrp";
break;
}
case "main":
{
#region main import task
var NewTagName = j["Name"].Value<string>();
var ShortTypeName = string.Empty;
switch (SourceType)
{
case "GZTW.AyaNova.BLL.Region":
ShortTypeName = "rgn";
break;
case "GZTW.AyaNova.BLL.UnitModelCategory":
ShortTypeName = "unitmdlctgry";
break;
case "GZTW.AyaNova.BLL.UnitServiceType":
ShortTypeName = "unitsvtyp";
break;
case "GZTW.AyaNova.BLL.WorkorderItemType":
ShortTypeName = "woitemtyp";
break;
case "GZTW.AyaNova.BLL.ClientGroup":
ShortTypeName = "clntgrp";
break;
case "GZTW.AyaNova.BLL.WorkorderCategory":
ShortTypeName = "woctgry";
break;
case "GZTW.AyaNova.BLL.PartCategory":
ShortTypeName = "prtctgry";
break;
case "GZTW.AyaNova.BLL.DispatchZone":
ShortTypeName = "dspchzn";
break;
case "GZTW.AyaNova.BLL.ScheduleableUserGroup":
ShortTypeName = "schdusrgrp";
break;
}
NewTagName += "." + ShortTypeName;
var OldV7Id = new Guid(j["ID"].Value<string>());
NewTagName += "." + ShortTypeName;
var OldV7Id = new Guid(j["ID"].Value<string>());
//Ensure it follows the rules
NewTagName = CleanTagName(NewTagName);
//Ensure it follows the rules
NewTagName = CleanTagName(NewTagName);
//There might already be a tag of the same name since so many different types of V7 objects are becoming tags
//Weighed the pros and cons of uniquifying by object type versus just using the same name for different object types:
//it seems to me at this point that people might desire the same exact name because if they used it that way they probably
//intended it that way, so decision is to check if it already exists and then use that ID in the importMap instead
//for matching other objects imported to tags
//There might already be a tag of the same name since so many different types of V7 objects are becoming tags
//Weighed the pros and cons of uniquifying by object type versus just using the same name for different object types:
//it seems to me at this point that people might desire the same exact name because if they used it that way they probably
//intended it that way, so decision is to check if it already exists and then use that ID in the importMap instead
//for matching other objects imported to tags
//Already present?
var ExistingTag = ct.Tag.Where(m => m.Name == NewTagName).FirstOrDefault();
if (ExistingTag != null)
{
//map it to the existing tag of same name
var mapItem = new ImportAyaNova7MapItem(OldV7Id, AyaType.Tag, ExistingTag.Id);
}
else
{
//Already present?
var ExistingTag = ct.Tag.Where(m => m.Name == NewTagName).FirstOrDefault();
if (ExistingTag != null)
{
//map it to the existing tag of same name
var mapItem = new ImportAyaNova7MapItem(OldV7Id, AyaType.Tag, ExistingTag.Id);
}
else
{
Tag o = await CreateAsync(NewTagName);
if (HasErrors)
{
//If there are any validation errors, log in joblog and move on
JobsBiz.LogJob(jobId, $"TagBiz::ImportV7Async -> import object \"{NewTagName}\" of type \"{SourceType}\" source id {OldV7Id.ToString()} failed validation and was not imported: {GetErrorsAsString()} ", ct);
return false;
}
else
{
await ct.SaveChangesAsync();
var mapItem = new ImportAyaNova7MapItem(OldV7Id, AyaType.Tag, o.Id);
importMap.Add(mapItem);
await ImportAyaNova7Biz.LogEventCreatedModifiedEvents(j, importMap, AyaType.Tag, ct);
}
Tag o = await CreateAsync(NewTagName);
if (HasErrors)
{
//If there are any validation errors, log in joblog and move on
JobsBiz.LogJob(jobId, $"TagBiz::ImportV7Async -> import object \"{NewTagName}\" of type \"{SourceType}\" source id {OldV7Id.ToString()} failed validation and was not imported: {GetErrorsAsString()} ", ct);
return false;
}
else
{
await ct.SaveChangesAsync();
var mapItem = new ImportAyaNova7MapItem(OldV7Id, AyaType.Tag, o.Id);
importMap.Add(mapItem);
await ImportAyaNova7Biz.LogEventCreatedModifiedEvents(j, importMap, AyaType.Tag, ct);
}
}
#endregion
}
break;
case "scheduleableusergrouptags":
{
#region attribute sched user group tags
/*
{
"ID": "871e77b2-979a-4f26-930b-46f7c05fc19f",
"Created": "08/30/2018 08:12 AM",
"Modified": "08/30/2018 08:13 AM",
"Creator": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"Modifier": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"Name": "Yet another test group",
"Active": true,
"Description": "More testing yay!",
"ScheduleableUsers": [
{
"Created": "08/30/2018 08:13 AM",
"Creator": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"Modified": "08/30/2018 08:13 AM",
"Modifier": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"ID": "676475be-8301-47d0-bd54-af9dbd1fe7eb",
"ScheduleableUserID": "1d859264-3f32-462a-9b0c-a67dddfdf4d3",
"ScheduleableUserGroupID": "871e77b2-979a-4f26-930b-46f7c05fc19f"
},
{
"Created": "08/30/2018 08:13 AM",
"Creator": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"Modified": "08/30/2018 08:13 AM",
"Modifier": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"ID": "173499c3-a616-42a0-b08c-74008f8fa352",
"ScheduleableUserID": "42b282bb-100b-4b31-aa14-5c831d7cda66",
"ScheduleableUserGroupID": "871e77b2-979a-4f26-930b-46f7c05fc19f"
},
{
"Created": "08/30/2018 08:13 AM",
"Creator": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"Modified": "08/30/2018 08:13 AM",
"Modifier": "2ecc77fc-69e2-4a7e-b88d-bd0ecaf36aed",
"ID": "19c9b3d6-eeb2-44ac-be4e-6ec93d15b02a",
"ScheduleableUserID": "e6ff9bc6-a550-4242-8c41-857f740e2841",
"ScheduleableUserGroupID": "871e77b2-979a-4f26-930b-46f7c05fc19f"
}
]
}
*/
var V7Id = new Guid(j["ID"].Value<string>());
var RavenTagId = importMap.Where(m => m.V7ObjectId == V7Id).First().NewObjectAyaTypeId.ObjectId;
foreach (JToken t in j["ScheduleableUsers"])
{
var techId = new Guid(t["ScheduleableUserID"].Value<String>());
var RavenUserId = importMap.Where(m => m.V7ObjectId == techId).First().NewObjectAyaTypeId.ObjectId;
var Creator = importMap.Where(m => m.V7ObjectId == new Guid(t["Creator"].Value<string>())).First().NewObjectAyaTypeId.ObjectId;
TagMap tm = new TagMap();
tm.TagToObjectId = RavenUserId;
tm.TagId = RavenTagId;
tm.OwnerId = Creator;
ct.TagMap.Add(tm);
}
ct.SaveChanges();
//handle tag entries for users now that we have the SUG tags created
// throw new System.NotImplementedException();
#endregion
}
break;
}
}
break;
case "scheduleableusergrouptags":
{
var V7Id = new Guid(j["ID"].Value<string>());
var RavenId = importMap.Where(m => m.V7ObjectId == V7Id).First().NewObjectAyaTypeId.ObjectId;
//handle tag entries for users now that we have the SUG tags created
// throw new System.NotImplementedException();
}
break;
}