Advertisement
Guest User

Untitled

a guest
Dec 20th, 2017
534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.79 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Web.Http;
  9. using System.Web.Http.Description;
  10. using Arkub.Artiq.CoreBL.User;
  11. using Arkub.Artiq.ExternalAPI.RESTv1.Interfaces.ActionFilterAttributes;
  12. using Certiq.Rest.Controllers.Core;
  13. using Certiq.Rest.Controllers.Core.Dtos;
  14. using Certiq.Rest.Controllers.Helpers;
  15. using System.Net.Http;
  16. using System.Net.Http.Headers;
  17. using System.Reflection;
  18. using System.Web;
  19. using System.Web.Http;
  20. using System.Web.UI;
  21.  
  22. namespace Certiq.Rest.Controllers.Controllers
  23. {
  24.    /// <summary>
  25.    /// TrainingDataController manages REST endpoints fetching data for machine learning
  26.    /// </summary>
  27.    [RoutePrefix("v1/TrainingData")]
  28.    public class TrainingDataController : ApiController
  29.    {
  30.       private readonly ICertiqApiContainer _certiqApiContainer;
  31.       private int LimitOfRows = 10000;
  32.  
  33.       /// <inheritdoc />
  34.       /// <summary>
  35.       /// Initializes container
  36.       /// </summary>
  37.       /// <param name="certiqApiContainer"></param>
  38.       public TrainingDataController(ICertiqApiContainer certiqApiContainer)
  39.       {
  40.          _certiqApiContainer = certiqApiContainer;
  41.       }
  42.  
  43.       /// <summary>
  44.       /// Returns an object with fields from dapper query columns
  45.       /// </summary>
  46.       /// <remarks>
  47.       /// Returns Registers for SmartRoc machines
  48.       /// Returns a cursor value that keeps track of what data's been recieved
  49.       /// </remarks>
  50.       /// <param name="apiUser"></param>
  51.       /// <param name="fromId">Input cursor to get Registers from MachineRegisterHistoryId  {fromId} + 1  to fetch <see cref="LimitOfRows"/>  number of registers</param>
  52.       [HeaderAuthorizeActionFilter]
  53.       [GuidAuthorizationActionFilter]
  54.       [Route("registers")]
  55.       [HttpGet]
  56.       [ResponseType(typeof(List<dynamic>))]
  57.       public IHttpActionResult GetTrainingDataRegistersSmartRoc(IUser apiUser, int fromId)
  58.       {
  59.          return Ok(_certiqApiContainer.TrainingDataRepository.TrainingDataSmartRocRegisters(apiUser, fromId, LimitOfRows));
  60.       }
  61.  
  62.  
  63.       /// <summary>
  64.       /// Returns an object with fields from dapper query columns
  65.       /// </summary>
  66.       /// <remarks>
  67.       /// Returns Events for SmartRoc machines
  68.       /// Returns a cursor value that keeps track of what data's been recieved
  69.       /// </remarks>
  70.       /// <param name="apiUser"></param>
  71.       /// <param name="fromId">Input cursor to get Events from MachineEventHistoryId  {fromId} + 1  to fetch <see cref="LimitOfRows"/>  number of events</param>
  72.       [HeaderAuthorizeActionFilter]
  73.       [GuidAuthorizationActionFilter]
  74.       [Route("events")]
  75.       [HttpGet]
  76.       [ResponseType(typeof(List<dynamic>))]
  77.       public HttpResponseMessage GetTrainingDataEventsSmartRoc(IUser apiUser, int fromId)
  78.       {
  79.         // var list = _certiqApiContainer.TrainingDataRepository.TrainingDataSmartRocEvents(apiUser, fromId, LimitOfRows);
  80.  
  81.          var records = new List<Record>()
  82.          {
  83.             new Record{ BirthDate = DateTime.Now, Email = "apa@hotmail.com", Name = "apa", Phone = "0704153", Tickets = 3 },
  84.             new Record{ BirthDate = DateTime.Now, Email = "apa2@hotmail.com", Name = "apa2", Phone = "0704153", Tickets = 3 },
  85.             new Record{ BirthDate = DateTime.Now, Email = "apa3@hotmail.com", Name = "apa3", Phone = "0704153", Tickets = 3 }
  86.          };
  87.  
  88.       var sb = new StringBuilder();
  89.  
  90.          sb.Append("Name,Phone,Email,Birth Date,Tickets\r\n");
  91.  
  92.          foreach (var record in records)
  93.          {
  94.             sb.AppendFormat("=\"{0}\",", record.Name);
  95.             sb.AppendFormat("=\"{0}\",", record.Phone);
  96.             sb.AppendFormat("=\"{0}\",", record.Email);
  97.             sb.AppendFormat("=\"{0}\",", record.BirthDate.ToShortDateString());
  98.             sb.AppendFormat("=\"{0}\"\r\n", record.Tickets.ToString());
  99.          }
  100.  
  101.          HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
  102.  
  103.          result.Content = new StringContent(sb.ToString());
  104.          result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  105.          result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); //attachment will force download
  106.          result.Content.Headers.ContentDisposition.FileName = "RecordExport.csv";
  107.  
  108.          return result;
  109.  
  110.  
  111.          return null;
  112.       }
  113.    }
  114.  
  115.    public class Record
  116.    {
  117.       public string Name { get; set; }
  118.       public string Phone { get; set; }
  119.       public string Email { get; set; }
  120.       public DateTime BirthDate { get; set; }
  121.       public int Tickets { get; set; }
  122.    }
  123.  
  124.  
  125. }
  126.  
  127.  
  128. // https://goosedotnet.wordpress.com/2014/09/29/generate-and-export-a-string-only-csv-file-from-webapi/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement