Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Groenbos.Models;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.DataVisualization.Charting;
- using System.Web.UI.WebControls;
- namespace Groenbos.Recreatie
- {
- public partial class VerhuurStatistieken : System.Web.UI.Page
- {
- private GroenbosContext db = new GroenbosContext();
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- CultureInfo myCI = new CultureInfo("en-US");
- System.Globalization.Calendar myCal = myCI.Calendar;
- // Gets the DTFI properties required by GetWeekOfYear.
- CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
- DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;
- int weekn = myCal.GetWeekOfYear(DateTime.Now, myCWR, myFirstDOW);
- VulGrafiek(DateTime.Today.Year,weekn);
- List<int> weeks = new List<int>();
- for(int i =0; i <= 52; i++)
- {
- weeks.Add(i);
- }
- foreach(var w in weeks)
- {
- var item = new ListItem
- {
- Text = w.ToString(),
- Value = w.ToString()
- };
- ddlWeek.Items.Add(item);
- }
- ddlWeek.SelectedValue = weeks[weekn].ToString();
- }
- }
- private void VulGrafiek(int jaar, int weekNummer)
- {
- List<RecreatieOrder> orders = db.RecreatieOrder.ToList();
- DateTime now = DateTime.Today;
- Series series = aVChart.Series["Series1"];
- Series series2 = aVChart.Series["Series2"];
- aVChart.Series["Series1"].IsValueShownAsLabel = true;
- aVChart.Series["Series2"].IsValueShownAsLabel = true;
- decimal totaal = 0;
- decimal totaal2 = 0;
- var week = GetWeekDaysOfWeekFrom(weekNummer, jaar);
- foreach (var dag in week)
- {
- List<RecreatieOrder> reserveringen = orders.Where(x => x.Datum.Day == dag.Day && x.Datum.Year == int.Parse(ddlJaar.SelectedValue)).ToList();
- List<RecreatieOrder> reserveringen2 = orders.Where(x => x.Datum.Day == dag.Day && x.Datum.Year == (int.Parse(ddlJaar.SelectedValue))-1).ToList();
- foreach (var r in reserveringen)
- {
- totaal += 5;
- }
- foreach (var r in reserveringen2)
- {
- totaal2 += 5;
- }
- series.Points.AddXY(dag, reserveringen.Count());
- series2.Points.AddXY(dag, reserveringen2.Count());
- }
- lblOmzet.Text = "De totale omzet van deze maand is: €" + Math.Round(totaal, 2).ToString();
- lblOmzet2.Text = "De totale omzet van deze maand vorig jaar was: €" + Math.Round(totaal2, 2).ToString();
- }
- protected void ddlJaar_SelectedIndexChanged(object sender, EventArgs e)
- {
- VulGrafiek(int.Parse(ddlJaar.SelectedValue), int.Parse(ddlWeek.SelectedValue));
- }
- protected void ddlWeek_SelectedIndexChanged(object sender, EventArgs e)
- {
- VulGrafiek(int.Parse(ddlJaar.SelectedValue), int.Parse(ddlWeek.SelectedValue));
- }
- public List<DateTime> GetWeekDaysOfWeekFrom(int weekNumber, int jaar)
- {
- DateTime firstDayOfWeek = FirstDateOfWeekISO8601(jaar, weekNumber);
- int currentDayOfWeek = (int)firstDayOfWeek.DayOfWeek;
- DateTime sunday = firstDayOfWeek.AddDays(-currentDayOfWeek);
- DateTime monday = sunday.AddDays(1);
- // If we started on Sunday, we should actually have gone *back*
- // 6 days instead of forward 1...
- if (currentDayOfWeek == 0)
- {
- monday = monday.AddDays(-7);
- }
- return Enumerable.Range(0, 7).Select(days => monday.AddDays(days)).ToList();
- }
- public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear)
- {
- DateTime jan1 = new DateTime(year, 1, 1);
- int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;
- DateTime firstThursday = jan1.AddDays(daysOffset);
- var cal = CultureInfo.CurrentCulture.Calendar;
- int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
- var weekNum = weekOfYear;
- if (firstWeek <= 1)
- {
- weekNum -= 1;
- }
- var result = firstThursday.AddDays(weekNum * 7);
- return result.AddDays(-3);
- }
- protected void btnNext_Click(object sender, EventArgs e)
- {
- }
- protected void btnPrevious_Click(object sender, EventArgs e)
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement