public object GetYearlyTransfers(int?year)
        {
            List <ChartValue> chartValues = new List <ChartValue>();
            var transfers = GetTransfers();

            if (GetTransfers().Count() != 0)
            {
                int startYear = transfers.Min(x => x.Date).Year;

                for (int i = startYear; i <= DateTime.Now.Year; ++i)
                {
                    var currentYearTransfers = transfers.Where(x => x.Date.Year == i);

                    ChartValue income = new ChartValue
                    {
                        Name   = i.ToString(),
                        Legend = "Income",
                        Value  = currentYearTransfers.Where(x => x.Value > 0).Sum(y => y.Value)
                    };

                    ChartValue expense = new ChartValue
                    {
                        Name   = i.ToString(),
                        Legend = "Expense",
                        Value  = 0 - currentYearTransfers.Where(x => x.Value < 0).Sum(y => y.Value)
                    };

                    chartValues.Add(income);
                    chartValues.Add(expense);
                }
            }

            return(chartValues);
        }
        double AddDatum(double balance, DateTime start, DateTime end, Transaction t, IList <ChartValue> timeData, double v)
        {
            // for this math to work, we have to ignore "time" in the dates.
            start = new DateTime(start.Year, start.Month, start.Day);
            end   = new DateTime(end.Year, end.Month, end.Day);
            TimeSpan r = (end - start);
            int      d = r.Days;

            if (d == 0)
            {
                // multiple transactions on the same day, just add the data values.
                int        i     = timeData.Count - 1;
                ChartValue datum = timeData[i];
                if (datum.UserData != t)
                {
                    datum.Value += v;
                    datum.Label  = GetLabel(datum.Value, t);
                }
            }
            else
            {
                // spread the transactions across a range to fill the gaps so the graph spans the whole time span.
                DateTime today = DateTime.Today;
                DateTime date  = start;
                for (int i = 0; i < d; i++)
                {
                    string label = GetLabel(balance, t);
                    timeData.Add(new ChartValue(label, balance, t));
                    date = date.AddDays(1);
                }
            }
            return(balance);
        }
        public object GetYearlyBalanceReports()
        {
            List <ChartValue> chartValues = new List <ChartValue>();
            var balanceReports            = GetBalanceReports().OrderBy(x => x.Date);

            if (balanceReports.Count() != 0)
            {
                int startYear = GetBalanceReports().Min(x => x.Date).Year;

                for (int i = startYear; i <= DateTime.Now.Year; ++i)
                {
                    BalanceReport balanceReport = GetBalanceReports().Where(x => x.Date.Year == i).LastOrDefault();

                    ChartValue chartValue = new ChartValue
                    {
                        Name  = i.ToString(),
                        Value = balanceReport?.Balance ?? 0
                    };

                    chartValues.Add(chartValue);
                }
            }

            return(chartValues);
        }
Exemple #4
0
        public JsonResult GetDebitMovementsOverTime()
        {
            var interval = new Interval(DateTime.Now, DateTimeUnitEnums.Months, 6);

            var intervalsByMonth = interval.GetIntervalsByMonth();

            var dataSetActualExpenditures = new ChartDataset();
            var expenditures = _expenditureService.GetExpenditures(new Models.SearchParameters.ExpenditureGetListSearchParameters()
            {
                UserId = CurrentUser, StartDate = interval.StartDate, EndDate = interval.EndDate
            });

            foreach (var intervalByMonth in intervalsByMonth)
            {
                var expendituresByMonth = expenditures.Where(x => intervalByMonth.Value.IsBetween(x.DateExpenditure));
                var value = new ChartValue(((int)expendituresByMonth.Sum(x => x.Cost)).ToString());
                dataSetActualExpenditures.Values.Add(value);
            }

            var chartData = new ChartData()
            {
                Labels        = intervalsByMonth.Keys.ToList(),
                ChartDatasets = new List <ChartDataset>()
                {
                    dataSetActualExpenditures
                }
            };

            return(Json(chartData, JsonRequestBehavior.AllowGet));
        }
Exemple #5
0
 /// <summary>
 /// Remove a ChartValue object from the collection.
 /// </summary>
 public void Remove(ChartValue item)
 {
     if (List.Contains(item))
     {
         List.Remove(item);
     }
 }
        public object GetMonthlyTransfers(int?year)
        {
            List <ChartValue> chartValues = new List <ChartValue>();

            year = year ?? DateTime.Now.Year;
            var transfers = GetTransfers().Where(x => x.Date.Year == year);
            DateTimeFormatInfo formatInfo = new DateTimeFormatInfo();

            for (int i = 1; i <= 12; ++i)
            {
                string monthName             = formatInfo.GetMonthName(i).ToString();
                var    currentMonthTransfers = transfers.Where(x => x.Date.Month == i);

                ChartValue income = new ChartValue
                {
                    Name   = monthName,
                    Legend = "Income",
                    Value  = currentMonthTransfers.Where(x => x.Value > 0).Sum(y => y.Value)
                };

                ChartValue expense = new ChartValue
                {
                    Name   = monthName,
                    Legend = "Expense",
                    Value  = 0 - currentMonthTransfers.Where(x => x.Value < 0).Sum(y => y.Value)
                };

                chartValues.Add(income);
                chartValues.Add(expense);
            }

            return(chartValues);
        }
        public Dictionary <Item, int> GetItemsFromChartWithoutItems(DateTime since, ChartValue value, string itemType)
        {
            List <SocialMediaPost> posts = ReadPostsSince(since).ToList();

            if (value == ChartValue.trendPersons)
            {
                return(GetTrendPersonData(posts));
            }
            else if (value == ChartValue.trendOrganizations)
            {
                return(GetTrendOrganizationData(posts));
            }
            else if (value == ChartValue.trendThemes)
            {
                return(GetTrendThemeData(posts));
            }
            else if (value == ChartValue.trendMostPositive)
            {
                return(GetTrendSentimentData(posts, itemType, true));
            }
            else if (value == ChartValue.trendMostNegative)
            {
                return(GetTrendSentimentData(posts, itemType, false));
            }
            return(null);
        }
Exemple #8
0
 private void invokeValueChanged(ChartValue value)
 {
     if (_visible)
     {
         if (ValueChanged != null)
         {
             ValueChanged(this, new EventArgs());
         }
     }
 }
Exemple #9
0
 /// <summary>
 /// Add a ChartValue object to the collection.
 /// </summary>
 public ChartValue Add(ChartValue item)
 {
     // Avoid adding the same item multiple times.
     if (!Contains(item))
     {
         item._owner = _owner;
         int index = List.Add(item);
         return((ChartValue)List[index]);
     }
     return(item);
 }
Exemple #10
0
        private BotStick[] KuCoinChartValueArrayToBotStickArray(ChartValue values)
        {
            var botStickList = new List <BotStick>();

            int i = values.close.Length;

            for (int j = 0; j < i; j++)
            {
                var iVal   = j;
                var volume = values.volume[iVal];
                var close  = values.close[j];
                if (close == 0)
                {
                    var k = j;
                    while (k < (i - 1))
                    {
                        k++;
                        close = values.close[k];
                        if (k < (i - 1) && close != 0)
                        {
                            iVal = k;
                        }
                    }
                    if (close == 0 && j > 0)
                    {
                        k     = j - 1;
                        close = values.close[k];
                        if (close != 0)
                        {
                            iVal = k;
                        }
                    }
                    volume = 0M;
                }
                if (values.close != null)
                {
                    var botStick = new BotStick
                    {
                        close     = values.close[iVal],
                        closeTime = values.timestamp[iVal],
                        high      = values.high[iVal],
                        low       = values.low[iVal],
                        open      = values.open[iVal],
                        volume    = volume
                    };

                    botStickList.Add(botStick);
                }
            }

            return(botStickList.ToArray());
        }
        public string GetTitle(Item item)
        {
            string title = "";

            if (ChartValue == ChartValue.hashtags || ChartValue == ChartValue.words || ChartValue == ChartValue.persons || ChartValue == ChartValue.postsPerDate)
            {
                string word = "";
                switch (ChartValue)
                {
                case ChartValue.postsPerDate: word = "posts"; break;

                default: word = ChartValue.ToString(); break;
                }
                title = $"Aantal {word} van " + item.Name;
            }
            else if (ChartValue == ChartValue.trendMostNegative || ChartValue == ChartValue.trendMostPositive)
            {
                title = $"Meest ";
                if (ChartValue == ChartValue.trendMostNegative)
                {
                    title += "negatieve ";
                }
                else
                {
                    title += "positieve ";
                }
                title += ItemType + " (%)";
            }
            else
            {
                title = $"Aantal posts per ";
                if (ChartValue == ChartValue.trendPersons)
                {
                    title += "persoon";
                }
                else if (ChartValue == ChartValue.trendOrganizations)
                {
                    title += "organisatie";
                }
                else if (ChartValue == ChartValue.trendThemes)
                {
                    title += "thema";
                }
            }
            if (Saved == true)
            {
                title += " (opgeslagen)";
            }
            return(title);
        }
        public Dictionary <string, int> GetDataFromPost(DateTime since, ChartValue value, Item item = null)
        {
            List <SocialMediaPost> results = GetPostsFromItem(item, since);

            if (value == ChartValue.hashtags)
            {
                return(GetHashtagData(results));
            }
            else if (value == ChartValue.persons)
            {
                return(GetPersonData(results));
            }
            else if (value == ChartValue.words)
            {
                return(GetWordData(results));
            }
            return(null);
        }
Exemple #13
0
        public async Task <IActionResult> EditValue([FromBody] EditValueRequest request)
        {
            return(await MethodWrapper(async (token) =>
            {
                ChartValue chartValue = await Context.ChartValues.FirstOrDefaultAsync(art => art.ID == request.ID);

                if (request.Value != 0)
                {
                    chartValue.Value = request.Value;
                }

                Context.ChartValues.Update(chartValue);

                await Context.SaveChangesAsync();

                return Ok(chartValue);
            }, request));
        }
Exemple #14
0
        public async Task <IActionResult> AddChartValue([FromBody] AddValueRequest request)
        {
            return(await MethodWrapper(async (token) =>
            {
                var newValue = new ChartValue
                {
                    Value = request.Value,
                    Date = request.Date,
                    IsMorning = request.IsMorning,
                    UserId = token.UserId
                };

                await Context.ChartValues.AddAsync(newValue);

                await Context.SaveChangesAsync();

                return Ok(newValue);
            }, request));
        }
        public object GetMonthlyBalanceReports(int?year)
        {
            List <ChartValue> chartValues = new List <ChartValue>();

            year = year ?? DateTime.Now.Year;
            var balanceReports            = GetBalanceReports().Where(x => x.Date.Year == year).OrderBy(y => y.Date);
            DateTimeFormatInfo formatInfo = new DateTimeFormatInfo();

            for (int i = 1; i <= 12; ++i)
            {
                BalanceReport balanceReport = balanceReports.Where(x => x.Date.Month == i).LastOrDefault();
                string        monthName     = formatInfo.GetMonthName(i).ToString();

                ChartValue chartValue = new ChartValue
                {
                    Name  = monthName,
                    Value = balanceReport?.Balance ?? 0
                };

                chartValues.Add(chartValue);
            }

            return(chartValues);
        }
