diff --git a/source/Plugins/AyaNova.Plugin.V8/Auth.Designer.cs b/source/Plugins/AyaNova.Plugin.V8/Auth.Designer.cs index 8bc0e0c..2a38845 100644 --- a/source/Plugins/AyaNova.Plugin.V8/Auth.Designer.cs +++ b/source/Plugins/AyaNova.Plugin.V8/Auth.Designer.cs @@ -127,9 +127,9 @@ this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.Location = new System.Drawing.Point(28, 201); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(149, 16); + this.label1.Size = new System.Drawing.Size(172, 16); this.label1.TabIndex = 33; - this.label1.Text = "AyaNova 8 server URL:"; + this.label1.Text = "AyaNova 8 server address:"; // // btnTest // @@ -153,7 +153,6 @@ this.label2.TabIndex = 36; this.label2.Text = "Export will erase *all* data on AyaNova 8 Server"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.label2.Click += new System.EventHandler(this.label2_Click); // // lblPreRelease // diff --git a/source/Plugins/AyaNova.Plugin.V8/Auth.cs b/source/Plugins/AyaNova.Plugin.V8/Auth.cs index fce9f97..855d03d 100644 --- a/source/Plugins/AyaNova.Plugin.V8/Auth.cs +++ b/source/Plugins/AyaNova.Plugin.V8/Auth.cs @@ -18,6 +18,7 @@ namespace AyaNova.PlugIn.V8 private async void btnTest_Click(object sender, EventArgs e) { + if (!ValidateAndCleanServerAddress()) return; btnOk.Enabled=btnTest.Enabled = false; var result = await util.TestUrlAsync(edServerUrl.Text); btnOk.Enabled = btnTest.Enabled = true; @@ -32,6 +33,7 @@ namespace AyaNova.PlugIn.V8 } private async void btnOk_Click(object sender, EventArgs e) { + if (!ValidateAndCleanServerAddress()) return; btnOk.Enabled = btnTest.Enabled = false; if (!util.Initialized) { @@ -39,6 +41,7 @@ namespace AyaNova.PlugIn.V8 if (result != "OK") { MessageBox.Show("Server could not be reached at that URL\n" + result); + btnOk.Enabled = btnTest.Enabled = true; return; } } @@ -46,6 +49,7 @@ namespace AyaNova.PlugIn.V8 if (!res) { MessageBox.Show("AyaNova 8 SuperUser account login failed"); + btnOk.Enabled = btnTest.Enabled = true; return; } btnOk.Enabled = btnTest.Enabled = true; @@ -68,15 +72,35 @@ namespace AyaNova.PlugIn.V8 lblPreRelease.Text = util.PRE_RELEASE_VERSION_STRING; #if (DEBUG) - edServerUrl.Text = "192.168.1.56:7575"; + edServerUrl.Text = "http://192.168.1.56:7575"; edUserName.Text = "superuser"; edPassword.Text = "l3tm3in"; #endif } - private void label2_Click(object sender, EventArgs e) - { + private bool ValidateAndCleanServerAddress() + { + var serverUrl=edServerUrl.Text; + Uri u; + try + { + u = new Uri(serverUrl); + var scheme = u.Scheme; + var host = u.Host; + var port = u.Port; + edServerUrl.Text= scheme + "://" + host + ":" + port + "/" + util.API_BASE_ROUTE; + } + catch (Exception ex) + { + MessageBox.Show("Server address not valid\n" + ex.Message); + return false; + } + + //ok, it's some kind of url, now format it for api access + + + return true; } diff --git a/source/Plugins/AyaNova.Plugin.V8/V8.cs b/source/Plugins/AyaNova.Plugin.V8/V8.cs index 86ebc88..963f4dd 100644 --- a/source/Plugins/AyaNova.Plugin.V8/V8.cs +++ b/source/Plugins/AyaNova.Plugin.V8/V8.cs @@ -2546,6 +2546,7 @@ namespace AyaNova.PlugIn.V8 ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝ */ #region Service Workorders + int _highestWorkOrderNumberExported = 0; private async System.Threading.Tasks.Task ExportServiceWorkorders(ProgressForm progress) { if (!progress.KeepGoing) return; @@ -2585,6 +2586,8 @@ namespace AyaNova.PlugIn.V8 progress.Op(ObjectTypeName + " " + c.WorkorderService.ServiceNumber); d.serial = c.WorkorderService.ServiceNumber; + if (c.WorkorderService.ServiceNumber > _highestWorkOrderNumberExported) + _highestWorkOrderNumberExported = c.WorkorderService.ServiceNumber; d.customerId = Getv7v8IdMap(c.ClientID, "Client for wo " + d.serial); d.notes = c.Summary; d.projectId = Getv7v8IdMapNullOk(c.ProjectID); @@ -2975,6 +2978,12 @@ namespace AyaNova.PlugIn.V8 }//items loop }//wo loop + + //set new seed number for work orders + _highestWorkOrderNumberExported += 1; + { + await util.PutAsync("global-biz-settings/seeds/34/" + _highestWorkOrderNumberExported.ToString()); + } } #endregion Workorders @@ -4861,129 +4870,129 @@ and this one - #region Seeds - private class GZSeeds - { - public int InventoryAdjustmentStartSeed = 1; - public int PurchaseOrderStartSeed = 1; - public int QuoteNumberStartSeed = 1; - public int WorkorderNumberStartSeed = 1; - public int PreventiveMaintenanceNumberStartSeed = 1; - } - private void ExportSeedNumbers(ProgressForm progress) - { - // List objectExcludeProperties = new List(standardExcludePropertiesList); - progress.Append("Dumping seeds"); - //create a new object with the id numbers in it and then dump it - WorkorderPMList pml = WorkorderPMList.GetList(" \r\n" + - " \r\n" + - " \r\n" + - " "); - - int PMStartSeed = 0; - if (pml.Count > 0) - { - PMStartSeed = int.Parse(pml[0].LT_O_WorkorderPreventiveMaintenance.Display); - } - - var seeds = new GZSeeds(); - seeds.InventoryAdjustmentStartSeed = AyaBizUtils.GlobalSettings.InventoryAdjustmentStartSeed + 1; - seeds.PurchaseOrderStartSeed = AyaBizUtils.GlobalSettings.PurchaseOrderStartSeed + 1; - seeds.QuoteNumberStartSeed = AyaBizUtils.GlobalSettings.QuoteNumberStartSeed + 1; - seeds.WorkorderNumberStartSeed = AyaBizUtils.GlobalSettings.WorkorderNumberStartSeed + 1; - seeds.PreventiveMaintenanceNumberStartSeed = PMStartSeed + 1; - - //DumpObjectToFolder(tempArchiveFolder, seeds, "seeds", objectExcludeProperties, TypeAndID.Empty, "GZTW.AyaNova.BLL.Seed"); - } - #endregion globalsettings - - - - #region contract resolver - //public class ExcludeNamedPropertiesContractResolver : DefaultContractResolver + //#region Seeds + //private class GZSeeds //{ - // private readonly List _excludeProperties; - - // public ExcludeNamedPropertiesContractResolver(List excludeProperties) - // { - // _excludeProperties = excludeProperties; - // } - - // protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) - // { - // IList properties = base.CreateProperties(type, memberSerialization); - - // // only serializer properties that start with the specified character - // //properties = properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList(); - // properties = properties.Where(p => !_excludeProperties.Contains(p.PropertyName)).ToList(); - - // return properties; - // } + // public int InventoryAdjustmentStartSeed = 1; + // public int PurchaseOrderStartSeed = 1; + // public int QuoteNumberStartSeed = 1; + // public int WorkorderNumberStartSeed = 1; + // public int PreventiveMaintenanceNumberStartSeed = 1; //} - #endregion contract resolver - - - //private static string EnsureValidFileName(string fileName) + //private void ExportSeedNumbers(ProgressForm progress) //{ - // //make lower and replace spaces with dashes - // fileName = fileName.ToLowerInvariant().Replace(" ", "-"); + // // List objectExcludeProperties = new List(standardExcludePropertiesList); + // progress.Append("Dumping seeds"); + // //create a new object with the id numbers in it and then dump it + // WorkorderPMList pml = WorkorderPMList.GetList(" \r\n" + + // " \r\n" + + // " \r\n" + + // " "); - // //ensure each character is a valid path character - // foreach (char c in System.IO.Path.GetInvalidFileNameChars()) + // int PMStartSeed = 0; + // if (pml.Count > 0) // { - // fileName = fileName.Replace(c, '_'); + // PMStartSeed = int.Parse(pml[0].LT_O_WorkorderPreventiveMaintenance.Display); // } - // return fileName; + + // var seeds = new GZSeeds(); + // seeds.InventoryAdjustmentStartSeed = AyaBizUtils.GlobalSettings.InventoryAdjustmentStartSeed + 1; + // seeds.PurchaseOrderStartSeed = AyaBizUtils.GlobalSettings.PurchaseOrderStartSeed + 1; + // seeds.QuoteNumberStartSeed = AyaBizUtils.GlobalSettings.QuoteNumberStartSeed + 1; + // seeds.WorkorderNumberStartSeed = AyaBizUtils.GlobalSettings.WorkorderNumberStartSeed + 1; + // seeds.PreventiveMaintenanceNumberStartSeed = PMStartSeed + 1; + + // //DumpObjectToFolder(tempArchiveFolder, seeds, "seeds", objectExcludeProperties, TypeAndID.Empty, "GZTW.AyaNova.BLL.Seed"); //} + //#endregion globalsettings - //private static void makeFolderIfNotExist(string fldr, bool shouldNotExist = false) - //{ - // if (Directory.Exists(fldr)) - // { - // if (shouldNotExist) - // throw new System.Exception("Error: path already exists and shouldn't:\r\n" + fldr); - // return; - // } - // Directory.CreateDirectory(fldr); - //} + //#region contract resolver + ////public class ExcludeNamedPropertiesContractResolver : DefaultContractResolver + ////{ + //// private readonly List _excludeProperties; - //private List standardExcludePropertiesList - //{ - // get - // { - // return new List() - // { - // "CanWiki", - // "CanDuplicate", - // "IsValid", - // "IsDirty", - // "CurrentUserID", - // "IsEditing", - // "IsNew", - // "IsDeleted", - // "IsSavable", - // "Notify", - // "BrokenRulesText", - // "Docs", - // "MapQuestURL", - // "FullAddress" - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX", - // //"XXX" - // }; + //// public ExcludeNamedPropertiesContractResolver(List excludeProperties) + //// { + //// _excludeProperties = excludeProperties; + //// } - // } - //} + //// protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) + //// { + //// IList properties = base.CreateProperties(type, memberSerialization); + + //// // only serializer properties that start with the specified character + //// //properties = properties.Where(p => p.PropertyName.StartsWith(_startingWithChar.ToString())).ToList(); + //// properties = properties.Where(p => !_excludeProperties.Contains(p.PropertyName)).ToList(); + + //// return properties; + //// } + ////} + //#endregion contract resolver + + + ////private static string EnsureValidFileName(string fileName) + ////{ + //// //make lower and replace spaces with dashes + //// fileName = fileName.ToLowerInvariant().Replace(" ", "-"); + + //// //ensure each character is a valid path character + //// foreach (char c in System.IO.Path.GetInvalidFileNameChars()) + //// { + //// fileName = fileName.Replace(c, '_'); + //// } + //// return fileName; + ////} + + + + ////private static void makeFolderIfNotExist(string fldr, bool shouldNotExist = false) + ////{ + //// if (Directory.Exists(fldr)) + //// { + //// if (shouldNotExist) + //// throw new System.Exception("Error: path already exists and shouldn't:\r\n" + fldr); + //// return; + //// } + //// Directory.CreateDirectory(fldr); + ////} + + ////private List standardExcludePropertiesList + ////{ + //// get + //// { + //// return new List() + //// { + //// "CanWiki", + //// "CanDuplicate", + //// "IsValid", + //// "IsDirty", + //// "CurrentUserID", + //// "IsEditing", + //// "IsNew", + //// "IsDeleted", + //// "IsSavable", + //// "Notify", + //// "BrokenRulesText", + //// "Docs", + //// "MapQuestURL", + //// "FullAddress" + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX", + //// //"XXX" + //// }; + + //// } + ////} #endregion old //eoc diff --git a/source/Plugins/AyaNova.Plugin.V8/util.cs b/source/Plugins/AyaNova.Plugin.V8/util.cs index 4aa9e05..2c8aeb1 100644 --- a/source/Plugins/AyaNova.Plugin.V8/util.cs +++ b/source/Plugins/AyaNova.Plugin.V8/util.cs @@ -19,8 +19,8 @@ namespace AyaNova.PlugIn.V8 public static string PRE_RELEASE_VERSION_STRING { get; set; } public static GZTW.AyaNova.BLL.LocalizedTextTable LocaleText = null; - const string TEST_ROUTE = "notify/hello"; - const string API_BASE_ROUTE = "api/v8/"; + public const string TEST_ROUTE = "notify/hello"; + public const string API_BASE_ROUTE = "api/v8/"; public static HttpClient client = new HttpClient(); //url once known to be good internal static string ApiBaseUrl { get; set; } @@ -59,27 +59,8 @@ namespace AyaNova.PlugIn.V8 /// public static async Task TestUrlAsync(string serverUrl) { - if (string.IsNullOrEmpty(serverUrl)) return "Server url required"; - - if (!serverUrl.Contains("/api/")) - { - if (!serverUrl.EndsWith("/")) serverUrl += "/"; - serverUrl += API_BASE_ROUTE; - } - - if (!serverUrl.StartsWith("http")) serverUrl = "http://" + serverUrl; ApiBaseUrl = serverUrl; InitClient(); - - //try to connect, ping the server api - //if (!Initialized) - //{ - // client.BaseAddress = new Uri(serverUrl); - // client.DefaultRequestHeaders.Accept.Clear(); - // client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); - // Initialized = true; - //} - try { // TimeSpan tsDefault = client.Timeout; @@ -87,14 +68,9 @@ namespace AyaNova.PlugIn.V8 HttpResponseMessage response = await client.GetAsync(serverUrl + TEST_ROUTE); // client.Timeout = tsDefault; if (response.IsSuccessStatusCode) - { - return "OK"; - } else - { return "Failed: " + response.StatusCode.ToString(); - } } catch (Exception ex) { @@ -102,9 +78,6 @@ namespace AyaNova.PlugIn.V8 ex = ex.InnerException; return "Failed exception: \n" + ex.Message; } - - - // return "failed"; }