
- •Введение
- •Анализ предметной области
- •Диаграммы прецедентов
- •Диаграммы взаимодействия
- •Диаграммы поведения
- •Проектирование бд с использованием case-средств
- •Создание сайта с использованием ms Visual Studio Разметка и наполнение сайта
- •Реализация личного кабинета пользователя
- •Фильтрация данных
- •Администрирование базы данных
- •Заключение
- •Список использованной литературы
- •Приложение а
- •Приложение б
- •Приложение в
- •Приложение г
- •Приложение д
- •Приложение е
- •Приложение ж
- •Приложение з
- •Приложение и
Приложение з
Листинг – Файл AddTour.aspx.cs
using System;
using System.Data.SqlClient;
using System.Web;
namespace WebApplication3
{
public partial class AddTour : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SaveTourButton_Click(object sender, EventArgs e)
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["travelConnectionString4"].ConnectionString;
try
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
try
{
string tourName = TourName.Text.Trim();
string description = Description.Text.Trim();
int duration = int.Parse(Duration.Text.Trim());
DateTime startDate;
if (!DateTime.TryParse(StartDate.Text.Trim(), out startDate))
{
throw new Exception("Неверный формат даты.");
}
int tourId = GetNextId("Tour", connection, transaction);
string query = @"
INSERT INTO Tour (Tour_ID, Name_T, Description_T, Duration_T, TypeT_ID)
VALUES (@Tour_ID, @Name, @Description, @Duration, @TypeT_ID)";
using (SqlCommand command = new SqlCommand(query, connection, transaction))
{
command.Parameters.AddWithValue("@Tour_ID", tourId);
command.Parameters.AddWithValue("@Name", tourName);
command.Parameters.AddWithValue("@Description", description);
command.Parameters.AddWithValue("@Duration", duration);
command.Parameters.AddWithValue("@TypeT_ID", TourType.SelectedValue);
command.ExecuteNonQuery();
}
string imagePath = SaveUploadedFile();
int imageId = -1;
if (!string.IsNullOrEmpty(imagePath))
{
imageId = GetNextImageId(connection, transaction);
string imageQuery = "INSERT INTO Image (ImageID, FilePath) VALUES (@ImageID, @FilePath)";
using (SqlCommand imageCommand = new SqlCommand(imageQuery, connection, transaction))
{
imageCommand.Parameters.AddWithValue("@ImageID", imageId);
imageCommand.Parameters.AddWithValue("@FilePath", imagePath);
imageCommand.ExecuteNonQuery();
}
string imageTourQuery = "INSERT INTO ImageTour (ImageTourID, TourID, ImageID) VALUES (@ImageTourID, @Tour_ID, @ImageID)";
using (SqlCommand imageTourCommand = new SqlCommand(imageTourQuery, connection, transaction))
{
int imageTourId = GetNextId("ImageTour", connection, transaction);
imageTourCommand.Parameters.AddWithValue("@ImageTourID", imageTourId);
imageTourCommand.Parameters.AddWithValue("@Tour_ID", tourId);
imageTourCommand.Parameters.AddWithValue("@ImageID", imageId);
imageTourCommand.ExecuteNonQuery();
}
}
DateTime endDate = startDate.AddDays(duration);
string tripQuery = @"
INSERT INTO Trip (Tour_ID, Price, StartDate, EndDate)
VALUES (@Tour_ID, @Price, @StartDate, @EndDate)";
int tripId = GetNextId("Trip", connection, transaction);
using (SqlCommand tripCommand = new SqlCommand(tripQuery, connection, transaction))
{
tripCommand.Parameters.AddWithValue("@Tour_ID", tourId);
tripCommand.Parameters.AddWithValue("@Price", decimal.Parse(Price.Text.Trim()));
tripCommand.Parameters.AddWithValue("@StartDate", startDate); // Дата начала сохраняется в Trip
tripCommand.Parameters.AddWithValue("@EndDate", endDate);
tripCommand.ExecuteNonQuery();
}
AddTourSeason(connection, transaction, tourId);
AddTourHotel(connection, transaction, tourId);
AddRoute(connection, transaction, tourId);
transaction.Commit();
SuccessMessage.Visible = true;
SuccessMessage.Text = "Тур успешно добавлен!";
}
catch (Exception ex)
{
transaction.Rollback();
ErrorMessage.Visible = true;
ErrorMessage.Text = "Ошибка: " + ex.Message;
}
}
}
}
catch (Exception ex)
{
ErrorMessage.Visible = true;
ErrorMessage.Text = "Ошибка: " + ex.Message;
}
}
private int GetNextImageId(SqlConnection connection, SqlTransaction transaction)
{
string query = "SELECT MAX(ImageID) FROM Image";
using (SqlCommand command = new SqlCommand(query, connection, transaction))
{
object result = command.ExecuteScalar();
return result == DBNull.Value ? 1 : (int)result + 1;
}
}
private int GetNextId(string tableName, SqlConnection connection, SqlTransaction transaction)
{
string columnName = tableName == "ImageTour" ? "ImageTourID" : $"{tableName}_ID";
string query = $"SELECT MAX({columnName}) FROM {tableName}";
using (SqlCommand command = new SqlCommand(query, connection, transaction))
{
object result = command.ExecuteScalar();
return result == DBNull.Value ? 1 : (int)result + 1;
}
}
private string SaveUploadedFile()
{
if (ImageUpload.HasFile)
{
try
{
string fileName = Guid.NewGuid() + "_" + ImageUpload.FileName;
string filePath = Server.MapPath("~/Images/") + fileName;
ImageUpload.SaveAs(filePath);
return "~/Images/" + fileName;
}
catch (Exception ex)
{
throw new Exception("Ошибка при сохранении файла: " + ex.Message);
}
}
return null;
}
private void AddTourHotel(SqlConnection connection, SqlTransaction transaction, int tourId)
{
string insertQuery = "INSERT INTO TourHotel (Tour_ID, Hotel_ID) VALUES (@Tour_ID, @Hotel_ID)";
using (SqlCommand command = new SqlCommand(insertQuery, connection, transaction))
{
command.Parameters.AddWithValue("@Tour_ID", tourId);
command.Parameters.AddWithValue("@Hotel_ID", int.Parse(Hotel.SelectedValue));
command.ExecuteNonQuery();
}
}
private void AddTourSeason(SqlConnection connection, SqlTransaction transaction, int tourId)
{
string insertQuery = "INSERT INTO TourSeason (Tour_ID, Season_ID) VALUES (@Tour_ID, @Season_ID)";
using (SqlCommand command = new SqlCommand(insertQuery, connection, transaction))
{
command.Parameters.AddWithValue("@Tour_ID", tourId);
command.Parameters.AddWithValue("@Season_ID", int.Parse(Season.SelectedValue));
command.ExecuteNonQuery();
}
}
private void AddImageTour(SqlConnection connection, SqlTransaction transaction, int tourId, int imageId)
{
string insertQuery = "INSERT INTO ImageTour (ImageTourID, TourID, ImageID) VALUES (@ImageTourID, @Tour_ID, @ImageID)";
using (SqlCommand command = new SqlCommand(insertQuery, connection, transaction))
{
int imageTourId = GetNextId("ImageTour", connection, transaction);
command.Parameters.AddWithValue("@ImageTourID", imageTourId);
command.Parameters.AddWithValue("@Tour_ID", tourId);
command.Parameters.AddWithValue("@ImageID", imageId);
command.ExecuteNonQuery();
}
}
private void AddRoute(SqlConnection connection, SqlTransaction transaction, int tourId)
{
int localityId = int.Parse(Locality.SelectedValue);
int routeId = GetNextId("Route", connection, transaction);
string insertQuery = "INSERT INTO Route (Route_ID, Tour_ID, Locality_ID) VALUES (@Route_ID, @Tour_ID, @Locality_ID)";
using (SqlCommand insertCommand = new SqlCommand(insertQuery, connection, transaction))
{
insertCommand.Parameters.AddWithValue("@Route_ID", routeId);
insertCommand.Parameters.AddWithValue("@Tour_ID", tourId);
insertCommand.Parameters.AddWithValue("@Locality_ID", localityId);
insertCommand.ExecuteNonQuery();
}
}
}
}