Exemple #16
0
 /// <summary>
 /// Insert a ChartValue object to the collection at specified index.
 /// </summary>
 public void Insert(int index, ChartValue item)
 {
     item._owner = _owner;
     List.Insert(index, item);
 }
Exemple #17
0
            /// <summary>
            /// Add a ChartValue object to the collection by providing its value.
            /// </summary>
            public ChartValue Add(double value)
            {
                ChartValue anItem = new ChartValue(value);

                return(this.Add(anItem));
            }
Exemple #18
0
 /// <summary>
 /// Determine whether a ChartValue object exist in the collection.
 /// </summary>
 public Boolean Contains(ChartValue item)
 {
     return(List.Contains(item));
 }
Exemple #19
0
 /// <summary>
 /// Gets the index of a ChartValue object in the collection.
 /// </summary>
 public int IndexOf(ChartValue item)
 {
     return(List.IndexOf(item));
 }
Exemple #20
0
        private async Task <EventDetailModel> InitEventDetailModel(Guid eventId)
        {
            var targetEvent = await GetEventById(eventId);

            if (targetEvent == null)
            {
                return(null);
            }

            var options = _context.Options
                          .Where(x => x.EventID == targetEvent.ID)
                          .AsNoTracking()
                          .ToList();

            var tokens = _context.Tokens
                         .Where(x => x.EventID == targetEvent.ID)
                         .Include(x => x.Option)
                         .AsNoTracking()
                         .GroupBy(x => x.Name);

            var tokenModels = new List <TokenDetailModel>();

            foreach (var grouping in tokens)
            {
                var completed = targetEvent.Votes.Count(x => x.Token?.Name == grouping.Key && x.IsCompleted);

                var view = new TokenDetailModel
                {
                    Name        = grouping.Key,
                    Completed   = completed,
                    Count       = grouping.Count(),
                    Weight      = grouping.FirstOrDefault()?.Weight ?? 1d,
                    Restriction = grouping.FirstOrDefault()?.Option?.Name,
                    TokenUrls   = grouping.Select(x => GenerateVotingUrl(x.ID, HttpContext)).ToList()
                };

                tokenModels.Add(view);
            }

            var model = new EventDetailModel
            {
                Id                = targetEvent.ID,
                Name              = targetEvent.Name,
                Description       = targetEvent.Description,
                PublicUrl         = targetEvent.IsPublic ? GenerateVotingUrl(targetEvent.ID, HttpContext) : string.Empty,
                ApiUrl            = GenerateApiUrl(targetEvent.ID, targetEvent.UserID, HttpContext),
                ShowOverallWinner = targetEvent.ShowOverallWinner,
                Tokens            = tokenModels,
                StartDate         = targetEvent.StartDate,
                EndDate           = targetEvent.EndDate,
                Options           = options.Select(x => new OptionModel
                {
                    Id     = x.ID,
                    Option = x.Name
                }).ToList(),
                Questions = targetEvent.Questions.Select(x => new QuestionModel
                {
                    Id       = x.ID,
                    Question = x.Text
                }).ToList()
            };

            var points = targetEvent.BonusPoints;

            model.BonusPoints = new List <BonusPointsModel>();
            foreach (var bonusPoints in points)
            {
                model.BonusPoints.Add(new BonusPointsModel
                {
                    BId         = bonusPoints.ID,
                    BPoints     = bonusPoints.Points,
                    BReason     = bonusPoints.Reason,
                    BQuestionId = bonusPoints.QuestionID,
                    BOptionId   = bonusPoints.OptionID,
                    BQuestion   = bonusPoints.Question?.Text,
                    BOption     = bonusPoints.Option?.Name
                });
            }

            // calculate score if event is active
            if (targetEvent.StartDate.HasValue || targetEvent.EndDate.HasValue)
            {
                var chartValues = new List <ChartValue>();
                foreach (var option in targetEvent.Options)
                {
                    var chartValue = new ChartValue
                    {
                        Name  = option.Name,
                        Value = 0d
                    };

                    foreach (var recordVote in targetEvent.Votes)
                    {
                        var choices = recordVote.Choices.Count(x => x.OptionID == option.ID);

                        if (recordVote.CookieID.HasValue)
                        {
                            chartValue.Value += choices;
                        }
                        else if (recordVote.TokenID.HasValue)
                        {
                            chartValue.Value += choices * (recordVote.Token?.Weight ?? 0);
                        }
                    }

                    var bonusPoints = model.BonusPoints.Where(x => x.BOptionId == option.ID);
                    foreach (var record in bonusPoints)
                    {
                        chartValue.Value += record.BPoints;
                    }

                    chartValues.Add(chartValue);
                }

                model.ChartValues = chartValues;
            }
            else
            {
                model.TokenValues = targetEvent.Tokens
                                    .GroupBy(x => x.Name, x => x)
                                    .Select(x => new ChartValue
                {
                    Name  = x.Key,
                    Value = x.Count()
                }).ToList();

                if (model.TokenValues.Count == 0)
                {
                    model.TokenValues.Add(new ChartValue
                    {
                        Name  = _localizer["No invites"],
                        Value = 0
                    });
                }
            }

            return(model);
        }
