Exemplo n.º 1
0
        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()));
        });