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)); }
public void IsSameAs_Compares_As_Entities(PortfolioGroup sut, object other, bool same) { //act. var isSame = sut.IsSameAs(other); //assert. isSame.Should().Be(same); }
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(); }
public ActionResult DeleteConfirmed(Guid id) { PortfolioGroup portfolioGroup = db.PortfolioGroups.Find(id); portfolioGroup.IsDelete = true; portfolioGroup.DeleteDate = DateTime.Now; db.SaveChanges(); return(RedirectToAction("Index")); }
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; } }
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; } }
// 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)); }
// 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)); }
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); }
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)); }
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); } }