예제 #1
0
        public async Task <int> SubmitAsync(int id, int userId)
        {
            var model = await GetIndexAsync(id);

            var list = await _storeInoutGoodsContext.GetListByStoreInoutAsync(id);

            var goods = list.Select(x => new StoreChangeGoodsValueModel
            {
                HospitalGoodId = x.HospitalGoods.Id,
                ChangeQty      = x.Qty,
                Recrdno        = RecordNumber.Next(model.ChangeType.Id, x.Id),
            });

            using (var trans = _defaultDbTransaction.Begin())
            {
                _storeContext.BatchCreateOrUpdate(new BatchStoreChangeApiModel
                {
                    ChangeTypeId        = model.ChangeType.Id,
                    HospitalChangeGoods = goods.ToList(),
                }, model.HospitalDepartment.Id, userId);
                _StoreInoutRespository.UpdateStatus(id, StoreInoutStatus.Submited);
                trans.Commit();
            }
            return(0);
        }
예제 #2
0
 private AddRoadSegment(
     RecordNumber recordNumber,
     RoadSegmentId temporaryId,
     RoadNodeId startNodeId,
     RoadNodeId endNodeId,
     MultiLineString geometry,
     OrganizationId maintenanceAuthority,
     RoadSegmentGeometryDrawMethod geometryDrawMethod,
     RoadSegmentMorphology morphology,
     RoadSegmentStatus status,
     RoadSegmentCategory category,
     RoadSegmentAccessRestriction accessRestriction,
     CrabStreetnameId?leftSideStreetNameId,
     CrabStreetnameId?rightSideStreetNameId,
     IReadOnlyList <RoadSegmentLaneAttribute> lanes,
     IReadOnlyList <RoadSegmentWidthAttribute> widths,
     IReadOnlyList <RoadSegmentSurfaceAttribute> surfaces)
 {
     RecordNumber         = recordNumber;
     TemporaryId          = temporaryId;
     StartNodeId          = startNodeId;
     EndNodeId            = endNodeId;
     Geometry             = geometry;
     MaintenanceAuthority = maintenanceAuthority;
     GeometryDrawMethod   = geometryDrawMethod;
     Morphology           = morphology;
     Status                = status;
     Category              = category;
     AccessRestriction     = accessRestriction;
     LeftSideStreetNameId  = leftSideStreetNameId;
     RightSideStreetNameId = rightSideStreetNameId;
     Lanes    = lanes;
     Widths   = widths;
     Surfaces = surfaces;
 }
예제 #3
0
 public AddRoadNode(RecordNumber recordNumber, RoadNodeId temporaryId, RoadNodeType type)
 {
     RecordNumber = recordNumber;
     TemporaryId  = temporaryId;
     Type         = type ?? throw new ArgumentNullException(nameof(type));
     Geometry     = null;
 }
예제 #4
0
        public bool MoveNext()
        {
            if (_state == State.Ended)
            {
                return(false);
            }

            if (_state == State.Initial)
            {
                if (_enumerator.MoveNext())
                {
                    _state = State.Started;
                    return(true);
                }

                _state = State.Ended;
                return(false);
            }

            if (_enumerator.MoveNext())
            {
                _number = _number.Next();
                return(true);
            }

            _state = State.Ended;
            return(false);
        }
예제 #5
0
 public AddRoadSegment(
     RecordNumber recordNumber,
     RoadSegmentId temporaryId,
     RoadNodeId startNodeId,
     RoadNodeId endNodeId,
     OrganizationId maintenanceAuthority,
     RoadSegmentGeometryDrawMethod geometryDrawMethod,
     RoadSegmentMorphology morphology,
     RoadSegmentStatus status,
     RoadSegmentCategory category,
     RoadSegmentAccessRestriction accessRestriction,
     CrabStreetnameId?leftSideStreetNameId,
     CrabStreetnameId?rightSideStreetNameId)
 {
     RecordNumber         = recordNumber;
     TemporaryId          = temporaryId;
     StartNodeId          = startNodeId;
     EndNodeId            = endNodeId;
     Geometry             = null;
     MaintenanceAuthority = maintenanceAuthority;
     GeometryDrawMethod   = geometryDrawMethod ?? throw new ArgumentNullException(nameof(geometryDrawMethod));
     Morphology           = morphology ?? throw new ArgumentNullException(nameof(morphology));
     Status                = status ?? throw new ArgumentNullException(nameof(status));
     Category              = category ?? throw new ArgumentNullException(nameof(category));
     AccessRestriction     = accessRestriction ?? throw new ArgumentNullException(nameof(accessRestriction));
     LeftSideStreetNameId  = leftSideStreetNameId;
     RightSideStreetNameId = rightSideStreetNameId;
     Lanes    = new RoadSegmentLaneAttribute[0];
     Widths   = new RoadSegmentWidthAttribute[0];
     Surfaces = new RoadSegmentSurfaceAttribute[0];
 }
