public void AddBulkSalesReports(IFormFile formFile, DateTime uploadedDateTime) { try { SalesFileFactory salesFileFactory = new SalesFileFactory(); var salesFile = salesFileFactory.CreateSalesFile(formFile, uploadedDateTime); SalesReportFactory salesReportFactory = new SalesReportFactory(); var salesReports = salesReportFactory.CreateSalesReports(((CSVSalesFile)salesFile).FileLines, salesFile.FileName); _salesReportRepository.InsertBulkSalesReports(salesReports); } catch (Exception ex) { throw new ApplicationException("Could not save reports", ex); } }
public async Task <IActionResult> Post([FromBody] Dictionary <string, string> options) => await Task.Run <IActionResult>(async() => { IReportFactory factory; string type = options.ContainsKey("type") ? options["type"] : "sales"; bool isJson = options.ContainsKey("json") ? Boolean.Parse(options["json"]) : false; bool willSave = options.ContainsKey("save") ? Boolean.Parse(options["save"]) : true; DateTime begin = options.ContainsKey("begin") ? DateTime.Parse(options["begin"]) : DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0)); DateTime end = options.ContainsKey("end") ? DateTime.Parse(options["end"]) : DateTime.Now; switch (type) { case "sales": factory = new SalesReportFactory(begin, end); break; case "stock": factory = new StockReportFactory(begin, end); break; case "low": factory = new LowStockReportFactory(options.ContainsKey("threshold") ? Int32.Parse(options["threshold"]) : 5); break; case "daily": factory = new DailySalesReportFactory(); break; default: throw new Exception("Invalid Report Type"); } if (willSave) { await factory.WriteReport(); } return(Content(isJson ? await factory.GenerateJson() : await factory.GenerateCsv())); });