Exemple #21
0
        /// <summary>
        /// Render method
        /// </summary>
        protected override void OnPaint(PaintEventArgs e)
        {
            // Base call
            base.OnPaint(e);

            // Clear background
            e.Graphics.Clear(Component.SourceTheme.COMPONENT_BACKGROUND.Normal);

            // Render border line
            e.Graphics.DrawRectangle(new Pen(Accent), 0, 0, Width - 1, Height - 1);

            // Grid color
            Color gridColor = Color.FromArgb(50, Accent);

            // Transforms
            e.Graphics.ScaleTransform(1.0f, -1.0f);
            e.Graphics.TranslateTransform(0, -ClientRectangle.Height);
            e.Graphics.TranslateTransform(-_translateX, 1);

            // Render grid - vertical
            for (int x = 0; x < Width + _translateX; x++)
            {
                int w = Width / GridDimenstions.Width;

                if (x % w == 0)
                {
                    e.Graphics.DrawLine(new Pen(gridColor), new Point(x, 0), new Point(x, Height));
                }
            }

            // Render grid - horizontal
            for (int y = 0; y < Height; y++)
            {
                int h = Height / GridDimenstions.Height;

                if (y % h == 0)
                {
                    e.Graphics.DrawLine(new Pen(gridColor), new Point(0, y), new PointF(Width + _translateX, y));
                }
            }

            // Graphics path - space under lines
            GraphicsPath path = new GraphicsPath();

            // Last added line second coordinates
            PointF p = new PointF();

            // Turn on anti-aliasing
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

            // Render values
            for (int i = 0; i < Values.Count; i++)
            {
                // Do we have next item?
                if (i + 1 > Values.Count - 1)
                {
                    // End for
                    break;
                }

                // Get current item
                ChartValue value = Values[i];

                // Create next item instance
                ChartValue next = Values[i + 1];

                // Get next item
                next = Values[i + 1];

                // Dimensions scaling
                float w = (float)Width / (float)ValueDimensions.Width;
                float h = (float)Height / (float)ValueDimensions.Height;

                // Render value lines
                // Draws lines between this and next chart value
                e.Graphics.DrawLine(new Pen(Color.FromArgb(200, Accent), 1), new PointF(value.X * w, value.Y * h), new PointF(next.X * w, next.Y * h));

                // Update points
                p = new PointF(next.X * w, next.Y * h);

                // Add coordinate to path
                path.AddLine(new PointF(value.X * w, value.Y * h), p);
            }

            // Ends path
            path.AddLine(new PointF(p.X, p.Y), new PointF(p.X, 0));
            path.AddLine(new PointF(p.X, 0), new PointF(0, 0));

            // Draws path
            e.Graphics.FillPath(new SolidBrush(Color.FromArgb(20, Accent)), path);

            // Turn off anti-aliasing
            e.Graphics.SmoothingMode = SmoothingMode.None;
        }
Exemple #22
0
        private void btnArataStatistici_Click(object sender, EventArgs e)
        {
            DateTime startDate = DateTime.Now;
            DateTime endDate   = DateTime.Now;
            BindingList <Rezervare> copieRezervari    = new BindingList <Rezervare>();
            BindingList <Rezervare> rezervariInterval = new BindingList <Rezervare>();
            List <DateTime>         zile = new List <DateTime>();
            List <int> nrRezervari       = new List <int>();

            foreach (Rezervare rezervare in rezervari)
            {
                copieRezervari.Add(rezervare);
            }

            if (cbInterval.SelectedIndex == 0)
            {
                int totalRezervari = 0;
                startDate = DateTime.Now.AddDays(-6);
                foreach (Rezervare rezervare in copieRezervari)
                {
                    if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date)
                    {
                        rezervariInterval.Add(rezervare);
                    }
                }
                DateTime indexData = startDate.Date;
                for (int i = 0; i < 7; i++)
                {
                    DateTime aux = indexData;
                    zile.Add(aux.AddDays(i));
                    int nr = 0;
                    foreach (Rezervare rezervare in rezervariInterval)
                    {
                        if (rezervare.Data.Date == aux.AddDays(i).Date)
                        {
                            nr++;
                            totalRezervari++;
                        }
                    }
                    nrRezervari.Add(nr);
                }
                label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari.";
                ChartValue[] data = new ChartValue[zile.Count];
                for (int i = 0; i < zile.Count; i++)
                {
                    data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]);
                }

                chartRezervari.Data = data;
                chartRezervari.Invalidate();
                btnCopy.Visible = true;
            }
            else if (cbInterval.SelectedIndex == 1)
            {
                int totalRezervari = 0;
                startDate = DateTime.Now.AddDays(-13);
                foreach (Rezervare rezervare in copieRezervari)
                {
                    if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date)
                    {
                        rezervariInterval.Add(rezervare);
                    }
                }
                DateTime indexData = startDate.Date;
                for (int i = 0; i < 14; i++)
                {
                    DateTime aux = indexData;
                    zile.Add(aux.AddDays(i));
                    int nr = 0;
                    foreach (Rezervare rezervare in rezervariInterval)
                    {
                        if (rezervare.Data.Date == aux.AddDays(i).Date)
                        {
                            nr++;
                            totalRezervari++;
                        }
                    }
                    nrRezervari.Add(nr);
                }
                label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari.";
                ChartValue[] data = new ChartValue[zile.Count];
                for (int i = 0; i < zile.Count; i++)
                {
                    data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]);
                }
                chartRezervari.Data = data;
                chartRezervari.Invalidate();
            }
            else if (cbInterval.SelectedIndex == 2)
            {
                int totalRezervari = 0;
                endDate = DateTime.Now.Date.AddDays(6);
                foreach (Rezervare rezervare in copieRezervari)
                {
                    if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date)
                    {
                        rezervariInterval.Add(rezervare);
                    }
                }
                DateTime indexData = startDate.Date;
                for (int i = 0; i < 7; i++)
                {
                    DateTime aux = indexData;
                    zile.Add(aux.AddDays(i));
                    int nr = 0;
                    foreach (Rezervare rezervare in rezervariInterval)
                    {
                        if (rezervare.Data.Date == aux.AddDays(i).Date)
                        {
                            nr++;
                            totalRezervari++;
                        }
                    }
                    nrRezervari.Add(nr);
                }
                label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari.";
                ChartValue[] data = new ChartValue[zile.Count];
                for (int i = 0; i < zile.Count; i++)
                {
                    data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]);
                }
                chartRezervari.Data = data;
                chartRezervari.Invalidate();
            }
            btnCopy.Visible = true;
        }
