Example #1
0
        public void BatchHeader_TestRowCreation()
        {
            var _suts = new List <BatchHeader>();
            var _suti = new BatchHeader
            {
                ServiceClassCode         = BatchServiceClassCodeConstant.Credits,
                CompanyName              = "CONTRACTOR MGMT",
                CompanyDiscretionaryData = "",
                CompanyIdentification    = "9876543210",
                StandardEntryClassCode   = StandardEntryClassCodeConstant.PPD,
                CompanyEntryDescription  = "SETTLEMENT",
                CompanyDescriptiveDate   = "",
                EffectiveEntryDate       = new DateTime(2016, 8, 11),
                OriginatorStatusCode     = BatchHeaderOriginatorStatusCodeConstant.NonFederalGovernment,
                OriginatingDfi           = "99889988"
            };

            _suts.Add(_suti);

            var _engine   = new FileHelpers.FileHelperEngine <BatchHeader>();
            var _test     = _engine.WriteString(_suts);
            var _expected = "5220CONTRACTOR MGMT                     9876543210PPDSETTLEMENT      160811   1998899880000000\r\n";

            Assert.Equal(_expected, _test);
        }
Example #2
0
        public BatchHeader GetSingle(Int32 Id)
        {
            BatchHeader obj = new BatchHeader();

            try
            {
                string     query = "select * from batch_headers where ID = " + Id + "";
                SqlCommand cmd   = new SqlCommand(query, mySQLDBConnect.connection);
                mySQLDBConnect.OpenConnection();
                DataTable      dt = new DataTable();
                SqlDataAdapter dA = new SqlDataAdapter(cmd);
                dA.Fill(dt);
                obj = (from x in dt.AsEnumerable()
                       select new BatchHeader
                {
                    Id = x.Field <Int32>("id"),
                    DepartmentId = x.Field <Int32>("department_id"),
                    Code = x.Field <String>("code"),
                    Name = x.Field <String>("name"),
                    Url = x.Field <String>("url"),
                    CreatedDate = x.Field <DateTime>("created_date"),
                    CreatedBy = x.Field <Int32>("created_by"),
                    UpdatedDate = x.Field <DateTime?>("updated_date"),
                    UpdatedBy = x.Field <Int32?>("updated_by") == null ? 0 : x.Field <Int32>("updated_by"),
                    Status = x.Field <Int32>("status"),
                }).ToList().FirstOrDefault();
                mySQLDBConnect.CloseConnection();
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
            return(obj);
        }
 public BatchHeader UpdateData(BatchHeader obj)
 {
     try
     {
         obj = IBatchHeaderRepo.UpdateData(obj);
     }
     catch (Exception ex)
     {
         Console.Write(ex.ToString());
     }
     return(obj);
 }
        public BatchHeader DeleteData(Int32 Id)
        {
            BatchHeader obj = new BatchHeader();

            try
            {
                obj = IBatchHeaderRepo.DeleteData(Id);
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
            return(obj);
        }
Example #5
0
        /// <summary>
        /// Creates new batch.
        /// </summary>
        /// <returns>The batch.</returns>
        /// <param name="transactions">Transactions.</param>
        public Batch CreateBatch(IEnumerable <Transaction> transactions)
        {
            var batchHeader = new BatchHeader();

            batchHeader.TransactionIds.AddRange(transactions.Select(x => x.HeaderSignature));
            batchHeader.SignerPublicKey = signer.GetPublicKey().ToHexString();

            var batch = new Batch();

            batch.Transactions.AddRange(transactions.Select(x => x.Clone()));
            batch.Header          = batchHeader.ToByteString();
            batch.HeaderSignature = signer.Sign(batchHeader.ToByteArray().ToSha256()).ToHexString();

            return(batch);
        }
Example #6
0
 public BatchHeader UpdateData(BatchHeader obj)
 {
     try
     {
         string     query = obj.ObjectToQuery <BatchHeader>("update");
         SqlCommand cmd   = new SqlCommand(query, mySQLDBConnect.connection);
         mySQLDBConnect.OpenConnection();
         cmd.ExecuteNonQuery();
         mySQLDBConnect.CloseConnection();
     }
     catch (Exception ex)
     {
         Console.Write(ex.ToString());
     }
     return(obj);
 }
Example #7
0
 public BatchHeader PostData(BatchHeader obj)
 {
     try
     {
         string     query = obj.ObjectToQuery <BatchHeader>("insert") + "SELECT SCOPE_IDENTITY()";
         SqlCommand cmd   = new SqlCommand(query, mySQLDBConnect.connection);
         mySQLDBConnect.OpenConnection();
         //cmd.ExecuteNonQuery();
         obj.Id = Convert.ToInt32(cmd.ExecuteScalar());
         mySQLDBConnect.CloseConnection();
     }
     catch (Exception ex)
     {
         Console.Write(ex.ToString());
     }
     return(obj);
 }
Example #8
0
        public Int32 DeleteBulkData(List <Int32> Ids)
        {
            Int32 result = 0;

            try
            {
                string query = "";
                Ids.ForEach(Id =>
                {
                    BatchHeader obj = GetSingle(Id);
                    query          += obj.ObjectToQuery <BatchHeader>("update");
                });
                SqlCommand cmd = new SqlCommand(query, mySQLDBConnect.connection);
                mySQLDBConnect.OpenConnection();
                result = cmd.ExecuteNonQuery();
                mySQLDBConnect.CloseConnection();
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
            return(result);
        }
Example #9
0
        public void Deserialize(Stream input)
        {
            var magic = input.ReadValueU16(Endian.Little);

            if (magic != Signature && magic.Swap() != Signature)
            {
                throw new FormatException();
            }
            var endian = magic == Signature ? Endian.Little : Endian.Big;

            var nameCount      = input.ReadValueU16(endian);
            var directoryCount = input.ReadValueU16(endian);

            var unknown06 = input.ReadValueU16(endian);

            if (unknown06 != 4)
            {
                throw new FormatException();
            }

            var fileTableOffset = input.ReadValueU32(endian);
            var totalSize       = input.ReadValueU32(endian); // size of FILETABLE.BIN
            var titleId1        = input.ReadString(16, true, Encoding.ASCII);
            var titleId2        = input.ReadString(16, true, Encoding.ASCII);

            var unknown30     = input.ReadValueU16(endian);
            var unknown32     = input.ReadValueU8();
            var parentalLevel = input.ReadValueU8();

            if (unknown30 != 0 || (unknown32 != 0 && unknown32 != 1))
            {
                throw new FormatException();
            }

            var installDataCryptoKey = input.ReadBytes(16);

            var nameHeaders = new NameHeader[nameCount];

            for (int i = 0; i < nameCount; i++)
            {
                nameHeaders[i] = NameHeader.Read(input, endian);
            }

            var directoryHeaders = new DirectoryHeader[directoryCount];

            for (int i = 0; i < directoryCount; i++)
            {
                var directoryHeader = directoryHeaders[i] = DirectoryHeader.Read(input, endian);
                if (directoryHeader.Unknown02 != 0 ||
                    directoryHeader.Unknown08 != 0)
                {
                    throw new FormatException();
                }
            }

            var totalBatchCount = directoryHeaders.Sum(s => s.BatchCount);

            if (input.Position + (totalBatchCount * 8) != fileTableOffset)
            {
                throw new InvalidOperationException();
            }

            var batchHeaders = new BatchHeader[totalBatchCount];

            for (int i = 0; i < totalBatchCount; i++)
            {
                batchHeaders[i] = BatchHeader.Read(input, endian);
            }

            var totalFileCount = batchHeaders.Sum(d => d.FileCount);

            int fileTableSize = 0;

            foreach (var batchHeader in batchHeaders)
            {
                var fileTableEntrySizeIndex = (int)batchHeader.Flags;
                if (fileTableEntrySizeIndex == 1 || fileTableEntrySizeIndex > 5)
                {
                    throw new NotSupportedException();
                }
                fileTableSize += batchHeader.FileCount * _FileTableEntrySizes[fileTableEntrySizeIndex];
            }

            if (totalSize - fileTableOffset != fileTableSize)
            {
                throw new InvalidOperationException();
            }

            var directories = new List <DirectoryEntry>();

            using (var data = input.ReadToMemoryStream(fileTableSize))
            {
                foreach (var directoryHeader in directoryHeaders)
                {
                    var batchIndexBase = directoryHeader.BatchTableOffset / 8;

                    var directory = new DirectoryEntry()
                    {
                        Id              = directoryHeader.Id,
                        DataBlockSize   = directoryHeader.DataBlockSize,
                        DataBaseOffset  = directoryHeader.DataBaseOffset,
                        IsInInstallData = directoryHeader.IsInInstallData,
                    };

                    for (int i = 0; i < directoryHeader.BatchCount; i++)
                    {
                        if ((directoryHeader.BatchTableOffset % 8) != 0)
                        {
                            throw new FormatException();
                        }

                        var batchHeader = batchHeaders[batchIndexBase + i];

                        var readDataHeader = _FileTableEntryReaders[(int)batchHeader.Flags];
                        if (readDataHeader == null)
                        {
                            throw new NotSupportedException();
                        }

                        data.Position = batchHeader.FileTableOffset;
                        ushort fileId = batchHeader.BaseFileId;
                        for (int j = 0; j < batchHeader.FileCount; j++, fileId++)
                        {
                            var fileHeader = readDataHeader(data, endian);

                            uint?nameHash = null;
                            if (directoryHeader.NameTableCount > 0)
                            {
                                if (directoryHeader.NameTableIndex == 0xFFFF)
                                {
                                    throw new InvalidOperationException();
                                }

                                var nameIndex = Array.FindIndex(
                                    nameHeaders,
                                    directoryHeader.NameTableIndex,
                                    directoryHeader.NameTableCount,
                                    nte => nte.DirectoryId == directoryHeader.Id &&
                                    nte.FileId == fileId);
                                if (nameIndex >= 0)
                                {
                                    nameHash = nameHeaders[nameIndex].NameHash;
                                }
                            }

                            FileEntry file;
                            file.Id              = fileId;
                            file.NameHash        = nameHash;
                            file.DataBlockOffset = fileHeader.DataBlockOffset;
                            file.DataSize        = fileHeader.DataSize;
                            directory.Files.Add(file);
                        }
                    }

                    directories.Add(directory);
                }

                this.Endian               = endian;
                this.TitleId1             = titleId1;
                this.TitleId2             = titleId2;
                this.Unknown32            = unknown32;
                this.ParentalLevel        = parentalLevel;
                this.InstallDataCryptoKey = installDataCryptoKey;
                this.Directories.Clear();
                this.Directories.AddRange(directories);
            }
        }
Example #10
0
 public BatchHeaderTests()
 {
     _sut = new BatchHeader();
 }