public async Task <IActionResult> GetProductReportAsync(ProductReportInputModel input) { var file = await QueriesService .ProductReport(input) .ConfigureAwait(false); if (String.IsNullOrEmpty(file)) { return(NotFound("No data found for the query")); } var memory = new MemoryStream(); using (var stream1 = new FileStream(file, FileMode.Open)) { await stream1 .CopyToAsync(memory) .ConfigureAwait(false); } memory.Position = 0; var headertype = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; return(File(memory, headertype, Path.GetFileName(file))); }
public int WriteReportHeader(IXLWorksheet ws, ProductReportInputModel input) { int writingRow = 1; ws.Cell(writingRow, 1).RichText .AddText("Fornitore:") .SetBold(); ws.Cell(writingRow++, 2).RichText .AddText(input.CedentePrestatore != null ? input.CedentePrestatore : "/"); ws.Cell(writingRow, 1).RichText .AddText("Prodotti:") .SetBold(); ws.Cell(writingRow++, 2).RichText .AddText(input.Products); ws.Cell(writingRow, 1).RichText .AddText("Dal:") .SetBold(); ws.Cell(writingRow++, 2).RichText .AddText(input.Begin.ToString("dd/MM/yyyy")); ws.Cell(writingRow, 1).RichText .AddText("Al:") .SetBold(); ws.Cell(writingRow++, 2).RichText .AddText(input.End.ToString("dd/MM/yyyy")); writingRow++; ws.Cell(writingRow, 1).RichText .AddText("Descrizione") .SetBold(); ws.Cell(writingRow, 2).RichText .AddText("UM") .SetBold(); ws.Cell(writingRow, 3).RichText .AddText("Q.ta") .SetBold(); ws.Cell(writingRow, 4).RichText .AddText("P.Unit.") .SetBold(); ws.Cell(writingRow, 5).RichText .AddText("P.Tot.") .SetBold(); ws.Cell(writingRow, 6).RichText .AddText("Nr.DDT") .SetBold(); ws.Cell(writingRow, 7).RichText .AddText("Data DDT") .SetBold(); ws.Range("B6:G6").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; return(++writingRow); }
public Task BindModelAsync(ModelBindingContext bindingContext) { string cedentePrestatore = bindingContext.ValueProvider.GetValue("cedentePrestatore").FirstValue; int cedentePrestatoreId = Convert.ToInt32(bindingContext.ValueProvider.GetValue("cedentePrestatoreId").FirstValue); DateTime begin = Convert.ToDateTime(bindingContext.ValueProvider.GetValue("begin").FirstValue); DateTime end = Convert.ToDateTime(bindingContext.ValueProvider.GetValue("end").FirstValue); string products = bindingContext.ValueProvider.GetValue("products").FirstValue; var input = new ProductReportInputModel(cedentePrestatore, cedentePrestatoreId, begin, end, products); bindingContext.Result = ModelBindingResult.Success(input); return(Task.CompletedTask); }
public async Task <string> ProductReport(ProductReportInputModel input) { string[] productsArray = input.Products.Split(","); int productsArrayLength = productsArray.Length; for (int i = 0; i < productsArrayLength; i++) { productsArray[i] = productsArray[i].Trim(); } List <DettaglioLineeModel> lineeReport = new List <DettaglioLineeModel>(); lineeReport = await DbContext.Linee .Search(l => l.Descrizione) .Containing(productsArray) .Where(l => input.CedentePrestatoreId != 0 ? l.BodyModel.CedentePrestatoreId == input.CedentePrestatoreId : true && l.BodyModel.CedentePrestatoreId != OwnerId) .Include(l => l.BodyModel) .ThenInclude(b => b.DatiDDT) .ThenInclude(ddt => ddt.RiferimentoNumeroLinea) .ToListAsync() .ConfigureAwait(false); if (lineeReport.Count == 0) { return(null); } lineeReport = lineeReport .OrderBy(lr => lr.BodyModel.Data) .ThenBy(lr => lr.BodyModel.Id) .ThenBy(lr => lr.NumeroLinea) .ToList(); List <ProductReportModel> productReportModel = new List <ProductReportModel>(); foreach (var linea in lineeReport) { productReportModel.Add(Mapper .Map <DettaglioLineeModel, ProductReportModel>(linea)); } XLWorkbook wb = new XLWorkbook(); IXLWorksheet ws = wb.AddWorksheet("Report"); int writingRow = ReportWriter.WriteReportHeader(ws, input); var reportData = new Tuple <int, List <ProductReportModel> > ( writingRow, productReportModel ); ReportWriter.WriteReportLines(ws, reportData); IXLWorksheet riepilogoWs = wb.AddWorksheet("Riepilogo"); var summaryData = new Tuple <List <ProductReportModel>, string[]> ( productReportModel, productsArray ); ReportWriter.WriteSummary(riepilogoWs, summaryData); string filePath = ReportsPath + "prodotti_" + DateTime.Now.ToString("yy-MM-dd_hhmmss"); if (!string.IsNullOrEmpty(input.CedentePrestatore)) { filePath += "_" + input.CedentePrestatore.Replace(' ', '_'); } filePath += ".xlsx"; wb.SaveAs(filePath); return(filePath); }