Exemple #23
0
        /// <summary>
        /// Load all events of currently logged in user.
        /// </summary>
        /// <returns>All events of currently logged in user</returns>
        private async Task <EventListModel> InitEventListModel()
        {
            var user = await _userManager.GetUserAsync(User);

            var userId = Util.ParseGuid(user?.Id);

            var allEvents = _context.Events
                            .Where(x => x.UserID == userId)
                            .Include(x => x.Options)
                            .Include(x => x.Questions)
                            .Include(x => x.Tokens)
                            .Include(x => x.Votes).ThenInclude(x => x.Choices)
                            .Include(x => x.Votes).ThenInclude(x => x.Token)
                            .Include(x => x.BonusPoints)
                            .AsNoTracking()
                            .ToList();

            var source = new List <DashboardEventModel>();

            foreach (var record in allEvents)
            {
                var model = new DashboardEventModel
                {
                    Id          = record.ID,
                    Name        = record.Name,
                    StartDate   = record.StartDate,
                    EndDate     = record.EndDate,
                    CanActivate = CanActivate(record),
                    CanEdit     = CanEdit(record),
                    CanFinish   = CanFinish(record)
                };

                // calculate score if event is active
                if (CanFinish(record) || record.EndDate.HasValue)
                {
                    var chartValues = new List <ChartValue>();
                    foreach (var option in record.Options)
                    {
                        var chartValue = new ChartValue
                        {
                            Name  = option.Name,
                            Value = 0d
                        };

                        foreach (var recordVote in record.Votes)
                        {
                            var choices = recordVote.Choices.Count(x => x.OptionID == option.ID);

                            if (recordVote.CookieID.HasValue)
                            {
                                chartValue.Value += choices;
                            }
                            else if (recordVote.TokenID.HasValue)
                            {
                                chartValue.Value += choices * (recordVote.Token?.Weight ?? 0);
                            }
                        }

                        chartValue.Value += record.BonusPoints.Where(x => x.OptionID == option.ID)
                                            .Sum(x => x.Points);

                        chartValues.Add(chartValue);
                    }

                    model.Votes = chartValues;
                }
                else
                {
                    model.Tokens = record.Tokens
                                   .GroupBy(x => x.Name, x => x)
                                   .Select(x => new ChartValue
                    {
                        Name  = x.Key,
                        Value = x.Count()
                    }).ToList();

                    if (model.Tokens.Count == 0)
                    {
                        model.Tokens.Add(new ChartValue
                        {
                            Name  = _localizer["No invites"],
                            Value = 0
                        });
                    }
                }

                source.Add(model);
            }

            var events   = source.Where(x => !x.StartDate.HasValue).ToList();
            var active   = source.Where(x => x.StartDate.HasValue && !x.EndDate.HasValue).ToList();
            var finished = source.Where(x => x.StartDate.HasValue && x.EndDate.HasValue).ToList();



            return(new EventListModel
            {
                Events = events,
                Active = active,
                Finished = finished,
                CloneEventModel = new CloneEventModel
                {
                    All = events.Concat(active).Concat(finished).ToList()
                }
            });
        }
