コード例 #1
0
        public static List <PositionElement> Positions()
        {
            IgPositions igPositions = new IgPositions();
            string      positions   = igPositions.Get(session);

            PositionsList          positionsList     = JsonConvert.DeserializeObject <PositionsList>(positions);
            List <PositionElement> positionsToReturn = new List <PositionElement>();

            double total  = 0.0;
            double profit = 0.0;

            Console.WriteLine($"{"Name".PadRight(40)}{"Epic".PadRight(22)}{"Size".PadLeft(6)} { "Bid".PadLeft(8) }   Stop \t    Value \tOpen \t   Profit \tReturn\t  Deal Id ");
            foreach (PositionElement position in positionsList.Positions.OrderBy(p => p.Market.InstrumentName))
            {
                double value            = position.Position.DealSize * position.Market.Bid;
                double open             = position.Position.OpenLevel * position.Position.DealSize;
                double returnPercentage = (value - open) / open;
                double stopPercentage   = (position.Market.Bid - position.Position.StopLevel) / position.Market.Bid;
                total  += value;
                profit += value - open;
                Console.WriteLine($"{position.Market.InstrumentName.Truncate(38).PadRight(40)}{position.Market.Epic.PadRight(22)}{position.Position.DealSize.ToString().PadLeft(6)}  {position.Market.Bid.ToString("N2").PadLeft(8)}  {stopPercentage.ToString("P1")} \t {Math.Round(value, 2).ToString("N0").PadLeft(8)}\t {Math.Round(open)}\t {Math.Round(value - open, 2).ToString("N2").PadLeft(8)}\t { returnPercentage.ToString("P1")}\t  {position.Position.DealId}");
                positionsToReturn.Add(position);
            }


            Console.WriteLine($"Total {total.ToString("N0")} Profit {profit.ToString("N2")}");
            Console.WriteLine($"Positions {positionsList.Positions.Count()}");

            return(positionsToReturn);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: CharlesAlbert/TopOA
        private static void Main()
        {
            // Use the .Net Core DI container:
            IServiceProvider serviceProvider = new DefaultCompositionRoot().Initialize();

            // Log in:
            var loginCommand   = new LoginCommand(Token);
            var loginValidator = serviceProvider.GetService <IValidator <LoginCommand> >();

            if (loginValidator.Validate(loginCommand) != ErrorCode.NoError)
            {
                return;
            }
            var loginCommandHandler = serviceProvider.GetService <ICommandHandler <LoginCommand> >();

            loginCommandHandler.Execute(loginCommand);

            // Get a list of positions:
            var posistionsQuery    = new PositionsQuery();
            var positionsValidator = serviceProvider.GetService <IValidator <PositionsQuery> >();

            if (positionsValidator.Validate(posistionsQuery) != ErrorCode.NoError)
            {
                return;
            }
            var           positionsReader = serviceProvider.GetService <IQueryHandler <PositionsQuery, PositionsList> >();
            PositionsList positions       = positionsReader.Query(posistionsQuery);
        }
コード例 #3
0
 public Security(IReadOnlyList <IDataBar> bars, string symbol, ISecurity security)
 {
     Bars       = bars;
     Symbol     = symbol;
     Positions  = new PositionsList(this);
     m_security = security;
 }
コード例 #4
0
 private Security(IReadOnlyList <IDataBar> bars, string symbol, ISecurity security, Interval interval)
 {
     Bars             = bars;
     Symbol           = symbol;
     Positions        = new PositionsList(security);
     m_security       = security;
     IntervalInstance = interval;
 }
コード例 #5
0
    public void PrepareShoot(PositionsList positionList)
    {
        Camera cam    = Camera.main;
        float  height = 2f * cam.orthographicSize;
        float  width  = ((height * cam.aspect) * 0.8f);


        /*
         *
         * //float foward = positionList.LenghtLine/height;
         * //NOVO FOWARD
         * float foward = positionList.ListOfPositions.Count / 100f;
         * //Debug.Log("height: "+ height);
         * float curve = Mathf.Abs(positionList.WidhtLine/width);
         * //Debug.Log("width: " + width);
         *
         *
         *
         * //Calculo da distancia do Init pro fim
         * //float up = ((height / 2) - positionList.InitPoint.y) / height;
         *
         * //NOVO UP
         * float up = positionList.LenghtLine / (height/2);
         *
         * up = up * 1f;
         * //Debug.Log("GC - up: " + up);
         *
         *
         * //Debug.Log("right: " + positionList.VerticalMedium + "/"+width);
         * //Debug.Log("Screen.width  " +Screen.width);
         * float right = positionList.VerticalMedium / width;
         * right = right * 1.5f;
         * //Debug.Log("GC - right: " + right);
         *
         */
        //NOVO CODIGO


        float foward = positionList.ListOfPositions.Count / 100f;
        float up     = positionList.LenghtLine / (height / 2);
        float right  = positionList.WidhtLine / width;

        float curve = Mathf.Abs(positionList.VerticalMedium / width);

        //Debug.Log("curve:  " + curve);

        if (!Ball)
        {
            Ball = GameObject.Find("Bola(Clone)").GetComponent <Ball>();
        }
        Ball.PrepareShoot(foward, up, right, curve);
        Shoot();
    }
コード例 #6
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (!IsPostBack)
            {
                PositionsList.SetSortingOrder(
                    new BocListSortingOrderEntry((IBocSortableColumnDefinition)PositionsList.FixedColumns.Find("Position"), SortingDirection.Ascending));
            }

            if (PositionsList.IsReadOnly)
            {
                PositionsList.Selection = RowSelection.Disabled;
            }
        }
