Ejemplo n.º 1
0
        public MemoryStream GenerateReport(int?typeFilter, Guid?cowId)
        {
            try
            {
                HappyCowsContext db = new HappyCowsContext();
                var events          = db.Events.ToList();

                // Filtering
                if (typeFilter != null)
                {
                    events = events.Where(e => (int)e.EventType == typeFilter).ToList();
                }
                if (cowId != null)
                {
                    events = events.Where(e => e.CowId == cowId).ToList();
                }

                var package = new ExcelPackage();
                var ws      = CreateSheet(package, "Detalji događaja", 1);

                //Header
                ws.Cells[1, 1].Value = "Ime";
                ws.Cells[1, 2].Value = "Tip";
                ws.Cells[1, 3].Value = "Krava";
                ws.Cells[1, 4].Value = "Datum";

                ws.Cells[1, 1].Style.Font.Bold = true;
                ws.Cells[1, 2].Style.Font.Bold = true;
                ws.Cells[1, 3].Style.Font.Bold = true;
                ws.Cells[1, 4].Style.Font.Bold = true;

                //Body
                var n = 2;

                foreach (var e in events)
                {
                    ws.Cells[n, 1].Value = e.Name;
                    ws.Cells[n, 2].Value = e.EventType.GetDisplayName();
                    ws.Cells[n, 3].Value = e.Cow.Name;
                    ws.Cells[n, 4].Value = e.EventDate;
                    ws.Cells[n, 4].Style.Numberformat.Format = "dd.MM.yyyy";
                    n++;
                }

                //Cells style
                ws.Cells[ws.Dimension.Address].AutoFitColumns();
                ws.Cells[ws.Dimension.Address].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                ws.Cells[ws.Dimension.Address].Style.VerticalAlignment   = ExcelVerticalAlignment.Center;

                var fileStream = new MemoryStream();
                package.SaveAs(fileStream);
                fileStream.Position = 0;
                return(fileStream);
            }
            catch (Exception)
            {
                return(null);
            }
        }