Exemple #24
0
        internal override void RenderLabelView(WebGridHtmlWriter writer, RowCell cell)
        {
            string uniqueID = cell.CellClientId;

            if (ChartType == ChartType.HorizontalBar)
            {
                if (m_Image == null) // Draw using table
                {
                    StringBuilder bg = new StringBuilder(string.Empty);
                    if (BackgroundImage != null)
                    {
                        bg.AppendFormat(" background=\"{0}\"", BackgroundImage);
                    }
                    StringBuilder s = new StringBuilder(string.Empty);
                    s.AppendFormat("<table height=\"{0}\">", HeightEditableColumn);
                    if (m_StartImage != null)
                    {
                        s.AppendFormat(
                            "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/></td>", m_StartImage,
                            HeightEditableColumn, Title);
                    }
                    s.AppendFormat("<td width=\"{0}\" {1}></td>", BarWidth, bg);
                    if (m_EndImage != null)
                    {
                        s.AppendFormat(
                            "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/></td>", m_EndImage,
                            HeightEditableColumn, Title);
                    }
                    s.Append("</table>");
                    LabelHtml(s.ToString(), writer, cell);
                    return;
                }
                else // Draw using image
                {
                    StringBuilder s = new StringBuilder(string.Empty);
                    if (m_StartImage != null)
                    {
                        s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/>",
                                       m_StartImage, HeightEditableColumn, Title);
                    }
                    s.AppendFormat("<img alt=\"{3}\" border=\"0\" src=\"{0}\"  height={1} width={2}/>",
                                   m_Image, HeightEditableColumn, BarWidth, Title);
                    if (m_EndImage != null)
                    {
                        s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/>", m_EndImage,
                                       HeightEditableColumn, Title);
                    }

                    LabelHtml(s.ToString(), writer, cell);
                    return;
                }
            }
            if (ChartType == ChartType.HorizontalBar)
            {
                // 2005.01.09 - jorn, string optimization
                StringBuilder namesBuilder = new StringBuilder();
                string        values       = string.Empty;
                Table         t            = Grid.MasterTable;
                for (int i = 0; i < t.Rows.Count; i++)
                {
                    if (namesBuilder.Length != 0)
                    {
                        namesBuilder.Append(",");
                    }
                    if (values.Length != 0)
                    {
                        values += ",";
                    }
                    namesBuilder.Append(HttpUtility.UrlEncode(t.Rows[i][TitleColumn].Value.ToString(), Encoding.Default));
                    try
                    {
                        values +=
                            HttpUtility.UrlEncode(t.Rows[i][ValueColumn].Value.ToString().Replace(",", "."),
                                                  Encoding.Default);
                    }
                    catch
                    {
                        values += "0";
                    }
                }

                string width = "150";
                if (WidthEditableColumn.IsEmpty == false)
                {
                    width = WidthEditableColumn.Value.ToString();
                }
                string s =
                    string.Format(
                        "<img alt=\"{4}\" border=\"0\" src=\"?wgpiechart={0}&values={1}&names={2}&width={3}\"/>",
                        uniqueID, values, namesBuilder, width, Title);
                LabelHtml(s, writer, cell);
                return;
            }
            else
            {
                ArrayList values = new ArrayList();

                Table t = Grid.MasterTable;
                for (int i = 0; i < t.Rows.Count; i++)
                {
                    double val  = double.Parse(t.Rows[i][ValueColumn].Value.ToString());
                    string name = string.Empty;
                    if (t.Rows[i][TitleColumn].Value != null)
                    {
                        name = t.Rows[i][TitleColumn].Value.ToString();
                    }

                    ChartValue cv = new ChartValue(name, val);
                    values.Add(cv);

                    /*					if(names != string.Empty) names += ",";
                     *                  if(values != string.Empty) values += ",";
                     *                  names += HttpUtility.UrlEncode( t.Rows[i][ TitleColumn ].Value );
                     *                  try
                     *                  {
                     *                      values += HttpUtility.UrlEncode( t.Rows[i][ ValueColumn ].Value.Replace(",",".") );
                     *                  }
                     *                  catch
                     *                  {
                     *                      values += "0";
                     *                  }*/
                }

                int width = (int)WidthEditableColumn.Value;
                if (width < 16)
                {
                    width = 150;
                }
                int height = (int)HeightEditableColumn.Value;
                if (height < 16)
                {
                    height = 200;
                }

                //try
                //{
                Util.Chart c = new Util.Chart(ChartType, width, height);
                if (BackgroundImage != null && Grid.GotHttpContext)
                {
                    if (BackgroundImage.ToUpperInvariant().StartsWith("HTTP://") == false)
                    {
                        BackgroundImage = HttpContext.Current.Server.MapPath(BackgroundImage);
                    }
                    c.ChartBackground = new ChartBackground(BackgroundImage);
                }
                c.ShowPieValues          = false;
                c.ChartHeadline.Headline = Title;
                c.AddDataArray(values);
                c.RenderLabelBoard = TitleBoardOnChart;
                if (Grid.GotHttpContext)
                {
                    HttpContext.Current.Session[string.Format("{0}_{1}_img", Grid.ClientID, uniqueID)] = c.Render();
                }

                string s; //src=\"?wgchart=" + this.Grid.ColumnId + "_" + this.FormElementName + "_img\"
                if (Grid.GotHttpContext &&
                    HttpContext.Current.Request.Browser.Type.ToUpperInvariant().StartsWith("IE"))
                {
                    s =
                        string.Format(
                            "<img height=\"{0}\" width=\"{1}\"  src=\"{2}\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='?wgchart={3}_{4}_img', sizingMethod='scale');\" alt=\"{5}\" border=\"0\" />",
                            Unit.Pixel(height), Unit.Pixel(width), Grid.Page.ClientScript.GetWebResourceUrl(Grid.GetType(), "WebGrid.Resources.images.transparent.gif"), Grid.ClientID, uniqueID, Title);
                }
                else
                {
                    s =
                        string.Format("<img alt=\"{2}\" border=\"0\" src=\"?wgchart={0}_{1}_img\"/>",
                                      Grid.ClientID, uniqueID, Title);
                }
                LabelHtml(s, writer, cell);
                return;
            }

            /*
             * else		// impossible!!!
             * {
             *  return null;
             * }*/
        }