コード例 #7
0
ファイル: AAnimation.cs プロジェクト: w359405949/AUnityFrame
 public SQT UpdateSQT(string jointName)
 {
     currentJointName = jointName;
     if (PositionsList.ContainsKey(currentJointName))
     {
         UpdatePosition();
         UpdateRotation();
         UpdateScale();
     }
     else         //如果找不到该关节,则把权重设为0,不再参与接下来的计算(除了容错以外还可用于遮罩功能).
     {
         CurentSQT.SetAllWeight(0);
     }
     return(CurentSQT);
 }
コード例 #8
0
ファイル: AAnimation.cs プロジェクト: w359405949/AUnityFrame
    void UpdatePosition()
    {
        //更新每一根关节的位置.
        if (!PositionsList.ContainsKey(currentJointName))
        {
            return;
        }
        List <YamlSQTData> pList = PositionsList[currentJointName];

        if (FindKeyFrames(pList))
        {
            CurentSQT.Position_Weight = 1;
            CurentSQT.Position        = HermiteTool.GetHermitePoint_T(frameLerp, (YamlPositionData)preFrameData, (YamlPositionData)nexFrameData, aAnimator.LerpType);
        }
        else
        {
            CurentSQT.Position_Weight = 0;
        }
    }
コード例 #9
0
    //创建仓库场景
    #region Create_Scene
    public void Create_Scene(ParametersList1 PL, PositionsList POL, string Path)
    {
        HighStoreShelf_Parameter HP  = PL.HP;
        MultiHighBay_Parameter   MHP = PL.MHP;
        RollerConveyor_Parameter RCP = PL.RCP;
        float      TempValue1        = RCP.RCLength;
        float      TempValue2        = RCP.RCWidth;
        float      TempValue3        = TempValue2 - HP.Size.x;
        GameObject WarehouseScene    = new GameObject(); WarehouseScene.name = Name;//创建场景
        //存放货物
        GameObject Cargos = new GameObject();

        Cargos.name = "Cargos"; Cargos.transform.parent = WarehouseScene.transform;
        Cargos.transform.localPosition = new Vector3(0, 0, 0);
        //添加地面
        GameObject obj    = (GameObject)Resources.Load("Scene/Dimian");
        GameObject dimian = Instantiate(obj);
        float      Width  = HP.Size.z + 8 * RCP.RCLength;

        dimian.transform.localScale    = new Vector3(Width, 0.1f, Width);
        dimian.transform.parent        = WarehouseScene.transform;
        dimian.transform.localPosition = new Vector3(-(Width / 2 - RCP.RCLength * 4), -0.05f, -(Width / 2 - 2 * RCP.RCLength));
        //添加入口滚筒输送机
        GameObject               EnterRollerConveyor = new GameObject();
        RollerConveyorType       type = RollerConveyorType.Intact;
        RollerConveyor_Parameter RCP2 = new RollerConveyor_Parameter();

        RCP2          = PL.RCP; RCP2.RCHigh = RCP2.RCHigh - 0.1f;
        RCP2.RCLength = enterRollerLength;//长度自定义
        //RCP2.RCLength = PL.HP.Size.x * 2 + PL.MHP.HookupDistance + PL.MHP.TunnelWidth - RCP2.RCWidth;
        RollerConveyor.Create_RollerConveyor(RCP2, EnterRollerConveyor, type);
        EnterRollerConveyor.name             = "EnterRollerConveyor";
        EnterRollerConveyor.transform.parent = WarehouseScene.transform;
        EnterRollerConveyor.transform.Rotate(0, -90, 0);
        EnterRollerConveyor.transform.localPosition = new Vector3((RCP2.RCLength + TempValue3), 0, -TempValue2 / 2);
        //添加入口顶升移栽机
        LiftTransferParameter LTP = new LiftTransferParameter();

        LTP.High         = PL.RCP.RCHigh - 0.1f;
        LTP.Width        = PL.RCP.RCWidth;
        LTP.RollerRadius = PL.RCP.RollerRadius;
        LTP.GearDiameter = PL.RCP.RollerRadius * 2;
        GameObject enterLiftTransfer = new GameObject();

        LiftTransfer1.CreateLiftTransfer(enterLiftTransfer, ref LTP);
        enterLiftTransfer.name             = "EnterLiftTransfer";
        enterLiftTransfer.transform.parent = WarehouseScene.transform;
        float tempEnterX = RCP2.RCLength - (PL.HP.Size.x - LTP.Width) + LTP.Width / 2;//入口顶升的X坐标

        enterLiftTransfer.transform.localPosition = new Vector3(tempEnterX, 0, -TempValue2 / 2);
        //添加入口皮带输送机
        GameObject EnterBeltConveyors = new GameObject(); EnterBeltConveyors.name = "EnterBeltConveyors";

        Create_EnterBeltConveyors(PL, EnterBeltConveyors);
        EnterBeltConveyors.transform.parent        = WarehouseScene.transform;
        EnterBeltConveyors.transform.localPosition = new Vector3(tempEnterX, 0, 0);
        //添加顶升移载机设备
        GameObject LiftTransferGroup = new GameObject(); LiftTransferGroup.name = "LiftTransferGroup";

        Create_LiftTransferGroup(PL, LiftTransferGroup);
        LiftTransferGroup.transform.parent        = WarehouseScene.transform;
        LiftTransferGroup.transform.localPosition = new Vector3(0, 0, -TempValue2 / 2);
        //添加滚筒输送机(垂直于高架库方向)
        GameObject RollerConveyorGroup = new GameObject(); RollerConveyorGroup.name = "RollerConveyorGroup";

        Create_RollerConveyorGroup(PL, RollerConveyorGroup);
        RollerConveyorGroup.transform.parent        = WarehouseScene.transform;
        RollerConveyorGroup.transform.localPosition = new Vector3(0, 0, -TempValue2 / 2);
        //添加皮带输送机(平行于高架库方向)
        GameObject BeltConveyorGroup = new GameObject(); BeltConveyorGroup.name = "BeltConveyorGroup";

        Create_BeltConveyorGroup(PL, BeltConveyorGroup);
        BeltConveyorGroup.transform.parent        = WarehouseScene.transform;
        BeltConveyorGroup.transform.localPosition = new Vector3(0, 0, -TempValue2);
        //为场景添加高架库设备
        GameObject HighBays1 = new GameObject(); HighBays1.name = "HighBayGroup";

        HighBay2.Create_HighBays(HP, MHP, HighBays1);
        HighBays1.transform.parent        = WarehouseScene.transform;
        HighBays1.transform.localPosition = new Vector3(0, 0, -(3 * TempValue1 + TempValue2));
        //为场景添加堆垛机设备
        GameObject PilerGroup = new GameObject(); PilerGroup.name = "PilerGroup";

        Create_Pilers(PL, PilerGroup);
        PilerGroup.transform.parent        = WarehouseScene.transform;
        PilerGroup.transform.localPosition = new Vector3(0, 0, -(TempValue1 + TempValue2));
        //添加出口滚筒输送机
        GameObject ExitRollerConveyor    = new GameObject();
        RollerConveyor_Parameter exitRCP = PL.RCP;

        exitRCP.RCLength = exitRollerLength; exitRCP.RCHigh = PL.RCP.RCHigh - 0.1f;
        RollerConveyor.Create_RollerConveyor(exitRCP, ExitRollerConveyor, RollerConveyorType.Intact);
        ExitRollerConveyor.name             = "ExitRollerConveyor";
        ExitRollerConveyor.transform.parent = WarehouseScene.transform;
        int   j         = (PL.MHP.Num + 1) / 2 - 1;
        float tempExitX = -PL.HP.Size.x - j * (PL.HP.Size.x * 2 + PL.MHP.HookupDistance + PL.MHP.TunnelWidth);

        ExitRollerConveyor.transform.Rotate(0, -90, 0);
        ExitRollerConveyor.transform.localPosition = new Vector3(tempExitX, 0, -TempValue2 / 2);
        //添加出口顶升移栽机
        GameObject ExitLiftTransfer = new GameObject();

        ExitLiftTransfer.name = "ExitLiftTransfer";
        LiftTransfer1.CreateLiftTransfer(ExitLiftTransfer, ref LTP);
        ExitLiftTransfer.transform.parent = WarehouseScene.transform;
        tempExitX = tempExitX - exitRollerLength - LTP.Width / 2;
        ExitLiftTransfer.transform.localPosition = new Vector3(tempExitX, 0, -TempValue2 / 2);
        //添加出口皮带输送线
        GameObject ExitBeltConveyors = new GameObject();

        ExitBeltConveyors.name = "ExitBeltConveyors";
        Create_ExitBeltConveyors(PL, ExitBeltConveyors);
        ExitBeltConveyors.transform.parent        = WarehouseScene.transform;
        ExitBeltConveyors.transform.localPosition = new Vector3(tempExitX, 0, 0);
        //给场景添加Message
        WarehouseScene.AddComponent <ShowKeyPositionData>();
        ShowKeyPositionData ShowKeyData = WarehouseScene.GetComponent <ShowKeyPositionData>();
        KeyPositionsData    KPD         = new KeyPositionsData();

        //float[] HighValues = { 1.2f, 1.1f };
        //SI.HighValues = HighValues;
        Create_SceneInfo(ref PL, out KPD);
        ShowKeyData.KeyPositionsData = KPD;
        //Debug.Log(KPD.ConveyorLengths);
        //WarehouseScene.AddComponent<SceneData>();
        //SceneData SD = WarehouseScene.GetComponent<SceneData>();
        //Information sd = new Information(); sd.Name = "Name"; sd.Num = 2;
        ////WarehouseScene.GetComponent<SceneData>().
        //SD.IN = sd;
        GameObject Cargo = new GameObject(); Cargo.name = "Cargo";

        Cargo1.Create_Cargo(KPD.CargoSize, Cargo);
        //SD.IN.Num = 2; SD.IN.Name = "A";
        //输出场景
        MyClass.CreatePrefab(WarehouseScene, Path);
        MyClass.CreatePrefab(Cargo, path2 + Cargo.name);

        //根据参数预创建一个存储状态面板
        //GameObject StorageStateInterface = new GameObject();
        //StorageStateInterface.name = "StorageStateInterface";
        BinsPanel.Ajustment(MHP.Num, HP.FloorsNum, HP.ColumnsNum);
        BinsPanel.Ajustment2(MHP.Num, HP.FloorsNum, HP.ColumnsNum);
        //GameObject.Find("ScriptsContainer").GetComponent<MyClass>().CreatePrefab(StorageStateInterface, path2 +"Simulation/" +StorageStateInterface.name);
    }
