Exemple #1
0
        private XDocument ModelToXml(HotelsModels.Hotel hotel)
        {
            var doc = new XDocument(new XDocumentType("Hotel", null, "hotel.dtd", null));

            XElement root = new XElement("Hotel");

            root.SetAttributeValue("id", hotel.id);
            root.SetAttributeValue("name", hotel.name);
            root.SetAttributeValue("category", hotel.category);

            root.Add(new XElement("website", hotel.website));
            root.Add(new XElement("description", hotel.description));
            root.Add(new XElement("facilities", hotel.facilities));

            root.Add(new XElement("employees"));
            XElement elem     = root.Element("employees");
            XElement employee = null;

            foreach (var item in hotel.Employees)
            {
                employee = new XElement("employee");
                employee.SetAttributeValue("employee_id", item.employee_id);
                employee.SetAttributeValue("gender", item.gender);
                employee.Add(new XElement("first_name", item.first_name));
                employee.Add(new XElement("last_name", item.last_name));
                employee.Add(new XElement("position", item.position));
                employee.Add(new XElement("salary", item.salary));
                employee.Element("salary")
                .SetAttributeValue("salary_currency", item.salary_currency);
                if (item.birth_date != null)
                {
                    employee.Add(new XElement("birth_date", item.birth_date));
                }
                elem.Add(employee);
            }

            root.Add(new XElement("premises"));
            elem = root.Element("premises");
            XElement premise = null;

            foreach (var item in hotel.Premises)
            {
                premise = new XElement("premise");
                premise.SetAttributeValue("premise_id", item.premise_id);
                premise.Add(new XElement("type", item.type));
                premise.Add(new XElement("price", item.price));
                premise.Element("price")
                .SetAttributeValue("currency", item.currency);
                premise.Add(new XElement("furniture", item.furniture));
                elem.Add(premise);
            }

            root.Add(new XElement("offers"));
            elem = root.Element("offers");
            XElement offer = null;

            foreach (var item in hotel.Offers)
            {
                offer = new XElement("offer");
                offer.SetAttributeValue("offer_id", item.offer_id);
                offer.Add(new XElement("type_offer", item.type_offer));
                if (item.descr_offer != null)
                {
                    offer.Add(new XElement("descr_offer", item.descr_offer));
                }

                offer.Add(new XElement("regular_price", item.regular_price));
                offer.Element("regular_price")
                .SetAttributeValue("currency_regular", item.currency_regular);
                offer.Add(new XElement("promotional_price", item.promotional_price));
                offer.Element("promotional_price")
                .SetAttributeValue("currency_promotional", item.currency_promotional);
                elem.Add(offer);
            }

            root.Add(new XElement("reviews"));
            elem = root.Element("reviews");
            XElement review = null;

            foreach (var item in hotel.Reviews)
            {
                review = new XElement("review");
                review.SetAttributeValue("review_id", item.review_id);
                review.Add(new XElement("reviewer", item.reviewer));
                review.SetAttributeValue("rating", item.rating);
                if (item.comment != null)
                {
                    review.Add(new XElement("comment", item.comment));
                }
                elem.Add(review);
            }
            doc.Add(root);

            return(doc);
        }
Exemple #2
0
        // The id parameter name should match the DataKeyNames value set on the control

        /*   public void PremisesListView_DeleteItem(string Id)
         * {
         *     premises.Remove(premises.Single(b => b.premise_id == Id));
         * }
         *
         * public void EmployeesListView_DeleteItem(string Id)
         * {
         *     employees.Remove(employees.Single(b => b.employee_id == Id));
         * }
         *
         * public void ReviewsListView_DeleteItem(string Id)
         * {
         *     reviews.Remove(reviews.Single(b => b.review_id == Id));
         * }
         *
         * public void OffersListView_DeleteItem(string Id)
         * {
         *     offers.Remove(offers.Single(b => b.offer_id == Id));
         * }
         */



        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            // До срещане на грешка се предполага, че всичко е наред.
            DbStatusLabel.Text      = "Успешно записване в БД.";
            DbStatusLabel.ForeColor = Color.Green;

            XmlStatusLabel.Text      = "Успешно записване в XML файл.";
            XmlStatusLabel.ForeColor = Color.Green;

            HotelsModels.Hotel hotel = null;

            try
            {
                hotel = ControlsToModel();
                context.Hotels.Add(hotel);
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                DbStatusLabel.Text      = "Грешка при записване в БД: " + ex.Message;
                DbStatusLabel.ForeColor = Color.Red;
                hotel = null;
            }

            try
            {
                if (hotel == null)
                {
                    throw new Exception("Не се записва XML файл при грешка в записването в БД");
                }
                XDocument hotelXml = ModelToXml(hotel);
                hotelXml.Save(Server.MapPath("~/App_Data/" + hotel.name + hotel.id + ".xml"));
            }
            catch (Exception ex)
            {
                XmlStatusLabel.Text      = "Грешка при записване в XML файл: " + ex.Message;
                XmlStatusLabel.ForeColor = Color.Red;

                hotel = null;
            }

            if (hotel != null)
            {
                // При успешно записване се изчистват всички данни в контролите
                foreach (Control control in Master.FindControl("ContentPlaceHolder1").Controls)
                {
                    if (control is TextBox)
                    {
                        (control as TextBox).Text = "";
                    }
                }

                // Изчистване на запазените списъци в ViewState и обновяване на ListView
                premises = new List <HotelsModels.Premise>();
                ViewState["premises"] = premises;
                PremisesListView.DataBind();


                offers = new List <HotelsModels.Offer>();
                ViewState["offers"] = offers;
                OffersListView.DataBind();

                employees = new List <HotelsModels.Employee>();
                ViewState["employees"] = employees;
                EmployeesListView.DataBind();

                reviews = new List <HotelsModels.Review>();
                ViewState["reviews"] = reviews;
                ReviewsListView.DataBind();
            }
        }
Exemple #3
0
        private HotelsModels.Hotel ControlsToModel()
        {
            var hotel = new HotelsModels.Hotel();

            hotel.id          = InpHotelID.Text;
            hotel.name        = InpHotelName.Text;
            hotel.category    = InpCategory.Text;
            hotel.website     = InpWebsite.Text;
            hotel.description = InpDescription.Text;
            // bookstore.Notes = String.IsNullOrWhiteSpace(InpNote.Text) ? null : InpNote.Text;
            hotel.facilities = InpFacilities.Text;


            foreach (var enteredPremise in premises)
            {
                var premise = new HotelsModels.Premise()
                {
                    premise_id = enteredPremise.premise_id,
                    type       = enteredPremise.type,
                    price      = enteredPremise.price,
                    currency   = enteredPremise.currency,
                    furniture  = enteredPremise.furniture
                };
                hotel.Premises.Add(premise);
            }

            foreach (var enteredOffer in offers)
            {
                // bookID от запазените books не трябва да се използва, затова полетата се копират едно по едно
                var offer = new HotelsModels.Offer()
                {
                    offer_id             = enteredOffer.offer_id,
                    type_offer           = enteredOffer.type_offer,
                    descr_offer          = enteredOffer.descr_offer,
                    regular_price        = enteredOffer.regular_price,
                    currency_regular     = enteredOffer.currency_regular,
                    promotional_price    = enteredOffer.promotional_price,
                    currency_promotional = enteredOffer.currency_promotional
                };
                hotel.Offers.Add(offer);
            }

            foreach (var enteredEmployee in employees)
            {
                // bookID от запазените books не трябва да се използва, затова полетата се копират едно по едно
                var employee = new HotelsModels.Employee()
                {
                    employee_id     = enteredEmployee.employee_id,
                    first_name      = enteredEmployee.first_name,
                    last_name       = enteredEmployee.last_name,
                    position        = enteredEmployee.position,
                    salary          = enteredEmployee.salary,
                    salary_currency = enteredEmployee.salary_currency,
                    gender          = enteredEmployee.gender,
                    birth_date      = enteredEmployee.birth_date
                };
                hotel.Employees.Add(employee);
            }

            foreach (var enteredReviews in reviews)
            {
                // bookID от запазените books не трябва да се използва, затова полетата се копират едно по едно
                var review = new HotelsModels.Review()
                {
                    review_id = enteredReviews.review_id,
                    reviewer  = enteredReviews.reviewer,
                    rating    = enteredReviews.rating,
                    comment   = enteredReviews.comment
                };
                hotel.Reviews.Add(review);
            }
            return(hotel);
        }
