- •Введение
- •Анализ предметной области
- •Диаграммы прецедентов
- •Диаграммы взаимодействия
- •Диаграммы поведения
- •Проектирование бд с использованием case-средств
- •Создание сайта с использованием ms Visual Studio Разметка и наполнение сайта
- •Реализация личного кабинета пользователя
- •Фильтрация данных
- •Администрирование базы данных
- •Заключение
- •Список использованной литературы
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Приложение ж
- •Приложение з
- •Приложение и
Приложение е
Листинг – Файл TourDetails.aspx.cs
using System;
using System.Data.SqlClient;
using System.Web.UI;
namespace WebApplication3
{
public partial class TourDetails : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string tourID = Request.QueryString["TourID"];
if (!string.IsNullOrEmpty(tourID))
{
LoadTourDetails(tourID);
}
else
{
Response.Write("ID тура не найден.");
}
}
}
private void LoadTourDetails(string tourID)
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["travelConnectionString4"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
{
с
string query = @"
SELECT
T.Name_T AS Name_T,
T.Description_T AS Description_T,
T.Duration_T AS Duration_T,
ISNULL(I.FilePath, '') AS ImagePath,
ISNULL(S.Name_Season, 'Не указан') AS SeasonName,
ISNULL(H.Name_H, 'Не указан') AS HotelName,
ISNULL(L.Name_L, 'Не указан') AS LocalityName,
ISNULL(L.Country, 'Не указана') AS CountryName
FROM
Tour T
LEFT JOIN
TourSeason TS ON T.Tour_ID = TS.Tour_ID
LEFT JOIN
Season S ON TS.Season_ID = S.Season_ID
LEFT JOIN
TourHotel TH ON T.Tour_ID = TH.Tour_ID
LEFT JOIN
Hotel H ON TH.Hotel_ID = H.Hotel_ID
LEFT JOIN
Route R ON T.Tour_ID = R.Tour_ID
LEFT JOIN
Locality L ON R.Locality_ID = L.Locality_ID
LEFT JOIN
ImageTour IT ON T.Tour_ID = IT.TourID
LEFT JOIN
Image I ON IT.ImageID = I.ImageID
WHERE
T.Tour_ID = @TourID";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@TourID", tourID);
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
TourNameLabel.Text = reader["Name_T"].ToString();
DescriptionLabel.Text = reader["Description_T"].ToString();
DurationLabel.Text = $"{reader["Duration_T"]} дней";
SeasonLabel.Text = reader["SeasonName"].ToString();
HotelNameLabel.Text = reader["HotelName"].ToString();
LocalityLabel.Text = reader["LocalityName"].ToString();
CountryLabel.Text = reader["CountryName"].ToString();
string imagePath = reader["ImagePath"].ToString();
if (!string.IsNullOrEmpty(imagePath))
{
TourImage.ImageUrl = imagePath;
}
else
{
TourImage.AlternateText = "Изображение отсутствует";
}
ViewState["Duration"] = reader["Duration_T"];
}
else
{
Response.Write("Информация о туре не найдена. Проверьте TourID.");
}
}
catch (Exception ex)
{
Response.Write($"Ошибка загрузки данных: {ex.Message}");
}
}
}
}
protected void StartDateTextBox_TextChanged(object sender, EventArgs e)
{
if (DateTime.TryParse(StartDateTextBox.Text, out DateTime startDate) && ViewState["Duration"] != null)
{
int duration = int.Parse(ViewState["Duration"].ToString());
DateTime endDate = startDate.AddDays(duration);
EndDateLabel.Text = endDate.ToString("yyyy-MM-dd");
EndDateLabel.CssClass = "success";
}
else
{
EndDateLabel.Text = "Некорректная дата начала.";
EndDateLabel.CssClass = "error";
}
}
protected void CheckAvailabilityButton_Click(object sender, EventArgs e)
{
string tourID = Request.QueryString["TourID"];
string startDate = StartDateTextBox.Text;
if (!int.TryParse(TicketCountTextBox.Text, out int ticketsRequested) || ticketsRequested <= 0)
{
AvailabilityLabel.Text = "Введите корректное количество путевок.";
AvailabilityLabel.CssClass = "error";
OrderButton.Visible = false;
return;
}
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["travelConnectionString4"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectionString))
{
string query = @"SELECT TripCount FROM Trip WHERE Tour_ID = @TourID AND StartDate = @StartDate";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.AddWithValue("@TourID", tourID);
cmd.Parameters.AddWithValue("@StartDate", startDate);
conn.Open();
object result = cmd.ExecuteScalar();
if (result != null && int.TryParse(result.ToString(), out int availableTickets))
{
if (availableTickets >= ticketsRequested)
{
AvailabilityLabel.Text = "Достаточно мест для бронирования.";
AvailabilityLabel.CssClass = "success";
OrderButton.Visible = true;
}
else
{
AvailabilityLabel.Text = "Недостаточно мест для бронирования.";
AvailabilityLabel.CssClass = "error";
OrderButton.Visible = false;
}
}
else
{
AvailabilityLabel.Text = "Нет данных для выбранной даты.";
AvailabilityLabel.CssClass = "error";
OrderButton.Visible = false;
}
}
}
}
protected void OrderButton_Click(object sender, EventArgs e)
{
string tourID = Request.QueryString["TourID"];
string startDate = StartDateTextBox.Text;
int ticketsCount = int.Parse(TicketCountTextBox.Text);
Response.Redirect($"Order.aspx?TourID={tourID}&StartDate={startDate}&TicketsCount={ticketsCount}");
}
}
}