예제 #6
0
 private AddRoadNode(RecordNumber recordNumber, RoadNodeId temporaryId, RoadNodeType type, NetTopologySuite.Geometries.Point geometry)
 {
     RecordNumber = recordNumber;
     TemporaryId  = temporaryId;
     Type         = type;
     Geometry     = geometry;
 }
예제 #7
0
        /// <summary>
        /// Add a binary attachment to existing record
        /// Can be file/image/mail/... depending on what ServiceNow allows
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="recordId">Record sys_id</param>
        /// <param name="filename">Name of the attachment</param>
        /// <param name="file">The attachment in binary format</param>
        /// <returns></returns>
        public async Task <RestResponseSingle <Attachment> > PostAttachment <T>(string recordId, string filename, byte[] file) where T : Record
        {
            if (string.IsNullOrWhiteSpace(recordId))
            {
                throw new ArgumentNullException(nameof(recordId));
            }
            if (!RecordNumber.IsValidId(recordId))
            {
                throw new ArgumentException("Invalid record ID.", nameof(recordId));
            }
            if (string.IsNullOrWhiteSpace(filename))
            {
                throw new ArgumentNullException(nameof(filename));
            }
            if (file == null || file.Length == 0)
            {
                throw new ArgumentNullException(nameof(file));
            }

            // Convert to safe values
            var nvs = new NameValueCollection
            {
                { "table_name", RecordTable.GetTableName <T>() },
                { "table_sys_id", recordId },
                { "file_name", HttpUtility.UrlEncode(filename) }
            };

            // Build url with keys
            var urlBuilder = new StringBuilder();

            urlBuilder.Append("attachment/file?");
            for (var i = 0; i < nvs.Keys.Count; i++)
            {
                if (i > 0)
                {
                    urlBuilder.Append("&");
                }
                var key = nvs.Keys[i];
                urlBuilder.AppendFormat("{0}={1}", key, nvs[key]);
            }
            var url = urlBuilder.ToString();

            // Post
            var response = await _Client.PostAsFileAsync(url, filename, file);

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsJsonAsync <RestResponseSingle <Attachment> >());
            }
            else
            {
                return new RestResponseSingle <Attachment>()
                       {
                           ErrorMsg = $"POST attachment error ({response.StatusCode}): {response.ReasonPhrase}"
                       }
            };
        }

        #endregion
    }
 public ProblematicDbaseRecordEnumerator(TDbaseRecord[] records, int failAt, Exception failure)
 {
     _records = records ?? throw new ArgumentNullException(nameof(records));
     _failAt  = failAt;
     _failure = failure;
     _index   = -1;
     _number  = RecordNumber.Initial;
 }
예제 #9
0
        /// <summary>
        /// Get ServiceNow child records by parent RecordNumber
        /// The maximum number of records returned is 5000
        /// </summary>
        /// <typeparam name="T">Record type</typeparam>
        /// <param name="number"></param>
        /// <returns></returns>
        public async Task <RestResponseQuery <T> > GetByParentNumber <T>(RecordNumber number) where T : Record
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }

            return(await Get <RestResponseQuery <T> >($"{GetUrl<T>()}?sysparm_limit=5000&sysparm_fields={RecordTable.GetFieldList<T>()}&sysparm_query=parent.number={number.Number}"));
        }
예제 #10
0
        public Data AsData(DataCollectorContext context)
        {
            DictionaryData d = new DictionaryData(context);

            d.Data["Message"]       = Message;
            d.Data["TimeGenerated"] = TimeGeneratedAsDateTimeOffset.ToString("o");
            d.Data["Source"]        = SourceName;
            d.Data["RecordNumber"]  = RecordNumber.ToString();
            d.Data["EventCode"]     = EventCode.ToString();
            return(d);
        }
예제 #11
0
        public override IShpRecordHeader Read(BinaryReader reader, WordCount origin)
        {
            var recordNumber  = RecordNumber.Read(reader, origin);
            var contentLength = ContentLength.Read(reader, origin);

            return(new ShpRecordHeader()
            {
                RecordNumber = recordNumber,
                ContentLength = contentLength
            });
        }
예제 #12
0
        // road segment

        public static FileError IdentifierNotUnique(this IDbaseFileRecordProblemBuilder builder,
                                                    RoadSegmentId identifier,
                                                    RecordNumber takenByRecordNumber)
        {
            return(builder
                   .Error(nameof(IdentifierNotUnique))
                   .WithParameters(
                       new ProblemParameter("Identifier", identifier.ToString()),
                       new ProblemParameter("TakenByRecordNumber", takenByRecordNumber.ToString())
                       )
                   .Build());
        }
예제 #13
0
        /// <summary>
        /// Get ServiceNow record of type T (which must inherit from Record) by id
        /// </summary>
        /// <typeparam name="T">Record type (example: SupportRequest)</typeparam>
        /// <param name="id">ServiceNow sys_id</param>
        /// <returns></returns>
        public Task <RestResponseSingle <T> > GetById <T>(string id) where T : Record
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                throw new ArgumentNullException(nameof(id));
            }
            if (!RecordNumber.IsValidId(id))
            {
                throw new ArgumentException("Invalid record ID.", nameof(id));
            }

            return(Get <RestResponseSingle <T> >($"{GetUrl<T>()}/{id}?sysparm_limit=1&sysparm_fields={RecordTable.GetFieldList<T>()}"));
        }
예제 #14
0
        /// <summary>
        /// Get ServiceNow record of type T (which must inherit from Record) by its number
        /// </summary>
        /// <typeparam name="T">Record type (example: SupportRequest)</typeparam>
        /// <param name="number">Instance of RecordNumber (example: new RecordNumber("SR1234567"))</param>
        /// <returns></returns>
        public async Task <RestResponseSingle <T> > GetByNumber <T>(RecordNumber number) where T : Record
        {
            if (number == null)
            {
                throw new ArgumentNullException(nameof(number));
            }

            var result = await GetByQuery <T>(@"number=" + number.Number);

            return(new RestResponseSingle <T>()
            {
                ErrorMsg = result.ErrorMsg, Result = result.Result?.FirstOrDefault()
            });
        }
 public bool MoveNext()
 {
     if (_index == _records.Length)
     {
         return(false);
     }
     _number = _index == -1
         ? RecordNumber.Initial
         : _number.Next();
     _index++;
     if (_index == _failAt)
     {
         throw _failure;
     }
     return(_index != _records.Length);
 }
예제 #16
0
파일: Trade.cs 프로젝트: radtek/Gradual
        public traderBean ToBean()
        {
            traderBean bean = new traderBean();

            bean.ID            = RecordNumber.ToString();
            bean.DATA_NEGOCIO  = TradeDate.ToString("yyyy-MM-dd");
            bean.HORA_NEGOCIO  = HoraNegocio;
            bean.NR_NEGOCIO    = TradeID;
            bean.CODNEG        = Papel;
            bean.SERPAP        = Serie;
            bean.OPERACAO      = Orientation;
            bean.QTDADE        = NumberOfContracts.ToString();
            bean.PDENEG        = Price.ToString(ciEn);
            bean.FC_NOME       = BuyerName;
            bean.NM_EMIT_ORDEM = TraderName;
            bean.MERCADO       = SegmentoBolsa;

            return(bean);
        }
예제 #17
0
        private static long GetLength(byte acbp, UInt32 storedLength, RecordNumber recordNumber)
        {
            bool isBig = (acbp & 0x02) != 0;

            if (isBig)
            {
                if (recordNumber == RecordNumber.SEGDEF32)
                {
                    return(0x100000000L);
                }
                else
                {
                    return(0x10000);
                }
            }
            else
            {
                return(storedLength);
            }
        }
예제 #18
0
        public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk)
        {
            var l = LogManager.GetLogger("EventRecord");

            RecordPosition = recordPosition;

            ChunkNumber = chunk.ChunkNumber;

            recordData.ReadInt32(); //signature

            Size         = recordData.ReadUInt32();
            RecordNumber = recordData.ReadInt64();
            Timestamp    = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime();

            if (recordData.PeekChar() != 0xf)
            {
                throw new Exception("Payload does not start with 0x1f!");
            }

            l.Trace(
                $"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}");

            Nodes = new List <IBinXml>();

            var eof = false;

            while (eof == false)
            {
                var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk);
                Nodes.Add(nextTag);

                if (nextTag is EndOfBXmlStream)
                //nothing left to do, so exit
                {
                    eof = true;
                }
            }

            BuildProperties();
        }
