private async void btnImport_Click(object sender, EventArgs e) { IProgress <decimal> p = new Progress <decimal>(ImportProgressUpdate); btnImport.Enabled = false; await Task.Run(() => { var list = new List <Transaction>(); for (int i = 0; i < Data.Count; i++) { list.Add(Data[i].AsTransaction()); p.Report((decimal)i / Data.Count * 100.0m); } return(list); }) .ContinueWith(f => { return(ContextHelpers.AddTransactions(f.Result.ToArray())); }).Unwrap() .ContinueWith(v => { btnImport.Enabled = true; this.lblPercentage.Text = string.Empty; this.progressBar1.Value = 0; }, TaskScheduler.FromCurrentSynchronizationContext()); }
public CultureSelectorResult GetCulture(HttpContextBase context) { if (context == null || ContextHelpers.IsRequestAdmin(context)) { return(null); } // Attempt to determine culture by route. // This normally happens when you are using non standard pages that are not content items // {culture}/foo or ?culture={culture} var routeCulture = context.Request.RequestContext.RouteData.Values["culture"] ?? context.Request.RequestContext.HttpContext.Request.Params["culture"]; if (routeCulture != null && !string.IsNullOrWhiteSpace(routeCulture.ToString())) { try { var culture = CultureInfo.GetCultureInfo(routeCulture.ToString()); return(new CultureSelectorResult { Priority = -3, CultureName = culture.Name }); } catch {} } return(null); }
public void SetCulture(string culture) { var httpContext = _httpContextAccessor.Current(); if (httpContext == null) { return; } var cookieName = ContextHelpers.IsRequestAdmin(httpContext) ? AdminCookieName : FrontEndCookieName; var cookie = new HttpCookie(cookieName, culture) { Expires = _clock.UtcNow.AddYears(DefaultExpireTimeYear), }; if (!String.IsNullOrEmpty(_shellSettings.RequestUrlHost)) { cookie.Domain = _shellSettings.RequestUrlHost; } if (!String.IsNullOrEmpty(_shellSettings.RequestUrlPrefix)) { cookie.Path = GetCookiePath(httpContext); } httpContext.Request.Cookies.Remove(cookieName); httpContext.Response.Cookies.Remove(cookieName); httpContext.Response.Cookies.Add(cookie); }
public void BindModel_ReturnsExpectedFacebookRedirectContext() { FacebookConfiguration config = new FacebookConfiguration(); config.AppId = "123456"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookRedirectContextModelBinder redirectContextBinder = new FacebookRedirectContextModelBinder(config); ControllerContext controllerContext = ContextHelpers.CreateControllerContext( null, new NameValueCollection { { "originUrl", "https://apps.facebook.com/123456/home/index" }, { "permissions", "email,user_likes" } }); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookRedirectContext context = Assert.IsType <FacebookRedirectContext>(redirectContextBinder.BindModel(controllerContext, modelBindingContext)); Assert.Equal("https://apps.facebook.com/123456/home/index", context.OriginUrl); Assert.Equal("https://www.facebook.com/dialog/oauth?redirect_uri=https%3A%2F%2Fapps.facebook.com%2F123456%2Fhome%2Findex&client_id=123456&scope=email%2Cuser_likes", context.RedirectUrl); Assert.Equal(2, context.RequiredPermissions.Length); Assert.Equal("email", context.RequiredPermissions[0]); Assert.Equal("user_likes", context.RequiredPermissions[1]); Assert.Same(config, context.Configuration); }
public async void GetData() { var data = await Task.Run(() => { return(ContextHelpers.InvestmentsPerSource()); }); var model = new PlotModel(); var series = new PieSeries() { StrokeThickness = 2.0, InsideLabelPosition = 0.5, AngleSpan = 360, StartAngle = 0, InnerDiameter = 0.4 }; foreach (var d in data) { series.Slices.Add(new PieSlice(d.Source.ToString(), (double)d.Amount)); } model.Series.Add(series); this.plotView1.Model = model; }
private void MediaServiceSaving(IMediaService sender, Umbraco.Core.Events.SaveEventArgs <Umbraco.Core.Models.IMedia> e) { UmbracoContext umbContext = ContextHelpers.EnsureUmbracoContext(); if (umbContext.Security.CurrentUser != null && (umbContext.Security.CurrentUser.UserType.Alias != "admin" && umbContext.Security.CurrentUser.StartMediaId == -1)) { BackOfficeUtils.ValidateMediaUploadAccess(umbContext.Security.CurrentUser.Id, sender, e); } }
public string GetPropertyId(PropertyInfo property) { var context = this.contextResolver.GetContext(property.ReflectedType); if (context != null) { return(ContextHelpers.GetExpandedIri(context, property.GetJsonPropertyName())); } return(null); }
public void Should_return_mapped_prefixed_term() { // given const string term = "xsd:integer"; // when var uri = ContextHelpers.GetExpandedIri(SingleContext, term); // then uri.Should().Be(Xsd.integer); }
public void Should_return_null_if_it_is_no_mapped() { // given const string term = "no_such_term"; // when var uri = ContextHelpers.GetExpandedIri(EmptyContext, term); // then uri.Should().BeNull(); }
public void Should_return_directly_mapped_term() { // given const string term = "givenName"; // when var uri = ContextHelpers.GetExpandedIri(SingleContext, term); // then uri.Should().Be(Foaf.givenName); }
public void Should_return_term_mapped_to_prefixed_name() { // given const string term = "time_prop"; // when var uri = ContextHelpers.GetExpandedIri(SingleContext, term); // then uri.Should().Be(Xsd.time); }
public void InsertOrUpdate(T obj) { if (!_dbSet.Local.Contains(obj)) { _dbSet.Attach(obj); } _dbSet.Add(obj); if (_dbSet != null) { ContextHelpers.ApplyStateChanges(db); } }
public void Delete(T obj) { if (!_dbSet.Local.Contains(obj)) { _dbSet.Attach(obj); } _dbSet.Remove(obj); if (_dbSet != null) { ContextHelpers.ApplyStateChanges(db); } }
public void BindModel_ReturnsInvalidModelState_WhenSignedRequestIsNull() { FacebookConfiguration config = new FacebookConfiguration(); config.AppSecret = "abcdef"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookContextModelBinder contextBinder = new FacebookContextModelBinder(config); ControllerContext controllerContext = ContextHelpers.CreateControllerContext(); ModelBindingContext modelBindingContext = new ModelBindingContext(); object context = contextBinder.BindModel(controllerContext, modelBindingContext); Assert.Null(context); Assert.False(modelBindingContext.ModelState.IsValid); }
/// <summary> /// Gets the property identifier from the @context /// or as concatenation of class and property name. /// </summary> public string GetPropertyId(PropertyInfo property, Uri classId) { var context = _contextResolver.GetContext(property.ReflectedType); if (context != null) { var mappedTerm = ContextHelpers.GetExpandedIri(context, property.GetJsonPropertyName()); if (mappedTerm != null) { return(mappedTerm); } } return(GetFallbackPropertyId(property, property.GetJsonPropertyName(), classId)); }
public CultureSelectorResult GetCulture(HttpContextBase context) { if (context == null || ContextHelpers.IsRequestAdmin(context)) { return(null); } // Attempt to determine culture by previous route if by POST string path; if (context.Request.HttpMethod.Equals(HttpVerbs.Post.ToString(), StringComparison.OrdinalIgnoreCase)) { if (context.Request.UrlReferrer != null) { path = context.Request.UrlReferrer.AbsolutePath; } else { return(null); } } else { path = context.Request.Path; } var appPath = context.Request.ApplicationPath ?? "/"; var requestUrl = (path.StartsWith(appPath) ? path.Substring(appPath.Length) : path).TrimStart('/'); var prefix = _shellSettings.RequestUrlPrefix; if (!string.IsNullOrEmpty(prefix)) { requestUrl = (requestUrl.StartsWith(prefix) ? requestUrl.Substring(prefix.Length) : requestUrl).TrimStart('/'); } var content = GetByPath(requestUrl); if (content != null) { return(new CultureSelectorResult { Priority = -2, CultureName = _localizationService.Value.GetContentCulture(content) }); } return(null); }
private Task <HttpResponseMessage> HandleListViewStartNodes(HttpRequestMessage request, CancellationToken cancellationToken) { // do at root in the media section or in the picker when it should be limited if (request.RequestUri.Query.Contains("id=-1") && (request.RequestUri.Query.Contains("pageNumber=1") || Settings.LimitPickersToStartNodes)) { IUser user = ContextHelpers.EnsureUmbracoContext().Security.CurrentUser; ApplicationContext appContext = ContextHelpers.EnsureApplicationContext(); int[] startNodes = StartNodeRepository.GetCachedStartNodesByUserId(user.Id, appContext, appContext.DatabaseContext).Media; if (user.UserType.Alias == "admin" || startNodes == null) { return(base.SendAsync(request, cancellationToken)); } return(base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; if (!response.IsSuccessStatusCode) { return response; } try { HttpContent data = response.Content; ObjectContent dataContent = ((ObjectContent)(data)); int itemCount = startNodes.Length; IMedia[] startIMedia = appContext.Services.MediaService.GetByIds(startNodes).ToArray(); var pagedResult = new PagedResult <ContentItemBasic <ContentPropertyBasic, IMedia> >(itemCount, 1, itemCount); pagedResult.Items = startIMedia .Select(Mapper.Map <IMedia, ContentItemBasic <ContentPropertyBasic, IMedia> >); dataContent.Value = pagedResult; } catch (Exception ex) { LogHelper.Error <WebApiHandler>("Could not replace start nodes.", ex); } return response; } )); } return(base.SendAsync(request, cancellationToken)); }
private Task <HttpResponseMessage> RemoveInaccessibleNodesFromSearchResults(HttpRequestMessage request, CancellationToken cancellationToken) { IUser user = ContextHelpers.EnsureUmbracoContext().Security.CurrentUser; StartNodeCollection startNodes = StartNodeRepository.GetCachedStartNodesByUserId(user.Id); if (user.UserType.Alias == "admin") { return(base.SendAsync(request, cancellationToken)); } return(base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; if (!response.IsSuccessStatusCode) { return response; } try { HttpContent data = response.Content; ObjectContent dataContent = ((ObjectContent)(data)); IEnumerable <EntityTypeSearchResult> entities = dataContent.Value as IEnumerable <EntityTypeSearchResult>; EntityTypeSearchResult contentResults = entities.FirstOrDefault(e => e.EntityType == "Document"); EntityTypeSearchResult mediaResults = entities.FirstOrDefault(e => e.EntityType == "Media"); if (startNodes.Content != null && contentResults.Results.Any()) { contentResults.Results = contentResults.Results.Where(e => PathContainsAStartNode(e.Path, startNodes.Content)); } if (startNodes.Media != null && mediaResults.Results.Any()) { mediaResults.Results = mediaResults.Results.Where(e => PathContainsAStartNode(e.Path, startNodes.Media)); } } catch (Exception ex) { LogHelper.Error <WebApiHandler>("Could not remove inaccessible nodes from search results.", ex); } return response; } )); }
public void MarshalConfigTests(Type type, bool marshalEnable, bool marshalSerialize, bool marshalParse) { ITypeModel typeModel = RuntimeTypeModel.CreateFrom(type); var tm = Assert.IsType <ValueStructTypeModel>(typeModel); Assert.Equal(marshalSerialize, tm.CanMarshalOnSerialize); Assert.Equal(marshalParse, tm.CanMarshalOnParse); var options = new FlatBufferSerializerOptions { EnableValueStructMemoryMarshalDeserialization = marshalEnable }; CodeGeneratedMethod serializeMethod = tm.CreateSerializeMethodBody(ContextHelpers.CreateSerializeContext(options)); CodeGeneratedMethod parseMethod = tm.CreateParseMethodBody(ContextHelpers.CreateParserContext(options)); Assert.Equal(parseMethod.MethodBody.Contains("MemoryMarshal.Cast"), marshalEnable && marshalParse); Assert.Equal(serializeMethod.MethodBody.Contains("MemoryMarshal.Cast"), marshalEnable && marshalSerialize); }
public static GetRuleValue GetRulesEvaluator(IdentityHashSet identities, GetLoadedContextByIdentityType contextByIdentity, GetRule getRule) { var identityTypes = identities.Select(x => x.Type).ToArray(); var flattenContext = ContextHelpers.FlattenLoadedContext(contextByIdentity); GetRuleValue getRuleValue = null; GetContextValue recursiveContext = key => { if (key.StartsWith("@@key:")) { key = key.Replace("@@key:", "keys."); } if (!key.StartsWith("keys.")) { return(Option <JsonValue> .None); } var path = new ConfigurationPath(key.Split('.')[1]); return(getRuleValue(path).Map(x => x.Value)); }; var context = ContextHelpers.Merge(flattenContext, recursiveContext); getRuleValue = Memoize(path => { try { foreach (var identity in identityTypes) { var fixedResult = ContextHelpers.GetFixedConfigurationContext(context, identity)(path); if (fixedResult.IsSome) { return(fixedResult); } } return(getRule(path).Bind(x => x.GetValue(context))); } catch (Exception e) { return(ConfigurationValue.Error(e)); } }); return(getRuleValue); }
public void BindModel_ReturnsInvalidModelState_WhenPermissionsIsNull() { FacebookConfiguration config = new FacebookConfiguration(); config.AppId = "123456"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookRedirectContextModelBinder redirectContextBinder = new FacebookRedirectContextModelBinder(config); ControllerContext controllerContext = ContextHelpers.CreateControllerContext( null, new NameValueCollection { { "originUrl", "https://apps.facebook.com/123456/home/index" } }); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookRedirectContext context = Assert.IsType <FacebookRedirectContext>(redirectContextBinder.BindModel(controllerContext, modelBindingContext)); Assert.False(modelBindingContext.ModelState.IsValid); }
public void BindModel_ReturnsExpectedFacebookContext_WhenSignedRequestComesFromForm() { FacebookConfiguration config = new FacebookConfiguration(); config.AppSecret = "3e29b24f825e737d97aed5eb62df5076"; config.ClientProvider = new DefaultFacebookClientProvider(config); FacebookContextModelBinder contextBinder = new FacebookContextModelBinder(config); ControllerContext controllerContext = ContextHelpers.CreateControllerContext(new NameValueCollection { { "signed_request", "x1yDEgacN3N5iu23Ji8NLYp9LGO1-cUXKHTJQrMqzVQ.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOjEzNTM5MTMyMDAsImlzc3VlZF9hdCI6MTM1MzkwNzQ5Miwib2F1dGhfdG9rZW4iOiJBQUFGUlJPcWtwZ01CQURBSjNQZk5vNldXMlJ5WkFSQ1hjU0daQlhpNTBLTG9wRzFwYmFwc2M2aThKY3h6WkFQN1pDSnlpcXVHYlc3WXlCam1aQjh0UWpyelZ2VTNrYm44b3N3WXR5czkzTWdaRFpEIiwidXNlciI6eyJjb3VudHJ5IjoidXMiLCJsb2NhbGUiOiJlbl9VUyIsImFnZSI6eyJtaW4iOjIxfX0sInVzZXJfaWQiOiIxNzgyNTkwMSJ9" } }); ModelBindingContext modelBindingContext = new ModelBindingContext(); FacebookContext context = Assert.IsType <FacebookContext>(contextBinder.BindModel(controllerContext, modelBindingContext)); Assert.NotNull((object)context.SignedRequest); Assert.NotNull(context.AccessToken); Assert.Equal("17825901", context.UserId); }
public bool Undo(string packageName, XmlNode xmlData) { try { ApplicationContext appContext = ContextHelpers.EnsureApplicationContext(); DatabaseSchemaHelper databaseSchemaHelper = new DatabaseSchemaHelper(appContext.DatabaseContext.Database, ContextHelpers.EnsureApplicationContext().ProfilingLogger.Logger, appContext.DatabaseContext.SqlSyntax); databaseSchemaHelper.DropTable <UserStartNodes>(); return(true); } catch (Exception ex) { var message = string.Concat("Error at undo ", this.Alias(), " package action: ", ex); LogHelper.Error(typeof(CreateDatabase), message, ex); } return(false); }
private Task <HttpResponseMessage> RemoveInaccessibleNodesFromContentSearchResults(HttpRequestMessage request, CancellationToken cancellationToken) { if (!request.RequestUri.Query.ToLower().Contains("type=document")) { return(base.SendAsync(request, cancellationToken)); } IUser user = ContextHelpers.EnsureUmbracoContext().Security.CurrentUser; int[] startNodes = StartNodeRepository.GetCachedStartNodesByUserId(user.Id).Content; if (user.UserType.Alias == "admin" || startNodes == null) { return(base.SendAsync(request, cancellationToken)); } return(base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; if (!response.IsSuccessStatusCode) { return response; } try { HttpContent data = response.Content; ObjectContent dataContent = ((ObjectContent)(data)); IEnumerable <EntityBasic> entities = dataContent.Value as IEnumerable <EntityBasic>; entities = entities.Where(e => PathContainsAStartNode(e.Path, startNodes)); dataContent.Value = entities; } catch (Exception ex) { LogHelper.Error <WebApiHandler>("Could not remove inaccessible nodes from search results.", ex); } return response; } )); }
public CultureSelectorResult GetCulture(HttpContextBase context) { if (context == null) { return(null); } var cookieName = ContextHelpers.IsRequestAdmin(context) ? AdminCookieName : FrontEndCookieName; var cookie = context.Request.Cookies.Get(cookieName); if (cookie != null) { return new CultureSelectorResult { Priority = -1, CultureName = cookie.Value } } ; return(null); }
private Task <HttpResponseMessage> HandleRootChildFolders(HttpRequestMessage request, CancellationToken cancellationToken) { if (request.RequestUri.Query.Contains("id=-1")) { IUser user = ContextHelpers.EnsureUmbracoContext().Security.CurrentUser; ApplicationContext appContext = ContextHelpers.EnsureApplicationContext(); int[] startNodes = StartNodeRepository.GetCachedStartNodesByUserId(user.Id, appContext, appContext.DatabaseContext).Media; if (user.UserType.Alias == "admin" || startNodes == null) { return(base.SendAsync(request, cancellationToken)); } return(base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; if (!response.IsSuccessStatusCode) { return response; } try { HttpContent data = response.Content; ObjectContent dataContent = ((ObjectContent)(data)); IEnumerable <int> folderTypes = appContext.Services.ContentTypeService.GetAllMediaTypes().ToArray().Where(x => x.Alias.EndsWith("Folder")).Select(x => x.Id); IMedia[] children = appContext.Services.MediaService.GetByIds(startNodes).ToArray(); dataContent.Value = children.Where(x => folderTypes.Contains(x.ContentTypeId)).Select(Mapper.Map <IMedia, ContentItemBasic <ContentPropertyBasic, IMedia> >); } catch (Exception ex) { LogHelper.Error <WebApiHandler>("Could not replace start nodes.", ex); } return response; } )); } return(base.SendAsync(request, cancellationToken)); }
private Task <HttpResponseMessage> RemoveInacessibleContentNodesFromPath(HttpRequestMessage request, CancellationToken cancellationToken) { IUser user = ContextHelpers.EnsureUmbracoContext().Security.CurrentUser; int[] startNodes = StartNodeRepository.GetCachedStartNodesByUserId(user.Id).Content; if (user.UserType.Alias == "admin" || startNodes == null) { return(base.SendAsync(request, cancellationToken)); } return(base.SendAsync(request, cancellationToken) .ContinueWith(task => { HttpResponseMessage response = task.Result; if (!response.IsSuccessStatusCode) { return response; } try { HttpContent data = response.Content; ContentItemDisplay content = ((ObjectContent)(data)).Value as ContentItemDisplay; if (!PathContainsAStartNode(content.Path, startNodes)) { response.StatusCode = HttpStatusCode.Forbidden; // prevent users from editing a node they shouldn't } content.Path = RemoveStartNodeAncestors(content.Path, startNodes); } catch (Exception ex) { LogHelper.Error <WebApiHandler>("Could not update path.", ex); } return response; } )); }
public DateTime?[] MaxRange() { DateTime?lowest = DateTime.Now; DateTime?highest = DateTime.Now; foreach (var dt in ContextHelpers.GetRange()) { var low = dt.Value[0].Value; if (low < lowest) { lowest = low; } var high = dt.Value[1].Value; if (high > highest) { highest = high; } } return(new DateTime?[2] { lowest, highest }); }
public async Task <object[]> GetSeries(DateTime from, DateTime to) { return(await Task.Run(() => { var dateRange = Enumerable.Range(0, 1 + to.Subtract(from).Days) .Select(offset => from.AddDays(offset)) .ToArray(); var data = ContextHelpers.GetTransactions(GetTransactionSource(), from, to); var rentPerDay = new LineSeries() { Title = GetLineSeriesName(Resources.RENT_DAY), Smooth = true }; var serieInterestTotal = new LineSeries() { Title = GetLineSeriesName(Resources.RENT_TOTAL) }; var serieBalance = new LineSeries() { Title = GetLineSeriesName(Resources.BALANCE) }; var serieInvestment = new LineSeries() { Title = GetLineSeriesName(Resources.INVESTMENTS) }; var serieDeposits = new LineSeries() { Title = GetLineSeriesName("Deposits") }; var serieYield = new LineSeries() { Title = GetLineSeriesName("Yield"), Smooth = true }; var serieXirr = new LineSeries() { Title = GetLineSeriesName("Xirr") }; var dataForIRR = data.Where(f => f.TransactionType == TransactionType.Interest || f.TransactionType == TransactionType.Investment || f.TransactionType == TransactionType.Principal); foreach (var date in dateRange) { var transToday = data.Where(tr => tr.Date.Value.Date == date.Date).OrderBy(d => d.Date.Value); double timestamp = OxyPlot.Axes.DateTimeAxis.ToDouble(date.Date); var transactionsInterestToday = transToday.Where(t => t.TransactionType == TransactionType.Interest).Sum(f => f.Amount); rentPerDay.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(transactionsInterestToday))); var sumInterest = data.Where(tr => tr.Date.Value.Date <= date.Date && tr.TransactionType == TransactionType.Interest).Sum(tr => tr.Amount); serieInterestTotal.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(sumInterest))); var transactionBalance = transToday.Any() ? transToday.Last().Balance.Value : data.Where(f => f.Balance.HasValue && f.Date.Value <= date.Date).Any() ? data.Where(f => f.Balance.HasValue && f.Date.Value <= date.Date).Last().Balance : 0; if (transactionBalance.HasValue) { serieBalance.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(transactionBalance))); } decimal investmentsBalance = transToday.Where(t => t.TransactionType == TransactionType.Investment).Sum(f => f.Amount); serieInvestment.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(investmentsBalance))); decimal desposits = transToday.Where(t => t.TransactionType == TransactionType.Deposit).Sum(f => f.Amount); serieDeposits.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(desposits))); // Yield var deposits = data.Where(f => f.Date.Value.Date <= date.Date && f.TransactionType == TransactionType.Deposit).Sum(f => f.Amount); var withdraws = data.Where(f => f.Date.Value.Date <= date.Date && f.TransactionType == TransactionType.Withdraw).Sum(f => f.Amount); var rent = data.Where(f => f.Date.Value.Date <= date.Date && f.TransactionType == TransactionType.Interest).Sum(f => f.Amount); var totalAsset = deposits - withdraws; if (totalAsset != 0) { serieYield.Points.Add(new OxyPlot.DataPoint(timestamp, Convert.ToDouble(rent / totalAsset) * 100)); } // xirr var gr = dataForIRR.Where(f => f.Date.Value <= date.Date) .GroupBy(f => f.LoanId, (v, y) => new { transactions = y, done = y.Where(f => f.TransactionType != TransactionType.Investment).Sum(f => f.Amount) > (y.First(f => f.TransactionType == TransactionType.Investment).Amount * -1), loanId = v, xiir = y.Any(f => f.TransactionType == TransactionType.Investment) && y.Any(f => f.TransactionType == TransactionType.Interest || f.TransactionType == TransactionType.Principal) && y.Where(f => f.TransactionType != TransactionType.Investment).Sum(f => f.Amount) > (y.First(f => f.TransactionType == TransactionType.Investment).Amount * -1) ? IRR(y.Select(f => f.Amount), y.Select(f => f.Date.Value)) : null }).Where(f => f.done && f.xiir.HasValue); if (gr.Any()) { serieXirr.Points.Add(new OxyPlot.DataPoint(timestamp, gr.Average(v => v.xiir.Value))); } } return new object[5] { rentPerDay, serieInterestTotal, serieBalance, //serieInvestment, //serieDeposits, serieYield, serieXirr }; })); }
public DateTime?[] MaxRange() { return(ContextHelpers.GetRange()[TransactionSource.Grupeer]); }