コード例 #1
0
        public ActionResult Create(PortfolioGroup portfolioGroup, HttpPostedFileBase fileupload)
        {
            if (ModelState.IsValid)
            {
                #region Upload and resize image if needed
                string newFilenameUrl = string.Empty;
                if (fileupload != null)
                {
                    string filename    = Path.GetFileName(fileupload.FileName);
                    string newFilename = Guid.NewGuid().ToString().Replace("-", string.Empty)
                                         + Path.GetExtension(filename);

                    newFilenameUrl = "/Uploads/PortfolioGroup/" + newFilename;
                    string physicalFilename = Server.MapPath(newFilenameUrl);

                    fileupload.SaveAs(physicalFilename);

                    portfolioGroup.ImageUrl = newFilenameUrl;
                }
                #endregion
                portfolioGroup.IsDelete             = false;
                portfolioGroup.CreationDate         = DateTime.Now;
                portfolioGroup.LastModificationDate = DateTime.Now;

                portfolioGroup.Id = Guid.NewGuid();
                db.PortfolioGroups.Add(portfolioGroup);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ParentId = new SelectList(db.PortfolioGroups, "Id", "Title", portfolioGroup.ParentId);
            return(View(portfolioGroup));
        }
コード例 #2
0
        public void IsSameAs_Compares_As_Entities(PortfolioGroup sut, object other, bool same)
        {
            //act.
            var isSame = sut.IsSameAs(other);

            //assert.
            isSame.Should().Be(same);
        }
コード例 #3
0
        public void Constructor_Initializes_Empty_PortfolioIdList_If_None_Passed()
        {
            //arrange / act.
            var sut = new PortfolioGroup(Guid.NewGuid(), "name");

            //assert.
            sut.PortfolioIdList.Should().NotBeNull();
            sut.PortfolioIdList.Should().BeEmpty();
        }
コード例 #4
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            PortfolioGroup portfolioGroup = db.PortfolioGroups.Find(id);

            portfolioGroup.IsDelete   = true;
            portfolioGroup.DeleteDate = DateTime.Now;

            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #5
0
        public void LoadData(DataTable dtGZB, PortfolioDataAdapterType type, DateTime start, DateTime end, string benchmarkcode)
        {
            //加载数据
            try
            {
                //纠正时间
                if (end < start)
                {
                    DateTime tmp = end;
                    end   = start;
                    start = tmp;
                }

                if (end > DateTime.Today.AddDays(-1))
                {
                    end = DateTime.Today.AddDays(-1);
                }

                //读取估值表
                IPortfolioDataAdapter adapter = PortfolioDataAdaptorFactory.GetAdapter(type);
                this.PortfGroup = adapter.BuildPortfolios(dtGZB, start, end);

                this.StartDate = this.PortfGroup.ExchangeTradingDays[0];
                this.EndDate   = this.PortfGroup.ExchangeTradingDays[this.PortfGroup.ExchangeTradingDays.Count - 1];

                //计算收益率和持仓
                if (PortfGroup.IsDataComplete() && PortfGroup.Portfolios.Count > 1)
                {
                    this.Calculate();
                }
                else
                {
                    throw new Exception(Message.C_Msg_PD3);
                }

                //无需比较基准
                if (benchmarkcode == null || benchmarkcode.Length == 0)
                {
                    return;
                }

                //建立比较基准并计算收益率
                this.Benchmark = new Index(benchmarkcode);
                this.Benchmark.SetDatePeriod(start, end);
                this.Benchmark.LoadData(DataInfoType.IndexComponents);
                this.Benchmark.LoadData(DataInfoType.HistoryTradePrice);
                this.Benchmark.ComponentsCalculate();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #6
0
 public virtual void BuildPortfolio(DataTable dtGZB, PortfolioDataAdapterType type, DateTime tradeday)
 {
     try
     {
         IPortfolioDataAdapter adapter = PortfolioDataAdaptorFactory.GetAdapter(type);
         PortfolioGroup        group   = adapter.BuildPortfolios(dtGZB, tradeday, tradeday);
         this.SecurityPortfolio = group.Portfolios[0];    //仅需要最新一期的持仓数据
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #7
0
        // GET: PortfolioGroups/Details/5
        public ActionResult Details(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PortfolioGroup portfolioGroup = db.PortfolioGroups.Find(id);

            if (portfolioGroup == null)
            {
                return(HttpNotFound());
            }
            return(View(portfolioGroup));
        }
コード例 #8
0
        // GET: PortfolioGroups/Edit/5
        public ActionResult Edit(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PortfolioGroup portfolioGroup = db.PortfolioGroups.Find(id);

            if (portfolioGroup == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ParentId = new SelectList(db.PortfolioGroups, "Id", "Title", portfolioGroup.ParentId);
            return(View(portfolioGroup));
        }
コード例 #9
0
        public void Constructor_Initializes_All_Values()
        {
            //arrange.
            var id              = Guid.NewGuid();
            var name            = "name123";
            var portfolioIdList = new List <Guid>
            {
                Guid.NewGuid(),
                Guid.NewGuid()
            };
            var notes = "notes123";

            //act.
            var sut = new PortfolioGroup(id, name, portfolioIdList, notes);

            //assert.
            sut.Id.Should().Be(id);
            sut.Name.Should().Be(name);
            sut.PortfolioIdList.Should().Equal(portfolioIdList);
            sut.Notes.Should().Be(notes);
        }
コード例 #10
0
        public ActionResult List(string pageGroupParam)
        {
            MenuData menu = new MenuData();


            List <Portfolio> portfolios;
            string           title;
            string           body;

            if (pageGroupParam == null)
            {
                portfolios = db.Portfolios.Where(current =>
                                                 current.IsActive == true && current.IsDelete == false).OrderBy(current => current.Order).ToList();
                body  = "";
                title = "نمونه کارها";
            }
            else
            {
                portfolios = db.Portfolios.Where(current =>
                                                 current.IsActive == true && current.IsDelete == false &&
                                                 current.PortfolioGroup.UrlParameter == pageGroupParam).OrderBy(current => current.Order).ToList();

                PortfolioGroup portfolioGroup = db.PortfolioGroups.FirstOrDefault(current => current.UrlParameter == pageGroupParam);

                title = portfolioGroup?.Title;
                body  = portfolioGroup?.Body;
            }


            PortfolioListViewModel portfolio = new PortfolioListViewModel()
            {
                Portfolio      = portfolios,
                PageGroupBody  = body,
                PageGroupTitle = title
            };

            ViewBag.Title = title;
            return(View(portfolio));
        }
コード例 #11
0
        public void LinuxSocketLeakTest() // See DEV-7152
        {
            ApiConfiguration config = ApiConfigurationBuilder.Build("secrets.json");
            var provider            = new ClientCredentialsFlowTokenProvider(config);

            var api = BuildApi();

            api.CreatePortfolioGroup("sdktest", new CreatePortfolioGroupRequest("TestGroup", displayName: "TestGroup"));

            // This loop should eventually throw a SocketException: "Address already in use" once all the sockets have been exhausted
            for (int i = 0; i < 50_000; i++)
            {
                api = BuildApi();
                PortfolioGroup result = api.GetPortfolioGroup("sdktest", "TestGroup");
                Assert.That(result, Is.Not.Null);

                // Option 1: force dispose of ApiClient
                //api.Configuration.ApiClient.Dispose();

                // Option 2: force all finalizers to run
                if (i % 100 == 0)
                {
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }
            }

            /*** Local Functions ***/
            IPortfolioGroupsApi BuildApi()
            {
                // An instance of HttpClient is created within LusidApiFactory.Configuration.ApiClient.RestClient
                // which wasn't being disposed
                ILusidApiFactory    factory = LusidApiFactoryBuilder.Build(config.ApiUrl, provider);
                IPortfolioGroupsApi api     = factory.Api <IPortfolioGroupsApi>();

                return(api);
            }
        }