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);
        }
Exemple #2
0
        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);
            }
        }