コード例 #10
0
    //输出多线路运动数据
    #region Create_PositionsList
    public void Create_PositionsList(ref ParametersList1 PL, out PositionsList PositonsList)
    {
        HighStoreShelf_Parameter HP  = PL.HP;
        MultiHighBay_Parameter   MHP = PL.MHP;
        RollerConveyor_Parameter RCP = PL.RCP;
        float ConveryorsLength       = 2 * HP.ColumnWidth;

        //高架库位置信息
        //HighBayPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        float[,] HighBayPositions = new float[MHP.Num, 3];
        for (int i = 0; i < MHP.Num; i++)
        {
            HighBayPositions[i, 0] = -(HP.Size.x / 2 + i * HP.Size.x + ((i + 1) / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
            HighBayPositions[i, 1] = 0; HighBayPositions[i, 2] = -PL.Distance - ConveryorsLength + HP.ColumnWidth;
        }
        //输送线的数据
        //ConveyorPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        //[i,4]记录输送线的长度,
        float[,] ConveyorPositions = new float[MHP.Num, 4];
        for (int i = 0; i < MHP.Num; i++)
        {
            ConveyorPositions[i, 1] = 0; ConveyorPositions[i, 2] = -PL.Distance;
            ConveyorPositions[i, 3] = 2 * HP.ColumnWidth;
            switch (i % 2)
            {
            case 0:
                ConveyorPositions[i, 0] = -((i + 1) * HP.Size.x + (i / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
                ConveyorPositions[i, 0] = ConveyorPositions[i, 0] + RCP.RCWidth / 2;
                break;

            case 1:
                ConveyorPositions[i, 0] = -(i * HP.Size.x + ((i + 1) / 2) * MHP.TunnelWidth + (i / 2) * MHP.HookupDistance);
                ConveyorPositions[i, 0] = ConveyorPositions[i, 0] - RCP.RCWidth / 2;
                break;
            }
        }
        //堆垛机的坐标数据
        //PilerPositions[i,0]记录第i个高架库坐标的X值,[i,1]记录第i个高架库坐标的Y值,[i,2]记录第i个高架库坐标的Z值;
        float[,] PilerPositions = new float[(MHP.Num + 1) / 2, 3];
        for (int i = 0; i < (MHP.Num + 1) / 2; i++)
        {
            PilerPositions[i, 0] = -(MHP.TunnelWidth / 2 + i * (MHP.TunnelWidth + MHP.HookupDistance) + (2 * i + 1) * HP.Size.x);
            PilerPositions[i, 1] = 0; PilerPositions[i, 2] = -PL.Distance - ConveryorsLength + 2 * HP.ColumnWidth;
        }
        //高架库仓位数据
        float[,,,] StorageBinPositions = new float[HP.FloorsNum, HP.ColumnsNum, 2, 3];
        float temphigh = HP.FloorsHigh[0];

        for (int i = 0; i < HP.FloorsNum; i++)
        {
            for (int j = 0; j < HP.ColumnsNum; j++)
            {
                StorageBinPositions[i, j, 0, 0] = 0; StorageBinPositions[i, j, 0, 1] = temphigh;
                StorageBinPositions[i, j, 0, 2] = -(HP.ColumnWidth * (j + 1) + HP.ColumnWidth / 4);
                StorageBinPositions[i, j, 1, 0] = 0; StorageBinPositions[i, j, 1, 1] = temphigh;
                StorageBinPositions[i, j, 1, 2] = -(HP.ColumnWidth * (j + 1) + 3 * HP.ColumnWidth / 4);
            }
            temphigh = temphigh + HP.FloorsHigh[i + 1];
        }
        //
        PositionsList POL;

        POL.HighBayPositions    = HighBayPositions; POL.PilerPositons = PilerPositions; POL.ConveyorPositons = ConveyorPositions;
        POL.StorageBinPositions = StorageBinPositions;
        PositonsList            = POL;
    }
コード例 #11
0
 public void AllowDraw()
 {
     canDraw       = true;
     canTimer      = true;
     positionsList = new PositionsList();
 }
コード例 #12
0
ファイル: SearchSelectionQuery.cs プロジェクト: BionStt/NHCM
        public async Task <List <SearchedSelectionModel> > Handle(SearchSelectionQuery request, CancellationToken cancellationToken)
        {
            List <SearchedSelectionModel> result    = new List <SearchedSelectionModel>();
            List <SearchedPosition>       Positions = new List <SearchedPosition>();

            if (request.PositionId != null)
            {
                Positions = await _mediator.Send(new SearchPositionQuery()
                {
                    Id = request.PositionId
                });
            }
            else
            {
                Positions = await _mediator.Send(new SearchPositionQuery()
                {
                    OrganoGramId = request.OrganoGramId
                });
            }
            if (request.Id != null)
            {
                SearchedSelectionModel Record = await(from Selection in _context.Selection
                                                      join Person in _context.Person on Selection.PersonId equals Person.Id into Persons
                                                      from PersonResult in Persons.DefaultIfEmpty()
                                                      join P in Positions on Selection.PositionId equals P.Id into PositionsList
                                                      from PositionResult in PositionsList.DefaultIfEmpty()
                                                      where Selection.PositionId == PositionResult.Id
                                                      select new SearchedSelectionModel
                {
                    PersonName       = PersonResult.FirstName + " " + PersonResult.LastName,
                    SelectionId      = Selection.Id,
                    Id               = Selection.Id,
                    EffectiveDate    = Selection.EffectiveDate,
                    EventTypeId      = Selection.EventTypeId,
                    Remarks          = Selection.Remarks,
                    FinalNo          = Selection.FinalNo,
                    QadamID          = Selection.QadamID,
                    VerdictDate      = Selection.VerdictDate,
                    VerdictRegNo     = Selection.VerdictRegNo,
                    PersonId         = Selection.PersonId,
                    NodeId           = Convert.ToInt32(PositionResult.Id),
                    PositionId       = Convert.ToInt32(PositionResult.Id),
                    ParentNodeId     = Convert.ToInt32(PositionResult.ParentId),
                    OrganogramId     = Convert.ToInt32(PositionResult.OrganoGramId),
                    WorkAreaText     = PositionResult.WorkAreaText,
                    PositionTypeText = PositionResult.PositionTypeText,
                    RankText         = PositionResult.RankText,
                    OrgUnitText      = PositionResult.OrgUnitText,
                    Sorter           = PositionResult.Sorter,
                    Code             = PositionResult.Code,
                    LocationText     = PositionResult.LocationText,
                    DepartmentID     = Selection.DepartmentID,
                    Title            = PositionResult.PositionTypeText + " " + PositionResult.WorkAreaText
                }).SingleOrDefaultAsync(cancellationToken);
                result.Add(Record);
            }
            else
            {
                foreach (SearchedPosition P in Positions)
                {
                    SearchedSelectionModel Record = new SearchedSelectionModel();
                    if (_context.Selection.Any(c => c.PositionId == P.Id))
                    {
                        Record = await(from Selection in _context.Selection
                                       join Person in _context.Person on Selection.PersonId equals Person.Id into Persons
                                       from PersonResult in Persons.DefaultIfEmpty()
                                       where Selection.PositionId == P.Id
                                       select new SearchedSelectionModel
                        {
                            PersonName    = PersonResult.FirstName + " " + PersonResult.LastName,
                            SelectionId   = Selection.Id,
                            Id            = Selection.Id,
                            EffectiveDate = Selection.EffectiveDate,
                            EventTypeId   = Selection.EventTypeId,
                            Remarks       = Selection.Remarks,
                            FinalNo       = Selection.FinalNo,
                            VerdictDate   = Selection.VerdictDate,
                            VerdictRegNo  = Selection.VerdictRegNo,
                            PersonId      = Selection.PersonId,
                            DepartmentID  = Selection.DepartmentID
                        }).SingleOrDefaultAsync(cancellationToken);
                    }
                    Record.NodeId           = Convert.ToInt32(P.Id);
                    Record.PositionId       = Convert.ToInt32(P.Id);
                    Record.ParentNodeId     = Convert.ToInt32(P.ParentId);
                    Record.OrganogramId     = Convert.ToInt32(P.OrganoGramId);
                    Record.WorkAreaText     = P.WorkAreaText;
                    Record.PositionTypeText = P.PositionTypeText;
                    Record.RankText         = P.RankText;

                    Record.OrgUnitText  = P.OrgUnitText;
                    Record.Sorter       = P.Sorter;
                    Record.Code         = P.Code;
                    Record.RankText     = P.RankText;
                    Record.LocationText = P.LocationText;
                    Record.Title        = P.PositionTypeText + " " + P.WorkAreaText;
                    result.Add(Record);
                }
            }
            return(result);
        }