127 lines
4.3 KiB
C#
127 lines
4.3 KiB
C#
using Contracts.BusinessLogicContracts;
|
|
using Contracts.SearchModels;
|
|
using DataModels.Enums;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
|
|
namespace WinFormsApp
|
|
{
|
|
public partial class FormStatistics : Form
|
|
{
|
|
ISupplyLogic _supplyLogic;
|
|
public FormStatistics(ISupplyLogic supplyLogic)
|
|
{
|
|
InitializeComponent();
|
|
_supplyLogic = supplyLogic;
|
|
}
|
|
|
|
private void FormStatistics_Load(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private void LoadData()
|
|
{
|
|
chart.Series.Clear();
|
|
var list = _supplyLogic.ReadList(new SupplySearchModel()
|
|
{
|
|
DateStart = dateTimePickerTo.Value,
|
|
DateEnd = dateTimePickerFrom.Value,
|
|
});
|
|
if (checkBoxPending.Checked)
|
|
{
|
|
var date = dateTimePickerTo.Value;
|
|
chart.Series.Add("Pending");
|
|
for (int i = 0; i <= diff_month(dateTimePickerFrom.Value, dateTimePickerTo.Value); i++)
|
|
{
|
|
var count = list.Where(x => x.Date.Month == date.Month && x.Status == SupplyStatus.Pending).ToList().Count;
|
|
DataPoint dataPoint = new DataPoint();
|
|
dataPoint.XValue = i;
|
|
dataPoint.IsVisibleInLegend = false;
|
|
dataPoint.Label = $"{date.Year}.{date.Month}";
|
|
dataPoint.SetValueY(count);
|
|
chart.Series["Pending"].Points.Add(dataPoint);
|
|
date = date.AddMonths(1);
|
|
}
|
|
}
|
|
if (checkBoxArriving.Checked)
|
|
{
|
|
var date = dateTimePickerTo.Value;
|
|
chart.Series.Add("Arriving");
|
|
for (int i = 0; i <= diff_month(dateTimePickerFrom.Value, dateTimePickerTo.Value); i++)
|
|
{
|
|
var count = list.Where(x => x.Date.Month == date.Month && x.Status == SupplyStatus.Arriving).ToList().Count;
|
|
DataPoint dataPoint = new DataPoint();
|
|
dataPoint.XValue = i;
|
|
dataPoint.IsVisibleInLegend = false;
|
|
dataPoint.Label = $"{date.Year}.{date.Month}";
|
|
dataPoint.SetValueY(count);
|
|
chart.Series["Arriving"].Points.Add(dataPoint);
|
|
date = date.AddMonths(1);
|
|
}
|
|
}
|
|
if (checkBoxCompleted.Checked)
|
|
{
|
|
var date = dateTimePickerTo.Value;
|
|
chart.Series.Add("Completed");
|
|
for (int i = 0; i <= diff_month(dateTimePickerFrom.Value, dateTimePickerTo.Value); i++)
|
|
{
|
|
var count = list.Where(x => x.Date.Month == date.Month && x.Status == SupplyStatus.Completed).ToList().Count;
|
|
DataPoint dataPoint = new DataPoint();
|
|
dataPoint.XValue = i;
|
|
dataPoint.IsVisibleInLegend = false;
|
|
dataPoint.Label = $"{date.Year}.{date.Month}";
|
|
dataPoint.SetValueY(count);
|
|
chart.Series["Completed"].Points.Add(dataPoint);
|
|
date = date.AddMonths(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void chart_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void dateTimePickerFrom_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private void dateTimePickerTo_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private int diff_month(DateTime d1, DateTime d2)
|
|
{
|
|
return (d1.Year - d2.Year) * 12 + d1.Month - d2.Month;
|
|
}
|
|
|
|
private void checkBoxPending_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private void checkBoxArriving_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
|
|
private void checkBoxCompleted_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
LoadData();
|
|
}
|
|
}
|
|
}
|