Ejemplo n.º 1
0
        public void SetUp()
        {
            _zlib                 = ZipComponentFactory.CreateZipComponent(ZipComponentType.Zlib);
            _clearFilePath        = "c:\\ZlibTestCase_clear.txt";
            _compressedFilePath   = "c:\\ZlibTestCase_compressed.txt";
            _unCompressedFilePath = "c:\\ZlibTestCase_unCompressed.txt";

            var lines = Enumerable.Range(0, 100).ToList()
                        .Select(x => "Mehmet Zahir Solak").ToArray();

            File.WriteAllLines(_clearFilePath, lines);
        }
Ejemplo n.º 2
0
        public ActionResult MonthlyInvoiceExport()
        {
            var orderDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);

            if (Request["OrderMonth"] != null && Request["OrderYear"] != null)
            {
                orderDate = new DateTime(Int32.Parse(Request["OrderYear"]), Int32.Parse(Request["OrderMonth"]), 1);
            }

            var recordSchoolCount = "";

            if (Request["schoolListCounts"] != null)
            {
                recordSchoolCount = Request["schoolListCounts"];
            }


            var recordCount = 1000;

            if (!string.IsNullOrWhiteSpace(Request["RecordCount"]))
            {
                recordCount = Int32.Parse(Request["RecordCount"]);
            }

            var request = new InvoiceGetAllRequest
            {
                Filter = new InvoiceFilterView {
                    OrderDate = orderDate, SchoolNameStartsWith = Request["SchoolNameStartsWith"] ?? string.Empty
                },
                OrderByAsc   = true,
                OrderByField = "SchoolName",
                PageIndex    = 1,
                PageSize     = recordCount
            };

            TryUpdateModel(request.Filter);
            var result = OrderService.SchoolInvoicesGetAllByFilter(request);

            if (result.SchoolInvoices.Count != 0)
            {
                byte[]     fileContent       = new byte[4096];
                var        fileName          = "";
                var        directoryPath     = "";
                var        templateDirectory = "";
                string[]   files             = new string[4096];
                int        j       = 0;
                List <int> numbers = new List <int>();
                string[]   words   = recordSchoolCount.Split('-');
                foreach (string word in words)
                {
                    int Count = Convert.ToInt32(word);
                    numbers.Add(Count);
                }
                for (j = numbers[0]; j <= numbers[1]; j++)
                {
                    var        invoiceId = result.SchoolInvoices[j].InvoiceList;
                    List <int> countIds  = new List <int>();
                    for (int i = 0; i <= invoiceId.Count - 1; i++)
                    {
                        int list56 = Convert.ToInt32(invoiceId[i].Id);
                        countIds.Add(list56);
                    }

                    int[] invoiceIds = countIds.ToArray();

                    var orderReports = new List <MealMenuOrderReportResponse>();
                    var model        = new InvoiceExportViewModel();

                    foreach (var i in invoiceIds)
                    {
                        var orderList = OrderService.InvoicesGetAllByFilter(new InvoiceGetAllRequest {
                            Filter = new InvoiceFilterView()
                            {
                                OrderId = i
                            }
                        });
                        if (orderList != null && orderList.Invoices != null && orderList.Invoices.Count > 0)
                        {
                            var note     = orderList.Invoices[0].Note;
                            var mealType = (MealTypes)orderList.Invoices[0].MealType.Id;
                            model.Notes.Add(mealType, note);
                        }
                    }

                    foreach (int i in invoiceIds)
                    {
                        var orderReport =
                            OrderService.GetOrderReport(new MealMenuOrderReportRequest
                        {
                            Filter = new OrderReportFilterView {
                                OrderId = i
                            },
                            OrderByAsc   = true,
                            OrderByField = "Id",
                            PageIndex    = 0,
                            // PageSize = 20
                        });
                        if (orderReport.Result == Result.Success && orderReport.Orders.Any())
                        {
                            orderReports.Add(orderReport);
                        }
                    }
                    if (orderReports.Count == 0)
                    {
                        ErrorMessage = "Invoice Couldn't be found.";
                        return(null);
                    }

                    var school = SchoolService.Get(new SchoolGetRequest {
                        Id = orderReports[0].Orders[0].SchoolId
                    });

                    model.School       = school.School;
                    model.orderReports = orderReports;


                    templateDirectory = Settings.GetSetting <string>("TemplateDirectory");
                    var templateFile = Server.MapPath(string.Format(@"\{0}\invoice5.xlsx", templateDirectory));

                    directoryPath =
                        Server.MapPath(string.Format(@"~\{0}\Invoices\{1}", templateDirectory, "InvoiceReport"));

                    if (Directory.Exists(directoryPath))
                    {
                        Directory.CreateDirectory(directoryPath);
                    }

                    var dateString = DateTime.Now.ToString("yyyyMMdd");
                    files = Directory.GetFiles(directoryPath, string.Format("{0}*", dateString),
                                               SearchOption.TopDirectoryOnly);
                    fileName = string.Format("{0}_" + result.SchoolInvoices[j].SchoolName + ".xlsx", dateString, files.Count() + 1);
                    var filePath = string.Format(@"{0}\{1}", directoryPath, fileName);

                    InvoiceExport invoice = new InvoiceExport(model, filePath, templateFile, OrderService, SchoolService);
                    invoice.GenerateInvoiceSheet();
                    invoice.CloseWorkSheet();

                    //var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);

                    //fileContent = new byte[fs.Length];
                    //fs.Read(fileContent, 0, fileContent.Length);
                }

                //DirectoryInfo di = fi.Directory;
                //if (di.Exists)
                //    di.Delete(true);
                //return File(fileContent, "application/vnd.ms-excel", fileName);
                //return new FileStreamResult(new FileStream(fileName, FileMode.Open), "application/zip")
                //{
                //    FileDownloadName = directoryPath
                //};
                var zipFile = Server.MapPath(string.Format(@"~\{0}\Invoices\{1}", templateDirectory, "InvoiceAllReport.zip"));
                using (var stream = new FileStream(zipFile, FileMode.Create))
                {
                    var zipFolder = Server.MapPath(string.Format(@"~\{0}\Invoices\{1}", templateDirectory, "InvoiceAllReport"));
                    ZipComponentFactory.CreateZipComponent().Zip(stream, directoryPath, true);
                    string[]      filePaths = Directory.GetFiles(directoryPath);
                    FileInfo      fi        = new FileInfo(directoryPath);
                    DirectoryInfo dir       = new DirectoryInfo(directoryPath);
                    dir.GetFiles("*", SearchOption.AllDirectories).ToList().ForEach(file => file.Delete());
                }
                using (Ionic.Zip.ZipFile zip = Ionic.Zip.ZipFile.Read(zipFile))
                {
                    zip.RemoveSelectedEntries("InvoiceAllReport/*"); // Remove folder and all its contents
                    zip.Save();
                }
                return(new FileStreamResult(new FileStream(zipFile, FileMode.Open), "application/zip")
                {
                    FileDownloadName = "InvoiceAllReport.zip"
                });
            }
            return(null);
        }