예제 #19
0
        public async Task <int> ComfirmAsync(IList <int> ids, int userId)
        {
            foreach (var id in ids)
            {
                var goods = await _purchaseGoodsBillnoRespository.GetIndexAsync(id);

                var changed = new StoreChangeApiModel
                {
                    ChangeTypeId        = (int)StoreChangeType.Purchase,
                    HospitalChangeGoods = new StoreChangeGoodsValueModel
                    {
                        HospitalGoodId = goods.HospitalGoods.Id,
                        ChangeQty      = goods.Qty,
                        Recrdno        = RecordNumber.Next((int)StoreChangeType.Purchase, id),
                    },
                };
                var recordId = _storeContext.CreateOrUpdate(changed, goods.Purchase.HospitalDepartment.Id, userId);
                _storeRecordBillnoContext.Create(id, recordId);
                _purchaseGoodsBillnoRespository.UpdateStatus(id, BillStatus.Comfirmed);
            }
            return(ids.Count);
        }
예제 #20
0
        public async Task <int> BillAsync(int id, int userId)
        {
            var model = await _checkListRespository.GetIndexAsync(id);

            var list = await _checkListGoodsRespository.GetPreviewListAsync(id);

            using (var trans = _defaultDbTransaction.Begin())
            {
                var goods1 = list.Where(x => x.StoreQty > x.CheckQty).Select(x => new StoreChangeGoodsValueModel
                {
                    HospitalGoodId = x.HospitalGoods.Id,
                    ChangeQty      = x.StoreQty - x.CheckQty,
                    Recrdno        = RecordNumber.Next((int)StoreChangeType.CheckListOut, x.Id),
                });
                _storeContext.BatchCreateOrUpdate(new BatchStoreChangeApiModel
                {
                    ChangeTypeId        = (int)StoreChangeType.CheckListOut,
                    HospitalChangeGoods = goods1.ToList(),
                }, model.HospitalDepartment.Id, userId);
                var goods2 = list.Where(x => x.StoreQty < x.CheckQty).Select(x => new StoreChangeGoodsValueModel
                {
                    HospitalGoodId = x.HospitalGoods.Id,
                    ChangeQty      = -x.StoreQty + x.CheckQty,
                    Recrdno        = RecordNumber.Next((int)StoreChangeType.CheckListIn, x.Id),
                });
                _storeContext.BatchCreateOrUpdate(new BatchStoreChangeApiModel
                {
                    ChangeTypeId        = (int)StoreChangeType.CheckListIn,
                    HospitalChangeGoods = goods2.ToList(),
                }, model.HospitalDepartment.Id, userId);

                _checkListRespository.UpdateStatus(id, CheckListStatus.Billed);
                trans.Commit();
            }
            return(0);
        }
예제 #21
0
 public override string ToString()
 {
     return
         ($"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff} Event Id: {EventId}");
 }
예제 #22
0
        public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk)
        {
            var l = LogManager.GetLogger("EventRecord");

            RecordPosition = recordPosition;

            ChunkNumber = chunk.ChunkNumber;

            recordData.ReadInt32(); //signature

            Size         = recordData.ReadUInt32();
            RecordNumber = recordData.ReadInt64();
            Timestamp    = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime();

            if (recordData.PeekChar() != 0xf)
            {
                throw new Exception("Payload does not start with 0x1f!");
            }

            l.Trace(
                $"\r\nRecord position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}");

            Nodes = new List <IBinXml>();

            var eof = false;

            while (eof == false)
            {
                var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk);
                Nodes.Add(nextTag);

                if (nextTag is EndOfBXmlStream)

                {
                    //nothing left to do, so exit
                    eof = true;

                    //check here if there is a 0x2a0x2a and if so, another record!

                    var found2a  = true; //danderspritz test
                    var maxCount = 0;
                    while (recordData.ReadByte() != 0x2a && maxCount < 15)
                    {
                        if (recordData.BaseStream.Position == recordData.BaseStream.Length)
                        {
                            found2a = false;
                            break; //out of data
                        }

                        maxCount += 1;
                    }

                    if (found2a)
                    {
                        //a secondary check to eliminate false positives
                        if (recordData.ReadByte() == 0x2a)
                        {
                            //back up two
                            recordData.BaseStream.Seek(-2, SeekOrigin.Current);

                            ExtraDataOffset = recordData.BaseStream.Position;
                        }
                    }
                }
            }

            BuildProperties();
        }
예제 #23
0
 public override void Write(BinaryWriter writer, IShpRecordHeader value, WordCount origin)
 {
     RecordNumber.Write(writer, value.RecordNumber, origin);
     ContentLength.Write(writer, value.ContentLength, origin);
 }
