public IActionResult GenerateReport([FromBody] Models.ActivityReport args) { var user = HttpContext.Items["EndUser"] as EF.EndUser; var bll_gr = new BLL.GroupReport(); bll_gr.GroupId = args.GroupId; bll_gr.ReportId = args.ReportId; bll_gr.CommunityId = user.Member.CommunityId.Value; bll_gr.DateFrom = args.DateTimeStart; bll_gr.DateTo = args.DateTimeEnd; var dt = bll_gr.GetTable(); StringBuilder sb = new StringBuilder(); IEnumerable <string> columnNames = dt.Columns.Cast <DataColumn>(). Select(column => column.ColumnName); sb.AppendLine(string.Join(",", columnNames)); foreach (DataRow row in dt.Rows) { IEnumerable <string> fields = row.ItemArray.Select(field => field.ToString()); sb.AppendLine(string.Join(",", fields)); } var bytes = Encoding.ASCII.GetBytes(sb.ToString()); var result = new FileContentResult(bytes, "text/csv"); result.FileDownloadName = "my-csv-file.csv"; return(result); }
public ActivityReport AddOrUpdate(Models.ActivityReport ar) { var existing = db.ActivityReports .Where(a => a.Date.Day == ar.Date.Day && a.Date.Year == ar.Date.Year && a.Date.Month == ar.Date.Month && ar.UserID == a.UserID) .FirstOrDefault(); if (existing != null) { existing.Distance += ar.Distance; existing.Duration += ar.Duration; existing.Steps += ar.Steps; db.Entry(existing).State = EntityState.Modified; return(existing); } else { db.ActivityReports.Add(ar); return(ar); } }