Beispiel #1
0
        public CIFAddressResponse CIFAddressCreation(MBaseMessage message)
        {
            CIFAddressResponse response = new CIFAddressResponse();
            var resMessages             = GetResponseMessage(message);

            foreach (var res in resMessages)
            {
                switch (res.Key.Trim())
                {
                case nameof(CIFAddressResponse.CFCIFN):
                    response.CFCIFN = StringToDigit(res.Value);
                    break;

                case nameof(CIFAddressResponse.CFADSQ):
                    response.CFADSQ = StringToDigit(res.Value);
                    break;

                default:
                    response.ErrorCode        = res.Key;
                    response.ErrorDescription = res.Value;
                    break;
                }
            }
            return(response);
        }
Beispiel #2
0
        public VerifyCitizenResponse VerifyCitizenID(MBaseMessage message)
        {
            VerifyCitizenResponse response = new VerifyCitizenResponse();
            var resMessages = GetResponseMessage(message);

            foreach (var res in resMessages)
            {
                switch (res.Key.Trim())
                {
                case nameof(VerifyCitizenResponse.CFCIFN):
                    response.CFCIFN = StringToDigit(res.Value);
                    break;

                case nameof(VerifyCitizenResponse.CFCIFT):
                    response.CFCIFT = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFNA1):
                    response.CFNA1 = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFNA1A):
                    response.CFNA1A = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFSSNO):
                    response.CFSSNO = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFSSCD):
                    response.CFSSCD = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFCIDT):
                    response.CFCIDT = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFASN1):
                    response.CFASN1 = res.Value.Trim();
                    break;

                case nameof(VerifyCitizenResponse.CFASN2):
                    response.CFASN2 = res.Value.Trim();
                    break;

                default:
                    response.ErrorCode        = res.Key;
                    response.ErrorDescription = res.Value;
                    break;
                }
            }
            return(response);
        }
Beispiel #3
0
        public KycAccountLevelResponse CreateKycAccountLevelMessage(MBaseMessage message)
        {
            KycAccountLevelResponse response = new KycAccountLevelResponse();
            var resMessages = GetResponseMessage(message);

            foreach (var res in resMessages)
            {
                switch (res.Key.Trim())
                {
                case nameof(KycAccountLevelResponse.KCATYP):
                    response.KCATYP = res.Value;
                    break;

                case nameof(KycAccountLevelResponse.KCACCN):
                    response.KCACCN = StringToDigit(res.Value);
                    break;

                case nameof(KycAccountLevelResponse.DEPPURINV):
                    response.DEPPURINV = res.Value;
                    break;

                case nameof(KycAccountLevelResponse.DEPSRCINV):
                    response.DEPSRCINV = res.Value;
                    break;

                case nameof(KycAccountLevelResponse.KCSCOU):
                    response.KCSCOU = res.Value;
                    break;

                case nameof(KycAccountLevelResponse.KCOPAM):
                    response.KCOPAM = StringToDigit(res.Value);
                    break;

                default:
                    response.ErrorCode        = res.Key;
                    response.ErrorDescription = res.Value;
                    break;
                }
            }
            return(response);
        }
Beispiel #4
0
        public KycCIFLevelResponse CreateKycCIFLevelMessage(MBaseMessage message)
        {
            KycCIFLevelResponse response = new KycCIFLevelResponse();
            var resMessages = GetResponseMessage(message);

            foreach (var res in resMessages)
            {
                switch (res.Key.Trim())
                {
                case nameof(KycCIFLevelResponse.KCCIFN):
                    response.KCCIFN = StringToDigit(res.Value);
                    break;

                case nameof(KycCIFLevelResponse.KCFRKL):
                    response.KCFRKL = res.Value;
                    break;

                case nameof(KycCIFLevelResponse.KCRRKL):
                    response.KCRRKL = res.Value;
                    break;

                case nameof(KycCIFLevelResponse.KCLRDT):
                    response.KCLRDT = res.Value;
                    break;

                case nameof(KycCIFLevelResponse.KCNRDT):
                    response.KCNRDT = res.Value;
                    break;

                case nameof(KycCIFLevelResponse.WDTEXT):
                    response.WDTEXT = res.Value;
                    break;

                default:
                    response.ErrorCode        = res.Key;
                    response.ErrorDescription = res.Value;
                    break;
                }
            }
            return(response);
        }
