public string GenerateOneReport(string clientCode)
        {
            FacilityReport  facilityReport = new FacilityReport();
            ApplicationUnit unit           = new ApplicationUnit();

            List <Facility> facilities = unit.Facilities.GetAll()
                                         .Include(b => b.Buildings)
                                         .Include(d => d.DeedsInfo)
                                         .Include(c => c.Portfolio)
                                         .Include(p => p.ResposiblePerson)
                                         .Include(l => l.Location)
                                         .ToList();

            Facility facility = facilities.Where(f => f.ClientCode.Trim().ToLower() == clientCode.Trim().ToLower()).FirstOrDefault();

            Model.OriginalData dbOriginalData = unit.OriginalDatas.GetAll().Where(o => o.VENUS_CODE.Trim().ToLower() == facility.ClientCode.Trim().ToLower()).FirstOrDefault();
            int i = 0;

            if (facility != null)
            {
                string facilityLocation = facilityReport.GenerateFacilityReport(facility, dbOriginalData);
                return(facilityLocation);
            }
            else
            {
                return(null);
            }
        }
        public Dictionary <string, string> GenerateAllReport()
        {
            //List<string> list = new List<string>();

            Dictionary <string, string> dictionary = new Dictionary <string, string>();
            FacilityReport  facilityReport         = new FacilityReport();
            ApplicationUnit unit = new ApplicationUnit();

            List <Facility> facilities = unit.Facilities.GetAll()
                                         .Include(b => b.Buildings)
                                         .Include(d => d.DeedsInfo)
                                         .Include(c => c.Portfolio)
                                         .Include(p => p.ResposiblePerson)
                                         .Include(l => l.Location)
                                         .ToList();

            List <Facility> facilitiffes = facilities.Where(f => f.Status == "Submitted").ToList();

            int i = 0;

            foreach (var facility in facilitiffes)
            {
                if (i < 30)
                {
                    Model.OriginalData dbOriginalData   = unit.OriginalDatas.GetAll().Where(o => o.VENUS_CODE.Trim().ToLower() == facility.ClientCode.Trim().ToLower()).FirstOrDefault();
                    string             facilityLocation = facilityReport.GenerateFacilityReport(facility, dbOriginalData);
                    dictionary.Add(facilityLocation, facility.ClientCode);
                    i++;
                }
            }

            return(dictionary);
        }
        public ActionResult DownloadAllFacility([Bind(Include = "Region")] Facility facility)
        {
            if (string.IsNullOrEmpty(facility.Region))
            {
                ModelState.AddModelError("", "Please Select Region.");
                return(View(facility));
            }
            FacilityReport  facilityReport = new FacilityReport();
            ApplicationUnit unit           = new ApplicationUnit();

            List <Model.Facility> dbFacilities = unit.Facilities.GetAll()
                                                 .Include(b => b.Buildings)
                                                 .Include(d => d.DeedsInfo)
                                                 .Include(p => p.ResposiblePerson)
                                                 .Include("Location.GPSCoordinates")
                                                 .Include("Location.BoundryPolygon")
                                                 .Where(ss => ss.Status == "Submitted" && ss.Location.Region.Trim().ToLower() == facility.Region.Trim().ToLower())
                                                 .ToList();

            if (dbFacilities.Count() == 0)
            {
                ModelState.AddModelError("", "No Facilities Found For Selected Region.");
                return(null);
            }
            else
            {
                using (var memoryStream = new MemoryStream())
                {
                    using (ZipArchive ziparchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
                    {
                        foreach (var item in dbFacilities)
                        {
                            Model.OriginalData dbOriginalData = unit.OriginalDatas.GetAll().Where(o => o.VENUS_CODE.Trim().ToLower() == item.ClientCode.Trim().ToLower()).FirstOrDefault();
                            string             filePath       = facilityReport.GenerateFacilityReport(item, dbOriginalData);
                            ziparchive.CreateEntryFromFile(filePath, item.ClientCode + ".pdf");
                        }
                    }
                    DeleteAllFile();
                    return(File(memoryStream.ToArray(), "application/zip", "facilities.zip"));
                }
            }
        }
        // GET: Facility/Edit/5
        //[HttpPost]
        //[ValidateAntiForgeryToken]
        public ActionResult DownloadFacility(string clientCode)
        {
            FacilityReport  facilityReport = new FacilityReport();
            ApplicationUnit unit           = new ApplicationUnit();

            Model.Facility dbFacility = unit.Facilities.GetAll()
                                        .Include(b => b.Buildings)
                                        .Include(d => d.DeedsInfo)
                                        .Include(c => c.Portfolio)
                                        .Include(p => p.ResposiblePerson)
                                        .Include("Location.GPSCoordinates")
                                        .Include("Location.BoundryPolygon")
                                        .Where(f => f.ClientCode.ToLower() == clientCode.ToLower()).FirstOrDefault();
            if (dbFacility == null)
            {
                return(RedirectToAction("Index"));
            }

            Model.OriginalData dbOriginalData = unit.OriginalDatas.GetAll()
                                                .Where(o => o.VENUS_CODE.Trim().ToLower()
                                                       == dbFacility.ClientCode.Trim().ToLower())
                                                .FirstOrDefault();

            string filePath = facilityReport.GenerateFacilityReport(dbFacility, dbOriginalData);

            using (var webClient = new WebClient())
            {
                if (!System.IO.File.Exists(filePath))
                {
                    return(null);
                }
                byte[] file = webClient.DownloadData(filePath);
                DeleteAllFile();
                return(File(file, MediaTypeNames.Application.Pdf));
            }
        }