Exemple #25
0
        private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            DateTime startDate = DateTime.Now;
            DateTime endDate   = DateTime.Now;
            BindingList <Rezervare> copieRezervari    = new BindingList <Rezervare>();
            BindingList <Rezervare> rezervariInterval = new BindingList <Rezervare>();
            List <DateTime>         zile = new List <DateTime>();
            List <int> nrRezervari       = new List <int>();

            foreach (Rezervare rezervare in rezervari)
            {
                copieRezervari.Add(rezervare);
            }
            int totalRezervari = 0;

            startDate = DateTime.Now.AddDays(-6);
            foreach (Rezervare rezervare in copieRezervari)
            {
                if (rezervare.Data.Date >= startDate.Date && rezervare.Data.Date <= endDate.Date)
                {
                    rezervariInterval.Add(rezervare);
                }
            }
            DateTime indexData = startDate.Date;

            for (int i = 0; i < 7; i++)
            {
                DateTime aux = indexData;
                zile.Add(aux.AddDays(i));
                int nr = 0;
                foreach (Rezervare rezervare in rezervariInterval)
                {
                    if (rezervare.Data.Date == aux.AddDays(i).Date)
                    {
                        nr++;
                        totalRezervari++;
                    }
                }
                nrRezervari.Add(nr);
            }
            label.Text = "In intervalul " + startDate.Date.ToString("dd.MM.yyyy") + " - " + endDate.Date.ToString("dd.MM.yyyy") + " au fost efectuate " + totalRezervari + " rezervari.";
            ChartValue[] data = new ChartValue[zile.Count];
            for (int i = 0; i < zile.Count; i++)
            {
                data[i] = new ChartValue(zile[i].ToString("dd.MMM"), nrRezervari[i]);
            }

            chartRezervari.Data = data;
            chartRezervari.Invalidate();

            var printAreaHight = e.MarginBounds.Height;
            var printAreaWidth = e.MarginBounds.Width;
            var marginLeft     = e.MarginBounds.Left;
            var marginTop      = e.MarginBounds.Top;

            var maxDotWidth    = printAreaWidth / nrRezervari.Count;
            var maxDotHeight   = printAreaHight * 0.9;
            int nrRezervariMax = 0;

            for (int i = 0; i < nrRezervari.Count; i++)
            {
                if (nrRezervari[i] > nrRezervariMax)
                {
                    nrRezervariMax = nrRezervari[i];
                }
            }
            var   maxValue      = nrRezervariMax;
            var   scalingFactor = maxDotHeight / maxValue;
            Point lastPoint     = new Point(0, 0);

            e.Graphics.FillRectangle(
                Brushes.LightGray,
                marginLeft,
                marginTop,
                printAreaWidth,
                printAreaHight
                );
            for (int i = 0; i < nrRezervari.Count; i++)
            {
                var laneWidth = (float)maxDotWidth;
                e.Graphics.DrawLine(
                    new Pen(Brushes.DarkGray, 2),
                    new Point((int)(marginLeft + 25 + i * laneWidth), marginTop + (int)maxDotHeight),
                    new Point((int)(marginLeft + 25 + i * laneWidth), marginTop)
                    );
            }
            for (int i = 0; i < nrRezervari.Count; i++)
            {
                var laneHeight = (float)scalingFactor * nrRezervari[i];
                var laneWidth  = (float)maxDotWidth;
                if (i > 0)
                {
                    e.Graphics.DrawLine(
                        new Pen(Brushes.LightSeaGreen, 5),
                        new Point((int)(marginLeft + 20 + i * laneWidth), marginTop + (int)(maxDotHeight - laneHeight + 10)),
                        lastPoint
                        );
                }
                lastPoint = new Point((int)(marginLeft + 25 + i * laneWidth), marginTop + (int)(maxDotHeight - laneHeight + 10));
                e.Graphics.DrawString(
                    zile[i].ToString("dd.MMM"),
                    new Font(FontFamily.GenericSerif, 10, FontStyle.Bold),
                    Brushes.Black,
                    new RectangleF(marginLeft + 10 + i * laneWidth, marginTop + printAreaHight - 70, 50, 50)
                    );
            }
            for (int i = 0; i < nrRezervari.Count; i++)
            {
                var laneHeight = (float)scalingFactor * nrRezervari[i];
                var laneWidth  = (float)maxDotWidth;

                e.Graphics.FillEllipse(
                    Brushes.SeaGreen,
                    marginLeft + 15 + i * laneWidth,
                    marginTop + (float)maxDotHeight - laneHeight,
                    20,
                    20
                    );
                e.Graphics.DrawString(
                    nrRezervari[i].ToString(),
                    new Font(FontFamily.GenericSansSerif, 9, FontStyle.Bold),
                    Brushes.White,
                    new RectangleF(marginLeft + 18 + i * laneWidth, marginTop + (float)maxDotHeight - laneHeight + 2, 50, 50)
                    );
            }
            e.Graphics.DrawString(
                "Grafic cu numarul de rezervari din fiecare zi pentru saptamana trecuta",
                new Font(FontFamily.GenericSerif, 20, FontStyle.Bold),
                Brushes.Black,
                new RectangleF(marginLeft + 50, marginTop + printAreaHight - 50, 1000, 1000)
                );
            e.Graphics.DrawString(
                "Grafic cu numarul de rezervari din fiecare zi pentru saptamana trecuta",
                new Font(FontFamily.GenericSerif, 20, FontStyle.Bold),
                Brushes.Black,
                new RectangleF(marginLeft + 50, marginTop + printAreaHight - 50, 1000, 1000)
                );
        }
