public void UpdateDatabase(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();
                this.EnsureDB(schemaHandler);

                var allReports = db.Excursions
                .Select(x => new Report()
                {
                    Id = x.ExcursionId,
                    Name = x.Name,
                    Duration = (int)DbFunctions.DiffDays(x.StartDate, x.EndDate),
                    Destination = x.Destination.Country,
                    ClientsCount = x.Clients,
                    TotalIncome = x.PricePerClient * x.Clients,
                    TransportCompany = x.Transport.CompanyName,
                    TransportType = x.Transport.Type.ToString(),
                    GuideName = x.Guide.Name,
                    ExpenseId = x.ExpenseId
                }).ToList();

                var reportNames = reportsContext.GetAll<Report>().Select(x => x.Name).ToList();
                foreach (var report in allReports)
                {
                    if (!reportNames.Contains(report.Name))
                    {
                        reportsContext.Add(report);
                    }
                }

                reportsContext.SaveChanges();
            }
        }
        private void GenerateData(Document document, TravelAgencyDbContext dbContext)
        {
            var excursions = dbContext
                .Excursions
                .Select(x => new ReportExcursion()
                {
                    ExcName = x.Name,
                    Destination = x.Destination.Country,
                    Distance = x.Destination.Distance.ToString(),
                    ClientCount = x.Clients,
                    StartDate = x.StartDate,
                    EndDate = x.EndDate,
                    Guide = x.Guide.Name,
                    Experience = x.Guide.Experience
                })
                .ToList();

            PdfPTable table = new PdfPTable(5);

            int[] widths = new int[] { 20, 20, 20, 15, 11 };

            table.SetWidths(widths);

            table.AddCell(this.CreateCell(new Phrase("Excursion name"), true));
            table.AddCell(this.CreateCell(new Phrase("Destination"), true));
            table.AddCell(this.CreateCell(new Phrase("Clients count"), true));
            table.AddCell(this.CreateCell(new Phrase("Clients satisfaction"), true));
            table.AddCell(this.CreateCell(new Phrase("Duration in days"), true));

            this.InputData(excursions, table);

            document.Add(table);
        }
        private void FillDocument(Document document, TravelAgencyDbContext dbContext)
        {
            document.Open();

            this.GenerateData(document, dbContext);

            document.Close();
        }
        public void GeneratePdfReports(TravelAgencyDbContext dbContext)
        {
            FileStream fs = new FileStream("../../../Data files/ExcursionsReport.pdf", FileMode.Create, FileAccess.Write, FileShare.None);

            Document document = new Document(this.CreatePdfRectangle());

            PdfWriter writer = PdfWriter.GetInstance(document, fs);

            this.FillDocument(document, dbContext);
        }
        private void FillDropbox()
        {
            TravelAgencyDbContext dbContext = new TravelAgencyDbContext();
            DropboxImport inport = new DropboxImport(dbContext);

            this.destinationsComboBox.DataSource = inport.GetDestination();
            this.guidesComboBox.DataSource = inport.GetGuides();
            this.transportsComboBox.DataSource = inport.GetTransports();
            ////this.comboBox1.AutoCompleteSource = listToInport;
        }
        private void GenerateXmlButtonHandler(object sender, EventArgs e)
        {
            try
            {
                TravelAgencyDbContext dbContext = new TravelAgencyDbContext();
                XMLGenerator xmlGenerator = new XMLGenerator();

                var cb1Value = this.destinationsComboBox.SelectedValue.ToString();
                var cb2Value = this.guidesComboBox.SelectedValue.ToString();
                var cb3Value = this.transportsComboBox.SelectedValue.ToString();
                xmlGenerator.XmlGenerate(dbContext, cb1Value, cb2Value, cb3Value);
                MessageBox.Show("XML document was generated successfully with the data from SQL!");
            }
            catch (Exception)
            {
                MessageBox.Show("XML document couldn't be generated!");
            }
        }
        public void XmlGenerate(TravelAgencyDbContext dbContext, string destination, string guide, string transport)
        {
            XmlTextWriter writer = new XmlTextWriter("../../../Data files/TransportReport.xml", System.Text.Encoding.UTF8);
            writer.WriteStartDocument(true);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 2;
            writer.WriteStartElement("Table");
            var dataInvoker = new DataInvoker();
            var data = dataInvoker.GetData(dbContext, destination, guide, transport);

            foreach (var report in data)
            {
                this.CreateNode(report, writer);
            }

            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }
        public override IEnumerable<ReportTransport> ProcessRequest(TravelAgencyDbContext dbContext, string destination, string guide, string transport)
        {
            if (destination == "*" && guide == "*" && transport == "*")
            {
                var excursions = dbContext
                .Excursions
                .Select(x => new ReportTransport()
                {
                    ExcName = x.Name,
                    StartDate = x.StartDate,
                    EndDate = x.EndDate,
                    CompanyName = x.Transport.CompanyName,
                    TransportType = x.Transport.Type,
                    County = x.Destination.Country
                })
                .ToList();

                return excursions;
            }
            else
            {
                return this.Successor.ProcessRequest(dbContext, destination, guide, transport);
            }
        }
        public string[,] GenerateReports(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();

                var sqliteReports = this.sqliteReader.GetData();

                var currentReports = reportsContext.GetAll<Report>().Select(x => new
                {
                    Name = x.Name,
                    ExpenseId = x.ExpenseId,
                    Income = x.TotalIncome
                }).ToList();

                var finalReportsLength = currentReports.Count;

                string[,] finalReports = new string[finalReportsLength, 2];

                for (int i = 0; i < finalReportsLength; i++)
                {
                    var currentReport = currentReports[i];
                    foreach (var sqliteReport in sqliteReports)
                    {
                        if (sqliteReport.Key == currentReport.ExpenseId)
                        {
                            var expenseToAdd = currentReport.Income - sqliteReport.Value;
                            finalReports[i, 0] = currentReport.Name;
                            finalReports[i, 1] = sqliteReport.Value.ToString();
                        }
                    }
                }

                return finalReports;
            }
        }
 private void ReadFromXML(object sender, System.EventArgs e)
 {
     TravelAgencyDbContext dbContext = new TravelAgencyDbContext();
     ReadFromXml xmlReader = new ReadFromXml();
     this.guides = xmlReader.ImportFromXmlIntoSql("../../../Data files/Guides.xml");
     this.HideLoadDataButtons();
     importFormXmlToSqlButton.Show();
     loadFromXmlToMongoDbButton.Show();
     this.backButton.Visible = true;
 }
 private void ImportFromSqlToXml(object sender, EventArgs e)
 {
     TravelAgencyDbContext dbContext = new TravelAgencyDbContext();
     XMLGenerator xmlGenerator = new XMLGenerator();
     this.GenerateXmlButtonHandler(sender, e);
 }
 private void ImportFromSqlToPdf(object sender, EventArgs e)
 {
     try
     {
         TravelAgencyDbContext dbContext = new TravelAgencyDbContext();
         PdfGenerator pdfGenerator = new PdfGenerator();
         pdfGenerator.GeneratePdfReports(dbContext);
         MessageBox.Show("PDF report  was successfully generated with the data from SQL!");
     }
     catch (Exception)
     {
         MessageBox.Show("PDF report couldn't be generated!");
     }
 }
 private void ImportFromMySqlAndSqliteToExcel(object sender, EventArgs e)
 {
     try
     {
         var db = new TravelAgencyDbContext();
         var reader = new ReadFromSQLite();
         var excelReportsToAdd = new ExcelReport(reader);
         var reports = excelReportsToAdd.GenerateReports(db);
         var excelWriter = new WritteDataToExcel();
         excelWriter.WritteDestinationInExcel(reports);
         MessageBox.Show("Excel report was succesfully generated with the data from MySQL and SQLite1");
     }
     catch (Exception)
     {
         MessageBox.Show("Excel report couldn't be generated!");
     }
 }
 private void ImportFromMongoToSQL(object sender, EventArgs e)
 {
     try
     {
         var travelAgency = new TravelAgencyDbContext();
         var transports = new MongoDBImporter();
         transports.ImportData(travelAgency);
         MessageBox.Show("The data from MongoDb was successfully loaded to SQL!");
     }
     catch (Exception)
     {
         MessageBox.Show("The data from MongoDb couldn't be loaded to SQL!");
     }
 }