예제 #24
0
        public Response Load(int LineNumber)
        {
            try
            {
                int RecordCount = 0;
                int RecordNumber;
                int SubLineNumber;

                // tbl_Accounts
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Accounts into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) FROM tbl_Accounts;");
                reader        = QueryDatabase("SELECT * FROM tbl_Accounts;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Accounts.TryAdd(reader.GetInt32("Account_ID"), new _Accounts(reader.GetInt32("Account_ID"), reader.GetString("Username"), reader.GetString("Email"), reader.GetString("Password"), reader.GetBoolean("Logged_In")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Accounts, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Accounts, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Activity
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Activity into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Activity;");
                reader        = QueryDatabase("SELECT * FROM tbl_Activity;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Activity.Add(new _Activity(reader.GetInt32("Activity_ID"), reader.GetInt32("Account_ID"), (Activity)reader.GetInt32("Activity_Type"), reader.GetDateTime("DTStamp"), reader.GetString("Session_ID"), false));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Activity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Activity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Characters
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Characters into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Characters;");
                reader        = QueryDatabase("SELECT * FROM tbl_Characters;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Characters.TryAdd(reader.GetInt32("Character_ID"), new _Characters(reader.GetInt32("Character_ID"), reader.GetInt32("Account_ID"), reader.GetString("Character_Name"), reader.GetInt32("Character_Level"), reader.GetInt32("Gender"),
                                                                                                reader.GetFloat("Pos_X"), reader.GetFloat("Pos_Y"), reader.GetFloat("Pos_Z"), reader.GetFloat("Rotation_Y"),
                                                                                                reader.GetFloat("Camera_Pos_X"), reader.GetFloat("Camera_Pos_Y"), reader.GetFloat("Camera_Pos_Z"), reader.GetFloat("Camera_Rotation_Y"),
                                                                                                reader.GetInt32("Health"), reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("Experience")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Characters, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Characters, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Quests
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Quests into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Quests;");
                reader        = QueryDatabase("SELECT * FROM tbl_Quests;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Quests.TryAdd(reader.GetInt32("Quest_ID"), new _Quests(reader.GetInt32("Quest_ID"), reader.GetString("Title"), reader.GetString("Start_Text"), reader.GetString("End_Text"),
                                                                                    reader.GetInt32("Reward_ID"), reader.GetInt32("NPC_Start_ID"), reader.GetInt32("NPC_End_ID"), reader.GetInt32("Objective_Target"), reader.GetInt32("Start_Requirement_Quest_ID"),
                                                                                    reader.GetInt32("Item_Objective_ID"), reader.GetInt32("NPC_Objective_ID"), reader.GetInt32("Experience")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Quests, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Quests, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Quest_Log
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Quest_Log into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Quest_Log;");
                reader        = QueryDatabase("SELECT * FROM tbl_Quest_Log;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Quest_Log.TryAdd(reader.GetInt32("Log_ID"), new _Quest_Log(reader.GetInt32("Log_ID"), reader.GetInt32("Character_ID"),
                                                                                        reader.GetInt32("Quest_ID"), reader.GetInt32("Quest_Status"), reader.GetInt32("Progress")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Quest_Log, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Quest_Log, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_NPC
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_NPC into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_NPC;");
                reader        = QueryDatabase("SELECT * FROM tbl_NPC;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_NPC.TryAdd(reader.GetInt32("NPC_ID"), new _NPC(reader.GetInt32("NPC_ID"), reader.GetInt32("Status"), reader.GetString("Name"), reader.GetInt32("Level"),
                                                                            reader.GetInt32("HP"), reader.GetInt32("Gender"), reader.GetInt32("Respawn_Time"), reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("Experience")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_NPC, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_NPC, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Collectables
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Collectables into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Collectables;");
                reader        = QueryDatabase("SELECT * FROM tbl_Collectables;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Collectables.TryAdd(reader.GetInt32("Collectable_ID"), new _Collectables(reader.GetInt32("Collectable_ID"), reader.GetString("Collectable_Name"),
                                                                                                      reader.GetInt32("Respawn_Time")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Collectables, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Collectables, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Spawn_Positions
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Spawn_Positions into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Spawn_Positions;");
                reader        = QueryDatabase("SELECT * FROM tbl_Spawn_Positions;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Spawn_Positions.TryAdd(reader.GetInt32("Position_ID"), new _Spawn_Positions(reader.GetInt32("Position_ID"),
                                                                                                         reader.GetFloat("Pos_X"), reader.GetFloat("Pos_Y"), reader.GetFloat("Pos_Z"), reader.GetFloat("Rotation_Y"),
                                                                                                         reader.GetInt32("NPC_ID"), reader.GetInt32("Collectable_ID")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Spawn_Positions, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Spawn_Positions, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Experience
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Experience into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Experience;");
                reader        = QueryDatabase("SELECT * FROM tbl_Experience;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Experience.TryAdd(reader.GetInt32("XP_ID"), new _Experience(reader.GetInt32("XP_ID"), reader.GetInt32("Level"), reader.GetInt32("Experience"),
                                                                                         reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("HP")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Experience, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Experience, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                // tbl_Connectivity
                Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Connectivity into Cache..", Log.LogType.CACHE);
                RecordCount   = Count("SELECT COUNT(*) from tbl_Connectivity;");
                reader        = QueryDatabase("SELECT * FROM tbl_Connectivity;");
                RecordNumber  = 0;
                SubLineNumber = -1;
                while (reader.Read())
                {
                    Data.tbl_Connectivity.Add(new _Connectivity(reader.GetInt32("Character_ID"), reader.GetDateTime("DTStamp"),
                                                                reader.GetFloat("TCP_Latency"), reader.GetFloat("TCP_Throughput"), reader.GetInt32("TCP_Packets_Sent"), reader.GetInt32("TCP_Packets_Received"),
                                                                reader.GetFloat("UDP_Latency"), reader.GetFloat("UDP_Throughput"), reader.GetInt32("UDP_Packets_Sent"), reader.GetInt32("UDP_Packets_Received"),
                                                                false, reader.GetInt32("ID")));
                    ++RecordNumber;
                    if (SubLineNumber == -1)
                    {
                        SubLineNumber = Log.log("Downloading data from tbl_Connectivity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                    else
                    {
                        Log.log(SubLineNumber, "Downloading data from tbl_Connectivity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" +
                                ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE);
                    }
                }
                reader.Close();

                Log.log(LineNumber, "Initial synchronization of database successful, see below for a data summary report.", Log.LogType.CACHE);
                return(Response.SUCCESSFUL);
            }
            catch (Exception e)
            {
                Log.log("An error occurred when attempting to load data from the database. > " + e.Message, Log.LogType.ERROR);
                return(Response.ERROR);
            }
        }
예제 #25
0
        public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk)
        {
            var l = LogManager.GetLogger("EventRecord");

            RecordPosition = recordPosition;

            recordData.ReadInt32(); //signature

            Size         = recordData.ReadUInt32();
            RecordNumber = recordData.ReadInt64();
            Timestamp    = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime();

            if (recordData.PeekChar() != 0xf)
            {
                throw new Exception("Payload does not start with 0x1f!");
            }

            l.Trace(
                $"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}");

            Nodes = new List <IBinXml>();

            var eof = false;

            while (eof == false)
            {
                var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk);
                Nodes.Add(nextTag);

                if (nextTag is EndOfBXmlStream)
                //nothing left to do, so exit
                {
                    eof = true;
                }
            }

            var xml = ConvertPayloadToXml();


            using (var sr = new StringReader(xml))
            {
                var docNav = new XPathDocument(sr);
                var nav    = docNav.CreateNavigator();

                var computer      = nav.SelectSingleNode(@"/Event/System/Computer");
                var channel       = nav.SelectSingleNode(@"/Event/System/Channel");
                var eventRecordId = nav.SelectSingleNode(@"/Event/System/EventRecordID");
                var eventId       = nav.SelectSingleNode(@"/Event/System/EventID");
                var level         = nav.SelectSingleNode(@"/Event/System/Level");
                var timeCreated   = nav.SelectSingleNode(@"/Event/System/TimeCreated")?.GetAttribute("SystemTime", "");
                var provider      = nav.SelectSingleNode(@"/Event/System/Provider")?.GetAttribute("Name", "");
                var processId     = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ProcessID", "");
                var threadId      = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ThreadID", "");
                var userId        = nav.SelectSingleNode(@"/Event/System/Security")?.GetAttribute("UserID", "");

                TimeCreated = DateTimeOffset.Parse(timeCreated, null, DateTimeStyles.AssumeUniversal).ToUniversalTime();
                if (eventId != null)
                {
                    EventId = eventId.ValueAsInt;
                }

                //if (level != null)
                //{
                //    Level = level.ValueAsInt;
                //}

                //if (eventRecordId != null)
                //{
                //    EventRecordId = eventRecordId.Value;
                //}

                //if (processId != null)
                //{
                //    ProcessId = int.Parse(processId);
                //}

                //if (threadId != null)
                //{
                //    ThreadId = int.Parse(threadId);
                //}

                var payloadNode = nav.SelectSingleNode(@"/Event/EventData");
                if (payloadNode == null)
                {
                    payloadNode = nav.SelectSingleNode(@"/Event/UserData");
                }

                var payloadXml = payloadNode?.OuterXml;


                //if (EventLog.EventLogMaps.ContainsKey($"{EventId}-{channel.ToString().ToUpperInvariant()}"))
                //{
                //    l.Trace($"Found map for event id {EventId} with Channel '{channel}'!");
                //    var map = EventLog.EventLogMaps[$"{EventId}-{channel.ToString().ToUpperInvariant()}"];

                //    MapDescription = map.Description;

                //    foreach (var mapEntry in map.Maps)
                //    {
                //        var valProps = new Dictionary<string, string>();

                //        foreach (var me in mapEntry.Values)
                //        {
                //            //xpath out variables
                //            var propVal = nav.SelectSingleNode(me.Value);
                //            if (propVal != null)
                //            {
                //                var propValue = propVal.Value;

                //                if (me.Refine.IsNullOrEmpty() == false)
                //                {
                //                    var hits = new List<string>();

                //                    //regex time
                //                    MatchCollection allMatchResults = null;
                //                    try {
                //                        Regex regexObj = new Regex(me.Refine, RegexOptions.IgnoreCase);
                //                        allMatchResults = regexObj.Matches(propValue);
                //                        if (allMatchResults.Count > 0) {
                //                            // Access individual matches using allMatchResults.Item[]

                //                            foreach (Match allMatchResult in allMatchResults)
                //                            {
                //                                hits.Add(allMatchResult.Value);
                //                            }

                //                            propValue = string.Join(" | ", hits);

                //                        }

                //                    } catch (ArgumentException ) {
                //                        // Syntax error in the regular expression
                //                    }

                //                }

                //                valProps.Add(me.Name, propValue);
                //            }
                //            else
                //            {
                //                valProps.Add(me.Name, string.Empty);
                //                l.Warn(
                //                    $"Record # {RecordNumber} (Event Record Id: {EventRecordId}): In map for event '{map.EventId}', Property '{me.Value}' not found! Replacing with empty string");
                //            }
                //        }

                //        //we have the values, now substitute
                //        var propertyValue = mapEntry.PropertyValue;
                //        foreach (var valProp in valProps)
                //        {
                //            propertyValue = propertyValue.Replace($"%{valProp.Key}%", valProp.Value);
                //        }

                //        var propertyToUpdate = mapEntry.Property.ToUpperInvariant();

                //        if (valProps.Count == 0)
                //        {
                //            propertyToUpdate = "NOMATCH"; //prevents variables from showing up in the CSV
                //        }

                //        //we should now have our new value, so stick it in its place
                //        switch (propertyToUpdate)
                //        {
                //            case "USERNAME":
                //                UserName = propertyValue;
                //                break;
                //            case "REMOTEHOST":
                //                RemoteHost = propertyValue;
                //                break;
                //            case "EXECUTABLEINFO":
                //                ExecutableInfo = propertyValue;
                //                break;
                //            case "PAYLOADDATA1":
                //                PayloadData1 = propertyValue;
                //                break;
                //            case "PAYLOADDATA2":
                //                PayloadData2 = propertyValue;
                //                break;
                //            case "PAYLOADDATA3":
                //                PayloadData3 = propertyValue;
                //                break;
                //            case "PAYLOADDATA4":
                //                PayloadData4 = propertyValue;
                //                break;
                //            case "PAYLOADDATA5":
                //                PayloadData5 = propertyValue;
                //                break;
                //            case "PAYLOADDATA6":
                //                PayloadData6 = propertyValue;
                //                break;
                //            case "NOMATCH":
                //                //when a property was not found.
                //                break;
                //            default:
                //                l.Warn(
                //                    $"Unknown property name '{propertyToUpdate}'! Dropping mapping value of '{propertyValue}'");
                //                break;
                //}

                //sanity checks
                //UserId = userId ?? string.Empty;
                Provider = provider ?? string.Empty;
                Channel  = channel?.Value ?? string.Empty;
                Computer = computer?.Value ?? string.Empty;
                Payload  = payloadXml ?? string.Empty;
            }
        }
예제 #26
0
 public DbaseRecordEnumerator(IEnumerator <TDbaseRecord> enumerator)
 {
     _enumerator = enumerator ?? throw new ArgumentNullException(nameof(enumerator));
     _number     = RecordNumber.Initial;
     _state      = State.Initial;
 }
예제 #27
0
 public virtual string GetRecordNumberString() => RecordNumber.ToString("D6");
예제 #28
0
        internal static Record ReadRecord(
            BinaryReader binaryReader,
            RecordContext context,
            RecordNumber expectedRecord)
        {
            RecordReader reader = new RecordReader(binaryReader);
            if (expectedRecord != RecordNumber.None &&
                reader.RecordNumber != expectedRecord)
            {
                throw new InvalidDataException(string.Format(
                    "Expecting record {0}, but got record {1}.",
                    expectedRecord, reader.RecordNumber));
            }

            Record r;
            switch (reader.RecordNumber)
            {
                case RecordNumber.LibraryHeader:
                    r = new LibraryHeaderRecord(reader, context);
                    break;
                case RecordNumber.LibraryEnd:
                    r = new LibraryEndRecord(reader, context);
                    break;
                case RecordNumber.ALIAS:
                    r = new ALIASRecord(reader, context);
                    break;
                case RecordNumber.CEXTDEF:
                    r = new CEXTDEFRecord(reader, context);
                    break;
                case RecordNumber.COMDAT:
                case RecordNumber.COMDAT32:
                    r = new COMDATRecord(reader, context);
                    break;
                case RecordNumber.COMDEF:
                    r = new COMDEFRecord(reader, context);
                    break;
                case RecordNumber.COMENT:
                    r = new CommentRecord(reader, context);
                    break;
                case RecordNumber.EXTDEF:
                    r = new EXTDEFRecord(reader, context);
                    break;
                case RecordNumber.FIXUPP:
                case RecordNumber.FIXUPP32:
                    r = new FixupRecord(reader, context);
                    break;
                case RecordNumber.GRPDEF:
                    r = new GRPDEFRecord(reader, context);
                    break;
                case RecordNumber.LCOMDEF:
                    r = new LCOMDEFRecord(reader, context);
                    break;
                case RecordNumber.LEDATA:
                case RecordNumber.LEDATA32:
                    r = new LEDATARecord(reader, context);
                    break;
                case RecordNumber.LEXTDEF:
                case RecordNumber.LEXTDEF32:
                    r = new LEXTDEFRecord(reader, context);
                    break;
                case RecordNumber.LHEADR:
                    r = new LHEADRRecord(reader, context);
                    break;
                case RecordNumber.LIDATA:
                case RecordNumber.LIDATA32:
                    r = new LIDATARecord(reader, context);
                    break;
                case RecordNumber.LNAMES:
                    r = new ListOfNamesRecord(reader, context);
                    break;
                case RecordNumber.LPUBDEF:
                case RecordNumber.LPUBDEF32:
                    r = new LPUBDEFRecord(reader, context);
                    break;
                case RecordNumber.MODEND:
                    r = new MODENDRecord(reader, context);
                    break;
                case RecordNumber.PUBDEF:
                case RecordNumber.PUBDEF32:
                    r = new PUBDEFRecord(reader, context);
                    break;
                case RecordNumber.SEGDEF:
                case RecordNumber.SEGDEF32:
                    r = new SEGDEFRecord(reader, context);
                    break;
                case RecordNumber.THEADR:
                    r = new THEADRRecord(reader, context);
                    break;
                default:
                    r = new UnknownRecord(reader, context);
                    break;
            }

            // TODO: check all bytes are consumed.
            // ...

            // Update RecordContext.LastRecord. This is necessary so that
            // a FIXUPP record knows which record to fix up.
            if (context != null)
            {
                context.LastRecord = r;
            }

            return r;
        }
 public IShapeFileRecordProblemBuilder AtShapeRecord(RecordNumber number)
 {
     return(new FileProblemBuilder(_file, _parameters.Add(new ProblemParameter("RecordNumber", number.ToString()))));
 }
 public static IShapeFileRecordProblemBuilder AtShapeRecord(this ZipArchiveEntry entry, RecordNumber number)
 {
     return(new FileProblemBuilder(entry.Name).AtShapeRecord(number));
 }
예제 #31
0
 private static long GetLength(byte acbp, UInt32 storedLength, RecordNumber recordNumber)
 {
     bool isBig = (acbp & 0x02) != 0;
     if (isBig)
     {
         if (recordNumber == RecordNumber.SEGDEF32)
             return 0x100000000L;
         else
             return 0x10000;
     }
     else
     {
         return storedLength;
     }
 }
예제 #32
0
 public bool TryTranslateToRoadNodeId(RecordNumber number, out RoadNodeId translated)
 {
     return(_mapToRoadNodeId.TryGetValue(number, out translated));
 }