Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }