using System; using System.Net.Http; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; using System.Diagnostics; using System.Globalization; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; // Interface for Web Service Program JSPG3 // Generated by MANASYS Jazz from Visual Studio at 24/06/2021 1:09:34 PM, User JAZZUSR namespace MyJSv { public class JSPG3Client { // Private - objects that are not known outside the Client object static readonly HttpClient client = new HttpClient(); private RequestJSPG3 Request = new RequestJSPG3(); // Actual request message private ResponseJSPG3 Response = new ResponseJSPG3(); // Actual response message private int IXT1Sub = 0; // Used if response has >1 occurrences of Table data struct SetByUser { public bool Skip; public bool DEPTNO; public bool DEPTNAME; public bool MGRNO; public bool ADMRDEPT; public bool LOCATION; public bool Skip2; public bool EMPNO; public bool FIRSTNME; public bool MIDINIT; public bool LASTNAME; public bool PHONENO; public bool HIREDATE; public bool JOB; public bool EDLEVEL; public bool SEX; public bool BIRTHDATE; public bool SALARY; public bool BONUS; public bool COMM; public bool CURRENCY; public bool DEPTMGR; } private SetByUser Changed = new SetByUser(); private string _Function = null; private string Function // => Request.Function { get => _Function; set { if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _Function = InList(value, new[] { "E", "U", "A", "D", "C", "P" }, true, "Function"); Request.JSPG3.IJSPG3.JZ_Function = _Function; } } private string _Checksum = null; private string _Checksum1 = null; // Save 2ry Key fields for browse private string SaveBrowse_PSkip = ""; private string SaveBrowse_PMGRNO = ""; private string SaveBrowse_PADMRDEPT = ""; private string SaveBrowse_PSkip2 = ""; // Key Properties - fields used by methods to access records // Skip controls scrolling for DEPARTMENT private string _Skip = null; public string Skip // => Request.Skip { get => _Skip; set { Changed.Skip = true; _Skip = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _Skip = IsInt(value, 0, 999, "Skip"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT_Skip = int.Parse(_Skip); } } private string _DEPTNO = null; public string DEPTNO // => Request.DEPTNO { get => _DEPTNO; set { Changed.DEPTNO = true; _DEPTNO = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _DEPTNO = IsNoLongerThan(value, 3, "DEPTNO"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT.DEPTNO = _DEPTNO; } } private string _MGRNO = null; public string MGRNO // => Request.MGRNO { get => _MGRNO; set { Changed.MGRNO = true; _MGRNO = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _MGRNO = "null"; else _MGRNO = IsInt(value, 0, 999999, "MGRNO"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT.MGRNO = _MGRNO; } } private string _ADMRDEPT = null; public string ADMRDEPT // => Request.ADMRDEPT { get => _ADMRDEPT; set { Changed.ADMRDEPT = true; _ADMRDEPT = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _ADMRDEPT = IsNoLongerThan(value, 3, "ADMRDEPT"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT.ADMRDEPT = _ADMRDEPT; } } // Skip2 controls scrolling for EMPLOYEE private string _Skip2 = null; public string Skip2 // => Request.Skip2 { get => _Skip2; set { Changed.Skip2 = true; _Skip2 = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _Skip2 = IsInt(value, 0, 999, "Skip2"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE_Skip = int.Parse(_Skip2); } } // I/O Data - non-key fields that may be set for update and add, will be set in response private string _DEPTNAME = null; public string DEPTNAME // => Request.DEPTNAME { get => _DEPTNAME; set { Changed.DEPTNAME = true; _DEPTNAME = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _DEPTNAME = IsNoLongerThan(value, 36, "DEPTNAME"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT.DEPTNAME = _DEPTNAME; } } private string _LOCATION = null; public string LOCATION // => Request.LOCATION { get => _LOCATION; set { Changed.LOCATION = true; _LOCATION = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _LOCATION = "null"; else _LOCATION = IsNoLongerThan(value, 16, "LOCATION"); Request.JSPG3.IJSPG3.JZ_DEPARTMENT.LOCATION = _LOCATION; } } private string _EMPNO = null; public string EMPNO // => Request.EMPNO { get => _EMPNO; set { Changed.EMPNO = true; _EMPNO = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _EMPNO = IsInt(value, 0, 999999, "EMPNO"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.EMPNO = _EMPNO; } } private string _FIRSTNME = null; public string FIRSTNME // => Request.FIRSTNME { get => _FIRSTNME; set { Changed.FIRSTNME = true; _FIRSTNME = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _FIRSTNME = IsNoLongerThan(value, 12, "FIRSTNME"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.FIRSTNME = _FIRSTNME; } } private string _MIDINIT = null; public string MIDINIT // => Request.MIDINIT { get => _MIDINIT; set { Changed.MIDINIT = true; _MIDINIT = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _MIDINIT = "n"; else _MIDINIT = IsNoLongerThan(value, 1, "MIDINIT"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.MIDINIT = _MIDINIT; } } private string _LASTNAME = null; public string LASTNAME // => Request.LASTNAME { get => _LASTNAME; set { Changed.LASTNAME = true; _LASTNAME = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _LASTNAME = IsNoLongerThan(value, 15, "LASTNAME"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.LASTNAME = _LASTNAME; } } private string _PHONENO = null; public string PHONENO // => Request.PHONENO { get => _PHONENO; set { Changed.PHONENO = true; _PHONENO = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _PHONENO = "null"; else _PHONENO = IsInt(value, 0, 9999, "PHONENO"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.PHONENO = _PHONENO; } } private string _HIREDATE = null; public string HIREDATE // => Request.HIREDATE { get => _HIREDATE; set { Changed.HIREDATE = true; _HIREDATE = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; string ReqValue = ""; _HIREDATE = IsDate(value, "HIREDATE", ref ReqValue); //Date Request.JSPG3.IJSPG3.JZ_EMPLOYEE.HIREDATE = ReqValue; } } private string _JOB = null; public string JOB // => Request.JOB { get => _JOB; set { Changed.JOB = true; _JOB = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _JOB = "null"; else _JOB = IsNoLongerThan(value, 8, "JOB"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.JOB = _JOB; } } private string _EDLEVEL = null; public string EDLEVEL // => Request.EDLEVEL { get => _EDLEVEL; set { Changed.EDLEVEL = true; _EDLEVEL = null; if (value == "") { _Error = "Value required"; _JZ_DEPARTMENT_ReturnCode = "E"; return; } _EDLEVEL = IsInt(value, -32767, 32767, "EDLEVEL"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.EDLEVEL = _EDLEVEL; } } private string _SEX = null; public string SEX // => Request.SEX { get => _SEX; set { Changed.SEX = true; _SEX = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _SEX = "n"; else _SEX = InList(value, new[] { "M", "F" }, true, "SEX"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.SEX = _SEX; } } public string SEX_Value // => Request.SEX_Value { get { if (_SEX == "M") return "Male"; if (_SEX == "F") return "Female"; return ""; } } private string _BIRTHDATE = null; public string BIRTHDATE // => Request.BIRTHDATE { get => _BIRTHDATE; set { Changed.BIRTHDATE = true; _BIRTHDATE = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; string ReqValue = ""; _BIRTHDATE = IsDate(value, "BIRTHDATE", ref ReqValue); //Date Request.JSPG3.IJSPG3.JZ_EMPLOYEE.BIRTHDATE = ReqValue; } } private string _SALARY = null; public string SALARY // => Request.SALARY { get => _SALARY; set { Changed.SALARY = true; _SALARY = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _SALARY = "null"; else _SALARY = IsFloat(value, 0, 9999999, "SALARY"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.SALARY = _SALARY; } } private string _BONUS = null; public string BONUS // => Request.BONUS { get => _BONUS; set { Changed.BONUS = true; _BONUS = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _BONUS = "null"; else _BONUS = IsFloat(value, 0, 9999999, "BONUS"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.BONUS = _BONUS; } } private string _COMM = null; public string COMM // => Request.COMM { get => _COMM; set { Changed.COMM = true; _COMM = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _COMM = "null"; else _COMM = IsFloat(value, 0, 9999999, "COMM"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.COMM = _COMM; } } private string _CURRENCY = null; public string CURRENCY // => Request.CURRENCY { get => _CURRENCY; set { Changed.CURRENCY = true; _CURRENCY = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; if (value == "null") _CURRENCY = "nul"; else _CURRENCY = IsNoLongerThan(value, 3, "CURRENCY"); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.JZ_CURRENCY = _CURRENCY; } } private string _DEPTMGR = null; public string DEPTMGR // => Request.DEPTMGR { get => _DEPTMGR; set { Changed.DEPTMGR = true; _DEPTMGR = null; if (value == "" || value == "n" || value == "nu" || value == "nul") return; string ReqValue = "N"; _DEPTMGR = IsBool(value, "DEPTMGR", ref ReqValue); Request.JSPG3.IJSPG3.JZ_EMPLOYEE.DEPTMGR = ReqValue; } } // Output data - readonly properties that are set from response, e.g. Message private string _Error = null; public string Error // Readonly { get => _Error; } private string _JZ_DEPARTMENT_ReadTo = null; public string JZ_DEPARTMENT_ReadTo // Readonly { get => _JZ_DEPARTMENT_ReadTo; } private string _JZ_DEPARTMENT_NbrReturned = null; public string JZ_DEPARTMENT_NbrReturned // Readonly { get => _JZ_DEPARTMENT_NbrReturned; } private string _JZ_DEPARTMENT_BrowseCount = null; public string JZ_DEPARTMENT_BrowseCount // Readonly { get => _JZ_DEPARTMENT_BrowseCount; } private string _JZ_DEPARTMENT_ReturnCode = null; public string JZ_DEPARTMENT_ReturnCode // Readonly { get => _JZ_DEPARTMENT_ReturnCode; } public string JZ_DEPARTMENT_ReturnCode_Value // => Request.JZ_DEPARTMENT_ReturnCode_Value { get { if (_JZ_DEPARTMENT_ReturnCode == "' '") return "' '"; if (_JZ_DEPARTMENT_ReturnCode == "W") return "Warning"; if (_JZ_DEPARTMENT_ReturnCode == "E") return "Error"; if (_JZ_DEPARTMENT_ReturnCode == "S") return "'Serious Error'"; if (_JZ_DEPARTMENT_ReturnCode == "T") return "'Terminal Error'"; if (_JZ_DEPARTMENT_ReturnCode == "A") return "Absent"; if (_JZ_DEPARTMENT_ReturnCode == "C") return "Changed"; if (_JZ_DEPARTMENT_ReturnCode == "D") return "Deleted"; if (_JZ_DEPARTMENT_ReturnCode == "F") return "First"; if (_JZ_DEPARTMENT_ReturnCode == "I") return "Inserted"; if (_JZ_DEPARTMENT_ReturnCode == "L") return "Last"; if (_JZ_DEPARTMENT_ReturnCode == "N") return "Nth"; if (_JZ_DEPARTMENT_ReturnCode == "U") return "Unique"; return ""; } } private string _JZ_EMPLOYEE_ReadTo = null; public string JZ_EMPLOYEE_ReadTo // Readonly { get => _JZ_EMPLOYEE_ReadTo; } private string _JZ_EMPLOYEE_NbrReturned = null; public string JZ_EMPLOYEE_NbrReturned // Readonly { get => _JZ_EMPLOYEE_NbrReturned; } private string _JZ_EMPLOYEE_BrowseCount = null; public string JZ_EMPLOYEE_BrowseCount // Readonly { get => _JZ_EMPLOYEE_BrowseCount; } private string _JZ_EMPLOYEE_ReturnCode = null; public string JZ_EMPLOYEE_ReturnCode // Readonly { get => _JZ_EMPLOYEE_ReturnCode; } public string JZ_EMPLOYEE_ReturnCode_Value // => Request.JZ_EMPLOYEE_ReturnCode_Value { get { if (_JZ_EMPLOYEE_ReturnCode == "' '") return "' '"; if (_JZ_EMPLOYEE_ReturnCode == "W") return "Warning"; if (_JZ_EMPLOYEE_ReturnCode == "E") return "Error"; if (_JZ_EMPLOYEE_ReturnCode == "S") return "'Serious Error'"; if (_JZ_EMPLOYEE_ReturnCode == "T") return "'Terminal Error'"; if (_JZ_EMPLOYEE_ReturnCode == "A") return "Absent"; if (_JZ_EMPLOYEE_ReturnCode == "C") return "Changed"; if (_JZ_EMPLOYEE_ReturnCode == "D") return "Deleted"; if (_JZ_EMPLOYEE_ReturnCode == "F") return "First"; if (_JZ_EMPLOYEE_ReturnCode == "I") return "Inserted"; if (_JZ_EMPLOYEE_ReturnCode == "L") return "Last"; if (_JZ_EMPLOYEE_ReturnCode == "N") return "Nth"; if (_JZ_EMPLOYEE_ReturnCode == "U") return "Unique"; return ""; } } // Functions used to check input properties // Methods. Usually related to Function, e.g. Function CHAR(1) CAPS CODES(E:Enquiry, U:Update, A:Add, D:Delete) will have // Enquiry, Update, Add, and Delete methods private string InList(string Funct, string[] VList, bool Upcase, string FieldName) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; if (Upcase) Funct = Funct.ToUpper(); foreach (string X in VList) { if (X == Funct) return Funct; } _Error = FieldName + " Value out of range"; _JZ_DEPARTMENT_ReturnCode = "E"; return ""; } private string IsInt(string Value, int MinVal, int maxval, string FieldName) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; if (Value == "") return "0"; int IX = 0; if (!int.TryParse(Value, out IX)) { _Error = FieldName + " Value is Not Numeric"; _JZ_DEPARTMENT_ReturnCode = "E"; } else if (IX < MinVal || IX > maxval) { _Error = FieldName + " Value out of range"; _JZ_DEPARTMENT_ReturnCode = "E"; } return Value; } private string IsNoLongerThan(string Value, int MaxLen, string FieldName) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; if (Value.Length > MaxLen) { _Error = FieldName + " Value is too long"; _JZ_DEPARTMENT_ReturnCode = "W"; return Value.Substring(0, MaxLen); } return Value; } private string IsDate(string Value, string FieldName, ref string ReqValue) // Validate Date { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; if (Value == "") return "0"; if (Value == "null") { ReqValue = "null"; return "null"; } // Dates are entered according to the local culture, or as Jazz Format // Jazz format is ccyymmdd, i.e. 20210317 = 17th March 2021 DateTime DT; int IX = 0; if (int.TryParse(Value, out IX)) // Jazz format { if (Value.Length < 8) { _Error = FieldName + " integer-form date must be 8 digits"; _JZ_DEPARTMENT_ReturnCode = "E"; return Value; } int Year = int.Parse(Value.Substring(0, 4)); int Month = int.Parse(Value.Substring(4, 2)); int Day = int.Parse(Value.Substring(6, 2)); try { DT = new DateTime(Year, Month, Day); ReqValue = Year.ToString("0000") + Month.ToString("00") + Day.ToString("00"); return DT.ToString("d"); } catch { _Error = FieldName + " Year:" + Year + ", Month:" + Month + ", Day:" + Day + " not a valid date"; _JZ_DEPARTMENT_ReturnCode = "E"; } return Value; } if (!DateTime.TryParse(Value, out DT)) { _Error = FieldName + " Value is Not a date"; _JZ_DEPARTMENT_ReturnCode = "E"; } ReqValue = DT.Year.ToString("0000") + DT.Month.ToString("00") + DT.Day.ToString("00"); return Value; } private string DateValue(string InputValue) // Display Jazz-Format Date as in local culture date { if (InputValue == "0") return "0"; int IX; if (InputValue.Length != 8 || !int.TryParse(InputValue, out IX)) { return InputValue + " invalid date"; } else { int Year = int.Parse(InputValue.Substring(0, 4)); int Month = int.Parse(InputValue.Substring(4, 2)); int Day = int.Parse(InputValue.Substring(6, 2)); try { DateTime DT = new DateTime(Year, Month, Day); return DT.ToString("d"); } catch { return InputValue + " invalid date"; } } } private string IsFloat(string Value, int MinVal, int maxval, string FieldName) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; string C = NumberFormatInfo.CurrentInfo.CurrencySymbol; string V2 = Value.Replace(C, ""); if (V2 == "") return "0"; float X = 0; if (!float.TryParse(V2, out X)) { _Error = FieldName + " Value is Not Numeric"; _JZ_DEPARTMENT_ReturnCode = "E"; } else if (X < MinVal || X > maxval) { _Error = FieldName + " Value out of range"; _JZ_DEPARTMENT_ReturnCode = "E"; } return Value; } private string IsBool(string Value, string FieldName, ref string ReqValue) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; if (Value == "null") { ReqValue = "null"; return "null"; } // Request: COBOL-side values are Y or N ReqValue = "N"; has been set before IsBool reference string V1; if (Value.Length == 1) { V1 = Value.ToUpper(); if (V1 == "T" || V1 == "Y") { ReqValue = "Y"; return "True"; } else if (V1 == "F" || V1 == "N") { return "False"; } } // Invalid _Error = FieldName + " Enter t or f"; _JZ_DEPARTMENT_ReturnCode = "E"; return Value; } private string BoolValue(string InputValue) // Display Y as True, anything else as False { if (InputValue == "Y") { return "True"; } else { return "False"; } } // Standard Response Properties private System.Net.HttpStatusCode _StatusCode; public int StatusCode { get => (int)_StatusCode; } public string StatusCode_Value { get => _StatusCode.ToString(); } private bool _IsSuccessStatusCode; public string IsSuccessStatusCode { get => _IsSuccessStatusCode.ToString(); } private string _ReasonPhrase = null; public string ReasonPhrase { get => _ReasonPhrase; } private string _RawResponse = null; // blank except when unsuccessful request public string RawResponse { get => _RawResponse; } // Common Request/Response logic public bool RequestResponse(bool DoAssignToProperties = true) { try { var json = JsonConvert.SerializeObject(Request); var data = new StringContent(json, Encoding.UTF8, "application/json"); var url = "http://localhost:9003/cics/services/JSPG3"; var response = client.PostAsync(url, data).Result; String result = response.Content.ReadAsStringAsync().Result; _StatusCode = response.StatusCode; _ReasonPhrase = response.ReasonPhrase; _IsSuccessStatusCode = response.IsSuccessStatusCode; _RawResponse = null; if (response.IsSuccessStatusCode) { Response = JsonConvert.DeserializeObject(result); if (DoAssignToProperties) AssignResponseToProperties(true); else { _Error = Response.JSPG3Response.OJSPG3.JZ_Error.JZD_Error; _JZ_DEPARTMENT_ReturnCode = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.JZ_DEPARTMENT_ReturnCode; } return true; } // Faulty Response, hasn't thrown an exception AssignResponseToProperties(true); _RawResponse = result; _JZ_DEPARTMENT_ReturnCode = "S"; _Error = response.ReasonPhrase; return false; } catch (Exception e) { _JZ_DEPARTMENT_ReturnCode = "S"; _Error = e.Message; return false; } } public bool Enquiry(string PSkip = null,string PDEPTNO = null,string PMGRNO = null,string PADMRDEPT = null,string PSkip2 = null) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; return DoRead(PSkip,PDEPTNO,PMGRNO,PADMRDEPT,PSkip2); } public bool ReadNext(string PSkip = null) { return Scroll(1, PSkip); } public bool ReadLast() { int PSkip; int.TryParse(JZ_DEPARTMENT_BrowseCount, out PSkip); PSkip -= 1; return Scroll(PSkip, ""); } public bool ReadPrev(string PSkip = null) { return Scroll(-1, PSkip); } public bool ReadFirst() { return Scroll(0, ""); } private bool Scroll(int Increment, string PSkip = null) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; Response.JSPG3Response.OJSPG3.JZ_Error.JZD_Error = ""; int Skip; int.TryParse(PSkip, out Skip); Skip += Increment; int BrowseCount; int.TryParse(JZ_DEPARTMENT_BrowseCount, out BrowseCount); if (Skip < 0 || Skip > BrowseCount) { _Error = "Skip Value out of Range. BrowseCount = " + BrowseCount.ToString(); _JZ_DEPARTMENT_ReturnCode = "E"; return false; } PSkip = Skip.ToString(); Skip2 = "0"; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.DEPTNO = ""; // Ensure no residue of Update/Add/Delete return DoRead(PSkip, "" ,SaveBrowse_PMGRNO,SaveBrowse_PADMRDEPT,SaveBrowse_PSkip2); } public bool DoRead(string PSkip = null,string PDEPTNO = null,string PMGRNO = null,string PADMRDEPT = null,string PSkip2 = null) { //For Enquiry at least one key field must be given. With duplicate keys (DKEY) scrolling is a possibility. if (PDEPTNO == null && PMGRNO == null && PADMRDEPT == null) { _Error = "DEPTNO or MGRNO or ADMRDEPT required for Enquiry"; _JZ_DEPARTMENT_ReturnCode = "E"; return false; } IXT1Sub = 0; if (PDEPTNO != "") { DEPTNO = PDEPTNO; } else { Skip = PSkip; Skip2 = PSkip2; SaveBrowse_PMGRNO = ""; SaveBrowse_PADMRDEPT = ""; if (PMGRNO != "") { MGRNO = PMGRNO; SaveBrowse_PMGRNO = PMGRNO; } else if (PADMRDEPT != "") { ADMRDEPT = PADMRDEPT; SaveBrowse_PADMRDEPT = PADMRDEPT; } } Function = "E"; AddPrivateFieldsToRequest(); return RequestResponse(); } public bool ReadNextChild(string PSkip = null) { return ScrollChild(1, PSkip); } public bool ReadLastChild() { int PSkip; int.TryParse(JZ_EMPLOYEE_BrowseCount, out PSkip); PSkip -= 1; return ScrollChild(PSkip, ""); } public bool ReadPrevChild(string PSkip = null) { return ScrollChild(-1, PSkip); } public bool ReadFirstChild() { return ScrollChild(0, ""); } private bool ScrollChild(int Increment, string PSkip = null) { _Error = ""; _JZ_EMPLOYEE_ReturnCode = ""; Response.JSPG3Response.OJSPG3.JZ_Error.JZD_Error = ""; int Skip2; int.TryParse(PSkip, out Skip2); Skip2 += Increment; int ChildCount; int.TryParse(JZ_EMPLOYEE_BrowseCount, out ChildCount); if (Skip2 < 0 || Skip2 > ChildCount) { _Error = "Skip Value out of Range. ChildCount = " + ChildCount.ToString(); _JZ_EMPLOYEE_ReturnCode = "E"; return false; } while (Skip2 >= Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE.Count) { // Add next chunk of JZ_Employee to previously-read chunk(s) List T2Save = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE; string NextSkip = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE.Count.ToString(); if (DoRead(SaveBrowse_PSkip,"",SaveBrowse_PMGRNO,SaveBrowse_PADMRDEPT,NextSkip)) { int Limit = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE_NbrReturned; for (int IX = 0; IX < Limit; IX += 1) { T2Save.Add(Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IX]); } Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE = T2Save; } } IXT1Sub = Skip2; AssignResponseToProperties(true); PSkip = Skip2.ToString(); _Skip2 = PSkip; return true; } public bool Update(string PDEPTNO = null) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; //Update must follow Enquiry. // Validate Argument(s) if (PDEPTNO == null) _Error = "DEPTNO required for Update"; else if (PDEPTNO != DEPTNO) _Error = "DEPTNO must not change"; if (_Error != "") { _JZ_DEPARTMENT_ReturnCode = "E"; return false; } // Set Key and Function IXT1Sub = 0; DEPTNO = PDEPTNO; Function = "U"; AddPrivateFieldsToRequest(); bool Result = false; int BrowseCount; int.TryParse(_JZ_DEPARTMENT_BrowseCount, out BrowseCount); Result = RequestResponse(); _JZ_DEPARTMENT_ReturnCode = "C"; _JZ_DEPARTMENT_BrowseCount = BrowseCount.ToString(); return Result; } public bool Add(string PDEPTNO = null) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; // Validate Argument(s) // Set Key and Function if (Changed.DEPTNO) { DEPTNO = PDEPTNO; } else { DEPTNO = ""; } Function = "A"; AddPrivateFieldsToRequest(); bool Result = false; int BrowseCount; int.TryParse(_JZ_DEPARTMENT_BrowseCount, out BrowseCount); Result = RequestResponse(); BrowseCount += 1; _JZ_DEPARTMENT_BrowseCount = BrowseCount.ToString(); _JZ_DEPARTMENT_ReturnCode = "I"; return Result; } public bool Delete(string PDEPTNO = null) { _Error = ""; _JZ_DEPARTMENT_ReturnCode = ""; // Validate Argument(s) if (PDEPTNO == null) _Error = "DEPTNO required for Delete"; else if (PDEPTNO != DEPTNO) _Error = "DEPTNO must not change"; if (_Error != "") { _JZ_DEPARTMENT_ReturnCode = "E"; return false; } // Set Key and Function DEPTNO = PDEPTNO; Function = "D"; AddPrivateFieldsToRequest(); bool Result = false; int BrowseCount; int.TryParse(_JZ_DEPARTMENT_BrowseCount, out BrowseCount); Result = RequestResponse(false); if (_JZ_DEPARTMENT_ReturnCode != "E") { BrowseCount -= 1; _JZ_DEPARTMENT_BrowseCount = BrowseCount.ToString(); _JZ_DEPARTMENT_ReturnCode = "D"; } return Result; } public bool Child(string PEMPNO = null, string PDEPTNO = null) { _Error = ""; _JZ_EMPLOYEE_ReturnCode = ""; // Validate Argument(s) // Set Key and Function if (Changed.EMPNO) { EMPNO = PEMPNO; } else { EMPNO = ""; } DEPTNO = PDEPTNO; Function = "C"; AddPrivateFieldsToRequest(); bool Result = false; int BrowseCount; int.TryParse(_JZ_EMPLOYEE_BrowseCount, out BrowseCount); if (BrowseCount < 2) { Result = RequestResponse(); } else { // Child follows Browse. Ensure that browsing can continue List T2Save = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE; int Sub = 0; if (BrowseCount == T2Save.Count) Sub = BrowseCount - 1; // Non-zero => Add new record to T2String IXT1Sub = 0; // Result always returned in first child Result = RequestResponse(); if (Sub > 0) // Add new record { T2Save.Add(Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[0]); T2Save[Sub].JZ_EMPLOYEE_ReturnCode = "N"; Sub += 1; T2Save[Sub].JZ_EMPLOYEE_ReturnCode = "L"; } Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE = T2Save; Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE_BrowseCount = BrowseCount; } BrowseCount += 1; _JZ_EMPLOYEE_BrowseCount = BrowseCount.ToString(); _JZ_EMPLOYEE_ReturnCode = "I"; return Result; } public bool PChild(string PEMPNO = null, string PDEPTNO = null) { _Error = ""; _JZ_EMPLOYEE_ReturnCode = ""; // Validate Argument(s) // Set Key and Function EMPNO = PEMPNO; DEPTNO = PDEPTNO; Function = "P"; AddPrivateFieldsToRequest(); bool Result = false; int BrowseCount; int.TryParse(_JZ_EMPLOYEE_BrowseCount, out BrowseCount); if (BrowseCount < 2) { Result = RequestResponse(); } else { // PChild follows Browse. Ensure that browsing can continue List T2Save = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE; IXT1Sub = 0; // Results always returned in first position Result = RequestResponse(); // Replace Updated Record for (int Sub = 0; Sub < T2Save.Count; Sub ++) { if (T2Save[Sub].EMPNO == Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[0].EMPNO) { // Replace updated Record T2Save[Sub] = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[0]; break; } } Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE = T2Save; } _JZ_EMPLOYEE_ReturnCode = "P"; return Result; } // Routines. Functions and Subroutine used by methods private bool ResetChanged() { Changed.Skip = false; Changed.DEPTNO = false; Changed.DEPTNAME = false; Changed.MGRNO = false; Changed.ADMRDEPT = false; Changed.LOCATION = false; Changed.Skip2 = false; Changed.EMPNO = false; Changed.FIRSTNME = false; Changed.MIDINIT = false; Changed.LASTNAME = false; Changed.PHONENO = false; Changed.HIREDATE = false; Changed.JOB = false; Changed.EDLEVEL = false; Changed.SEX = false; Changed.BIRTHDATE = false; Changed.SALARY = false; Changed.BONUS = false; Changed.COMM = false; Changed.CURRENCY = false; Changed.DEPTMGR = false; return true; } private void AssignResponseToProperties(bool BrowseCount) { ResetChanged(); // Mark all properties as 'Unchanged By User' ClearRequest(); // Ensure no carry-forward data // Set properties From Response _Error = Response.JSPG3Response.OJSPG3.JZ_Error.JZD_Error; _JZ_DEPARTMENT_ReadTo = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT_ReadTo.ToString(); _JZ_DEPARTMENT_NbrReturned = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT_NbrReturned.ToString(); if (BrowseCount) _JZ_DEPARTMENT_BrowseCount = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT_BrowseCount.ToString(); _JZ_DEPARTMENT_ReturnCode = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.JZ_DEPARTMENT_ReturnCode; _DEPTNO = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.DEPTNO; _DEPTNAME = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.DEPTNAME.JZD_DEPTNAME; _MGRNO = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.MGRNO; _ADMRDEPT = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.ADMRDEPT; _LOCATION = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.LOCATION; _Checksum = Response.JSPG3Response.OJSPG3.JZ_DEPARTMENT.Checksum; _JZ_EMPLOYEE_ReadTo = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE_ReadTo.ToString(); _JZ_EMPLOYEE_NbrReturned = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE_NbrReturned.ToString(); if (BrowseCount) _JZ_EMPLOYEE_BrowseCount = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE_BrowseCount.ToString(); _JZ_EMPLOYEE_ReturnCode = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].JZ_EMPLOYEE_ReturnCode; _EMPNO = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].EMPNO; _FIRSTNME = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].FIRSTNME.JZD_FIRSTNME; _MIDINIT = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].MIDINIT; _LASTNAME = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].LASTNAME.JZD_LASTNAME; _PHONENO = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].PHONENO; _HIREDATE = DateValue(Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].HIREDATE.ToString()); _JOB = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].JOB; _EDLEVEL = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].EDLEVEL.ToString(); _SEX = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].SEX; _BIRTHDATE = DateValue(Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].BIRTHDATE.ToString()); _SALARY = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].SALARY.ToString("C2"); _BONUS = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].BONUS.ToString("C2"); _COMM = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].COMM.ToString("C2"); _CURRENCY = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].JZ_CURRENCY; _DEPTMGR = BoolValue(Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].DEPTMGR); _Checksum1 = Response.JSPG3Response.OJSPG3.JZ_EMPLOYEE[IXT1Sub].Checksum; } private void ClearRequest() { // Clear Request, to prevent data carry-over' Request.JSPG3.IJSPG3.JZ_Function = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT_Skip = 0; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.DEPTNO = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.DEPTNAME = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.MGRNO = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.ADMRDEPT = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.LOCATION = null; Request.JSPG3.IJSPG3.JZ_DEPARTMENT.Checksum = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE_Skip = 0; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.EMPNO = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.FIRSTNME = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.MIDINIT = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.LASTNAME = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.PHONENO = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.HIREDATE = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.JOB = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.EDLEVEL = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.SEX = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.BIRTHDATE = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.SALARY = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.BONUS = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.COMM = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.JZ_CURRENCY = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.DEPTMGR = null; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.Checksum = null; } private void AddPrivateFieldsToRequest() { Request.JSPG3.IJSPG3.JZ_DEPARTMENT.Checksum = _Checksum; Request.JSPG3.IJSPG3.JZ_EMPLOYEE.Checksum = _Checksum1; } } }