Beispiel #5
0
        private byte[] CreateInputMessage(MBaseMessage message)
        {
            // Test
            //AS400UserId = "LHD8899201";
            byte[] oByte = new byte[0];
            try
            {
                int    idx, pos, StartIndex, EndIndex;
                string DefaultValue;

                string transactionCode  = message.HeaderTransaction.MBaseTranCode;
                string scenarioNumber   = message.HeaderTransaction.ScenarioNumber;
                string actionMode       = message.HeaderTransaction.ActionMode;
                string transactionMode  = message.HeaderTransaction.TransactionMode;
                string numberOfRetrieve = message.HeaderTransaction.NoOfRecToRetrieve;
                string inputLength      = message.HeaderTransaction.InputLength.ToString();
                string responseLength   = message.HeaderTransaction.ResponseLength.ToString();

                int rqMsgLength = HeaderMessageLength + Convert.ToInt16(inputLength);

                //Logging.WriteLog("Request Msg Length:" + rqMsgLength.ToString());
                oByte = new byte[rqMsgLength];

                #region Header
                foreach (var header in message.HeaderMessages)
                {
                    StartIndex   = header.StartIndex;
                    EndIndex     = header.EndIndex;
                    DefaultValue = header.DefaultValue;

                    DataType dType = DataType.A;
                    switch (header.DataType.ToUpper())
                    {
                    case "B":
                        dType = DataType.B;
                        break;

                    case "P":
                        dType = DataType.P;
                        if (DefaultValue == string.Empty)
                        {
                            DefaultValue = "0";
                        }
                        break;

                    case "S":
                        dType = DataType.S;
                        if (DefaultValue == string.Empty)
                        {
                            DefaultValue = "0";
                        }
                        break;
                    }

                    byte[] data = ConvertData(DefaultValue, StartIndex, EndIndex, dType);

                    idx = 0;
                    for (pos = StartIndex - 1; pos < EndIndex; pos++)
                    {
                        oByte[pos] = data[idx];
                        idx++;
                    }
                }
                #endregion
                foreach (var input in message.InputMessages)
                {
                    StartIndex   = input.StartIndex + HeaderMessageLength;
                    EndIndex     = input.EndIndex + HeaderMessageLength;
                    DefaultValue = input.DefaultValue;

                    DataType dType = DataType.A;
                    switch (input.DataType.ToUpper())
                    {
                    case "B":
                        dType = DataType.B;
                        break;

                    case "P":
                        dType = DataType.P;
                        if (DefaultValue == "")
                        {
                            DefaultValue = "0";
                        }
                        break;

                    case "S":
                        dType = DataType.S;
                        if (DefaultValue == "")
                        {
                            DefaultValue = "0";
                        }
                        break;
                    }
                    byte[] data = ConvertData(DefaultValue, StartIndex, EndIndex, dType);

                    idx = 0;
                    for (pos = StartIndex - 1; pos < EndIndex; pos++)
                    {
                        oByte[pos] = data[idx];
                        idx++;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(oByte);
        }
Beispiel #6
0
        private Dictionary <string, string> GetResponseMessage(MBaseMessage message)
        {
            Dictionary <string, string> dictResult = new Dictionary <string, string>();
            int       inputLength    = Convert.ToInt16(message.HeaderTransaction.InputLength);
            int       responseLength = Convert.ToInt16(message.HeaderTransaction.ResponseLength);
            TcpClient clientSocket   = new TcpClient
            {
                ReceiveBufferSize = HeaderMessageLength + inputLength + responseLength,
                ReceiveTimeout    = ReceiveTimeout,
                SendTimeout       = SendTimeout
            };

            try
            {
                if (!clientSocket.Connected)
                {
                    clientSocket.Connect(ServerHost, ServerPort);
                }

                if (clientSocket.Connected)
                {
                    //Logging.WriteLog("Connect [Host:" + ServerHost + "] [Port:" + ServerPort + "]");
                    //Logging.WriteLog("Connected");

                    NetworkStream serverStream = clientSocket.GetStream();

                    //Logging.WriteLog($"Create Input Message TranCode: {message.HeaderTransaction.MBaseTranCode}");
                    Logging.WriteLog($"MBase Ref: [{message.HeaderMessages.Where(s => s.FieldName == nameof(MBaseHeaderMessage.HDRNUM)).Select(s => s.DefaultValue).FirstOrDefault()}]");
                    byte[] headParameter = CreateInputMessage(message);

                    //Logging.WriteLog("Write Stream [Length:" + headParameter.Length + "]");
                    serverStream.Write(headParameter, 0, headParameter.Length);
                    serverStream.Flush();

                    int rsMsgLength = HeaderMessageLength + inputLength + responseLength;
                    //Logging.WriteLog("Read Stream [Length:" + rsMsgLength.ToString() + "]");

                    byte[] outStream = new byte[rsMsgLength];
                    serverStream.Read(outStream, 0, (int)clientSocket.ReceiveBufferSize);

                    bool inputMessageValid = CheckInputMessageValid(ref outStream, ref dictResult);
                    if (inputMessageValid)
                    {
                        //Logging.WriteLog("Write Response");
                        foreach (var res in message.ResponseMessages)
                        {
                            int startIndex = Convert.ToInt32(res.StartIndex) - 1;
                            int endIndex   = Convert.ToInt32(res.EndIndex) - 1;
                            startIndex = (HeaderMessageLength) + startIndex;
                            endIndex   = (HeaderMessageLength) + endIndex;

                            string   data_type = res.DataType;
                            DataType dType     = DataType.A;
                            if (data_type == nameof(DataType.B))
                            {
                                dType = DataType.B;
                            }
                            else if (data_type == nameof(DataType.A))
                            {
                                dType = DataType.A;
                            }
                            else if (data_type == nameof(DataType.P))
                            {
                                dType = DataType.P;
                            }
                            else //if (dr.ToString() == "S")
                            {
                                dType = DataType.S;
                            }

                            dictResult.Add(res.FieldName.Trim(), ConvertDataResponse(outStream, startIndex, endIndex, dType).Trim());
                        }
                    }
                }
                else
                {
                    dictResult.Add(ResponseCode.NTW0001, $"Cannot connect to { ServerHost }");
                }
            }
            catch (Exception ex)
            {
                dictResult.Add(ResponseCode.MBX0001, string.Format("Message:{0} : {1}", ex.Message, ex.StackTrace));
            }
            finally
            {
                if (clientSocket != null)
                {
                    clientSocket.Close();
                }
            }

            return(dictResult);
        }