Beispiel #1
0
        public string GetPdfLocation(SiteBase s, SearchFilters sf)
        {
            Log.Instance.Info("---Begin: GetPdfLocation");
            Dictionary <string, Dictionary <string, JOffer> > offerMap = GetRates(sf, out s);

            string fileName;

            fileName = sf.IsPdf > 0? CreatePdf(s, offerMap): GetExcel(s, offerMap);

            Log.Instance.Info("---End: GetPdfLocation");
            return(fileName);
        }
Beispiel #2
0
        public string CreatePdf(SiteBase s, Dictionary <string, Dictionary <string, JOffer> > offerMap)
        {
            PdfBuilder pdf = new PdfBuilder(s);

            pdf.CreateHeaders();

            foreach (string link in offerMap.Keys.ToList())
            {
                Dictionary <string, JOffer> map = offerMap[link];
                List <JOffer> offers            = OffersToArray(map, link);
                pdf.AddRow(offers.ToArray());
            }
            pdf.Close();
            return(pdf.fileName);
        }
Beispiel #3
0
        public string GetExcel(SiteBase s, Dictionary <string, Dictionary <string, JOffer> > offerMap)
        {
            FileInfo template = new FileInfo(HttpContext.Current.Server.MapPath(@"\Content\ExcelPackageTemplate.xlsx"));
            string   filename = @"\output\" + s.GetTitle() + s.GetPuMonth() + "-" + s.GetPuDay() + s.GetCity() + ".xlsx";
            FileInfo newFile  = new FileInfo(HttpContext.Current.Server.MapPath(filename));

            using (ExcelPackage excelPackage = new ExcelPackage(newFile, template))
            {
                ExcelWorkbook  myWorkbook  = excelPackage.Workbook;          // Getting the complete workbook...
                ExcelWorksheet myWorksheet = myWorkbook.Worksheets["Rates"]; // Getting the worksheet by its name...

                int      rowNum = 2;
                DateTime doDate = new DateTime(Convert.ToInt32(s.GetPuYear()), Convert.ToInt32(s.GetPuMonth()), Convert.ToInt32(s.GetPuDay()));
                foreach (string link in offerMap.Keys.ToList())
                {
                    Dictionary <string, JOffer> map = offerMap[link];
                    List <JOffer> offers            = OffersToArray(map, link);
                    int           colNum            = 2;
                    myWorksheet.Cells[rowNum, 1].Value = s.GetPuMonth() + "-" + s.GetPuDay() + "/" + doDate.AddDays(rowNum - 1).Day + "\n" + (rowNum - 1);
                    for (int i = 0; i < offers.Count; i++)
                    {
                        myWorksheet.Row(rowNum).Height = 50;
                        //myWorksheet.Row(rowNum + 1).Height = 50;
                        //myWorksheet.Row(rowNum + 2).Height = 50;

                        JOffer      o     = offers.ElementAt(i);
                        SupplierNew other = o.GetOtherSupplier();
                        SupplierNew gm    = o.GetGmSupplier();
                        SupplierNew cr    = o.GetCrSupplier();

                        myWorksheet.Cells[rowNum, colNum].Value     = (gm != null ? gm.ToString() : "");
                        myWorksheet.Cells[rowNum, colNum + 1].Value = (cr != null ? cr.ToString() : "");
                        myWorksheet.Cells[rowNum, colNum + 2].Value = (other != null ? other.ToString() : "");
                        colNum += 3;
                    }
                    rowNum++;
                }
                excelPackage.Save();// Saving the change...
                return(filename);
            }
        }
Beispiel #4
0
        public PdfBuilder(SiteBase site)
        {
            if (site != null)
            {
                this.SiteName = site;
                SetDocumentDetails();

                PATH = HttpContext.Current.Server.MapPath("~/");
                string fileNameDetails = documentTitle + puMonth + "-" + puDay + city + DateTime.Now.ToString("hhmm");
                fileName = "\\output\\" + fileNameDetails.Replace("+", " ");
                FileStream fs;
                try
                {
                    fs = new FileStream(PATH + fileName + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None);
                }
                catch (IOException ioe)
                {
                    fs = new FileStream(PATH + fileName + "(1).pdf", FileMode.Create, FileAccess.Write, FileShare.None);
                    Log.Instance.Warn("--- PdfBuilder" + ioe.Message);
                }
                fileName += ".pdf";
                doc       = new Document(PageSize.A4, 10, 10, 10, 10);
                doc.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
                PdfWriter writer = PdfWriter.GetInstance(doc, fs);
                doc.Open();

                doDate = new DateTime(puYear, puMonth, puDay);
                dayNum = 1;
                AddSuppliers("GREEN MOTION");
            }
            else
            {
                Log.Instance.Warn("--- PdfBuilder Site is null");
                throw new Exception("Site is null");
            }
        }
Beispiel #5
0
        public Dictionary <string, Dictionary <string, JOffer> > GetRates(SearchFilters searchFilters, out SiteBase tempSite)
        {
            Log.Instance.Warn("---Begin: GetRates");
            switch (searchFilters.Source)
            {
            case 1:
                return(GetRentalRates(searchFilters, out tempSite));

            case 2:
                return(GetCarTrawlerRates(searchFilters, out tempSite));

            case 3:
                return(GetScannerRates(searchFilters, out tempSite));
            }
            Log.Instance.Warn("---End: GetRates");
            tempSite = null;
            return(null);
        }