Exemple #4
0
        private void XmlToDb(XmlNode xmlDocument)
        {
            using (var isolatedContext = new HotelsModels.HotelDbContext())
            {
                var hotelXml = xmlDocument.SelectSingleNode("Hotel");

                var hotel = new HotelsModels.Hotel();
                hotel.id       = hotelXml.Attributes["id"].InnerText;
                hotel.name     = hotelXml.Attributes["name"].InnerText;
                hotel.category = hotelXml.Attributes["category"].InnerText;

/*
 *             if (isolatedContext.Hotels.Count(bs => bs.id == hotel.id) != 0)
 *             {
 *                  throw new Exception("тoзи хотел (ID " + hotel.id + ") вече е в БД");
 *             }  */

                hotel.website     = hotelXml.SelectSingleNode("website").InnerText;
                hotel.description = hotelXml.SelectSingleNode("description").InnerText;
                hotel.facilities  = hotelXml.SelectSingleNode("facilities").InnerText;

                foreach (XmlNode premiseXml in hotelXml.SelectNodes("premises/premise"))
                {
                    var premise = new HotelsModels.Premise();
                    premise.premise_id = premiseXml.Attributes["premise_id"].InnerText;
                    premise.type       = premiseXml.SelectSingleNode("type").InnerText;

                    var priceXml = premiseXml.SelectSingleNode("price");
                    premise.price    = Decimal.Parse(priceXml.InnerText, CultureInfo.InvariantCulture);
                    premise.currency = priceXml.Attributes["currency"].InnerText;

                    premise.furniture = premiseXml.SelectSingleNode("furniture").InnerText;


                    hotel.Premises.Add(premise);
                }

                foreach (XmlNode offerXml in hotelXml.SelectNodes("offers/offer"))
                {
                    var offer = new HotelsModels.Offer();
                    offer.offer_id   = offerXml.Attributes["offer_id"].InnerText;
                    offer.type_offer = offerXml.SelectSingleNode("type_offer").InnerText;


                    if (offerXml.SelectSingleNode("descr_offer") != null)
                    {
                        offer.descr_offer = offerXml.SelectSingleNode("descr_offer").InnerText;
                    }

                    var regPriceXml = offerXml.SelectSingleNode("regular_price");
                    offer.regular_price    = Decimal.Parse(regPriceXml.InnerText, CultureInfo.InvariantCulture);
                    offer.currency_regular = regPriceXml.Attributes["currency_regular"].InnerText;

                    var promoPriceXml = offerXml.SelectSingleNode("promotional_price");
                    offer.promotional_price    = Decimal.Parse(promoPriceXml.InnerText, CultureInfo.InvariantCulture);
                    offer.currency_promotional = promoPriceXml.Attributes["currency_promotional"].InnerText;
                    hotel.Offers.Add(offer);
                }

                foreach (XmlNode employeeXml in hotelXml.SelectNodes("employees/employee"))
                {
                    var employee = new HotelsModels.Employee();
                    employee.employee_id = employeeXml.Attributes["employee_id"].InnerText;
                    employee.first_name  = employeeXml.SelectSingleNode("first_name").InnerText;
                    employee.last_name   = employeeXml.SelectSingleNode("last_name").InnerText;
                    employee.position    = employeeXml.SelectSingleNode("position").InnerText;


                    var salaryXml = employeeXml.SelectSingleNode("salary");
                    employee.salary          = Decimal.Parse(salaryXml.InnerText, CultureInfo.InvariantCulture);
                    employee.salary_currency = salaryXml.Attributes["salary_currency"].InnerText;

                    employee.gender = employeeXml.Attributes["gender"].InnerText;

                    if (employeeXml.SelectSingleNode("birth_date") != null)
                    {
                        employee.birth_date = employeeXml.SelectSingleNode("birth_date").InnerText;
                    }
                    hotel.Employees.Add(employee);
                }


                foreach (XmlNode reviewXml in hotelXml.SelectNodes("reviews/review"))
                {
                    var review = new HotelsModels.Review();
                    review.review_id = reviewXml.Attributes["review_id"].InnerText;
                    review.reviewer  = reviewXml.SelectSingleNode("reviewer").InnerText;
                    review.rating    = reviewXml.Attributes["rating"].InnerText;

                    if (reviewXml.SelectSingleNode("comment") != null)
                    {
                        review.comment = reviewXml.SelectSingleNode("comment").InnerText;
                    }


                    hotel.Reviews.Add(review);
                }

                isolatedContext.Hotels.Add(hotel);

                // Записване на всички промени
                isolatedContext.SaveChanges();
            }
        }