Exemple #26
0
        internal override void RenderLabelView(WebGridHtmlWriter writer, RowCell cell)
        {
            string uniqueID = cell.CellClientId;
            if (ChartType == ChartType.HorizontalBar)
            {
                if (m_Image == null) // Draw using table
                {
                    StringBuilder bg = new StringBuilder(string.Empty);
                    if (BackgroundImage != null)
                        bg.AppendFormat(" background=\"{0}\"", BackgroundImage);
                    StringBuilder s = new StringBuilder(string.Empty);
                    s.AppendFormat("<table height=\"{0}\">", HeightEditableColumn);
                    if (m_StartImage != null)
                        s.AppendFormat(
                            "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/></td>", m_StartImage,
                            HeightEditableColumn, Title);
                    s.AppendFormat("<td width=\"{0}\" {1}></td>", BarWidth, bg);
                    if (m_EndImage != null)
                        s.AppendFormat(
                            "<td><img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/></td>", m_EndImage,
                            HeightEditableColumn, Title);
                    s.Append("</table>");
                    LabelHtml(s.ToString(), writer, cell);
                    return;
                }
                else // Draw using image
                {
                    StringBuilder s = new StringBuilder(string.Empty);
                    if (m_StartImage != null)
                        s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/>",
                                       m_StartImage, HeightEditableColumn, Title);
                    s.AppendFormat("<img alt=\"{3}\" border=\"0\" src=\"{0}\"  height={1} width={2}/>",
                                   m_Image, HeightEditableColumn, BarWidth, Title);
                    if (m_EndImage != null)
                        s.AppendFormat("<img alt=\"{2}\" border=\"0\" src=\"{0}\"  height={1}/>", m_EndImage,
                                       HeightEditableColumn, Title);

                    LabelHtml(s.ToString(), writer, cell);
                    return;
                }
            }
            if (ChartType == ChartType.HorizontalBar)
            {
                // 2005.01.09 - jorn, string optimization
                StringBuilder namesBuilder = new StringBuilder();
                string values = string.Empty;
                Table t = Grid.MasterTable;
                for (int i = 0; i < t.Rows.Count; i++)
                {
                    if (namesBuilder.Length != 0) namesBuilder.Append(",");
                    if (values.Length != 0) values += ",";
                    namesBuilder.Append(HttpUtility.UrlEncode(t.Rows[i][TitleColumn].Value.ToString(), Encoding.Default));
                    try
                    {
                        values +=
                            HttpUtility.UrlEncode(t.Rows[i][ValueColumn].Value.ToString().Replace(",", "."),
                                                  Encoding.Default);
                    }
                    catch
                    {
                        values += "0";
                    }
                }

                string width = "150";
                if (WidthEditableColumn.IsEmpty == false)
                    width = WidthEditableColumn.Value.ToString();
                string s =
                    string.Format(
                        "<img alt=\"{4}\" border=\"0\" src=\"?wgpiechart={0}&values={1}&names={2}&width={3}\"/>",
                        uniqueID, values, namesBuilder, width, Title);
                LabelHtml(s, writer, cell);
                return;
            }
            else
            {
                ArrayList values = new ArrayList();

                Table t = Grid.MasterTable;
                for (int i = 0; i < t.Rows.Count; i++)
                {
                    double val = double.Parse(t.Rows[i][ValueColumn].Value.ToString());
                    string name = string.Empty;
                    if (t.Rows[i][TitleColumn].Value != null)
                        name = t.Rows[i][TitleColumn].Value.ToString();

                    ChartValue cv = new ChartValue(name, val);
                    values.Add(cv);

                    /*					if(names != string.Empty) names += ",";
                                        if(values != string.Empty) values += ",";
                                        names += HttpUtility.UrlEncode( t.Rows[i][ TitleColumn ].Value );
                                        try
                                        {
                                            values += HttpUtility.UrlEncode( t.Rows[i][ ValueColumn ].Value.Replace(",",".") );
                                        }
                                        catch
                                        {
                                            values += "0";
                                        }*/
                }

                int width = (int)WidthEditableColumn.Value;
                if (width < 16) width = 150;
                int height = (int)HeightEditableColumn.Value;
                if (height < 16) height = 200;

                //try
                //{
                Util.Chart c = new Util.Chart(ChartType, width, height);
                if (BackgroundImage != null && Grid.GotHttpContext)
                {
                    if (BackgroundImage.ToUpperInvariant().StartsWith("HTTP://") == false)
                        BackgroundImage = HttpContext.Current.Server.MapPath(BackgroundImage);
                    c.ChartBackground = new ChartBackground(BackgroundImage);
                }
                c.ShowPieValues = false;
                c.ChartHeadline.Headline = Title;
                c.AddDataArray(values);
                c.RenderLabelBoard = TitleBoardOnChart;
                if (Grid.GotHttpContext)
                    HttpContext.Current.Session[string.Format("{0}_{1}_img", Grid.ClientID, uniqueID)] = c.Render();

                string s; //src=\"?wgchart=" + this.Grid.ColumnId + "_" + this.FormElementName + "_img\"
                if (Grid.GotHttpContext &&
                    HttpContext.Current.Request.Browser.Type.ToUpperInvariant().StartsWith("IE"))
                    s =
                        string.Format(
                            "<img height=\"{0}\" width=\"{1}\"  src=\"{2}\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='?wgchart={3}_{4}_img', sizingMethod='scale');\" alt=\"{5}\" border=\"0\" />",
                            Unit.Pixel(height), Unit.Pixel(width), Grid.Page.ClientScript.GetWebResourceUrl(Grid.GetType(), "WebGrid.Resources.images.transparent.gif"), Grid.ClientID, uniqueID, Title);
                else
                {
                    s =
                        string.Format("<img alt=\"{2}\" border=\"0\" src=\"?wgchart={0}_{1}_img\"/>",
                                      Grid.ClientID, uniqueID, Title);
                }
                LabelHtml(s, writer, cell);
                return;
            }
            /*
            else		// impossible!!!
            {
                return null;
            }*/
        }