Exemplo n.º 1
0
        public HttpResponseMessage GetCompanyStatistics(int companyId, int width, int height)
        {
            if (width < 0 || width > 2000 || height < 0 || height > 2000)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var company = db.Companies.Find(companyId);

            if (company == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            if (!db.IsCurrentUserEmployedInCompanyOrAdministrator(companyId))
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }

            var minValue = DateTime.Now.AddDays(-20);
            var maxValue = DateTime.Now;

            var statistics = db.CompanyStatistics.Where(s => s.CompanyId == companyId && s.Date > minValue && s.Date <= maxValue);

            var model = new PlotModel {
                Title = company.Name
            };

            model.Axes.Add(new DateTimeAxis
            {
                Position     = AxisPosition.Bottom,
                Minimum      = DateTimeAxis.ToDouble(statistics.Min(s => s.Date).Date),
                Maximum      = DateTimeAxis.ToDouble(statistics.Max(s => s.Date).Date),
                StringFormat = "dd/MM/yyyy",
                Title        = "Date"
            });
            model.Axes.Add(new LinearAxis
            {
                Position = AxisPosition.Left,
                Minimum  = 0,
                Maximum  = 11,
                Title    = "Registred Products"
            });

            var series = new FunctionSeries();

            foreach (var statistic in statistics)
            {
                series.Points.Add(new DataPoint(DateTimeAxis.ToDouble(statistic.Date), statistic.RegistredProducts));
            }
            model.Series.Add(series);

            var pngExporter = new OxyPlot.WindowsForms.PngExporter();

            pngExporter.Width  = width;
            pngExporter.Height = height;
            var ms = new MemoryStream();

            pngExporter.Export(model, ms);
            ms.Position = 0;

            var response = Request.CreateResponse();

            response.Content = new StreamContent(ms);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");

            return(response);
        }
Exemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (exportHeightValue.BackColor == Color.Red)
            {
                const string message = "Please choose an integer value for the export height.";
                const string caption = "Error";
                var          result  = MessageBox.Show(message, caption,
                                                       MessageBoxButtons.OK,
                                                       MessageBoxIcon.Error);
                return;
            }

            if (exportWidthValue.BackColor == Color.Red)
            {
                const string message = "Please choose an integer value for the export width.";
                const string caption = "Error";
                var          result  = MessageBox.Show(message, caption,
                                                       MessageBoxButtons.OK,
                                                       MessageBoxIcon.Error);
                return;
            }

            if (exportAsComboBox.Text == "SVG")
            {
                SaveFileDialog saveParameters = new SaveFileDialog();
                saveParameters.Filter = "SVG files|*.svg";
                saveParameters.Title  = "Export figure as .svg";

                if (saveParameters.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }

                using (var stream = File.Create(saveParameters.FileName))
                {
                    var exporter = new SvgExporter
                    {
                        Width  = Convert.ToInt32(exportWidthValue.Text.ToString()),
                        Height = Convert.ToInt32(exportHeightValue.Text.ToString())
                    };
                    exporter.Export(plotView1.Model, stream);
                }
            }
            else if (exportAsComboBox.Text == "PDF")
            {
                SaveFileDialog saveParameters = new SaveFileDialog();
                saveParameters.Filter = "PDF files|*.pdf";
                saveParameters.Title  = "Export figure as .pdf";

                if (saveParameters.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }

                using (var stream = File.Create(saveParameters.FileName))
                {
                    var exporter = new PdfExporter
                    {
                        Width  = Convert.ToInt32(exportWidthValue.Text.ToString()),
                        Height = Convert.ToInt32(exportHeightValue.Text.ToString())
                    };
                    exporter.Export(plotView1.Model, stream);
                }
            }
            else if (exportAsComboBox.Text == "PNG")
            {
                SaveFileDialog saveParameters = new SaveFileDialog();
                saveParameters.Filter = "PNG files|*.pdf";
                saveParameters.Title  = "Export figure as .pdf";

                if (saveParameters.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }
                using (var stream = File.Create(saveParameters.FileName))
                {
                    var exporter = new OxyPlot.WindowsForms.PngExporter
                    {
                        Width  = Convert.ToInt32(exportWidthValue.Text.ToString()),
                        Height = Convert.ToInt32(exportHeightValue.Text.ToString())
                    };
                    exporter.Export(plotView1.Model, stream);
                }
            }
        }
Exemplo n.º 3
0
        public HttpResponseMessage GetProductRatings(int productId, int width, int height)
        {
            if (width < 0 || width > 2000 || height < 0 || height > 2000)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }

            var product = db.Products.Find(productId);

            if (product == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            if (!db.IsCurrentUserEmployedInCompanyOrAdministrator(product.CompanyId))
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }

            var minValue = DateTime.Now.AddDays(-20);
            var maxValue = DateTime.Now;

            var ratings = db.ProductRatings.Where(r => r.ProductId == productId && r.Added > minValue && r.Added <= maxValue).ToList();
            var avgs    = ratings.GroupBy(r => r.Added.Date).OrderBy(r => r.Key).Select(g => new
            {
                Day = g.Key,
                Avg = g.Average(r => r.Rating)
            });

            var model = new PlotModel {
                Title = product.Name
            };

            model.Axes.Add(new DateTimeAxis
            {
                Position     = AxisPosition.Bottom,
                StringFormat = "dd/MM/yyyy",
                Title        = "Date",
                Minimum      = DateTimeAxis.ToDouble(avgs.Min(a => a.Day).Date),
                Maximum      = DateTimeAxis.ToDouble(avgs.Max(a => a.Day).Date),
            });
            model.Axes.Add(new LinearAxis
            {
                Position = AxisPosition.Left,
                Minimum  = 0,
                Maximum  = 11,
                Title    = "Average Rating"
            });

            var series = new FunctionSeries();

            foreach (var avg in avgs)
            {
                series.Points.Add(new DataPoint(DateTimeAxis.ToDouble(avg.Day), (int)avg.Avg));
            }
            model.Series.Add(series);

            var pngExporter = new OxyPlot.WindowsForms.PngExporter();

            pngExporter.Width  = width;
            pngExporter.Height = height;
            var ms = new MemoryStream();

            pngExporter.Export(model, ms);
            ms.Position = 0;

            var response = Request.CreateResponse();

            response.Content = new StreamContent(ms);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");

            return(response);
        }