Beispiel #6
0
        public Dictionary <string, Dictionary <string, JOffer> > GetScannerRates(SearchFilters searchFilters, out SiteBase site)
        {
            Dictionary <int, Location> locations;

            using (RatesDBContext ctx = new RatesDBContext())
            {
                locations = ctx.Locations.ToDictionary(loc => loc.LocationId);
            }

            Trawler s = new Trawler(locations[searchFilters.Location].SnrStr);


            DateTime sDate = searchFilters.PuDate.AddHours(searchFilters.PuTime.Hours).AddMinutes(searchFilters.PuTime.Minutes);
            DateTime eDate = searchFilters.DoDate.AddHours(searchFilters.DoTime.Hours).AddMinutes(searchFilters.DoTime.Minutes);

            s.InitDate(sDate);

            int numOfIterations = (eDate - sDate).Days;

            List <string> links     = s.GetGeneratedLinksByDate(sDate, eDate);
            List <JOffer> minOffers = new List <JOffer>();

            Dictionary <string, Dictionary <string, JOffer> > offerMap = new Dictionary <string, Dictionary <string, JOffer> >();

            for (int i = 0; i < links.Count; i++)
            {
                offerMap.Add(links[i], new Dictionary <string, JOffer>());
            }


            Func <object, int> action = (object obj) =>
            {
                int           i      = (int)obj;
                JSourceReader reader = new JSourceReader();
                offerMap[links.ElementAt(i)] = reader.GetMap(reader.GetNorwRates(links.ElementAt(i)));
                return(0);
            };

            RunThreads(action, links.Count);
            s.SetTitle("scanner");
            site = s;
            return(offerMap);
        }
Beispiel #7
0
        public Dictionary <string, Dictionary <string, JOffer> > GetCarTrawlerRatesSingle(SearchFilters searchFilters, out SiteBase site)
        {
            Dictionary <int, Location> locations;

            using (RatesDBContext ctx = new RatesDBContext())
            {
                locations = ctx.Locations.ToDictionary(loc => loc.LocationId);
            }

            Trawler s = new Trawler(locations[searchFilters.Location].CtrStr);


            DateTime sDate = searchFilters.PuDate; //.AddHours(searchFilters.PuTime.Hours).AddMinutes(searchFilters.PuTime.Minutes);
            DateTime eDate = searchFilters.DoDate; //.AddHours(searchFilters.DoTime.Hours).AddMinutes(searchFilters.DoTime.Minutes);

            s.InitDate(sDate);

            int numOfIterations = (eDate - sDate).Days;

            List <string> links = s.GetGeneratedLinksByDate(sDate, eDate);

            site = s;

            List <JOffer> minOffers = new List <JOffer>();

            Dictionary <string, Dictionary <string, JOffer> > offerMap = new Dictionary <string, Dictionary <string, JOffer> >();

            for (int i = 0; i < links.Count; i++)
            {
                offerMap.Add(links[i], new Dictionary <string, JOffer>());
            }


            List <Thread> threads = new List <Thread>();

            //--- Start all threads
            for (int index = 0; index < links.Count; index++)
            {
                JSourceReader reader = new JSourceReader();
                offerMap[links.ElementAt(index)] =
                    reader.GetMap(reader.GetNorwRates(links.ElementAt(index)));
            }

            return(offerMap);
        }
Beispiel #8
0
        public Dictionary <string, Dictionary <string, JOffer> > GetRentalRates(SearchFilters searchFilters, out SiteBase site)
        {
            Log.Instance.Warn("---Begin: GetRentalRates");
            DateTime sDate = searchFilters.PuDate;
            DateTime eDate = searchFilters.DoDate;
            Dictionary <int, Location> locations;

            using (RatesDBContext ctx = new RatesDBContext())
            {
                locations = ctx.Locations.ToDictionary(loc => loc.LocationId);
            }

            Rental s = new Rental(locations[searchFilters.Location].JigStr);

            s.SetTime(searchFilters.PuTime.Hours, searchFilters.PuTime.Minutes, searchFilters.DoTime.Hours, searchFilters.DoTime.Minutes);
            s.InitDate(sDate);
            site = s;
            int numOfIterations = (eDate - sDate).Days;

            List <string> links     = s.GetGeneratedLinksByDate(sDate, eDate);
            List <JOffer> minOffers = new List <JOffer>();

            Dictionary <string, Dictionary <string, JOffer> > offerMap = new Dictionary <string, Dictionary <string, JOffer> >();

            for (int i = 0; i < links.Count; i++)
            {
                offerMap.Add(links[i], new Dictionary <string, JOffer>());
            }

            Func <object, int> action = (object obj) =>
            {
                int           i      = (int)obj;
                JSourceReader reader = new JSourceReader();
                offerMap[links.ElementAt(i)] = reader.GetMap(reader.ExtractOffers(reader.GetResultGroup(links.ElementAt(i))));
                return(0);
            };

            RunThreads(action, links.Count);
            Log.Instance.Warn("---END: GetRentalRates");
            return(offerMap);
        }